From 6f281356a6f780c900deb26aa91514d9d6d56f60 Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Tue, 16 Jun 2026 00:03:41 +0530 Subject: [PATCH 01/91] fix(accounts): clear clearance date when amending reconciled voucher The framework ignores `no_copy` while amending, so a reconciled voucher carried a stale clearance date into its amendment even though the linked bank transaction gets unreconciled on cancellation. Reset it via a shared `before_insert` hook on AccountsController. Fixes #54909 (cherry picked from commit 1a8d73cbbe94bb372adc0dbfa144f7bb04ebc25b) --- .../bank_transaction/test_bank_transaction.py | 30 +++++++++++++++++++ erpnext/controllers/accounts_controller.py | 20 +++++++++++++ 2 files changed, 50 insertions(+) diff --git a/erpnext/accounts/doctype/bank_transaction/test_bank_transaction.py b/erpnext/accounts/doctype/bank_transaction/test_bank_transaction.py index c7668a5a592..0cd3fd38802 100644 --- a/erpnext/accounts/doctype/bank_transaction/test_bank_transaction.py +++ b/erpnext/accounts/doctype/bank_transaction/test_bank_transaction.py @@ -104,6 +104,36 @@ class TestBankTransaction(ERPNextTestSuite): self.assertEqual(bank_transaction.unallocated_amount, 1700) self.assertEqual(bank_transaction.payment_entries, []) + # Amending a reconciled payment entry must not carry over its clearance date + def test_clearance_date_cleared_on_amend(self): + bank_transaction = frappe.get_doc( + "Bank Transaction", + dict(description="1512567 BG/000003025 OPSKATTUZWXXX AT776000000098709849 Herr G"), + ) + payment = frappe.get_doc("Payment Entry", dict(party="Mr G", paid_amount=1700)) + vouchers = json.dumps( + [ + { + "payment_doctype": "Payment Entry", + "payment_name": payment.name, + "amount": bank_transaction.unallocated_amount, + } + ] + ) + reconcile_vouchers(bank_transaction.name, vouchers) + + self.assertTrue(frappe.db.get_value("Payment Entry", payment.name, "clearance_date")) + + payment.reload() + payment.cancel() + + amended = frappe.copy_doc(payment) + amended.amended_from = payment.name + amended.docstatus = 0 + amended.insert() + + self.assertFalse(amended.clearance_date) + # Check if ERPNext can correctly filter a linked payments based on the debit/credit amount def test_debit_credit_output(self): bank_transaction = frappe.get_doc( diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index e7a85dfde36..afb9161471d 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -140,6 +140,26 @@ class AccountsController(TransactionBase): if self.doctype in relevant_docs: self.set_payment_schedule() + def before_insert(self): + self.clear_clearance_date_on_amend() + + def clear_clearance_date_on_amend(self): + """Drop the bank reconciliation clearance date copied over while amending. + + The framework copies `no_copy` fields when amending, so a reconciled + voucher would carry a stale clearance date into its amendment even though + the linked bank transaction gets unreconciled on cancellation. + """ + if not self.get("amended_from"): + return + + if self.meta.has_field("clearance_date"): + self.clearance_date = None + + for payment in self.get("payments") or []: + if payment.meta.has_field("clearance_date"): + payment.clearance_date = None + def on_update(self): from erpnext.controllers.taxes_and_totals import process_item_wise_tax_details From 40ca3b5e5dde613c962d64eb1ae882aa903354fc Mon Sep 17 00:00:00 2001 From: Sudharsanan11 Date: Tue, 30 Jun 2026 23:44:35 +0530 Subject: [PATCH 02/91] fix(stock): support quality inspection for stock entry by purpose (backport #56446) --- erpnext/controllers/stock_controller.py | 40 +++++++++- erpnext/public/js/controllers/transaction.js | 63 +++++++++++----- .../quality_inspection/quality_inspection.py | 48 +++++++++++- .../stock/doctype/stock_entry/stock_entry.js | 9 ++- .../doctype/stock_entry/test_stock_entry.py | 75 ++++++++++++++----- .../stock_entry_detail.json | 4 +- 6 files changed, 192 insertions(+), 47 deletions(-) diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py index 9d6d8c1f854..331be31d280 100644 --- a/erpnext/controllers/stock_controller.py +++ b/erpnext/controllers/stock_controller.py @@ -46,6 +46,42 @@ from erpnext.stock.doctype.serial_and_batch_bundle.serial_and_batch_bundle impor ) from erpnext.stock.stock_ledger import get_items_to_be_repost +# Purposes whose inward (t_warehouse) row is inspected. +QI_INCOMING_PURPOSES = ( + "Material Receipt", + "Repack", + "Receive from Customer", + "Subcontracting Return", +) + +# Purposes whose outgoing (s_warehouse) row is inspected. This is an explicit +# allow-list rather than "everything that isn't incoming" so a new purpose can't +# silently start requiring a QI. Material Consumption for Manufacture is left out +# on purpose: an inspection_required BOM inspects the manufactured output (handled +# by the "Manufacture" finished-good rule), not each consumed raw material. +# Keep this in sync with erpnext.stock.qi_* helpers in transaction.js. +QI_OUTGOING_PURPOSES = ( + "Material Issue", + "Material Transfer", + "Material Transfer for Manufacture", + "Send to Subcontractor", + "Subcontracting Delivery", + "Disassemble", +) + + +def stock_entry_row_requires_inspection(purpose, row): + """Check if this Stock Entry row need a Quality Inspection.""" + if row.get("type") or row.get("is_legacy_scrap_item"): + return False + if purpose == "Manufacture": + return bool(row.is_finished_item) + if purpose in QI_INCOMING_PURPOSES: + return bool(row.t_warehouse) + if purpose in QI_OUTGOING_PURPOSES: + return bool(row.s_warehouse and row.s_warehouse != row.t_warehouse) + return False + class StockController(AccountsController): def validate(self): @@ -1477,8 +1513,8 @@ class StockController(AccountsController): "Item", row.item_code, inspection_required_fieldname ): qi_required = True - elif self.doctype == "Stock Entry" and row.t_warehouse: - qi_required = True # inward stock needs inspection + elif self.doctype == "Stock Entry": + qi_required = stock_entry_row_requires_inspection(self.purpose, row) if row.get("type") or row.get("is_legacy_scrap_item"): continue diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index d3832b4dd46..410ab292170 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -1,6 +1,34 @@ // Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors // License: GNU General Public License v3. See license.txt +// Keep these in sync with QI_INCOMING_PURPOSES / QI_OUTGOING_PURPOSES / +// stock_entry_row_requires_inspection in controllers/stock_controller.py. +erpnext.stock = erpnext.stock || {}; +erpnext.stock.qi_incoming_purposes = [ + "Material Receipt", + "Repack", + "Receive from Customer", + "Subcontracting Return", +]; +erpnext.stock.qi_outgoing_purposes = [ + "Material Issue", + "Material Transfer", + "Material Transfer for Manufacture", + "Send to Subcontractor", + "Subcontracting Delivery", + "Disassemble", +]; +erpnext.stock.is_incoming_qi_purpose = (purpose) => + purpose === "Manufacture" || erpnext.stock.qi_incoming_purposes.includes(purpose); +erpnext.stock.row_requires_quality_inspection = (purpose, row) => { + if (row.type || row.is_legacy_scrap_item) return false; + if (purpose === "Manufacture") return !!row.is_finished_item; + if (erpnext.stock.qi_incoming_purposes.includes(purpose)) return !!row.t_warehouse; + if (erpnext.stock.qi_outgoing_purposes.includes(purpose)) + return !!row.s_warehouse && row.s_warehouse !== row.t_warehouse; + return false; +}; + erpnext.TransactionController = class TransactionController extends erpnext.taxes_and_totals { setup() { super.setup(); @@ -408,13 +436,7 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe ); } - const incoming_doctypes = ["Purchase Receipt", "Purchase Invoice", "Subcontracting Receipt"]; - const incoming_purposes = ["Manufacture", "Material Receipt"]; - const inspection_type = - incoming_doctypes.includes(this.frm.doc.doctype) || - (this.frm.doc.doctype === "Stock Entry" && incoming_purposes.includes(this.frm.doc.purpose)) - ? "Incoming" - : "Outgoing"; + const inspection_type = this.quality_inspection_type(); let quality_inspection_field = this.frm.get_docfield("items", "quality_inspection"); quality_inspection_field.get_route_options_for_new_doc = function (row) { @@ -2901,13 +2923,7 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe ]; const me = this; - const incoming_doctypes = ["Purchase Receipt", "Purchase Invoice", "Subcontracting Receipt"]; - const incoming_purposes = ["Manufacture", "Material Receipt"]; - const inspection_type = - incoming_doctypes.includes(this.frm.doc.doctype) || - (this.frm.doc.doctype === "Stock Entry" && incoming_purposes.includes(this.frm.doc.purpose)) - ? "Incoming" - : "Outgoing"; + const inspection_type = this.quality_inspection_type(); const dialog = new frappe.ui.Dialog({ title: __("Select Items for Quality Inspection"), size: "extra-large", @@ -2999,14 +3015,23 @@ erpnext.TransactionController = class TransactionController extends erpnext.taxe }); } + quality_inspection_type() { + const incoming_doctypes = ["Purchase Receipt", "Purchase Invoice", "Subcontracting Receipt"]; + const is_incoming = + incoming_doctypes.includes(this.frm.doc.doctype) || + (this.frm.doc.doctype === "Stock Entry" && + erpnext.stock.is_incoming_qi_purpose(this.frm.doc.purpose)); + return is_incoming ? "Incoming" : "Outgoing"; + } + has_inspection_required(item) { - if (this.frm.doc.doctype === "Stock Entry" && this.frm.doc.purpose == "Manufacture") { - if (item.is_finished_item && !item.quality_inspection) { - return true; - } - } else if (!item.quality_inspection) { + if (item.quality_inspection) { + return false; + } + if (this.frm.doc.doctype !== "Stock Entry") { return true; } + return erpnext.stock.row_requires_quality_inspection(this.frm.doc.purpose, item); } get_method_for_payment() { diff --git a/erpnext/stock/doctype/quality_inspection/quality_inspection.py b/erpnext/stock/doctype/quality_inspection/quality_inspection.py index 586bc4dbef1..5e7a6ba307d 100644 --- a/erpnext/stock/doctype/quality_inspection/quality_inspection.py +++ b/erpnext/stock/doctype/quality_inspection/quality_inspection.py @@ -8,6 +8,10 @@ from frappe.model.document import Document from frappe.model.mapper import get_mapped_doc from frappe.utils import cint, cstr, flt, get_link_to_form, get_number_format_info +from erpnext.controllers.stock_controller import ( + QI_INCOMING_PURPOSES, + QI_OUTGOING_PURPOSES, +) from erpnext.stock.doctype.quality_inspection_template.quality_inspection_template import ( get_template_details, ) @@ -385,13 +389,43 @@ def item_query(doctype, txt, searchfield, start, page_len, filters): ["items.quality_inspection", "is", "not set"], ] + require_distinct_warehouse = False + if reference_doctype == "Stock Entry": + purpose = frappe.get_cached_value("Stock Entry", filters.get("reference_name"), "purpose") my_filters.extend( [ "and", - ["items.t_warehouse", "is", "not set"], + ["items.type", "is", "not set"], + "and", + ["items.is_legacy_scrap_item", "=", 0], ] ) + if purpose == "Manufacture": + my_filters.extend( + [ + "and", + ["items.is_finished_item", "=", 1], + ] + ) + elif purpose in QI_INCOMING_PURPOSES: + my_filters.extend( + [ + "and", + ["items.t_warehouse", "is", "set"], + ] + ) + elif purpose in QI_OUTGOING_PURPOSES: + my_filters.extend( + [ + "and", + ["items.s_warehouse", "is", "set"], + ] + ) + require_distinct_warehouse = True + else: + # purpose requires no quality inspection + return [] elif filters.get("inspection_type") != "In Process": my_filters.extend( [ @@ -412,7 +446,7 @@ def item_query(doctype, txt, searchfield, start, page_len, filters): ] ) - return frappe.get_query( + query = frappe.get_query( reference_doctype, fields=["items.item_code, items.item_name"], filters=my_filters, @@ -421,7 +455,15 @@ def item_query(doctype, txt, searchfield, start, page_len, filters): order_by="items.item_code", ignore_permissions=False, distinct=True, - ).run() + ) + if require_distinct_warehouse: + # The cross-column guard (s_warehouse != t_warehouse) can't be expressed in frappe's + # filter-list syntax, so it is appended as a raw query-builder condition. This relies on + # the "items.s_warehouse" filter above having already LEFT-JOINed the child table, so + # child.t_warehouse references that same joined table. + child = frappe.qb.DocType(frappe.get_meta(reference_doctype).get_field("items").options) + query = query.where(child.t_warehouse.isnull() | (child.s_warehouse != child.t_warehouse)) + return query.run() @frappe.whitelist() diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.js b/erpnext/stock/doctype/stock_entry/stock_entry.js index ff2dd1818c0..c627c6bbdb1 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.js +++ b/erpnext/stock/doctype/stock_entry/stock_entry.js @@ -199,6 +199,10 @@ frappe.ui.form.on("Stock Entry", { }, setup_quality_inspection: function (frm) { + frm.get_docfield("items", "quality_inspection").depends_on = (row) => + frm.doc.inspection_required && + erpnext.stock.row_requires_quality_inspection(frm.doc.purpose, row); + if (!frm.doc.inspection_required) { return; } @@ -216,11 +220,12 @@ frappe.ui.form.on("Stock Entry", { } let quality_inspection_field = frm.get_docfield("items", "quality_inspection"); - const incoming_purposes = ["Manufacture", "Material Receipt"]; quality_inspection_field.get_route_options_for_new_doc = function (row) { if (frm.is_new()) return {}; return { - inspection_type: incoming_purposes.includes(frm.doc.purpose) ? "Incoming" : "Outgoing", + inspection_type: erpnext.stock.is_incoming_qi_purpose(frm.doc.purpose) + ? "Incoming" + : "Outgoing", reference_type: frm.doc.doctype, reference_name: frm.doc.name, child_row_reference: row.doc.name, diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py index 4815078ba1f..ce316f5105b 100644 --- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py @@ -1174,16 +1174,21 @@ class TestStockEntry(ERPNextTestSuite): # stock the source warehouse for transfer / issue purposes make_stock_entry(item_code=item_code, target=s_wh, qty=100, basic_rate=100) - # purpose -> warehouses for the moved row; inward (with target) requires QI + # purpose -> warehouses for the moved row and the direction QI is required on: + # Material Receipt inspects the inward row, Transfer/Issue inspect the outgoing row. purposes = { - "Material Receipt": {"to_warehouse": t_wh}, - "Material Transfer": {"from_warehouse": s_wh, "to_warehouse": t_wh}, - "Material Issue": {"from_warehouse": s_wh}, + "Material Receipt": {"warehouses": {"to_warehouse": t_wh}, "inspection_type": "Incoming"}, + "Material Transfer": { + "warehouses": {"from_warehouse": s_wh, "to_warehouse": t_wh}, + "inspection_type": "Outgoing", + }, + "Material Issue": {"warehouses": {"from_warehouse": s_wh}, "inspection_type": "Outgoing"}, } - for purpose, warehouses in purposes.items(): + for purpose, config in purposes.items(): with self.subTest(purpose=purpose): - needs_qi = "to_warehouse" in warehouses + warehouses = config["warehouses"] + inspection_type = config["inspection_type"] se = make_stock_entry( item_code=item_code, @@ -1199,13 +1204,7 @@ class TestStockEntry(ERPNextTestSuite): allowed = check_item_quality_inspection("Stock Entry", 0, se.as_dict().get("items")) self.assertTrue(any(row.get("item_code") == item_code for row in allowed)) - if not needs_qi: - # outward-only entry: QI is not enforced - se.submit() - self.assertEqual(se.docstatus, 1) - continue - - # inward entry without QI must block submission + # entry without QI must block submission self.assertRaises(QualityInspectionRequiredError, se.submit) # a rejected QI must also block submission @@ -1222,13 +1221,13 @@ class TestStockEntry(ERPNextTestSuite): reference_type="Stock Entry", reference_name=se_rej.name, item_code=item_code, - inspection_type="Incoming", + inspection_type=inspection_type, status="Rejected", ) se_rej.reload() self.assertRaises(QualityInspectionRejectedError, se_rej.submit) - # a submitted, accepted QI links itself to the inward row; submission then succeeds + # a submitted, accepted QI links itself to the inspected row; submission then succeeds se_ok = make_stock_entry( item_code=item_code, qty=5, @@ -1242,7 +1241,7 @@ class TestStockEntry(ERPNextTestSuite): reference_type="Stock Entry", reference_name=se_ok.name, item_code=item_code, - inspection_type="Incoming", + inspection_type=inspection_type, status="Accepted", ) se_ok.reload() @@ -1425,15 +1424,15 @@ class TestStockEntry(ERPNextTestSuite): row.s_warehouse = source_warehouse mfg.submit() - # disassemble with inspection required -> the component rows need a QI + # disassemble with inspection required -> the consumed (outgoing) rows need a QI dis = frappe.get_doc(make_wo_stock_entry(wo.name, "Disassemble", 1)) dis.inspection_required = 1 dis.insert() self.assertRaises(QualityInspectionRequiredError, dis.submit) - # a rejected QI on any disassembled component row must also block submission + # a rejected QI on any consumed (outgoing) row must also block submission qis = [] - for item_code in {row.item_code for row in dis.items if row.t_warehouse}: + for item_code in {row.item_code for row in dis.items if row.s_warehouse}: qis.append( create_quality_inspection( reference_type="Stock Entry", @@ -2830,6 +2829,44 @@ class TestStockEntry(ERPNextTestSuite): frappe.get_doc(_make_stock_entry(work_order.name, "Material Consumption for Manufacture", 5)).submit() frappe.get_doc(_make_stock_entry(work_order.name, "Manufacture", 5)).submit() + @ERPNextTestSuite.change_settings( + "Manufacturing Settings", + {"material_consumption": 1, "backflush_raw_materials_based_on": "BOM"}, + ) + def test_qi_not_required_for_material_consumption_for_manufacture(self): + """An inspection_required BOM inspects the finished good (the Manufacture rule), + not each consumed raw material, so Material Consumption for Manufacture (whose + rows are outgoing only) must still submit without a Quality Inspection.""" + from erpnext.manufacturing.doctype.production_plan.test_production_plan import make_bom + from erpnext.manufacturing.doctype.work_order.work_order import make_stock_entry as _make_stock_entry + from erpnext.manufacturing.doctype.work_order.work_order import make_work_order + + fg_item = make_item("_Test QI Consumption FG", properties={"is_stock_item": 1}).name + rm_item = make_item("_Test QI Consumption RM", properties={"is_stock_item": 1}).name + warehouse = "Stores - WP" + + bom = make_bom(item=fg_item, raw_materials=[rm_item], do_not_submit=True) + bom.inspection_required = 1 + bom.submit() + + se = make_stock_entry(item_code=rm_item, target=warehouse, qty=5, rate=10, purpose="Material Receipt") + + work_order = make_work_order(bom.name, fg_item, 5) + work_order.company = se.company + work_order.skip_transfer = 1 + work_order.source_warehouse = warehouse + work_order.fg_warehouse = warehouse + work_order.submit() + + consumption = frappe.get_doc( + _make_stock_entry(work_order.name, "Material Consumption for Manufacture", 5) + ) + # the mapper copies inspection_required from the BOM ... + self.assertEqual(consumption.inspection_required, 1) + # ... but the consumed rows are outgoing-only, so no QI is required and submit succeeds + consumption.submit() + self.assertEqual(consumption.docstatus, 1) + def test_qi_creation_with_naming_rule_company_condition(self): """ Unit test case to check the document naming rule with company condition diff --git a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json b/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json index b446aa1e51e..b41a7038b78 100644 --- a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json +++ b/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json @@ -324,7 +324,7 @@ "options": "Batch" }, { - "depends_on": "eval:parent.inspection_required && doc.t_warehouse", + "depends_on": "eval:parent.inspection_required", "fieldname": "quality_inspection", "fieldtype": "Link", "label": "Quality Inspection", @@ -679,7 +679,7 @@ "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2026-04-27 11:40:38.294196", + "modified": "2026-06-30 12:18:34.132425", "modified_by": "Administrator", "module": "Stock", "name": "Stock Entry Detail", From 224cf19f3331976178e89990fe92e12ad0db633f Mon Sep 17 00:00:00 2001 From: Sudharsanan11 Date: Tue, 30 Jun 2026 22:22:17 +0530 Subject: [PATCH 03/91] fix(selling): update sales order per billed on credit note submission --- erpnext/stock/doctype/delivery_note/delivery_note.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py index 8fcc66c19dd..c9c319d9d1a 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.py +++ b/erpnext/stock/doctype/delivery_note/delivery_note.py @@ -9,6 +9,7 @@ from frappe import _ from frappe.contacts.doctype.address.address import get_company_address from frappe.contacts.doctype.contact.contact import get_default_contact from frappe.desk.notifications import clear_doctype_notifications +from frappe.model.document import Document from frappe.model.mapper import get_mapped_doc from frappe.model.utils import get_fetch_values from frappe.query_builder import DocType @@ -813,7 +814,9 @@ def get_returned_qty_map(delivery_note): @frappe.whitelist() -def make_sales_invoice(source_name, target_doc=None, args=None): +def make_sales_invoice( + source_name: str, target_doc: Document | str | None = None, args: dict | str | None = None +): if args is None: args = {} if isinstance(args, str): @@ -919,7 +922,12 @@ def make_sales_invoice(source_name, target_doc=None, args=None): frappe.get_single_value("Accounts Settings", "automatically_fetch_payment_terms") ) - if not doc.is_return: + if doc.is_return: + # A credit note made from a return Delivery Note should roll back the billed + # amount on the linked Sales Order too, so that per_billed stays consistent with + # per_delivered (which the return already reset). + doc.update_billed_amount_in_sales_order = True + else: so, doctype, fieldname = doc.get_order_details() if ( doc.linked_order_has_payment_terms(so, fieldname, doctype) From 710e0216382f4c596da2c074c103ec8c4d591f1e Mon Sep 17 00:00:00 2001 From: Sudharsanan11 Date: Tue, 30 Jun 2026 22:23:43 +0530 Subject: [PATCH 04/91] test(selling): add test to validate the per billed after credit note submission --- .../delivery_note/test_delivery_note.py | 86 +++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/erpnext/stock/doctype/delivery_note/test_delivery_note.py b/erpnext/stock/doctype/delivery_note/test_delivery_note.py index a9c3970e0cc..a158ab3c4d0 100644 --- a/erpnext/stock/doctype/delivery_note/test_delivery_note.py +++ b/erpnext/stock/doctype/delivery_note/test_delivery_note.py @@ -2627,6 +2627,92 @@ class TestDeliveryNote(ERPNextTestSuite): self.assertEqual(dn.per_returned, 100) self.assertEqual(returned.status, "Return") + def _assert_credit_note_from_return_dn_resets_per_billed(self, so, dn): + """Given a fully billed Sales Order and a submitted Delivery Note that delivers it, + a credit note made from the return of that Delivery Note must reset per_billed to 0 + while leaving the delivery quantities exactly as the return already set them.""" + from erpnext.stock.doctype.delivery_note.delivery_note import make_sales_return + + so.load_from_db() + self.assertEqual(so.per_delivered, 100) + self.assertEqual(so.per_billed, 100) + + return_dn = make_sales_return(dn.name) + return_dn.insert() + return_dn.submit() + + # the return reverses the delivery quantities + so.load_from_db() + self.assertEqual(so.per_delivered, 0) + self.assertEqual(so.items[0].delivered_qty, 0) + + credit_note = make_sales_invoice(return_dn.name) + self.assertTrue(credit_note.is_return) + self.assertTrue(credit_note.update_billed_amount_in_sales_order) + # A Delivery Note-linked invoice can't update stock (validate_delivery_note), so the + # credit note only rolls back billing and never re-reverses the delivery quantities. + self.assertFalse(credit_note.update_stock) + credit_note.insert() + credit_note.submit() + + # per_billed is reset, and the delivery state stays exactly as the return left it + so.load_from_db() + self.assertEqual(so.per_billed, 0) + self.assertEqual(so.per_delivered, 0) + self.assertEqual(so.items[0].delivered_qty, 0) + self.assertEqual(so.items[0].returned_qty, 0) + + # Cancelling the credit note should restore the billed amount on the Sales Order. + credit_note.cancel() + so.load_from_db() + self.assertEqual(so.per_billed, 100) + + def test_sales_order_per_billed_after_credit_note_from_return_dn(self): + # Reported flow: SO -> SI (from SO) -> DN (from SI) -> return DN -> credit note. + # The DN carries si_detail in this path. + from erpnext.accounts.doctype.sales_invoice.sales_invoice import make_delivery_note + from erpnext.selling.doctype.sales_order.sales_order import make_sales_invoice as make_si_from_so + + make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC", qty=10, basic_rate=100) + + so = make_sales_order(qty=2) + + si = make_si_from_so(so.name) + si.insert() + si.submit() + + dn = make_delivery_note(si.name) + dn.insert() + dn.submit() + + self._assert_credit_note_from_return_dn_resets_per_billed(so, dn) + + def test_sales_order_per_billed_after_credit_note_from_so_derived_dn(self): + # SO billed and delivered separately (SO -> SI, SO -> DN), then return DN -> credit note. + # SO per_billed rolls back via the status_updater in update_prevdoc_status. + from erpnext.selling.doctype.sales_order.sales_order import ( + make_delivery_note as make_dn_from_so, + ) + from erpnext.selling.doctype.sales_order.sales_order import ( + make_sales_invoice as make_si_from_so, + ) + + make_stock_entry(item_code="_Test Item", target="_Test Warehouse - _TC", qty=10, basic_rate=100) + + so = make_sales_order(qty=2) + + si = make_si_from_so(so.name) + si.insert() + si.submit() + + dn = make_dn_from_so(so.name) + dn.insert() + dn.submit() + + self.assertIsNone(dn.items[0].si_detail) + + self._assert_credit_note_from_return_dn_resets_per_billed(so, dn) + def test_packed_item_serial_no_status(self): from erpnext.selling.doctype.product_bundle.test_product_bundle import make_product_bundle from erpnext.stock.doctype.item.test_item import make_item From 53c17bf3315365a8781a67016515a7adf7002d78 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 1 Jul 2026 13:30:32 +0530 Subject: [PATCH 05/91] chore: update dependencies in banking app (backport #56685) (#56689) chore: update dependencies in banking app (#56685) chore: update deps in banking app (cherry picked from commit 26583ae35747c8e628f9749be532981e327f8883) Co-authored-by: Nikhil Kothari --- banking/package.json | 25 +- banking/src/App.tsx | 2 +- .../CSV/StatementDetails.tsx | 2 +- banking/yarn.lock | 2650 ++++++++--------- 4 files changed, 1333 insertions(+), 1346 deletions(-) diff --git a/banking/package.json b/banking/package.json index b46a7c4ff98..439e4376789 100644 --- a/banking/package.json +++ b/banking/package.json @@ -14,33 +14,32 @@ "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2", - "@tailwindcss/vite": "^4.3.0", + "@tailwindcss/vite": "^4.3.2", "@tanstack/react-table": "^8.21.3", "@tanstack/react-virtual": "^3.13.24", - "@vitejs/plugin-react": "^6.0.1", + "@vitejs/plugin-react": "^6.0.3", "chrono-node": "^2.9.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", "date-fns": "^4.1.0", "dayjs": "^1.11.20", - "frappe-react-sdk": "^1.15.0", + "frappe-react-sdk": "^1.17.0", "fuse.js": "^7.3.0", - "jotai": "^2.20.0", - "jotai-family": "^1.0.1", + "jotai": "^2.20.1", + "jotai-family": "^1.0.2", "lodash.isplainobject": "^4.0.6", "lucide-react": "^1.14.0", - "radix-ui": "^1.4.3", - "react": "^19.2.6", + "radix-ui": "^1.6.1", + "react": "^19.2.7", "react-currency-input-field": "^4.0.5", "react-day-picker": "9.14.0", - "react-dom": "^19.2.6", + "react-dom": "^19.2.7", "react-dropzone": "^15.0.0", "react-hook-form": "^7.75.0", "react-hotkeys-hook": "^5.3.2", "react-markdown": "^10.1.0", - "react-router": "^7.15.0", - "react-router-dom": "^7.15.0", + "react-router": "^8.1.0", "rehype-raw": "^7.0.0", "remark-gfm": "^4.0.1", "sonner": "^2.0.7", @@ -51,15 +50,15 @@ "vite": "^8.0.16" }, "devDependencies": { - "@eslint/js": "^9.39.1", + "@eslint/js": "^9.39.4", "@types/node": "^25.3.0", "@types/react": "^19.2.7", "@types/react-dom": "^19.2.3", "eslint": "^9.39.1", "eslint-plugin-react-hooks": "^7.1.1", - "eslint-plugin-react-refresh": "^0.4.24", + "eslint-plugin-react-refresh": "^0.5.3", "globals": "^16.5.0", "typescript": "~5.9.3", - "typescript-eslint": "^8.48.0" + "typescript-eslint": "^8.62.1" } } diff --git a/banking/src/App.tsx b/banking/src/App.tsx index b46c5ba4233..2b726dd1dea 100644 --- a/banking/src/App.tsx +++ b/banking/src/App.tsx @@ -1,5 +1,5 @@ import { lazy, useEffect } from 'react' -import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom' +import { BrowserRouter, Navigate, Route, Routes } from 'react-router' import { FrappeProvider } from 'frappe-react-sdk' import { Toaster } from '@/components/ui/sonner' import BankReconciliation from '@/pages/BankReconciliation' diff --git a/banking/src/components/features/BankStatementImporter/CSV/StatementDetails.tsx b/banking/src/components/features/BankStatementImporter/CSV/StatementDetails.tsx index 588527ed9df..b8ef25961f5 100644 --- a/banking/src/components/features/BankStatementImporter/CSV/StatementDetails.tsx +++ b/banking/src/components/features/BankStatementImporter/CSV/StatementDetails.tsx @@ -14,7 +14,7 @@ import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip import { useFrappeEventListener, useFrappePostCall } from 'frappe-react-sdk' import { toast } from 'sonner' import ErrorBanner from '@/components/ui/error-banner' -import { Link, useNavigate } from 'react-router-dom' +import { Link, useNavigate } from 'react-router' import { useMemo, useState } from 'react' import { Progress } from '@/components/ui/progress' import { useSetAtom } from 'jotai' diff --git a/banking/yarn.lock b/banking/yarn.lock index e9a05aa9ad7..abd7e449837 100644 --- a/banking/yarn.lock +++ b/banking/yarn.lock @@ -2,34 +2,34 @@ # yarn lockfile v1 -"@babel/code-frame@^7.28.6", "@babel/code-frame@^7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.0.tgz#7cd7a59f15b3cc0dcd803038f7792712a7d0b15c" - integrity sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw== +"@babel/code-frame@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.29.7.tgz#f2fbbfea87c44a21590ec515b778b2c26d8866e7" + integrity sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw== dependencies: - "@babel/helper-validator-identifier" "^7.28.5" + "@babel/helper-validator-identifier" "^7.29.7" js-tokens "^4.0.0" picocolors "^1.1.1" -"@babel/compat-data@^7.28.6": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.0.tgz#00d03e8c0ac24dd9be942c5370990cbe1f17d88d" - integrity sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg== +"@babel/compat-data@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.29.7.tgz#6f0237f0f36d2e51c0570a636faed9d2d0efe629" + integrity sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg== "@babel/core@^7.24.4": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.0.tgz#5286ad785df7f79d656e88ce86e650d16ca5f322" - integrity sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA== + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.29.7.tgz#80c10b17248082968b57a857b91640971f2070f7" + integrity sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA== dependencies: - "@babel/code-frame" "^7.29.0" - "@babel/generator" "^7.29.0" - "@babel/helper-compilation-targets" "^7.28.6" - "@babel/helper-module-transforms" "^7.28.6" - "@babel/helpers" "^7.28.6" - "@babel/parser" "^7.29.0" - "@babel/template" "^7.28.6" - "@babel/traverse" "^7.29.0" - "@babel/types" "^7.29.0" + "@babel/code-frame" "^7.29.7" + "@babel/generator" "^7.29.7" + "@babel/helper-compilation-targets" "^7.29.7" + "@babel/helper-module-transforms" "^7.29.7" + "@babel/helpers" "^7.29.7" + "@babel/parser" "^7.29.7" + "@babel/template" "^7.29.7" + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" "@jridgewell/remapping" "^2.3.5" convert-source-map "^2.0.0" debug "^4.1.0" @@ -37,114 +37,114 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.29.0": - version "7.29.1" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.1.tgz#d09876290111abbb00ef962a7b83a5307fba0d50" - integrity sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw== +"@babel/generator@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.29.7.tgz#cca0b8827e6bcf3ba176788e7f3b180ad6db2fa3" + integrity sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ== dependencies: - "@babel/parser" "^7.29.0" - "@babel/types" "^7.29.0" + "@babel/parser" "^7.29.7" + "@babel/types" "^7.29.7" "@jridgewell/gen-mapping" "^0.3.12" "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" -"@babel/helper-compilation-targets@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz#32c4a3f41f12ed1532179b108a4d746e105c2b25" - integrity sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA== +"@babel/helper-compilation-targets@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz#7a1def704302401c47f64fa85589e974ae217042" + integrity sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g== dependencies: - "@babel/compat-data" "^7.28.6" - "@babel/helper-validator-option" "^7.27.1" + "@babel/compat-data" "^7.29.7" + "@babel/helper-validator-option" "^7.29.7" browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-globals@^7.28.0": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" - integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== +"@babel/helper-globals@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.29.7.tgz#f04a96fbd8473241b1079243f5b3f03a3010ab7b" + integrity sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA== -"@babel/helper-module-imports@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz#60632cbd6ffb70b22823187201116762a03e2d5c" - integrity sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw== +"@babel/helper-module-imports@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz#ef25048a518e828d7393fac5882ddd73921d7396" + integrity sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g== dependencies: - "@babel/traverse" "^7.28.6" - "@babel/types" "^7.28.6" + "@babel/traverse" "^7.29.7" + "@babel/types" "^7.29.7" -"@babel/helper-module-transforms@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz#9312d9d9e56edc35aeb6e95c25d4106b50b9eb1e" - integrity sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA== +"@babel/helper-module-transforms@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz#b062747a5997ba138637201328bbff77960574ae" + integrity sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg== dependencies: - "@babel/helper-module-imports" "^7.28.6" - "@babel/helper-validator-identifier" "^7.28.5" - "@babel/traverse" "^7.28.6" + "@babel/helper-module-imports" "^7.29.7" + "@babel/helper-validator-identifier" "^7.29.7" + "@babel/traverse" "^7.29.7" -"@babel/helper-string-parser@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" - integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== +"@babel/helper-string-parser@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz#7f0871d99824d23137d60f86fcf6130fd5a1b51f" + integrity sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw== -"@babel/helper-validator-identifier@^7.28.5": - version "7.28.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4" - integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q== +"@babel/helper-validator-identifier@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz#bd87084ced0c796ec46bda492de6e83d29e89fc2" + integrity sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg== -"@babel/helper-validator-option@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" - integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== +"@babel/helper-validator-option@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz#cf315be940213b354eb4abcc0bd01ebe3f73bc2a" + integrity sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw== -"@babel/helpers@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.6.tgz#fca903a313ae675617936e8998b814c415cbf5d7" - integrity sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw== +"@babel/helpers@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.29.7.tgz#45abfde7548997e34376c3e69feb475cffb4a607" + integrity sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg== dependencies: - "@babel/template" "^7.28.6" - "@babel/types" "^7.28.6" + "@babel/template" "^7.29.7" + "@babel/types" "^7.29.7" -"@babel/parser@^7.24.4", "@babel/parser@^7.28.6", "@babel/parser@^7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.0.tgz#669ef345add7d057e92b7ed15f0bac07611831b6" - integrity sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww== +"@babel/parser@^7.24.4", "@babel/parser@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.29.7.tgz#837b87387cbf5ec5530cb634b3c622f68edb9334" + integrity sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg== dependencies: - "@babel/types" "^7.29.0" + "@babel/types" "^7.29.7" -"@babel/template@^7.28.6": - version "7.28.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.28.6.tgz#0e7e56ecedb78aeef66ce7972b082fce76a23e57" - integrity sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ== +"@babel/template@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.29.7.tgz#4d9d4004f645cdd304de958c725162784ecac700" + integrity sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg== dependencies: - "@babel/code-frame" "^7.28.6" - "@babel/parser" "^7.28.6" - "@babel/types" "^7.28.6" + "@babel/code-frame" "^7.29.7" + "@babel/parser" "^7.29.7" + "@babel/types" "^7.29.7" -"@babel/traverse@^7.28.6", "@babel/traverse@^7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.0.tgz#f323d05001440253eead3c9c858adbe00b90310a" - integrity sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA== +"@babel/traverse@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.29.7.tgz#c47b07a41b95da0907d026b5dd894d98de7d2f2d" + integrity sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw== dependencies: - "@babel/code-frame" "^7.29.0" - "@babel/generator" "^7.29.0" - "@babel/helper-globals" "^7.28.0" - "@babel/parser" "^7.29.0" - "@babel/template" "^7.28.6" - "@babel/types" "^7.29.0" + "@babel/code-frame" "^7.29.7" + "@babel/generator" "^7.29.7" + "@babel/helper-globals" "^7.29.7" + "@babel/parser" "^7.29.7" + "@babel/template" "^7.29.7" + "@babel/types" "^7.29.7" debug "^4.3.1" -"@babel/types@^7.28.6", "@babel/types@^7.29.0": - version "7.29.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.0.tgz#9f5b1e838c446e72cf3cd4b918152b8c605e37c7" - integrity sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A== +"@babel/types@^7.29.7": + version "7.29.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.29.7.tgz#8005e31d82712ee7adaef6e23c63b71a62770a92" + integrity sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA== dependencies: - "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.28.5" + "@babel/helper-string-parser" "^7.29.7" + "@babel/helper-validator-identifier" "^7.29.7" "@date-fns/tz@^1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@date-fns/tz/-/tz-1.4.1.tgz#2d905f282304630e07bef6d02d2e7dbf3f0cc4e4" - integrity sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA== + version "1.5.0" + resolved "https://registry.yarnpkg.com/@date-fns/tz/-/tz-1.5.0.tgz#e9e79b7583f0b1322c53db884a0112551095e3f3" + integrity sha512-lwYN/vDPeNRULcepoE/LO2Pgx+7/RV+S9ARfbc9lr2DtGkOD7pAiruHvbR1RX3Qyf6ja47EWJDMsNK5vK08DJg== "@dnd-kit/accessibility@^3.1.1": version "3.1.1" @@ -177,25 +177,25 @@ dependencies: tslib "^2.0.0" -"@emnapi/core@1.10.0", "@emnapi/core@^1.10.0": - version "1.10.0" - resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.10.0.tgz#380ccc8f2412ea22d1d972df7f8ee23a3b9c7467" - integrity sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw== +"@emnapi/core@1.11.1", "@emnapi/core@^1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.11.1.tgz#b9e1064f3a6b1631e241e638eb48d736bfd372a6" + integrity sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ== dependencies: - "@emnapi/wasi-threads" "1.2.1" + "@emnapi/wasi-threads" "1.2.2" tslib "^2.4.0" -"@emnapi/runtime@1.10.0", "@emnapi/runtime@^1.10.0": - version "1.10.0" - resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.10.0.tgz#4b260c0d3534204e98c6110b8db1a987d26ec87c" - integrity sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA== +"@emnapi/runtime@1.11.1", "@emnapi/runtime@^1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.11.1.tgz#58f1f3d5d81a9b12f793ab688c96371901027c24" + integrity sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw== dependencies: tslib "^2.4.0" -"@emnapi/wasi-threads@1.2.1", "@emnapi/wasi-threads@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz#28fed21a1ba1ce797c44a070abc94d42f3ae8548" - integrity sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w== +"@emnapi/wasi-threads@1.2.2", "@emnapi/wasi-threads@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz#4c93becf5bfa3b13d1bbdcc06aee38321ad8139a" + integrity sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA== dependencies: tslib "^2.4.0" @@ -211,14 +211,14 @@ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b" integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew== -"@eslint/config-array@^0.21.1": - version "0.21.1" - resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.21.1.tgz#7d1b0060fea407f8301e932492ba8c18aff29713" - integrity sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA== +"@eslint/config-array@^0.21.2": + version "0.21.2" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.21.2.tgz#f29e22057ad5316cf23836cee9a34c81fffcb7e6" + integrity sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw== dependencies: "@eslint/object-schema" "^2.1.7" debug "^4.3.1" - minimatch "^3.1.2" + minimatch "^3.1.5" "@eslint/config-helpers@^0.4.2": version "0.4.2" @@ -234,10 +234,10 @@ dependencies: "@types/json-schema" "^7.0.15" -"@eslint/eslintrc@^3.3.1": - version "3.3.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.4.tgz#e402b1920f7c1f5a15342caa432b1348cacbb641" - integrity sha512-4h4MVF8pmBsncB60r0wSJiIeUKTSD4m7FmTFThG8RHlsg9ajqckLm9OraguFGZE4vVdpiI1Q4+hFnisopmG6gQ== +"@eslint/eslintrc@^3.3.5": + version "3.3.5" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.5.tgz#c131793cfc1a7b96f24a83e0a8bbd4b881558c60" + integrity sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg== dependencies: ajv "^6.14.0" debug "^4.3.2" @@ -246,13 +246,13 @@ ignore "^5.2.0" import-fresh "^3.2.1" js-yaml "^4.1.1" - minimatch "^3.1.3" + minimatch "^3.1.5" strip-json-comments "^3.1.1" -"@eslint/js@9.39.3", "@eslint/js@^9.39.1": - version "9.39.3" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.39.3.tgz#c6168736c7e0c43ead49654ed06a4bcb3833363d" - integrity sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw== +"@eslint/js@9.39.4", "@eslint/js@^9.39.4": + version "9.39.4" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.39.4.tgz#a3f83bfc6fd9bf33a853dfacd0b49b398eb596c1" + integrity sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw== "@eslint/object-schema@^2.1.7": version "2.1.7" @@ -267,46 +267,54 @@ "@eslint/core" "^0.17.0" levn "^0.4.1" -"@floating-ui/core@^1.7.4": - version "1.7.4" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.7.4.tgz#4a006a6e01565c0f87ba222c317b056a2cffd2f4" - integrity sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg== - dependencies: - "@floating-ui/utils" "^0.2.10" - -"@floating-ui/dom@^1.7.5": +"@floating-ui/core@^1.7.5": version "1.7.5" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.5.tgz#60bfc83a4d1275b2a90db76bf42ca2a5f2c231c2" - integrity sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg== + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.7.5.tgz#d4af157a03330af5a60e69da7a4692507ada0622" + integrity sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ== dependencies: - "@floating-ui/core" "^1.7.4" - "@floating-ui/utils" "^0.2.10" + "@floating-ui/utils" "^0.2.11" + +"@floating-ui/dom@^1.7.6": + version "1.7.6" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.6.tgz#f915bba5abbb177e1f227cacee1b4d0634b187bf" + integrity sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ== + dependencies: + "@floating-ui/core" "^1.7.5" + "@floating-ui/utils" "^0.2.11" "@floating-ui/react-dom@^2.0.0": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.7.tgz#529475cc16ee4976ba3387968117e773d9aa703e" - integrity sha512-0tLRojf/1Go2JgEVm+3Frg9A3IW8bJgKgdO0BN5RkF//ufuz2joZM63Npau2ff3J6lUVYgDSNzNkR+aH3IVfjg== + version "2.1.8" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.8.tgz#5fb5a20d10aafb9505f38c24f38d00c8e1598893" + integrity sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A== dependencies: - "@floating-ui/dom" "^1.7.5" + "@floating-ui/dom" "^1.7.6" -"@floating-ui/utils@^0.2.10": - version "0.2.10" - resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.10.tgz#a2a1e3812d14525f725d011a73eceb41fef5bc1c" - integrity sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ== +"@floating-ui/utils@^0.2.11": + version "0.2.11" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.11.tgz#a269e055e40e2f45873bae9d1a2fdccbd314ea3f" + integrity sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg== -"@humanfs/core@^0.19.1": - version "0.19.1" - resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" - integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== +"@humanfs/core@^0.19.2": + version "0.19.2" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.2.tgz#a8272ca03b2acf492670222b2320b6c421bfde60" + integrity sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA== + dependencies: + "@humanfs/types" "^0.15.0" "@humanfs/node@^0.16.6": - version "0.16.7" - resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.7.tgz#822cb7b3a12c5a240a24f621b5a2413e27a45f26" - integrity sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ== + version "0.16.8" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.8.tgz#8f800cccc13f4f8cd3116e2d9c0a94939da3e3ed" + integrity sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ== dependencies: - "@humanfs/core" "^0.19.1" + "@humanfs/core" "^0.19.2" + "@humanfs/types" "^0.15.0" "@humanwhocodes/retry" "^0.4.0" +"@humanfs/types@^0.15.0": + version "0.15.0" + resolved "https://registry.yarnpkg.com/@humanfs/types/-/types-0.15.0.tgz#f2a09f62012390b2bff3fc6fb248ddec8c09a090" + integrity sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q== + "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" @@ -351,782 +359,759 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@napi-rs/wasm-runtime@^1.1.4": +"@napi-rs/wasm-runtime@^1.1.4", "@napi-rs/wasm-runtime@^1.1.6": + version "1.1.6" + resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz#ed33806d0f9be98dc76d0c3d4fd872fda701b5d5" + integrity sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg== + dependencies: + "@tybys/wasm-util" "^0.10.3" + +"@oxc-project/types@=0.137.0": + version "0.137.0" + resolved "https://registry.yarnpkg.com/@oxc-project/types/-/types-0.137.0.tgz#56e77f8bb221fa05f18b1cd34d73f94f0954a773" + integrity sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA== + +"@radix-ui/number@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/number/-/number-1.1.2.tgz#3ace52303a4a570d03dc79bf17d6da49ed40d0cf" + integrity sha512-ceTwaxc4I5IOi97DgCotl3pqiyRGvffcc0oOsE2dQYaJOFIDsDt4VWG6xEbg1QePv9QWausCEIppud/tJ1wNig== + +"@radix-ui/primitive@1.1.4": version "1.1.4" - resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz#a46bbfedc29751b7170c5d23bc1d8ee8c7e3c1e1" - integrity sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow== - dependencies: - "@tybys/wasm-util" "^0.10.1" + resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.1.4.tgz#47ef0f6cff4a1a1c09ebbf6d79159b7f01b967cf" + integrity sha512-7AdCK9PQyiljKoBDbN8OuctCbd/esdwZPQ8RtOE3SsyQtUpiPb+ND75q0jEhC1m1ecBI0MFNeLJvwIh9iKHRcQ== -"@oxc-project/types@=0.133.0": - version "0.133.0" - resolved "https://registry.yarnpkg.com/@oxc-project/types/-/types-0.133.0.tgz#2e282ef9e1d26e06b68ccd14b73f310a3b2cf7f8" - integrity sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA== - -"@radix-ui/number@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/number/-/number-1.1.1.tgz#7b2c9225fbf1b126539551f5985769d0048d9090" - integrity sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g== - -"@radix-ui/primitive@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.1.3.tgz#e2dbc13bdc5e4168f4334f75832d7bdd3e2de5ba" - integrity sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg== - -"@radix-ui/react-accessible-icon@1.1.7": - version "1.1.7" - resolved "https://registry.yarnpkg.com/@radix-ui/react-accessible-icon/-/react-accessible-icon-1.1.7.tgz#3b1629ce0c5ce0f791a21e28cfa6a1ffb82e2029" - integrity sha512-XM+E4WXl0OqUJFovy6GjmxxFyx9opfCAIUku4dlKRd5YEPqt4kALOkQOp0Of6reHuUkJuiPBEc5k0o4z4lTC8A== - dependencies: - "@radix-ui/react-visually-hidden" "1.2.3" - -"@radix-ui/react-accordion@1.2.12": - version "1.2.12" - resolved "https://registry.yarnpkg.com/@radix-ui/react-accordion/-/react-accordion-1.2.12.tgz#1fd70d4ef36018012b9e03324ff186de7a29c13f" - integrity sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA== - dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-collapsible" "1.1.12" - "@radix-ui/react-collection" "1.1.7" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-direction" "1.1.1" - "@radix-ui/react-id" "1.1.1" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-use-controllable-state" "1.2.2" - -"@radix-ui/react-alert-dialog@1.1.15": - version "1.1.15" - resolved "https://registry.yarnpkg.com/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.15.tgz#fa751d0fdd9aa2a90961c9901dba18e638dd4b41" - integrity sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw== - dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-dialog" "1.1.15" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-slot" "1.2.3" - -"@radix-ui/react-arrow@1.1.7": - version "1.1.7" - resolved "https://registry.yarnpkg.com/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz#e14a2657c81d961598c5e72b73dd6098acc04f09" - integrity sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w== - dependencies: - "@radix-ui/react-primitive" "2.1.3" - -"@radix-ui/react-aspect-ratio@1.1.7": - version "1.1.7" - resolved "https://registry.yarnpkg.com/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.7.tgz#95d0adcdddd0d40c5dd2ae07c8608b4f0b983f53" - integrity sha512-Yq6lvO9HQyPwev1onK1daHCHqXVLzPhSVjmsNjCa2Zcxy2f7uJD2itDtxknv6FzAKCwD1qQkeVDmX/cev13n/g== - dependencies: - "@radix-ui/react-primitive" "2.1.3" - -"@radix-ui/react-avatar@1.1.10": - version "1.1.10" - resolved "https://registry.yarnpkg.com/@radix-ui/react-avatar/-/react-avatar-1.1.10.tgz#c58a8800ef3d3ee783b3168fee7c76f6534bfd93" - integrity sha512-V8piFfWapM5OmNCXTzVQY+E1rDa53zY+MQ4Y7356v4fFz6vqCyUtIz2rUD44ZEdwg78/jKmMJHj07+C/Z/rcog== - dependencies: - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-use-callback-ref" "1.1.1" - "@radix-ui/react-use-is-hydrated" "0.1.0" - "@radix-ui/react-use-layout-effect" "1.1.1" - -"@radix-ui/react-checkbox@1.3.3": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-checkbox/-/react-checkbox-1.3.3.tgz#db45ca8a6d5c056a92f74edbb564acee05318b79" - integrity sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw== - dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-presence" "1.1.5" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-use-controllable-state" "1.2.2" - "@radix-ui/react-use-previous" "1.1.1" - "@radix-ui/react-use-size" "1.1.1" - -"@radix-ui/react-collapsible@1.1.12": - version "1.1.12" - resolved "https://registry.yarnpkg.com/@radix-ui/react-collapsible/-/react-collapsible-1.1.12.tgz#e2cc69a4490a2920f97c3c3150b0bf21281e3c49" - integrity sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA== - dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-id" "1.1.1" - "@radix-ui/react-presence" "1.1.5" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-use-controllable-state" "1.2.2" - "@radix-ui/react-use-layout-effect" "1.1.1" - -"@radix-ui/react-collection@1.1.7": - version "1.1.7" - resolved "https://registry.yarnpkg.com/@radix-ui/react-collection/-/react-collection-1.1.7.tgz#d05c25ca9ac4695cc19ba91f42f686e3ea2d9aec" - integrity sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw== - dependencies: - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-slot" "1.2.3" - -"@radix-ui/react-compose-refs@1.1.2", "@radix-ui/react-compose-refs@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz#a2c4c47af6337048ee78ff6dc0d090b390d2bb30" - integrity sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg== - -"@radix-ui/react-context-menu@2.2.16": - version "2.2.16" - resolved "https://registry.yarnpkg.com/@radix-ui/react-context-menu/-/react-context-menu-2.2.16.tgz#e7bf94a457b68af08f24ad696949144530faab50" - integrity sha512-O8morBEW+HsVG28gYDZPTrT9UUovQUlJue5YO836tiTJhuIWBm/zQHc7j388sHWtdH/xUZurK9olD2+pcqx5ww== - dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-menu" "2.1.16" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-use-callback-ref" "1.1.1" - "@radix-ui/react-use-controllable-state" "1.2.2" - -"@radix-ui/react-context@1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.2.tgz#61628ef269a433382c364f6f1e3788a6dc213a36" - integrity sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA== - -"@radix-ui/react-dialog@1.1.15", "@radix-ui/react-dialog@^1.1.6": - version "1.1.15" - resolved "https://registry.yarnpkg.com/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz#1de3d7a7e9a17a9874d29c07f5940a18a119b632" - integrity sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw== - dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-dismissable-layer" "1.1.11" - "@radix-ui/react-focus-guards" "1.1.3" - "@radix-ui/react-focus-scope" "1.1.7" - "@radix-ui/react-id" "1.1.1" - "@radix-ui/react-portal" "1.1.9" - "@radix-ui/react-presence" "1.1.5" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-slot" "1.2.3" - "@radix-ui/react-use-controllable-state" "1.2.2" - aria-hidden "^1.2.4" - react-remove-scroll "^2.6.3" - -"@radix-ui/react-direction@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.1.1.tgz#39e5a5769e676c753204b792fbe6cf508e550a14" - integrity sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw== - -"@radix-ui/react-dismissable-layer@1.1.11": +"@radix-ui/react-accessible-icon@1.1.11": version "1.1.11" - resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz#e33ab6f6bdaa00f8f7327c408d9f631376b88b37" - integrity sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg== + resolved "https://registry.yarnpkg.com/@radix-ui/react-accessible-icon/-/react-accessible-icon-1.1.11.tgz#fbb237c180c06ed03cff8a5cdecd57ba11fd4b60" + integrity sha512-HQDOFTKwSnmUij6l54wYJJtxTAnxI71+YJLOrjm2ladFB8HAV5Jt7hwaZPhWTGBkYoW4+ZAOfNZrLDh/qvxSYA== dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-use-callback-ref" "1.1.1" - "@radix-ui/react-use-escape-keydown" "1.1.1" + "@radix-ui/react-visually-hidden" "1.2.7" -"@radix-ui/react-dropdown-menu@2.1.16": - version "2.1.16" - resolved "https://registry.yarnpkg.com/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.16.tgz#5ee045c62bad8122347981c479d92b1ff24c7254" - integrity sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw== +"@radix-ui/react-accordion@1.2.15": + version "1.2.15" + resolved "https://registry.yarnpkg.com/@radix-ui/react-accordion/-/react-accordion-1.2.15.tgz#469cbb07f3087568b86ee4858b9ef34de9960755" + integrity sha512-24Zz/0SYx8F2bSVThBnQrdJs2VbKelyuJordcFRRdA0fRAhrq/wSegGCqaQz34VQoiWqSMGYCYXEhynLSlyQlg== dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-id" "1.1.1" - "@radix-ui/react-menu" "2.1.16" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-use-controllable-state" "1.2.2" + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-collapsible" "1.1.15" + "@radix-ui/react-collection" "1.1.11" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-direction" "1.1.2" + "@radix-ui/react-id" "1.1.2" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-use-controllable-state" "1.2.3" -"@radix-ui/react-focus-guards@1.1.3": +"@radix-ui/react-alert-dialog@1.1.18": + version "1.1.18" + resolved "https://registry.yarnpkg.com/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.18.tgz#cb198ab88cfdc603643988de9cb8c46bbde6e1eb" + integrity sha512-6c2cXpNlAgHDhKguK24XcWHHayMpK+lk7/WwBXBco+ZJ4Dv7xP++GBM280KgTD/HCRu3jSdfe8WQiZssonYaIA== + dependencies: + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-dialog" "1.1.18" + "@radix-ui/react-primitive" "2.1.7" + +"@radix-ui/react-arrow@1.1.11": + version "1.1.11" + resolved "https://registry.yarnpkg.com/@radix-ui/react-arrow/-/react-arrow-1.1.11.tgz#be2a068bffe4453bd6941fc44eed1f1ea0e8226f" + integrity sha512-Kdil9BB1rIFC/khmf4hC35bn8701AJcizTU7G7cUbEbk5XqqbjDuHW60uUfKqO5WojjZcbAW51Q7P0hRmMLw8A== + dependencies: + "@radix-ui/react-primitive" "2.1.7" + +"@radix-ui/react-aspect-ratio@1.1.11": + version "1.1.11" + resolved "https://registry.yarnpkg.com/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.11.tgz#ab1e5df733f3ec4271c96b06ea7017517e74a9d8" + integrity sha512-IUAhIVpBUvP5NNICjlaB1OFmtRLGqQqTF3ZOSGPoq3XeLXRFtHiWTRxSVEULgOd9GQR2c7tsYqDnhUennapZnw== + dependencies: + "@radix-ui/react-primitive" "2.1.7" + +"@radix-ui/react-avatar@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-avatar/-/react-avatar-1.2.1.tgz#9f76e3b882e4083a9297333ebebc2a7993fa9616" + integrity sha512-+8PWoLLZv3AVb5m0pvoiOca/bQGzc9vPVb+982HB2x3Un0DpYEPM3zLMl4oqRpBsocJuNqLkiv/HXTnTrlwr4g== + dependencies: + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-use-callback-ref" "1.1.2" + "@radix-ui/react-use-is-hydrated" "0.1.1" + "@radix-ui/react-use-layout-effect" "1.1.2" + +"@radix-ui/react-checkbox@1.3.6": + version "1.3.6" + resolved "https://registry.yarnpkg.com/@radix-ui/react-checkbox/-/react-checkbox-1.3.6.tgz#614a57c24130f01e5c7260a0a5d92993b4ff2cba" + integrity sha512-eUEUoGMDpfkgHWSE97ZZaUJtzR1M7EKnNIpD1Q16+8JR9NWghcaqMulx9PuCQ720w0UclfYn6FEbCdd5Hx087g== + dependencies: + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-presence" "1.1.6" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-use-controllable-state" "1.2.3" + "@radix-ui/react-use-previous" "1.1.2" + "@radix-ui/react-use-size" "1.1.2" + +"@radix-ui/react-collapsible@1.1.15": + version "1.1.15" + resolved "https://registry.yarnpkg.com/@radix-ui/react-collapsible/-/react-collapsible-1.1.15.tgz#170f1f0db27cf48122fc646ce36962a3e051855a" + integrity sha512-8A1zibu5skAQ+UVbaeNH5hVMibiFCRJzgMuM14LTWGttnTZKQL9jwYnhAbHRuxrtCqPXa4JvvnVUq1pTNgyZYw== + dependencies: + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-id" "1.1.2" + "@radix-ui/react-presence" "1.1.6" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-use-controllable-state" "1.2.3" + "@radix-ui/react-use-layout-effect" "1.1.2" + +"@radix-ui/react-collection@1.1.11": + version "1.1.11" + resolved "https://registry.yarnpkg.com/@radix-ui/react-collection/-/react-collection-1.1.11.tgz#816b5262e7c6af77fee7b67f2fbb2743f80698ea" + integrity sha512-djW9+zeg137KQdlPtmE8xnaD+K2rcXXMWFrSg0hsmYZ6HRbdTA7tDHFgpaW9+huWVEu0RCabL+985T4TA0BE7g== + dependencies: + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-slot" "1.3.0" + +"@radix-ui/react-compose-refs@1.1.3", "@radix-ui/react-compose-refs@^1.1.1": version "1.1.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz#2a5669e464ad5fde9f86d22f7fdc17781a4dfa7f" - integrity sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw== + resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.3.tgz#5f1e61e1a5f52800d31e7f8affa6d046e38f50d1" + integrity sha512-rYOP8OMnuuPMQF1uhPVlGNcCDlkokKqGFE3JcxFViIkAXP7EvFWUliJAstrapypaBLJNHbZL6jGhbVDGTwmVhA== -"@radix-ui/react-focus-scope@1.1.7": - version "1.1.7" - resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz#dfe76fc103537d80bf42723a183773fd07bfb58d" - integrity sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw== +"@radix-ui/react-context-menu@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-context-menu/-/react-context-menu-2.3.2.tgz#c894cfa693e173190b208e07a09fcd8efd987f7b" + integrity sha512-qzsA/ZPhF6yMxBOTIk1nlCkoy2mswSbwYL+ErBa2iP0s4WWrlxmczArYqMcpVfEjmM7KJj/ADPXky0yZfbSxtQ== dependencies: - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-use-callback-ref" "1.1.1" + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-menu" "2.1.19" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-use-controllable-state" "1.2.3" -"@radix-ui/react-form@0.1.8": - version "0.1.8" - resolved "https://registry.yarnpkg.com/@radix-ui/react-form/-/react-form-0.1.8.tgz#daec0fde305a70edf1a97b932b5e02a4cbf5b68e" - integrity sha512-QM70k4Zwjttifr5a4sZFts9fn8FzHYvQ5PiB19O2HsYibaHSVt9fH9rzB0XZo/YcM+b7t/p7lYCT/F5eOeF5yQ== - dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-id" "1.1.1" - "@radix-ui/react-label" "2.1.7" - "@radix-ui/react-primitive" "2.1.3" +"@radix-ui/react-context@1.1.4": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.4.tgz#5e39f26ebbefed27836e46e763e8f71e09999ccd" + integrity sha512-QwH4PO5urrbO+FaGd5Aglg+YJgWTyyuZ3g/6mKvsqraLkglDdckw9JafgL5McL5VEJ6EPNduPaT3ZE9BttDAqg== -"@radix-ui/react-hover-card@1.1.15": - version "1.1.15" - resolved "https://registry.yarnpkg.com/@radix-ui/react-hover-card/-/react-hover-card-1.1.15.tgz#9bc7ed55c37a9032acdfcc7cfa5c73b117cffe5e" - integrity sha512-qgTkjNT1CfKMoP0rcasmlH2r1DAiYicWsDsufxl940sT2wHNEWWv6FMWIQXWhVdmC1d/HYfbhQx60KYyAtKxjg== +"@radix-ui/react-dialog@1.1.18", "@radix-ui/react-dialog@^1.1.6": + version "1.1.18" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dialog/-/react-dialog-1.1.18.tgz#790f89b25b36de3df184eacf028e2b72b7a6fdd1" + integrity sha512-apa28mldjMgORmE6g/w3sCcA0Y9UAVeeDVoozN4i7kOw12mLl9RBchfzK3Nn6qxOWjrZhK1Lfy7f07kyzxtnBw== dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-dismissable-layer" "1.1.11" - "@radix-ui/react-popper" "1.2.8" - "@radix-ui/react-portal" "1.1.9" - "@radix-ui/react-presence" "1.1.5" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-use-controllable-state" "1.2.2" - -"@radix-ui/react-id@1.1.1", "@radix-ui/react-id@^1.1.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.1.1.tgz#1404002e79a03fe062b7e3864aa01e24bd1471f7" - integrity sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg== - dependencies: - "@radix-ui/react-use-layout-effect" "1.1.1" - -"@radix-ui/react-label@2.1.7": - version "2.1.7" - resolved "https://registry.yarnpkg.com/@radix-ui/react-label/-/react-label-2.1.7.tgz#ad959ff9c6e4968d533329eb95696e1ba8ad72ab" - integrity sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ== - dependencies: - "@radix-ui/react-primitive" "2.1.3" - -"@radix-ui/react-menu@2.1.16": - version "2.1.16" - resolved "https://registry.yarnpkg.com/@radix-ui/react-menu/-/react-menu-2.1.16.tgz#528a5a973c3a7413d3d49eb9ccd229aa52402911" - integrity sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg== - dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-collection" "1.1.7" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-direction" "1.1.1" - "@radix-ui/react-dismissable-layer" "1.1.11" - "@radix-ui/react-focus-guards" "1.1.3" - "@radix-ui/react-focus-scope" "1.1.7" - "@radix-ui/react-id" "1.1.1" - "@radix-ui/react-popper" "1.2.8" - "@radix-ui/react-portal" "1.1.9" - "@radix-ui/react-presence" "1.1.5" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-roving-focus" "1.1.11" - "@radix-ui/react-slot" "1.2.3" - "@radix-ui/react-use-callback-ref" "1.1.1" + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-dismissable-layer" "1.1.14" + "@radix-ui/react-focus-guards" "1.1.4" + "@radix-ui/react-focus-scope" "1.1.11" + "@radix-ui/react-id" "1.1.2" + "@radix-ui/react-portal" "1.1.13" + "@radix-ui/react-presence" "1.1.6" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-slot" "1.3.0" + "@radix-ui/react-use-controllable-state" "1.2.3" aria-hidden "^1.2.4" - react-remove-scroll "^2.6.3" + react-remove-scroll "^2.7.2" -"@radix-ui/react-menubar@1.1.16": - version "1.1.16" - resolved "https://registry.yarnpkg.com/@radix-ui/react-menubar/-/react-menubar-1.1.16.tgz#5edf7ea2ff7aa7e3ba896b35cf577f122160121c" - integrity sha512-EB1FktTz5xRRi2Er974AUQZWg2yVBb1yjip38/lgwtCVRd3a+maUoGHN/xs9Yv8SY8QwbSEb+YrxGadVWbEutA== - dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-collection" "1.1.7" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-direction" "1.1.1" - "@radix-ui/react-id" "1.1.1" - "@radix-ui/react-menu" "2.1.16" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-roving-focus" "1.1.11" - "@radix-ui/react-use-controllable-state" "1.2.2" +"@radix-ui/react-direction@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.1.2.tgz#9cc69edd659d79fba4101ee0e2dbcffc2024504f" + integrity sha512-C3vFhbyi4SW3PmbAi6Awpu4OzJtd0MxGurvSsYtr7p7nM8RNB3VAF3CUmnp2j50knpkrRcB7+ycVXzgLgF6yNA== -"@radix-ui/react-navigation-menu@1.2.14": - version "1.2.14" - resolved "https://registry.yarnpkg.com/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.14.tgz#4e6d1172be3c89752e564f8721706f78574ad7dd" - integrity sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w== +"@radix-ui/react-dismissable-layer@1.1.14": + version "1.1.14" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.14.tgz#7d911f0c456463ac4af65fbcd356161d6512afb3" + integrity sha512-4lUhWTWAjbDIqFrAPWJ3WqBOpO5YchVZ88X3nh6H9Lu5AFi5nCUeTPj3D8FSDmabmFeRe9ME0BDA4MwKTha5GQ== dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-collection" "1.1.7" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-direction" "1.1.1" - "@radix-ui/react-dismissable-layer" "1.1.11" - "@radix-ui/react-id" "1.1.1" - "@radix-ui/react-presence" "1.1.5" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-use-callback-ref" "1.1.1" - "@radix-ui/react-use-controllable-state" "1.2.2" - "@radix-ui/react-use-layout-effect" "1.1.1" - "@radix-ui/react-use-previous" "1.1.1" - "@radix-ui/react-visually-hidden" "1.2.3" + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-use-callback-ref" "1.1.2" + "@radix-ui/react-use-effect-event" "0.0.3" -"@radix-ui/react-one-time-password-field@0.1.8": - version "0.1.8" - resolved "https://registry.yarnpkg.com/@radix-ui/react-one-time-password-field/-/react-one-time-password-field-0.1.8.tgz#edb7476d29478477ffc837f7deacec3a1ae08a24" - integrity sha512-ycS4rbwURavDPVjCb5iS3aG4lURFDILi6sKI/WITUMZ13gMmn/xGjpLoqBAalhJaDk8I3UbCM5GzKHrnzwHbvg== +"@radix-ui/react-dropdown-menu@2.1.19": + version "2.1.19" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.19.tgz#e7edf3c12ca4d6efda0252b0acb0a114c889a115" + integrity sha512-HZccBkbK0LOi8nYKIp5jll/zIRW0cCOmG6WWyqsSpmXCU+ZlcBbTqIwlBvPCu886C5RVu6c/kHV7xSP8IgYNHw== dependencies: - "@radix-ui/number" "1.1.1" - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-collection" "1.1.7" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-direction" "1.1.1" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-roving-focus" "1.1.11" - "@radix-ui/react-use-controllable-state" "1.2.2" - "@radix-ui/react-use-effect-event" "0.0.2" - "@radix-ui/react-use-is-hydrated" "0.1.0" - "@radix-ui/react-use-layout-effect" "1.1.1" + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-id" "1.1.2" + "@radix-ui/react-menu" "2.1.19" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-use-controllable-state" "1.2.3" -"@radix-ui/react-password-toggle-field@0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-password-toggle-field/-/react-password-toggle-field-0.1.3.tgz#3d47de91c0f8e79d697cefde2ef8146816712031" - integrity sha512-/UuCrDBWravcaMix4TdT+qlNdVwOM1Nck9kWx/vafXsdfj1ChfhOdfi3cy9SGBpWgTXwYCuboT/oYpJy3clqfw== - dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-id" "1.1.1" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-use-controllable-state" "1.2.2" - "@radix-ui/react-use-effect-event" "0.0.2" - "@radix-ui/react-use-is-hydrated" "0.1.0" +"@radix-ui/react-focus-guards@1.1.4": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.4.tgz#3ef07a117ae7aa1430442aaebd766507e69d391c" + integrity sha512-cot/aB/mOm0IYVYTTmQcEEK1M48lZWi8FlYe5nDPQQ8NYZUlXEFgncJ9p2Kzer3RKSrY7cTTpEMLZKNo9QoP5Q== -"@radix-ui/react-popover@1.1.15": - version "1.1.15" - resolved "https://registry.yarnpkg.com/@radix-ui/react-popover/-/react-popover-1.1.15.tgz#9c852f93990a687ebdc949b2c3de1f37cdc4c5d5" - integrity sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA== +"@radix-ui/react-focus-scope@1.1.11": + version "1.1.11" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.11.tgz#d34a0a181842582ae0b82c2244672894debf33f9" + integrity sha512-Mn88Vg2whaRocGJNOH+DKFqYm6ySFPQaiwHNxZPyjn99B52KAEJWWY9NP83+nWdk2HM3rdov+STu9AG471Rt9w== dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-dismissable-layer" "1.1.11" - "@radix-ui/react-focus-guards" "1.1.3" - "@radix-ui/react-focus-scope" "1.1.7" - "@radix-ui/react-id" "1.1.1" - "@radix-ui/react-popper" "1.2.8" - "@radix-ui/react-portal" "1.1.9" - "@radix-ui/react-presence" "1.1.5" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-slot" "1.2.3" - "@radix-ui/react-use-controllable-state" "1.2.2" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-use-callback-ref" "1.1.2" + +"@radix-ui/react-form@0.1.11": + version "0.1.11" + resolved "https://registry.yarnpkg.com/@radix-ui/react-form/-/react-form-0.1.11.tgz#5cc34584484e944eb1fd59c81f9c14a8ced308da" + integrity sha512-0mTMJHv1gQAuEQoq5VDpTD3MRgmfUFdXAVFhpqR7wBeUr+tyRsof0wv/4XdPHLwQrefhoH2FiGHCggrCJhalIw== + dependencies: + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-id" "1.1.2" + "@radix-ui/react-label" "2.1.11" + "@radix-ui/react-primitive" "2.1.7" + +"@radix-ui/react-hover-card@1.1.18": + version "1.1.18" + resolved "https://registry.yarnpkg.com/@radix-ui/react-hover-card/-/react-hover-card-1.1.18.tgz#e2f8f5406ac1ee712bedcc1b1b933e8c4d2212eb" + integrity sha512-rt+Fx4HoCeEwFL2IdoV2QaPltqDLlzxN77i9nwB3Y70scFlfAHh1QCdE2TXKuFJtA1TNygb0oivnFBZifgtZOw== + dependencies: + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-dismissable-layer" "1.1.14" + "@radix-ui/react-popper" "1.3.2" + "@radix-ui/react-portal" "1.1.13" + "@radix-ui/react-presence" "1.1.6" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-use-controllable-state" "1.2.3" + +"@radix-ui/react-id@1.1.2", "@radix-ui/react-id@^1.1.0": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.1.2.tgz#6fe97e7289c7133b44f8c9c61fdddf2a6be1421d" + integrity sha512-orBC88futVpqCmhX1p4cvquNHsELQ+w+vBJnuj3ftETI5bJb0bZn3Tqu3SWN2IOcPycTnMGnhwoermvISt72sA== + dependencies: + "@radix-ui/react-use-layout-effect" "1.1.2" + +"@radix-ui/react-label@2.1.11": + version "2.1.11" + resolved "https://registry.yarnpkg.com/@radix-ui/react-label/-/react-label-2.1.11.tgz#dafdacfe284326ea64eaefa1d329b9809e02f9c0" + integrity sha512-3PKvDDxOn62k0oV1n4QtNtD2vpu+zYjXR7ojLBPaO6SPvhy53yg0vAmgNeBQeJW5rV3dffoRG+HYfLBZuzw0CQ== + dependencies: + "@radix-ui/react-primitive" "2.1.7" + +"@radix-ui/react-menu@2.1.19": + version "2.1.19" + resolved "https://registry.yarnpkg.com/@radix-ui/react-menu/-/react-menu-2.1.19.tgz#d4e6b263ee0fedffb80a7d806f6467f60ebd98ca" + integrity sha512-Mht9BVd1AIsNFVQr4KG3bIK7XQn5IXF0TL/2ObsrzOdc1loaly/+kBDL5roSCYn8j8XZkvpOD0WYLz2FQtH1Eg== + dependencies: + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-collection" "1.1.11" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-direction" "1.1.2" + "@radix-ui/react-dismissable-layer" "1.1.14" + "@radix-ui/react-focus-guards" "1.1.4" + "@radix-ui/react-focus-scope" "1.1.11" + "@radix-ui/react-id" "1.1.2" + "@radix-ui/react-popper" "1.3.2" + "@radix-ui/react-portal" "1.1.13" + "@radix-ui/react-presence" "1.1.6" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-roving-focus" "1.1.14" + "@radix-ui/react-slot" "1.3.0" + "@radix-ui/react-use-callback-ref" "1.1.2" aria-hidden "^1.2.4" - react-remove-scroll "^2.6.3" + react-remove-scroll "^2.7.2" -"@radix-ui/react-popper@1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-1.2.8.tgz#a79f39cdd2b09ab9fb50bf95250918422c4d9602" - integrity sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw== +"@radix-ui/react-menubar@1.1.19": + version "1.1.19" + resolved "https://registry.yarnpkg.com/@radix-ui/react-menubar/-/react-menubar-1.1.19.tgz#3d218b9c138c3195ad02aa3ed8ccad53ec57bcdd" + integrity sha512-Glt6mebxcgQvLeVkH3HiqV5bgQubE+31ELxLs7q0GlYI5k0XYkOkeuPrhXoylxK8eufvIt9CJjzY1TfFMXK3qw== + dependencies: + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-collection" "1.1.11" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-direction" "1.1.2" + "@radix-ui/react-id" "1.1.2" + "@radix-ui/react-menu" "2.1.19" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-roving-focus" "1.1.14" + "@radix-ui/react-use-controllable-state" "1.2.3" + +"@radix-ui/react-navigation-menu@1.2.17": + version "1.2.17" + resolved "https://registry.yarnpkg.com/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.17.tgz#3aab787e9d21bdd08c3d2e2772703703b813c40f" + integrity sha512-fYeYQvbeNn5AQk2RBbpO7koLm2YbS00UYxC/IL2sgLlninEH5UNIv+X3E0KJ1Vy4WIo+dhN9w8GNqSHhbHWCIg== + dependencies: + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-collection" "1.1.11" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-direction" "1.1.2" + "@radix-ui/react-dismissable-layer" "1.1.14" + "@radix-ui/react-id" "1.1.2" + "@radix-ui/react-presence" "1.1.6" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-use-callback-ref" "1.1.2" + "@radix-ui/react-use-controllable-state" "1.2.3" + "@radix-ui/react-use-layout-effect" "1.1.2" + "@radix-ui/react-use-previous" "1.1.2" + "@radix-ui/react-visually-hidden" "1.2.7" + +"@radix-ui/react-one-time-password-field@0.1.11": + version "0.1.11" + resolved "https://registry.yarnpkg.com/@radix-ui/react-one-time-password-field/-/react-one-time-password-field-0.1.11.tgz#50927a5d9f23e8ed2f5dc376db24a278035dd43d" + integrity sha512-Rsgab65u73E5kPVh8OS6PgPwJgPyf08GFfJDGAbMdF4DL7CgDhFOaDnXuk/DiMEVF6kgQwl0oJmFklvipmiOLg== + dependencies: + "@radix-ui/number" "1.1.2" + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-collection" "1.1.11" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-direction" "1.1.2" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-roving-focus" "1.1.14" + "@radix-ui/react-use-controllable-state" "1.2.3" + "@radix-ui/react-use-effect-event" "0.0.3" + "@radix-ui/react-use-is-hydrated" "0.1.1" + "@radix-ui/react-use-layout-effect" "1.1.2" + +"@radix-ui/react-password-toggle-field@0.1.6": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@radix-ui/react-password-toggle-field/-/react-password-toggle-field-0.1.6.tgz#e1098c44377c4b7cee7517f392e1ab3cf9a5db58" + integrity sha512-pQ3xGp/uemomASPH97Eb3shfXX8QlG11bBJyEvRBV+vwtO4HvQlS06Yj9f31Ao7XepvF98SFrRgVDQ7jv+2xjQ== + dependencies: + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-id" "1.1.2" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-use-controllable-state" "1.2.3" + "@radix-ui/react-use-effect-event" "0.0.3" + "@radix-ui/react-use-is-hydrated" "0.1.1" + +"@radix-ui/react-popover@1.1.18": + version "1.1.18" + resolved "https://registry.yarnpkg.com/@radix-ui/react-popover/-/react-popover-1.1.18.tgz#2db45761df8d0751a35e8f4f2647d11e95519385" + integrity sha512-qdXDes+eHlnMUGlBAAAe5EG7oOQvqsXuq4mq585diMudg80iB+jHbsSeG3+Q4eWNsogNyhqU2p/3i+Y0iEepqg== + dependencies: + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-dismissable-layer" "1.1.14" + "@radix-ui/react-focus-guards" "1.1.4" + "@radix-ui/react-focus-scope" "1.1.11" + "@radix-ui/react-id" "1.1.2" + "@radix-ui/react-popper" "1.3.2" + "@radix-ui/react-portal" "1.1.13" + "@radix-ui/react-presence" "1.1.6" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-slot" "1.3.0" + "@radix-ui/react-use-controllable-state" "1.2.3" + aria-hidden "^1.2.4" + react-remove-scroll "^2.7.2" + +"@radix-ui/react-popper@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-1.3.2.tgz#5c24ca8a68ae2d52437760b59b041f6b96e1a9ec" + integrity sha512-3QXNeMkdshed1MR3LNoiCirBywRFPkD8ETJa/HlPuLwSajaQixf2ro+isoDNJlGABg9ug41XuZpINZJIle4XWg== dependencies: "@floating-ui/react-dom" "^2.0.0" - "@radix-ui/react-arrow" "1.1.7" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-use-callback-ref" "1.1.1" - "@radix-ui/react-use-layout-effect" "1.1.1" - "@radix-ui/react-use-rect" "1.1.1" - "@radix-ui/react-use-size" "1.1.1" - "@radix-ui/rect" "1.1.1" + "@radix-ui/react-arrow" "1.1.11" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-use-callback-ref" "1.1.2" + "@radix-ui/react-use-layout-effect" "1.1.2" + "@radix-ui/react-use-rect" "1.1.2" + "@radix-ui/react-use-size" "1.1.2" + "@radix-ui/rect" "1.1.2" -"@radix-ui/react-portal@1.1.9": - version "1.1.9" - resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.1.9.tgz#14c3649fe48ec474ac51ed9f2b9f5da4d91c4472" - integrity sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ== - dependencies: - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-use-layout-effect" "1.1.1" - -"@radix-ui/react-presence@1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.1.5.tgz#5d8f28ac316c32f078afce2996839250c10693db" - integrity sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ== - dependencies: - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-use-layout-effect" "1.1.1" - -"@radix-ui/react-primitive@2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz#db9b8bcff49e01be510ad79893fb0e4cda50f1bc" - integrity sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ== - dependencies: - "@radix-ui/react-slot" "1.2.3" - -"@radix-ui/react-primitive@^2.0.2": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz#2626ea309ebd63bf5767d3e7fc4081f81b993df0" - integrity sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg== - dependencies: - "@radix-ui/react-slot" "1.2.4" - -"@radix-ui/react-progress@1.1.7": - version "1.1.7" - resolved "https://registry.yarnpkg.com/@radix-ui/react-progress/-/react-progress-1.1.7.tgz#a2b76398b3f24b6bd5e37f112b1e30fbedd4f38e" - integrity sha512-vPdg/tF6YC/ynuBIJlk1mm7Le0VgW6ub6J2UWnTQ7/D23KXcPI1qy+0vBkgKgd38RCMJavBXpB83HPNFMTb0Fg== - dependencies: - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-primitive" "2.1.3" - -"@radix-ui/react-radio-group@1.3.8": - version "1.3.8" - resolved "https://registry.yarnpkg.com/@radix-ui/react-radio-group/-/react-radio-group-1.3.8.tgz#93f102b5b948d602c2f2adb1bc5c347cbaf64bd9" - integrity sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ== - dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-direction" "1.1.1" - "@radix-ui/react-presence" "1.1.5" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-roving-focus" "1.1.11" - "@radix-ui/react-use-controllable-state" "1.2.2" - "@radix-ui/react-use-previous" "1.1.1" - "@radix-ui/react-use-size" "1.1.1" - -"@radix-ui/react-roving-focus@1.1.11": - version "1.1.11" - resolved "https://registry.yarnpkg.com/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz#ef54384b7361afc6480dcf9907ef2fedb5080fd9" - integrity sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA== - dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-collection" "1.1.7" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-direction" "1.1.1" - "@radix-ui/react-id" "1.1.1" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-use-callback-ref" "1.1.1" - "@radix-ui/react-use-controllable-state" "1.2.2" - -"@radix-ui/react-scroll-area@1.2.10": - version "1.2.10" - resolved "https://registry.yarnpkg.com/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.10.tgz#e4fd3b4a79bb77bec1a52f0c8f26d8f3f1ca4b22" - integrity sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A== - dependencies: - "@radix-ui/number" "1.1.1" - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-direction" "1.1.1" - "@radix-ui/react-presence" "1.1.5" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-use-callback-ref" "1.1.1" - "@radix-ui/react-use-layout-effect" "1.1.1" - -"@radix-ui/react-select@2.2.6": - version "2.2.6" - resolved "https://registry.yarnpkg.com/@radix-ui/react-select/-/react-select-2.2.6.tgz#022cf8dab16bf05d0d1b4df9e53e4bea1b744fd9" - integrity sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ== - dependencies: - "@radix-ui/number" "1.1.1" - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-collection" "1.1.7" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-direction" "1.1.1" - "@radix-ui/react-dismissable-layer" "1.1.11" - "@radix-ui/react-focus-guards" "1.1.3" - "@radix-ui/react-focus-scope" "1.1.7" - "@radix-ui/react-id" "1.1.1" - "@radix-ui/react-popper" "1.2.8" - "@radix-ui/react-portal" "1.1.9" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-slot" "1.2.3" - "@radix-ui/react-use-callback-ref" "1.1.1" - "@radix-ui/react-use-controllable-state" "1.2.2" - "@radix-ui/react-use-layout-effect" "1.1.1" - "@radix-ui/react-use-previous" "1.1.1" - "@radix-ui/react-visually-hidden" "1.2.3" - aria-hidden "^1.2.4" - react-remove-scroll "^2.6.3" - -"@radix-ui/react-separator@1.1.7": - version "1.1.7" - resolved "https://registry.yarnpkg.com/@radix-ui/react-separator/-/react-separator-1.1.7.tgz#a18bd7fd07c10fda1bba14f2a3032e7b1a2b3470" - integrity sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA== - dependencies: - "@radix-ui/react-primitive" "2.1.3" - -"@radix-ui/react-slider@1.3.6": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@radix-ui/react-slider/-/react-slider-1.3.6.tgz#409453110b8f34ca00972750b80cd792f0b23a8c" - integrity sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw== - dependencies: - "@radix-ui/number" "1.1.1" - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-collection" "1.1.7" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-direction" "1.1.1" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-use-controllable-state" "1.2.2" - "@radix-ui/react-use-layout-effect" "1.1.1" - "@radix-ui/react-use-previous" "1.1.1" - "@radix-ui/react-use-size" "1.1.1" - -"@radix-ui/react-slot@1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.2.3.tgz#502d6e354fc847d4169c3bc5f189de777f68cfe1" - integrity sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A== - dependencies: - "@radix-ui/react-compose-refs" "1.1.2" - -"@radix-ui/react-slot@1.2.4": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.2.4.tgz#63c0ba05fdf90cc49076b94029c852d7bac1fb83" - integrity sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA== - dependencies: - "@radix-ui/react-compose-refs" "1.1.2" - -"@radix-ui/react-switch@1.2.6": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@radix-ui/react-switch/-/react-switch-1.2.6.tgz#ff79acb831f0d5ea9216cfcc5b939912571358e3" - integrity sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ== - dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-use-controllable-state" "1.2.2" - "@radix-ui/react-use-previous" "1.1.1" - "@radix-ui/react-use-size" "1.1.1" - -"@radix-ui/react-tabs@1.1.13": +"@radix-ui/react-portal@1.1.13": version "1.1.13" - resolved "https://registry.yarnpkg.com/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz#3537ce379d7e7ff4eeb6b67a0973e139c2ac1f15" - integrity sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A== + resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.1.13.tgz#8b80b8b33ef4fff449c6d3ab62492f4dca162c7e" + integrity sha512-z3oXfmaHLJTF1wktbjgD6cn9jiEbq3WSondB10LIuIt2m2Ym4iJlrW04/euMwENDdWDdE7z+OuY7Qyp1YpRSwA== dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-direction" "1.1.1" - "@radix-ui/react-id" "1.1.1" - "@radix-ui/react-presence" "1.1.5" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-roving-focus" "1.1.11" - "@radix-ui/react-use-controllable-state" "1.2.2" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-use-layout-effect" "1.1.2" -"@radix-ui/react-toast@1.2.15": - version "1.2.15" - resolved "https://registry.yarnpkg.com/@radix-ui/react-toast/-/react-toast-1.2.15.tgz#746cf9a81297ddbfba214e5c81245ea3f706f876" - integrity sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g== +"@radix-ui/react-presence@1.1.6": + version "1.1.6" + resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.1.6.tgz#f0edff4f119dbc8ef81611e539a8f58d9afb33c3" + integrity sha512-zdTk4PlUO0E18HnZ3wYbW0KkJJxWCdiNYp6g6X1PtONFhxVkg01vliTJAmwIszU6mHiyBOoW9P0rAugl5/hULQ== dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-collection" "1.1.7" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-dismissable-layer" "1.1.11" - "@radix-ui/react-portal" "1.1.9" - "@radix-ui/react-presence" "1.1.5" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-use-callback-ref" "1.1.1" - "@radix-ui/react-use-controllable-state" "1.2.2" - "@radix-ui/react-use-layout-effect" "1.1.1" - "@radix-ui/react-visually-hidden" "1.2.3" + "@radix-ui/react-use-layout-effect" "1.1.2" -"@radix-ui/react-toggle-group@1.1.11": +"@radix-ui/react-primitive@2.1.7", "@radix-ui/react-primitive@^2.0.2": + version "2.1.7" + resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-2.1.7.tgz#1f487a06434770f865dbfb6c9a55bbefcbad8c82" + integrity sha512-bC3NiwsprbxKjuon9l7X6BUTw7FPVzEYaL92MPEY5SCd/9hUTPXVFtVwRix7778wtRsVao+zE062gL79FZleeQ== + dependencies: + "@radix-ui/react-slot" "1.3.0" + +"@radix-ui/react-progress@1.1.11": version "1.1.11" - resolved "https://registry.yarnpkg.com/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.11.tgz#e513d6ffdb07509b400ab5b26f2523747c0d51c1" - integrity sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q== + resolved "https://registry.yarnpkg.com/@radix-ui/react-progress/-/react-progress-1.1.11.tgz#472abd9c50841dd947ff43adcc4b7c4b987f6440" + integrity sha512-KqiGJcFaZDc+BvveAgU3ZhACg2MvSUDrCBx4lRR/ZVRNal0bvt8lBpvnSkep9heeOuF8Qfw3fszLDX4OpQ2NVw== dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-direction" "1.1.1" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-roving-focus" "1.1.11" - "@radix-ui/react-toggle" "1.1.10" - "@radix-ui/react-use-controllable-state" "1.2.2" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-primitive" "2.1.7" -"@radix-ui/react-toggle@1.1.10": - version "1.1.10" - resolved "https://registry.yarnpkg.com/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz#b04ba0f9609599df666fce5b2f38109a197f08cf" - integrity sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ== +"@radix-ui/react-radio-group@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-radio-group/-/react-radio-group-1.4.2.tgz#f633051ed4bcc9d80eb5ec2a733ab68c47fcbfb8" + integrity sha512-W8Uo9riHnlzLLWy+r2mVHUyuEWqD/+be4PZzbEvaGoFSBDHkm+GYWjtcE6u3AmPKNyfanWpnVfpZ2GqPCdzzsw== dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-use-controllable-state" "1.2.2" + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-direction" "1.1.2" + "@radix-ui/react-presence" "1.1.6" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-roving-focus" "1.1.14" + "@radix-ui/react-use-controllable-state" "1.2.3" + "@radix-ui/react-use-previous" "1.1.2" + "@radix-ui/react-use-size" "1.1.2" -"@radix-ui/react-toolbar@1.1.11": +"@radix-ui/react-roving-focus@1.1.14": + version "1.1.14" + resolved "https://registry.yarnpkg.com/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.14.tgz#797d73121acc56b3ff346d7e1e646b39587e7857" + integrity sha512-8Qcnx9447tx/aCBgw6Jenfqg4Skq+vqab9mCBmuGNipIS5YXvL275wbKEu7+ICYHIlAPgCduUMJH1XOYewKF6Q== + dependencies: + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-collection" "1.1.11" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-direction" "1.1.2" + "@radix-ui/react-id" "1.1.2" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-use-callback-ref" "1.1.2" + "@radix-ui/react-use-controllable-state" "1.2.3" + +"@radix-ui/react-scroll-area@1.2.13": + version "1.2.13" + resolved "https://registry.yarnpkg.com/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.13.tgz#ad1bedfcfef642ab4cb8321e1e65c80057329d8d" + integrity sha512-7tncSubo2G0UY1e8rk+72qe3XRzrGnOLtZQ1PL1KoBfRUNX0NrJT5akb+0kfwSCc3gVR4wdHqyhAQBDpDNOwDw== + dependencies: + "@radix-ui/number" "1.1.2" + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-direction" "1.1.2" + "@radix-ui/react-presence" "1.1.6" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-use-callback-ref" "1.1.2" + "@radix-ui/react-use-layout-effect" "1.1.2" + +"@radix-ui/react-select@2.3.2": + version "2.3.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-select/-/react-select-2.3.2.tgz#3ef8b0593c10fe78e067db6133c253c03321f1f2" + integrity sha512-brXD6C/V0fVK0DDbscLVw6LsXrjQ+ay8jdOBaN+tLb4vsHsAMm6Gt6eT77wHX1Eq8GPtD5rJ+RxFtfDozsb4+Q== + dependencies: + "@radix-ui/number" "1.1.2" + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-collection" "1.1.11" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-direction" "1.1.2" + "@radix-ui/react-dismissable-layer" "1.1.14" + "@radix-ui/react-focus-guards" "1.1.4" + "@radix-ui/react-focus-scope" "1.1.11" + "@radix-ui/react-id" "1.1.2" + "@radix-ui/react-popper" "1.3.2" + "@radix-ui/react-portal" "1.1.13" + "@radix-ui/react-presence" "1.1.6" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-slot" "1.3.0" + "@radix-ui/react-use-callback-ref" "1.1.2" + "@radix-ui/react-use-controllable-state" "1.2.3" + "@radix-ui/react-use-layout-effect" "1.1.2" + "@radix-ui/react-use-previous" "1.1.2" + "@radix-ui/react-visually-hidden" "1.2.7" + aria-hidden "^1.2.4" + react-remove-scroll "^2.7.2" + +"@radix-ui/react-separator@1.1.11": version "1.1.11" - resolved "https://registry.yarnpkg.com/@radix-ui/react-toolbar/-/react-toolbar-1.1.11.tgz#2a71f1d91535788f88145d542159e2faaa561db7" - integrity sha512-4ol06/1bLoFu1nwUqzdD4Y5RZ9oDdKeiHIsntug54Hcr1pgaHiPqHFEaXI1IFP/EsOfROQZ8Mig9VTIRza6Tjg== + resolved "https://registry.yarnpkg.com/@radix-ui/react-separator/-/react-separator-1.1.11.tgz#f023c006c5372742175617293b0b692790024956" + integrity sha512-jRhe86+8PF7VZ1u14eOWVOuh2BuAhALg/FT1VcMC4OHedMTRUazDnDlKTt+yxo5cRNKHMfmvZ4sSQtWDeMV4CQ== dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-direction" "1.1.1" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-roving-focus" "1.1.11" - "@radix-ui/react-separator" "1.1.7" - "@radix-ui/react-toggle-group" "1.1.11" + "@radix-ui/react-primitive" "2.1.7" -"@radix-ui/react-tooltip@1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz#3f50267e25bccfc9e20bb3036bfd9ab4c2c30c2c" - integrity sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg== +"@radix-ui/react-slider@1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-slider/-/react-slider-1.4.2.tgz#e1c492366b3662328ba8f36315e1f3459a0100e1" + integrity sha512-qt5C1ppJz66aUDrH1VccjPrq7aFchK0wBrn6xsxlCHNUyE57dRRQ7lp1QFpF7OscMexZF8MCGBTVBlENHPkNiA== dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-dismissable-layer" "1.1.11" - "@radix-ui/react-id" "1.1.1" - "@radix-ui/react-popper" "1.2.8" - "@radix-ui/react-portal" "1.1.9" - "@radix-ui/react-presence" "1.1.5" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-slot" "1.2.3" - "@radix-ui/react-use-controllable-state" "1.2.2" - "@radix-ui/react-visually-hidden" "1.2.3" + "@radix-ui/number" "1.1.2" + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-collection" "1.1.11" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-direction" "1.1.2" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-use-controllable-state" "1.2.3" + "@radix-ui/react-use-layout-effect" "1.1.2" + "@radix-ui/react-use-previous" "1.1.2" + "@radix-ui/react-use-size" "1.1.2" -"@radix-ui/react-use-callback-ref@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz#62a4dba8b3255fdc5cc7787faeac1c6e4cc58d40" - integrity sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg== - -"@radix-ui/react-use-controllable-state@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz#905793405de57d61a439f4afebbb17d0645f3190" - integrity sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg== +"@radix-ui/react-slot@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.3.0.tgz#e311c7a6c8d65b1af9e69af8e3318c6c7105a212" + integrity sha512-MojKku4U/miO8Av4Dkb+ctMAQx7JmY96LmtDQlAarCRtd7rN52QCSzBF+XAvr5S6coSVj9HEPBgHAHKEJVk/WA== dependencies: - "@radix-ui/react-use-effect-event" "0.0.2" - "@radix-ui/react-use-layout-effect" "1.1.1" + "@radix-ui/react-compose-refs" "1.1.3" -"@radix-ui/react-use-effect-event@0.0.2": - version "0.0.2" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz#090cf30d00a4c7632a15548512e9152217593907" - integrity sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA== +"@radix-ui/react-switch@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-switch/-/react-switch-1.3.2.tgz#921e56db774a1b7500f1404bf355a241ac354b0a" + integrity sha512-tgRBI3DdNwAJYE4BBZyZcz/HRRCvAsPkRvG1wvKc+41tBGMxPn/a87T/wikXAvyDypNQ9kaZwHbeZe+veHCGpA== dependencies: - "@radix-ui/react-use-layout-effect" "1.1.1" + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-use-controllable-state" "1.2.3" + "@radix-ui/react-use-previous" "1.1.2" + "@radix-ui/react-use-size" "1.1.2" -"@radix-ui/react-use-escape-keydown@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz#b3fed9bbea366a118f40427ac40500aa1423cc29" - integrity sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g== +"@radix-ui/react-tabs@1.1.16": + version "1.1.16" + resolved "https://registry.yarnpkg.com/@radix-ui/react-tabs/-/react-tabs-1.1.16.tgz#b86d8b988d1be26927326a5381173374f8958522" + integrity sha512-v3Ab2l7z6U7tRB4xA0IyKdq0OsqaO1o9ZjsIEoKKnSZ/l96mZz8aCTX0NCXw+YVHJXr8Km4d+Mn6/Q8YjXa+gw== dependencies: - "@radix-ui/react-use-callback-ref" "1.1.1" + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-direction" "1.1.2" + "@radix-ui/react-id" "1.1.2" + "@radix-ui/react-presence" "1.1.6" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-roving-focus" "1.1.14" + "@radix-ui/react-use-controllable-state" "1.2.3" -"@radix-ui/react-use-is-hydrated@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.0.tgz#544da73369517036c77659d7cdd019dc0f5ff9a0" - integrity sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA== +"@radix-ui/react-toast@1.2.18": + version "1.2.18" + resolved "https://registry.yarnpkg.com/@radix-ui/react-toast/-/react-toast-1.2.18.tgz#765b667f4c8a1bc757a680b8a9692b7e63e115a1" + integrity sha512-YNEnTHV47hPep+U0QvVM02OJNka9uygREc+k4Nh5VSZBg4MmE+myI442x3hCGfRpX7N2WSSYSJKws4gE+Z8lgg== dependencies: - use-sync-external-store "^1.5.0" + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-collection" "1.1.11" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-dismissable-layer" "1.1.14" + "@radix-ui/react-portal" "1.1.13" + "@radix-ui/react-presence" "1.1.6" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-use-callback-ref" "1.1.2" + "@radix-ui/react-use-controllable-state" "1.2.3" + "@radix-ui/react-use-layout-effect" "1.1.2" + "@radix-ui/react-visually-hidden" "1.2.7" -"@radix-ui/react-use-layout-effect@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz#0c4230a9eed49d4589c967e2d9c0d9d60a23971e" - integrity sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ== - -"@radix-ui/react-use-previous@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz#1a1ad5568973d24051ed0af687766f6c7cb9b5b5" - integrity sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ== - -"@radix-ui/react-use-rect@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz#01443ca8ed071d33023c1113e5173b5ed8769152" - integrity sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w== +"@radix-ui/react-toggle-group@1.1.14": + version "1.1.14" + resolved "https://registry.yarnpkg.com/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.14.tgz#dccb4ee15ceadd69cafa04dc58f96f4fa843fb0e" + integrity sha512-TK1vusNKb8IRhF23FTbRgUNZ9zfs5rGIyI7LfR3h26p9LrQ060i0uW9QWeD8baZMddaaP0DBGlIa6pbZG+mitg== dependencies: - "@radix-ui/rect" "1.1.1" + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-direction" "1.1.2" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-roving-focus" "1.1.14" + "@radix-ui/react-toggle" "1.1.13" + "@radix-ui/react-use-controllable-state" "1.2.3" -"@radix-ui/react-use-size@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz#6de276ffbc389a537ffe4316f5b0f24129405b37" - integrity sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ== +"@radix-ui/react-toggle@1.1.13": + version "1.1.13" + resolved "https://registry.yarnpkg.com/@radix-ui/react-toggle/-/react-toggle-1.1.13.tgz#e4e11e6e60513a97dd76c2fc6081e9a60c8168b5" + integrity sha512-bI2ILJrzwgmAsH05TsJ9pVrzqQwAip7OM2/krqAdYn0R16bl86UPWbe5VPHsALat0EnqpV01cGtkleaUKPNdNg== dependencies: - "@radix-ui/react-use-layout-effect" "1.1.1" + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-use-controllable-state" "1.2.3" -"@radix-ui/react-visually-hidden@1.2.3": +"@radix-ui/react-toolbar@1.1.14": + version "1.1.14" + resolved "https://registry.yarnpkg.com/@radix-ui/react-toolbar/-/react-toolbar-1.1.14.tgz#9f0b72fff04537cf85402bca0da2a4b5f9ca9782" + integrity sha512-L/EkWVqlnj3lL2toHh4C7PwH2jxfa7OCq6lGfXSCii99ve2S4Ux5rc9HnOa7LN9exHa/Nl9kmCAmP9BuDPy5UA== + dependencies: + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-direction" "1.1.2" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-roving-focus" "1.1.14" + "@radix-ui/react-separator" "1.1.11" + "@radix-ui/react-toggle-group" "1.1.14" + +"@radix-ui/react-tooltip@1.2.11": + version "1.2.11" + resolved "https://registry.yarnpkg.com/@radix-ui/react-tooltip/-/react-tooltip-1.2.11.tgz#c01e24cce73388deade85287a16ff65da81b3e72" + integrity sha512-8XZ6Py3y3W2nEzAUGCN5cfVKaUi+CVApcz1d6lrNVVf2hvYEixMRkq8k9ggPKnQUpRRuOV5avt8uvxViH2jLwA== + dependencies: + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-dismissable-layer" "1.1.14" + "@radix-ui/react-id" "1.1.2" + "@radix-ui/react-popper" "1.3.2" + "@radix-ui/react-portal" "1.1.13" + "@radix-ui/react-presence" "1.1.6" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-slot" "1.3.0" + "@radix-ui/react-use-controllable-state" "1.2.3" + "@radix-ui/react-visually-hidden" "1.2.7" + +"@radix-ui/react-use-callback-ref@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.2.tgz#ddc0bc1381ff3b62368c248808efc45a098bafde" + integrity sha512-xCso9j1/u8sEgP1RNHjFrXJLApL8LiqOkI1R4ywuN00rxWdYg4oQXuwKLS3i0j5NWLromUD27/4nlxj2UFVvIw== + +"@radix-ui/react-use-controllable-state@1.2.3": version "1.2.3" - resolved "https://registry.yarnpkg.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz#a8c38c8607735dc9f05c32f87ab0f9c2b109efbf" - integrity sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug== + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.3.tgz#516996f6443207546aa15a59bc71cdf5b54e01d1" + integrity sha512-PLzC90MS+ReootmjC597dvopoelpZ8Q61HJkDXZSExitIq7PL55vHNnesAHwguHK0aPfBnpdNzQtv1uliaqQrA== dependencies: - "@radix-ui/react-primitive" "2.1.3" + "@radix-ui/react-use-effect-event" "0.0.3" + "@radix-ui/react-use-layout-effect" "1.1.2" -"@radix-ui/rect@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.1.1.tgz#78244efe12930c56fd255d7923865857c41ac8cb" - integrity sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw== - -"@rolldown/binding-android-arm64@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.3.tgz#54ce8f8382213f4a314a0c2f7ba83f81ffeae592" - integrity sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw== - -"@rolldown/binding-darwin-arm64@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.3.tgz#388fca1566c14c00c4b446fc3928630e7f0d95fc" - integrity sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA== - -"@rolldown/binding-darwin-x64@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.3.tgz#53f57de1f599ecf1db13823cfc88c18fb80954ad" - integrity sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg== - -"@rolldown/binding-freebsd-x64@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.3.tgz#6f3fdda1b7aeaac9d268a526804b4fb96e4e35f1" - integrity sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g== - -"@rolldown/binding-linux-arm-gnueabihf@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.3.tgz#d87a454bf585cc9676849377e91d6e375297326f" - integrity sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw== - -"@rolldown/binding-linux-arm64-gnu@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.3.tgz#419fd6bf612cf348f10528cbcd94ebab9607d8d1" - integrity sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw== - -"@rolldown/binding-linux-arm64-musl@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.3.tgz#fcc6918696bb76844877e1e4930a18fd0d374069" - integrity sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q== - -"@rolldown/binding-linux-ppc64-gnu@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.3.tgz#32aecb7c8dae5d4f2a8cde57a058ec86991542f8" - integrity sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg== - -"@rolldown/binding-linux-s390x-gnu@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.3.tgz#bed9346ea81e6bb8b93cf11f5d88b77db890b763" - integrity sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg== - -"@rolldown/binding-linux-x64-gnu@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.3.tgz#64c2d26f75dffd9b5a1f97557a00ae77250c8cb7" - integrity sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg== - -"@rolldown/binding-linux-x64-musl@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.3.tgz#5a45132e8a47659eeaaf3b540c2954a97c860ff3" - integrity sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow== - -"@rolldown/binding-openharmony-arm64@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.3.tgz#290513068c55e849dc8457a32afee1d7b0acb309" - integrity sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg== - -"@rolldown/binding-wasm32-wasi@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.3.tgz#3d9972dbf1a953d3c7afaa4a0f20ef2b2e39f31b" - integrity sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg== +"@radix-ui/react-use-effect-event@0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.3.tgz#e8f45e8e6ef64ce5bea7b5a9effc373f067e3530" + integrity sha512-6c8ZqvPTWILEKnyVkP53EGRCcpnJiKTC21sS/6R1GF5xKyHJJWQEPfkqlcgUkdRQivd6tb23abUwe4ngWmY0JA== dependencies: - "@emnapi/core" "1.10.0" - "@emnapi/runtime" "1.10.0" - "@napi-rs/wasm-runtime" "^1.1.4" + "@radix-ui/react-use-layout-effect" "1.1.2" -"@rolldown/binding-win32-arm64-msvc@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.3.tgz#a004ab607a16d6f03bcb555728ff888af75773ad" - integrity sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g== +"@radix-ui/react-use-escape-keydown@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.3.tgz#4271bb071201242e24e2a6a6267ea20525b2184e" + integrity sha512-3wEkMiPHXha/2VadZ68rYBcmYnPINVGl4Y3gtcM7fKRjANk0OscK+cdqBgUWdozb7YJxsh0vefM7vgAMHXOjqg== + dependencies: + "@radix-ui/react-use-callback-ref" "1.1.2" -"@rolldown/binding-win32-x64-msvc@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.3.tgz#e2a25b34691a1cc8a1209d7de709063026dd0cdb" - integrity sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA== +"@radix-ui/react-use-is-hydrated@0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.1.tgz#61a18cb03430a6d2e704eb2afd3067505ed0f292" + integrity sha512-qwOiz4Tjo8CNnrOLAYUMXeZwDzXgXpvK4TKQPmWLECM9XoWvA6+0Z2/7Ag3A4ivjS4ovbLJPbskkxioFyBhr8A== -"@rolldown/pluginutils@1.0.0-rc.7": - version "1.0.0-rc.7" - resolved "https://registry.yarnpkg.com/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.7.tgz#0414869467f0e471a6515d4f506c85fde867e022" - integrity sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA== +"@radix-ui/react-use-layout-effect@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.2.tgz#c882e66497174d061f250e65251974b699c65b65" + integrity sha512-jrBWOxZITuGcnjRCM2t2U5ZPkCLxD+Ym6DjfssS5haTj2iiak/DOb64JeN6OdLfLgptb6/e2kKR+ZuTrGoZTPA== -"@rolldown/pluginutils@^1.0.0": +"@radix-ui/react-use-previous@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-previous/-/react-use-previous-1.1.2.tgz#8fd78d5874de9c150e7b21ab1a411d5bc1a26257" + integrity sha512-IGBQPtRFdhN6MQ8dbegVmBq1LVZluya3F1jWY+puIcQC3MHctRwTDSBWCkL/3ZcnMJLTMJ++Z+ktmvg0F89iCw== + +"@radix-ui/react-use-rect@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-rect/-/react-use-rect-1.1.2.tgz#83b9de1ea8f6abd1425eb79f2930e00047cb8d19" + integrity sha512-d8a+bBY/FxikNPlgJJoaBHZX+zKVbWHYJGTLnLvveQgFSTntkGdEKv3JDtHrMS0DNYpllz2nRsTLGLKYttbpmw== + dependencies: + "@radix-ui/rect" "1.1.2" + +"@radix-ui/react-use-size@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-size/-/react-use-size-1.1.2.tgz#33eb275755424d7dda33ffa32c23ea85ca23be40" + integrity sha512-giWQp+4mxjBPt4KZ0MmyuykFNWfbDxKt4x+fPkRYmgRFJSbCZFzUglvMb/Kjn38tm10YP4ufiQZDx3zna4LU6w== + dependencies: + "@radix-ui/react-use-layout-effect" "1.1.2" + +"@radix-ui/react-visually-hidden@1.2.7": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.7.tgz#64fc5994ebd39b3b19f4e93c11da22bf03af684b" + integrity sha512-1wNZBggTDK3GRuuQ6nP4k2yi7a6l7I5qbMPbZcRsrGsGVead/f/d5FhEzUvqFs0bcrDLx7n1zKQ3JvLR6whaaw== + dependencies: + "@radix-ui/react-primitive" "2.1.7" + +"@radix-ui/rect@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.1.2.tgz#0761a82af55c7e302d5b509eaf1c97ea1fc5feea" + integrity sha512-xnXE7wG13PI+cxieVssYXlQJuYVRhH9NBoxt3KNwzghDIA69GMm7d4wXRouHIYjE+KvS6U/MsMO73NdS2MH9ZA== + +"@rolldown/binding-android-arm64@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.3.tgz#cc6153029c3d9afc9caaae2dc362d899ae94ac4f" + integrity sha512-DT6Z3PhvioeHMvxo+xHc3KtqggrI7CCTXCmC2h/5zUlp5jVitv7XEy+9q5/7v8IolhlioawpMo8Kg0EEBy7J0g== + +"@rolldown/binding-darwin-arm64@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.3.tgz#3af681a5d7610340257b3ac7753353b23e884765" + integrity sha512-0NwgwsjM7LrsuVnXMK3koTpagBNOhloc/BNjKqZjv4V5zI5r13qx69uVhRx+o5Z0yy4Hzq+lpy7TAgUG/ocvrw== + +"@rolldown/binding-darwin-x64@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.3.tgz#80ada35e9f35efb7e48a887444ce2052f615d645" + integrity sha512-YtiBp4disu6V560loT6PjMdiRaWmVvDNrUunAalbiFx2ggeJwxdAsgZMcoGP17uyAsTwAj5V1niksxlHnVQ1Sw== + +"@rolldown/binding-freebsd-x64@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.3.tgz#65b2bbb82f005f08aeeff0b6d81e19be68360201" + integrity sha512-yD3EkEdXk2LypPxnf/kSZHirarsI8gcPzc62SukhR9VJTyvV+F9Q/GxWNuCojc7sXyuVC4DxRGhdDK4X8VSsbw== + +"@rolldown/binding-linux-arm-gnueabihf@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.3.tgz#7e8d34ad0c7bcfd3baed268e9798571e3888ca71" + integrity sha512-c+8vieQbsD7HNAHKIA34w0GJ9FedFFuJGD+7E6vz7Q3uqAIugL5p45fhlsj4UaAsHpcmlqugBWMhA0/j7o0sIg== + +"@rolldown/binding-linux-arm64-gnu@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.3.tgz#52bbf400ff219bda1e56c042160d96deb08bfecc" + integrity sha512-50jD0uUwLvur7Zz9LHz17kaAdTPjn5wN93hEgjvmYFRZwiR7ZJYovTd5ipyWJDAnXKvZ+wgc+/Ika6dwSF5OcA== + +"@rolldown/binding-linux-arm64-musl@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.3.tgz#9e82899186f73329f3d8155fa1618ae2e86ffa2a" + integrity sha512-BO9+oPL8K9poZJBfYPsXNtYjPE5uM3qeehT3aFcW4LITOl+iSqhp0abzjR2nWBUNjIZeKXjAEWBZ64WjNoHd6w== + +"@rolldown/binding-linux-ppc64-gnu@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.3.tgz#050520177316586ccad816eb466ea11015e17ba7" + integrity sha512-f3VpLB1vQ0Eo6ecr/6cekLnvYMFF4YBFoVGkfkvPLq1bAkbAwHYQPZKoAmG6OJyTcxxoC+AvezGx/S1obNC0Mw== + +"@rolldown/binding-linux-s390x-gnu@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.3.tgz#50efa7b20219c6e31235fded0fd3427f36123e5a" + integrity sha512-AmurZ26Pqx/RI9N1gzEOCklkKXl927yjfXWUUS0O7Puh8ARM/Ob8qfrD3qnWksScdw6cSrW5PSHE9DyLu7+PtA== + +"@rolldown/binding-linux-x64-gnu@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.3.tgz#c5973445113dff50d4077d0edaa4b8a69533dc6f" + integrity sha512-JJpqs8bRGITDOdbkNKnlojzBabbOHrqjSvDr0IVsZObE1lBcPjxItUEY9eWIDbxaJ3cGrXPWGfGkIxFijg/URg== + +"@rolldown/binding-linux-x64-musl@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.3.tgz#ddb023f7fc98ccbb8c1b683545216ca7b4e7ebdd" + integrity sha512-rSJcdjPxzA/by/6/rYs+v+bXU7UjvnbUWz8MJb6kh6+knqB1dCrtHg0uu7C/4haqJvqdkYHQ5IGn+tCH9GLW/g== + +"@rolldown/binding-openharmony-arm64@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.3.tgz#832a6da3472722427c73d178c75681858b76aeed" + integrity sha512-hQ3/PYkDJICgevvyNcVrihVeqq7k1Pp3VZ9lY+dauAYUJKO+auqApvANhvR1An9BhmqYKvW2Mu1F9u4DXSMLxQ== + +"@rolldown/binding-wasm32-wasi@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.3.tgz#256cdcc06ad9ada611606526f319642fc0830b0f" + integrity sha512-Elcv/BtML9lXrV6JuKITc/grN2kYV9gjsQpW8Jfw4ioK0TOkjBjye0nnyqQNy9STNaI20lXNaQBRrD5gSgR0Yg== + dependencies: + "@emnapi/core" "1.11.1" + "@emnapi/runtime" "1.11.1" + "@napi-rs/wasm-runtime" "^1.1.6" + +"@rolldown/binding-win32-arm64-msvc@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.3.tgz#e735c7024a5e17ebaf13689112fa0bdfc6886c38" + integrity sha512-2DrEfhluH9yhiaFApmsjsjwrSYbNcY1oFTzYSP1a535jDbV98zCFanA/96TBUd0iDFcxGmw9QRExwGCXz3U+/g== + +"@rolldown/binding-win32-x64-msvc@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.3.tgz#f06c09db5c8ad4b6904b4d406c9b6f17f392b5c6" + integrity sha512-OL4OMk7UPXOeVGGd3qo5zJyPIljf4AFgk5QAkPPS+OoLuOOozhuaQGC18MxVTnw/06q93gShAJzlwnSCY9YtqA== + +"@rolldown/pluginutils@^1.0.0", "@rolldown/pluginutils@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz#e3fcee093fbb5ce765e1ad088ff4de2889f6f9be" integrity sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw== @@ -1141,112 +1126,112 @@ resolved "https://registry.yarnpkg.com/@tabby_ai/hijri-converter/-/hijri-converter-1.0.5.tgz#b664994892348a402ae7529e648c819eee39208b" integrity sha512-r5bClKrcIusDoo049dSL8CawnHR6mRdDwhlQuIgZRNty68q0x8k3Lf1BtPAMxRf/GgnHBnIO4ujd3+GQdLWzxQ== -"@tailwindcss/node@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@tailwindcss/node/-/node-4.3.0.tgz#9dc5312bf41c48658529f36021e0b466c4eb7860" - integrity sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g== +"@tailwindcss/node@4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@tailwindcss/node/-/node-4.3.2.tgz#2ba563b05ff662b9172c9645d78a5edd59f96eb3" + integrity sha512-yWP/sqEcBLaD8JuA6zNwxoYKr75qxTioYwlRwekj5Jr/I5GXnoJfjetH/psLUIv74cYTH2lBUEzBkinthoYcBg== dependencies: "@jridgewell/remapping" "^2.3.5" - enhanced-resolve "^5.21.0" - jiti "^2.6.1" + enhanced-resolve "5.21.6" + jiti "^2.7.0" lightningcss "1.32.0" magic-string "^0.30.21" source-map-js "^1.2.1" - tailwindcss "4.3.0" + tailwindcss "4.3.2" -"@tailwindcss/oxide-android-arm64@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.0.tgz#e4533b6125236fe81a899cf5a82028c85244def8" - integrity sha512-TJPiq67tKlLuObP6RkwvVGDoxCMBVtDgKkLfa/uyj7/FyxvQwHS+UOnVrXXgbEsfUaMgiVvC4KbJnRr26ho4Ng== +"@tailwindcss/oxide-android-arm64@4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.2.tgz#add4f8eba265b20b14634a22717621a3350cd6d4" + integrity sha512-WHxqIuHpvZ5VtdX6GTl1Ik/Vp2YuN42Et+0CdeaVd/frQ9jAvGmvR8vLT+jk3e8/Q3x8kECB9+R17pgpp2BulA== -"@tailwindcss/oxide-darwin-arm64@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.0.tgz#96b074ef64ec6c41d580063740c8d36cf5c459ce" - integrity sha512-oMN/WZRb+SO37BmUElEgeEWuU8E/HXRkiODxJxLe1UTHVXLrdVSgfaJV7pSlhRGMSOiXLuxTIjfsF3wYvz8cgQ== +"@tailwindcss/oxide-darwin-arm64@4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.2.tgz#2439b7c991679c006d16ed00264c60d540567554" + integrity sha512-GZypeUY/IDJW3877KeM+O67vbXr3MBnbtEL4aYhNErv/JWZhye2vGSWWG9tB6iiqR2MqRNkY8IOUy4NdSZV26w== -"@tailwindcss/oxide-darwin-x64@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.0.tgz#0d9638d06d38684339b2dc06631966a7296bb64e" - integrity sha512-N6CUmu4a6bKVADfw77p+iw6Yd9Q3OBhe0veaDX+QazfuVYlQsHfDgxBrsjQ/IW+zywL8mTrNd0SdJT/zgtvMdA== +"@tailwindcss/oxide-darwin-x64@4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.2.tgz#016ffbb375bb5feabab0fd42c744b3cf21647968" + integrity sha512-UIIzmefR6KO1sDU7MzRqAxC8iBpft/VhkGjTjnhoS6k7Z3rQ9wEgA1ODSiyH/tcSYssulNm4Ci3hOeK1jH7ccQ== -"@tailwindcss/oxide-freebsd-x64@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.0.tgz#efc7acd17cd38d7585c07cb938a4f1b703f79d7a" - integrity sha512-zDL5hBkQdH5C6MpqbK3gQAgP80tsMwSI26vjOzjJtNCMUo0lFgOItzHKBIupOZNQxt3ouPH7RPhvNhiTfCe5CQ== +"@tailwindcss/oxide-freebsd-x64@4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.2.tgz#6fe112b103ff659671483293c61c853651635ee0" + integrity sha512-GN+uAmcI6DNspnCDwtOAZrTz6oukJnp337qZvxqCGLd3BHBzJpO0ZbTLRvJNdztOeAmTzewewGIMPb0tk2R4WA== -"@tailwindcss/oxide-linux-arm-gnueabihf@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.0.tgz#e41c945e529670cd93fd6ed0c6a2880de5c40333" - integrity sha512-R06HdNi7A7OEoMsf6d4tjZ71RCWnZQPHj2mnotSFURjNLdBC+cIgXQ7l81CqeoiQftjf6OOblxXMInMgN2VzMA== +"@tailwindcss/oxide-linux-arm-gnueabihf@4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.2.tgz#30fffb495ac59ea01046ee48c2bfa247ca6eda5e" + integrity sha512-4ABn7qSbdHRwTiDiuWNegCyb5+2FJ4vKIKc3DmKrvAFw7MU1Lm11dIkTPwUaFdTzc7IsOpDbqBrlh0x6y36U/w== -"@tailwindcss/oxide-linux-arm64-gnu@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.0.tgz#6bb608b16ba7146d61097c2f4c7ee927d1f3580a" - integrity sha512-qTJHELX8jetjhRQHCLilkVLmybpzNQAtaI/gaoVoidn/ufbNDbAo8KlK2J+yPoc8wQxvDxCmh/5lr8nC1+lTbg== +"@tailwindcss/oxide-linux-arm64-gnu@4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.2.tgz#910f4754e9aa8f8b04c018bebab627a52bd568b9" + integrity sha512-wDgEIGwoM8w8pufh9LVt1PahDgNdKXrLC2qfAnV3vAmococ9RWbxeAw4pxPttd/TsJfwjyLf90Dg1y9y8I6Emw== -"@tailwindcss/oxide-linux-arm64-musl@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.0.tgz#1bb443aa371bb99b50cb39d4d688151fadcd8a63" - integrity sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ== +"@tailwindcss/oxide-linux-arm64-musl@4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.2.tgz#bdb9861bb5064209ec5ff101afff6d046fb15ecd" + integrity sha512-J5Nuk0uZQIiMTJj3LEx4sAA9tMFUoXQZFv1J6An+QGYe53HKRJuFDi0rpq/tuouCZeAbOBY3kQ6g8qeD4TUjtA== -"@tailwindcss/oxide-linux-x64-gnu@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.0.tgz#5267c0bb2597426c0d2e759acb5389cde2aa71fd" - integrity sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ== +"@tailwindcss/oxide-linux-x64-gnu@4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.2.tgz#424276287610607303a35f52f2a172b95af4898a" + integrity sha512-kqCZpSKOBEJO4mz7OqWoofBZeXTAwaVGPj0ErAj7CojmhKpWVWVOnrt9dE8odoIraZq4oj3ausM37kXi+Tow8w== -"@tailwindcss/oxide-linux-x64-musl@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.0.tgz#fb2da97c67b218e5c7c723cb32782d55d7e4a5d5" - integrity sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg== +"@tailwindcss/oxide-linux-x64-musl@4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.2.tgz#606d5dc2fd7d2e8cdd7d1f1c4a1f4d5639056e05" + integrity sha512-cixpqbh2toJDmkuCRI68nXA8ZxNmdK9Y+9v5h3MC3ZQKy/0BO8AWzlkWyRM7JAFSGBlfig4YVTPsK6MVgqz1uw== -"@tailwindcss/oxide-wasm32-wasi@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.0.tgz#3f6538e511066d67d8683863dcaeeb16c22de849" - integrity sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA== +"@tailwindcss/oxide-wasm32-wasi@4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.2.tgz#f5d4ed2bcd12507217cc1a92e4fc507fdac6dd8c" + integrity sha512-4ec2Z/LOmRsAgU23CS4xeJfcJlmRg94A/XrbGRCF1gyU/zdDfRLYDVsS+ynSZCmGNxQ1jQriQOKMQeQxBA3Isw== dependencies: - "@emnapi/core" "^1.10.0" - "@emnapi/runtime" "^1.10.0" - "@emnapi/wasi-threads" "^1.2.1" + "@emnapi/core" "^1.11.1" + "@emnapi/runtime" "^1.11.1" + "@emnapi/wasi-threads" "^1.2.2" "@napi-rs/wasm-runtime" "^1.1.4" - "@tybys/wasm-util" "^0.10.1" + "@tybys/wasm-util" "^0.10.2" tslib "^2.8.1" -"@tailwindcss/oxide-win32-arm64-msvc@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.0.tgz#ec45fba773c76759338c05d4fe5cf42c4eea2e4e" - integrity sha512-Pe+RPVTi1T+qymuuRpcdvwSVZjnll/f7n8gBxMMh3xLTctMDKqpdfGimbMyioqtLhUYZxdJ9wGNhV7MKHvgZsQ== +"@tailwindcss/oxide-win32-arm64-msvc@4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.2.tgz#a4ec761083fef55c530e204fad43edba629ea1bf" + integrity sha512-Zyr/M0+XcYZu3bZrUytc7TXvrk0ftWfl8gN2MwekNDzhqhKRUucMPSeOzM0o0wH5AWOU49BsKRrfKxI2atCPMQ== -"@tailwindcss/oxide-win32-x64-msvc@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.0.tgz#58cdd6e06adbe2e3160274edfcd0b0b43e17fee4" - integrity sha512-Mvrf2kXW/yeW/OTezZlCGOirXRcUuLIBx/5Y12BaPM7wJoryG6dfS/NJL8aBPqtTEx/Vm4T4vKzFUcKDT+TKUA== +"@tailwindcss/oxide-win32-x64-msvc@4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.2.tgz#38bf0e3878d17afedb0260758b661973b2d9de70" + integrity sha512-QI9BO7KlNZsp2GuO0jwAAj5jCDABOKXRkCk2XuKTSaNEFSdfzqswYVTtCHBNKHLsqyjFyFkqlDiwkNbTYSssMQ== -"@tailwindcss/oxide@4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@tailwindcss/oxide/-/oxide-4.3.0.tgz#cc1c61e88f62c0e9f56062de3e7873acaa2159d4" - integrity sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg== +"@tailwindcss/oxide@4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@tailwindcss/oxide/-/oxide-4.3.2.tgz#82157fb0d5bebf1188234855c5b7dc754da54065" + integrity sha512-z8ZgnzX8gdNoWLBLqBPoh/sjnxkwvf9ZuWjnO0l0yIzbLa5/9S+eC5QxGZKRobVHIC3/1BoMWjHblqWjcgFgag== optionalDependencies: - "@tailwindcss/oxide-android-arm64" "4.3.0" - "@tailwindcss/oxide-darwin-arm64" "4.3.0" - "@tailwindcss/oxide-darwin-x64" "4.3.0" - "@tailwindcss/oxide-freebsd-x64" "4.3.0" - "@tailwindcss/oxide-linux-arm-gnueabihf" "4.3.0" - "@tailwindcss/oxide-linux-arm64-gnu" "4.3.0" - "@tailwindcss/oxide-linux-arm64-musl" "4.3.0" - "@tailwindcss/oxide-linux-x64-gnu" "4.3.0" - "@tailwindcss/oxide-linux-x64-musl" "4.3.0" - "@tailwindcss/oxide-wasm32-wasi" "4.3.0" - "@tailwindcss/oxide-win32-arm64-msvc" "4.3.0" - "@tailwindcss/oxide-win32-x64-msvc" "4.3.0" + "@tailwindcss/oxide-android-arm64" "4.3.2" + "@tailwindcss/oxide-darwin-arm64" "4.3.2" + "@tailwindcss/oxide-darwin-x64" "4.3.2" + "@tailwindcss/oxide-freebsd-x64" "4.3.2" + "@tailwindcss/oxide-linux-arm-gnueabihf" "4.3.2" + "@tailwindcss/oxide-linux-arm64-gnu" "4.3.2" + "@tailwindcss/oxide-linux-arm64-musl" "4.3.2" + "@tailwindcss/oxide-linux-x64-gnu" "4.3.2" + "@tailwindcss/oxide-linux-x64-musl" "4.3.2" + "@tailwindcss/oxide-wasm32-wasi" "4.3.2" + "@tailwindcss/oxide-win32-arm64-msvc" "4.3.2" + "@tailwindcss/oxide-win32-x64-msvc" "4.3.2" -"@tailwindcss/vite@^4.3.0": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@tailwindcss/vite/-/vite-4.3.0.tgz#b2bbc069a4c700ea7aef5ee30416d84b7652e136" - integrity sha512-t6J3OrB5Fc0ExuhohouH0fWUGMYL6PTLhW+E7zIk/pdbnJARZDCwjBznFnkh5ynRnIRSI4YjtTH0t6USjJISrw== +"@tailwindcss/vite@^4.3.2": + version "4.3.2" + resolved "https://registry.yarnpkg.com/@tailwindcss/vite/-/vite-4.3.2.tgz#35787e4d450a6b2430693245483441cfd78bf612" + integrity sha512-eHpMeX4JXfVNJDEcsouTeCBubJBTcTLigeaw/NTUW6PB5ATKKXdyonnXgTBX2VuRbjz1hjfz6C5XAhr52ImQXA== dependencies: - "@tailwindcss/node" "4.3.0" - "@tailwindcss/oxide" "4.3.0" - tailwindcss "4.3.0" + "@tailwindcss/node" "4.3.2" + "@tailwindcss/oxide" "4.3.2" + tailwindcss "4.3.2" "@tanstack/react-table@^8.21.3": version "8.21.3" @@ -1256,33 +1241,33 @@ "@tanstack/table-core" "8.21.3" "@tanstack/react-virtual@^3.13.24": - version "3.13.24" - resolved "https://registry.yarnpkg.com/@tanstack/react-virtual/-/react-virtual-3.13.24.tgz#77af3d5dcf77358d805b7b3b06d3221af7bd3f6f" - integrity sha512-aIJvz5OSkhNIhZIpYivrxrPTKYsjW9Uzy+sP/mx0S3sev2HyvPb7xmjbYvokzEpfgYHy/HjzJ2zFAETuUfgCpg== + version "3.14.5" + resolved "https://registry.yarnpkg.com/@tanstack/react-virtual/-/react-virtual-3.14.5.tgz#183c959aeb85448899dcb1a4da55213e5d4f6078" + integrity sha512-4EKRXh7zBLkbKbFmG3AUVkircuHd+7OdT1pocJSepxtfBd3qnrJgJ5rtPkRYyo9fmyVb2+pI2xPy5oYvMLQy6A== dependencies: - "@tanstack/virtual-core" "3.14.0" + "@tanstack/virtual-core" "3.17.3" "@tanstack/table-core@8.21.3": version "8.21.3" resolved "https://registry.yarnpkg.com/@tanstack/table-core/-/table-core-8.21.3.tgz#2977727d8fc8dfa079112d9f4d4c019110f1732c" integrity sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg== -"@tanstack/virtual-core@3.14.0": - version "3.14.0" - resolved "https://registry.yarnpkg.com/@tanstack/virtual-core/-/virtual-core-3.14.0.tgz#c8839d0d702b8af47c0e57d4ab72fc3ba8bbf3da" - integrity sha512-JLANqGy/D6k4Ujmh8Tr25lGimuOXNiaVyXaCAZS0W+1390sADdGnyUdSWNIfd49gebtIxGMij4IktRVzrdr12Q== +"@tanstack/virtual-core@3.17.3": + version "3.17.3" + resolved "https://registry.yarnpkg.com/@tanstack/virtual-core/-/virtual-core-3.17.3.tgz#71ae7e658fe155392a2dcbf640035febdf2fdb05" + integrity sha512-8Np/TFELpI0ySuJoVmjvOrQYXH/8sTX0Biv9szhFhY39xOdAAY+smrMxjxOum/ux3eM8MUJQsEJ0/R0UpvC8dw== -"@tybys/wasm-util@^0.10.1": - version "0.10.1" - resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.1.tgz#ecddd3205cf1e2d5274649ff0eedd2991ed7f414" - integrity sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg== +"@tybys/wasm-util@^0.10.2", "@tybys/wasm-util@^0.10.3": + version "0.10.3" + resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.10.3.tgz#015cba9e9dd47ce14d03d2a8c5d547bfb169665d" + integrity sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg== dependencies: tslib "^2.4.0" "@types/debug@^4.0.0": - version "4.1.12" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" - integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== + version "4.1.13" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.13.tgz#22d1cc9d542d3593caea764f974306ab36286ee7" + integrity sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw== dependencies: "@types/ms" "*" @@ -1294,9 +1279,9 @@ "@types/estree" "*" "@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.6": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" - integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + version "1.0.9" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.9.tgz#cf3f0e876d7bee15a93ab925b82bf570a3904a24" + integrity sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg== "@types/hast@^3.0.0": version "3.0.4" @@ -1323,11 +1308,11 @@ integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== "@types/node@^25.3.0": - version "25.3.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-25.3.0.tgz#749b1bd4058e51b72e22bd41e9eab6ebd0180470" - integrity sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A== + version "25.9.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.9.4.tgz#18b63c47f88c1fbbed9d55ea2b66ffd494a47001" + integrity sha512-dszCsrKb5U7ZsVZBWiHFklTloVl0mSEnWH/iZXfZUlI4rzCUnsvGmgqfuVRHL54ugE7/wRuxEIXRa2iMZ+BG6g== dependencies: - undici-types "~7.18.0" + undici-types ">=7.24.0 <7.24.7" "@types/react-dom@^19.2.3": version "19.2.3" @@ -1335,9 +1320,9 @@ integrity sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ== "@types/react@^19.2.7": - version "19.2.14" - resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.14.tgz#39604929b5e3957e3a6fa0001dafb17c7af70bad" - integrity sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w== + version "19.2.17" + resolved "https://registry.yarnpkg.com/@types/react/-/react-19.2.17.tgz#dccac365baa0f1734ec270ff4b51c89465e8dc7f" + integrity sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw== dependencies: csstype "^3.2.2" @@ -1351,113 +1336,113 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.11.tgz#11af57b127e32487774841f7a4e54eab166d03c4" integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA== -"@typescript-eslint/eslint-plugin@8.56.1": - version "8.56.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz#b1ce606d87221daec571e293009675992f0aae76" - integrity sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A== +"@typescript-eslint/eslint-plugin@8.62.1": + version "8.62.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.62.1.tgz#1736dcdca6cae3359d818456a47d18b674761f7f" + integrity sha512-4EQM77WgVNxj7OkL/5b/D/xZsw00G577+UriYTC7JF5opcF3T2AuoeY7ueLaZgSVjSgCS6yOAJB5bRGLPSJUzA== dependencies: "@eslint-community/regexpp" "^4.12.2" - "@typescript-eslint/scope-manager" "8.56.1" - "@typescript-eslint/type-utils" "8.56.1" - "@typescript-eslint/utils" "8.56.1" - "@typescript-eslint/visitor-keys" "8.56.1" + "@typescript-eslint/scope-manager" "8.62.1" + "@typescript-eslint/type-utils" "8.62.1" + "@typescript-eslint/utils" "8.62.1" + "@typescript-eslint/visitor-keys" "8.62.1" ignore "^7.0.5" natural-compare "^1.4.0" - ts-api-utils "^2.4.0" + ts-api-utils "^2.5.0" -"@typescript-eslint/parser@8.56.1": - version "8.56.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.56.1.tgz#21d13b3d456ffb08614c1d68bb9a4f8d9237cdc7" - integrity sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg== +"@typescript-eslint/parser@8.62.1": + version "8.62.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.62.1.tgz#d3f7ba18f1bf78bfb7256fea021d1927b48e7080" + integrity sha512-sPhE4iHuJDSvoAiec+Ro8JyXw8f0ql13HFR82P99nCm9GwTEKG0KYLvDe6REk8BCXuit6vJAv/Yxg5ABaNS2rA== dependencies: - "@typescript-eslint/scope-manager" "8.56.1" - "@typescript-eslint/types" "8.56.1" - "@typescript-eslint/typescript-estree" "8.56.1" - "@typescript-eslint/visitor-keys" "8.56.1" + "@typescript-eslint/scope-manager" "8.62.1" + "@typescript-eslint/types" "8.62.1" + "@typescript-eslint/typescript-estree" "8.62.1" + "@typescript-eslint/visitor-keys" "8.62.1" debug "^4.4.3" -"@typescript-eslint/project-service@8.56.1": - version "8.56.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.56.1.tgz#65c8d645f028b927bfc4928593b54e2ecd809244" - integrity sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ== +"@typescript-eslint/project-service@8.62.1": + version "8.62.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.62.1.tgz#78d880eb1cf6859b5ec263d04f95403e9f90ae47" + integrity sha512-yQ3RgY5RkSBpsNS1Bx/JQEcA24FOSdfGktoyprAr5u18390UQdtVcfnEv4nIrIshNnavlVyZBKxQwT1fIAE6cg== dependencies: - "@typescript-eslint/tsconfig-utils" "^8.56.1" - "@typescript-eslint/types" "^8.56.1" + "@typescript-eslint/tsconfig-utils" "^8.62.1" + "@typescript-eslint/types" "^8.62.1" debug "^4.4.3" -"@typescript-eslint/scope-manager@8.56.1": - version "8.56.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz#254df93b5789a871351335dd23e20bc164060f24" - integrity sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w== +"@typescript-eslint/scope-manager@8.62.1": + version "8.62.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.62.1.tgz#7ee65e9a6eb3ccdc4816593a4ff38840306de88a" + integrity sha512-r4d249KbQ1SFdpeStvob8Ih6aPPIzfqllPVOtvhve6ZcpuVcYo5/7zUWckKpHE7StASX4kTKZTLf0WQm/wPkcg== dependencies: - "@typescript-eslint/types" "8.56.1" - "@typescript-eslint/visitor-keys" "8.56.1" + "@typescript-eslint/types" "8.62.1" + "@typescript-eslint/visitor-keys" "8.62.1" -"@typescript-eslint/tsconfig-utils@8.56.1", "@typescript-eslint/tsconfig-utils@^8.56.1": - version "8.56.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz#1afa830b0fada5865ddcabdc993b790114a879b7" - integrity sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ== +"@typescript-eslint/tsconfig-utils@8.62.1", "@typescript-eslint/tsconfig-utils@^8.62.1": + version "8.62.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.62.1.tgz#e2b5f24fe721044189cb7e81117c96d75979d627" + integrity sha512-xadytJqX9vJVQ2fdQjkcIVigwaOJNWkpjdLt6cEQ+xPnrI1fkp+/jZE/I97k9KUjqtpd25i0HeyZf3T6dutv2g== -"@typescript-eslint/type-utils@8.56.1": - version "8.56.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz#7a6c4fabf225d674644931e004302cbbdd2f2e24" - integrity sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg== +"@typescript-eslint/type-utils@8.62.1": + version "8.62.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.62.1.tgz#ebd30b13bacb13070917259a23309cf644121f9a" + integrity sha512-aXM5xlqXiTxPibXB93cLAURfT3rlizf7uMXISCXy66Isr/9hISJx3yDsKl0L7lKa51b8JpFuNKby0/O0pEm9jg== dependencies: - "@typescript-eslint/types" "8.56.1" - "@typescript-eslint/typescript-estree" "8.56.1" - "@typescript-eslint/utils" "8.56.1" + "@typescript-eslint/types" "8.62.1" + "@typescript-eslint/typescript-estree" "8.62.1" + "@typescript-eslint/utils" "8.62.1" debug "^4.4.3" - ts-api-utils "^2.4.0" + ts-api-utils "^2.5.0" -"@typescript-eslint/types@8.56.1", "@typescript-eslint/types@^8.56.1": - version "8.56.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.56.1.tgz#975e5942bf54895291337c91b9191f6eb0632ab9" - integrity sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw== +"@typescript-eslint/types@8.62.1", "@typescript-eslint/types@^8.62.1": + version "8.62.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.62.1.tgz#c58be954e483b2fc98275374d5bcb40b99842dc1" + integrity sha512-ooCzJFaf+Hg+uG6fA3NRFGuFjlfNlDhBthbv4ZPU/0elCAFUfnyXUvf/WOpHz/jYwSmvU2GkR2LtyUfy1AxZ1Q== -"@typescript-eslint/typescript-estree@8.56.1": - version "8.56.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz#3b9e57d8129a860c50864c42188f761bdef3eab0" - integrity sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg== +"@typescript-eslint/typescript-estree@8.62.1": + version "8.62.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.62.1.tgz#98c1bb17635d5b026b24193a8d29188ac64380ff" + integrity sha512-xMcW9oP9u7fAMXYs9A65CVmtLQe2r//oXINHfi8HV+oiqhih17sbLdhXr4540YWlgpDKQdY854OL5ZrdCiQsAA== dependencies: - "@typescript-eslint/project-service" "8.56.1" - "@typescript-eslint/tsconfig-utils" "8.56.1" - "@typescript-eslint/types" "8.56.1" - "@typescript-eslint/visitor-keys" "8.56.1" + "@typescript-eslint/project-service" "8.62.1" + "@typescript-eslint/tsconfig-utils" "8.62.1" + "@typescript-eslint/types" "8.62.1" + "@typescript-eslint/visitor-keys" "8.62.1" debug "^4.4.3" minimatch "^10.2.2" semver "^7.7.3" tinyglobby "^0.2.15" - ts-api-utils "^2.4.0" + ts-api-utils "^2.5.0" -"@typescript-eslint/utils@8.56.1": - version "8.56.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.56.1.tgz#5a86acaf9f1b4c4a85a42effb217f73059f6deb7" - integrity sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA== +"@typescript-eslint/utils@8.62.1": + version "8.62.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.62.1.tgz#1622b75c7e6df308181dd0b44855dc4228da0457" + integrity sha512-sHtbPfuKNZCG+ih8SyjjucqRntSVmp8XgL5u6o9mAhiSn8ds5o/M/XdM0abweme2Tln3szOstOrZ9OXitvPh0g== dependencies: "@eslint-community/eslint-utils" "^4.9.1" - "@typescript-eslint/scope-manager" "8.56.1" - "@typescript-eslint/types" "8.56.1" - "@typescript-eslint/typescript-estree" "8.56.1" + "@typescript-eslint/scope-manager" "8.62.1" + "@typescript-eslint/types" "8.62.1" + "@typescript-eslint/typescript-estree" "8.62.1" -"@typescript-eslint/visitor-keys@8.56.1": - version "8.56.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz#50e03475c33a42d123dc99e63acf1841c0231f87" - integrity sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw== +"@typescript-eslint/visitor-keys@8.62.1": + version "8.62.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.62.1.tgz#499657d77ffafb8a99eb1d6c97847ca430234722" + integrity sha512-4g3BLxfdTMy8iZG0MaBkadnlRrCJ74cQiFbyEVMrkwIoqdyaXXQM22cotDvrl4x28wgIZ9rEJRoM+mmhSJpJ1g== dependencies: - "@typescript-eslint/types" "8.56.1" + "@typescript-eslint/types" "8.62.1" eslint-visitor-keys "^5.0.0" "@ungap/structured-clone@^1.0.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" - integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== + version "1.3.2" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.2.tgz#a03ad82cd5676414d068ba86f880c5681194aadf" + integrity sha512-5jsZFwgR5rTdKwidH9Qmat75RKwqfpKlWWB1frDkljN127mwqBu8K0PYo7/hFpF03IEJpfVPpCQDY/eDx3iHvA== -"@vitejs/plugin-react@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-6.0.1.tgz#d9113b71a0a592714913eafd9e5e63bcafd0ff15" - integrity sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ== +"@vitejs/plugin-react@^6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-6.0.3.tgz#55f1d7f558534d10aef03c007dc208b7c3771ce4" + integrity sha512-vmFvco5/QuC2f9Oj+wTk0+9XeDFkHxSamwZKYc7MxYwKICfvUvlMhqKI0VuICPltGqh1neqBKDvO4kes1ya8vg== dependencies: - "@rolldown/pluginutils" "1.0.0-rc.7" + "@rolldown/pluginutils" "^1.0.1" acorn-jsx@^5.3.2: version "5.3.2" @@ -1465,14 +1450,21 @@ acorn-jsx@^5.3.2: integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn@^8.15.0: - version "8.16.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.16.0.tgz#4ce79c89be40afe7afe8f3adb902a1f1ce9ac08a" - integrity sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw== + version "8.17.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.17.0.tgz#1785adb84faf8d8add10369b93826fc2bd08f1fe" + integrity sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg== -ajv@^6.12.4, ajv@^6.14.0: - version "6.14.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.14.0.tgz#fd067713e228210636ebb08c60bd3765d6dbe73a" - integrity sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw== +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +ajv@^6.14.0: + version "6.15.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.15.0.tgz#07e982c74626167aa7a2495c53817892d7139492" + integrity sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" @@ -1508,13 +1500,14 @@ attr-accept@^2.2.4: resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.5.tgz#d7061d958e6d4f97bf8665c68b75851a0713ab5e" integrity sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ== -axios@^1.16.0: - version "1.16.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.16.0.tgz#f8e5dd931cef2a5f8c32216d5784eda2f8750eb7" - integrity sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w== +axios@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.18.1.tgz#d63f9863bcd8938815c86f9e2abd380189d96dfe" + integrity sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g== dependencies: follow-redirects "^1.16.0" form-data "^4.0.5" + https-proxy-agent "^5.0.1" proxy-from-env "^2.1.0" bail@^2.0.0: @@ -1532,36 +1525,36 @@ balanced-match@^4.0.2: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-4.0.4.tgz#bfb10662feed8196a2c62e7c68e17720c274179a" integrity sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA== -baseline-browser-mapping@^2.9.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz#5b09935025bf8a80e29130251e337c6a7fc8cbb9" - integrity sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA== +baseline-browser-mapping@^2.10.38: + version "2.10.40" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.40.tgz#f372c8eb36ff4ad0b5e7ae467014abef124554ba" + integrity sha512-BSSLZ9/Cjjv7Gtj5B68ZzXcXUg8iOf3fme+FCuh8rC/Go+Kmh8cox7M3A8dolou16s64QjLPOSdngh7GxXvkSw== brace-expansion@^1.1.7: - version "1.1.12" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" - integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== + version "1.1.15" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.15.tgz#a6d90d54067236e5f42570a3b7378d594d9b7738" + integrity sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" -brace-expansion@^5.0.2: - version "5.0.3" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-5.0.3.tgz#6a9c6c268f85b53959ec527aeafe0f7300258eef" - integrity sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA== +brace-expansion@^5.0.5: + version "5.0.7" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-5.0.7.tgz#1b0e46965b479dad65af737b4a02790a05498337" + integrity sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA== dependencies: balanced-match "^4.0.2" browserslist@^4.24.0: - version "4.28.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95" - integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA== + version "4.28.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.4.tgz#dd8b8167a32845ff5f8cd6ce13f5abba16cd04c9" + integrity sha512-MTc8i/x9jBQd1iMw2CFGS+rwMa07eYjLR0CCTLDACl9xhxy+nIs3KeML/biicXtk9JrZ6dnnTatmc7ErPXIxqw== dependencies: - baseline-browser-mapping "^2.9.0" - caniuse-lite "^1.0.30001759" - electron-to-chromium "^1.5.263" - node-releases "^2.0.27" - update-browserslist-db "^1.2.0" + baseline-browser-mapping "^2.10.38" + caniuse-lite "^1.0.30001799" + electron-to-chromium "^1.5.376" + node-releases "^2.0.48" + update-browserslist-db "^1.2.3" call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: version "1.0.2" @@ -1576,10 +1569,10 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -caniuse-lite@^1.0.30001759: - version "1.0.30001774" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001774.tgz#0e576b6f374063abcd499d202b9ba1301be29b70" - integrity sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA== +caniuse-lite@^1.0.30001799: + version "1.0.30001800" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001800.tgz#b896c773e1c39400809415162bb5320371291b36" + integrity sha512-MMHtuAz9Ys840zAY5F4k6fV5GaivZ9sPk+nz0mY+GYVzRBnYkN0mpqkSR92oWRQ19yQWo4HvBV/FnC16AJX8MA== ccount@^2.0.0: version "2.0.1" @@ -1675,10 +1668,10 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -cookie@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-1.1.1.tgz#3bb9bdfc82369db9c2f69c93c9c3ceb310c88b3c" - integrity sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ== +cookie-es@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/cookie-es/-/cookie-es-3.1.1.tgz#c4a8a16cf88cb5a185b23f4a61d6e9a85eb53287" + integrity sha512-UaXxwISYJPTr9hwQxMFYZ7kNhSXboMXP+Z3TRX6f1/NyaGPfuNUZOWP1pUEb75B2HjfklIYLVRfWiFZJyC6Npg== cross-spawn@^7.0.6: version "7.0.6" @@ -1700,16 +1693,16 @@ date-fns-jalali@4.1.0-0: integrity sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg== date-fns@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-4.1.0.tgz#64b3d83fff5aa80438f5b1a633c2e83b8a1c2d14" - integrity sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg== + version "4.4.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-4.4.0.tgz#806539edf45c616b2b76b5f78b88c56ed3c7e036" + integrity sha512-+1UMbeh68lH1SegH83CGWwpb6OHHbpSgr3+s5Eww5M4CAgswBpoWS0AjTOfEJ33HiYKz1hdj/KTFprzXHmq/6w== dayjs@^1.11.20: - version "1.11.20" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.20.tgz#88d919fd639dc991415da5f4cb6f1b6650811938" - integrity sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ== + version "1.11.21" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.21.tgz#57f87562e62de76f3c704bd2b8d522fc33068eb2" + integrity sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA== -debug@^4.0.0, debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.4.3, debug@~4.4.1: +debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.4.3, debug@~4.4.1: version "4.4.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== @@ -1771,10 +1764,10 @@ dunder-proto@^1.0.1: es-errors "^1.3.0" gopd "^1.2.0" -electron-to-chromium@^1.5.263: - version "1.5.302" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz#032a5802b31f7119269959c69fe2015d8dad5edb" - integrity sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg== +electron-to-chromium@^1.5.376: + version "1.5.383" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.383.tgz#5bd22306497d454103b289b0fef97260c56d0855" + integrity sha512-I2484/KkAvl8lm9VyjH2JnbOIV0d/UCqT7gbzs6l+o6Vmn9wgB66uVcKX+Vk6HrXtY6fbWTOEXuv8waDTuFNCw== engine.io-client@~6.5.1: version "6.5.4" @@ -1792,10 +1785,10 @@ engine.io-parser@~5.2.1: resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.3.tgz#00dc5b97b1f233a23c9398d0209504cf5f94d92f" integrity sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q== -enhanced-resolve@^5.21.0: - version "5.21.2" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.21.2.tgz#ddbedd0c7f14c3c51adfc24f5a14d76a83395442" - integrity sha512-xe9vQb5kReirPUxgQrXA3ihgbCqssmTiM7cOZ+Gzu+VeGWgpV98lLZvp0dl4yriyAePcewxGUs9UpKD8PET9KQ== +enhanced-resolve@5.21.6: + version "5.21.6" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.21.6.tgz#aa207b43cf658e6ab3ba06896edc00c13c3127c6" + integrity sha512-aNnGCvbJ/RIyWo1IuhNdVjnNF+EjH9wpzpNHt+ci/m9He9LJvUN8wrCcXjp9cWsGNAuvSpVFTx/vraAFQ8qGjQ== dependencies: graceful-fs "^4.2.4" tapable "^2.3.3" @@ -1816,9 +1809,9 @@ es-errors@^1.3.0: integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" - integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + version "1.1.2" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.2.tgz#a2d0b373205724dfa525d23b0c3e1b1ca582c99b" + integrity sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw== dependencies: es-errors "^1.3.0" @@ -1858,10 +1851,10 @@ eslint-plugin-react-hooks@^7.1.1: zod "^3.25.0 || ^4.0.0" zod-validation-error "^3.5.0 || ^4.0.0" -eslint-plugin-react-refresh@^0.4.24: - version "0.4.26" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.26.tgz#2bcdd109ea9fb4e0b56bb1b5146cf8841b21b626" - integrity sha512-1RETEylht2O6FM/MvgnyvT+8K21wLqDNg4qD51Zj3guhjt433XbnnkVttHMyaVyAFD03QSV4LPS5iE3VQmO7XQ== +eslint-plugin-react-refresh@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.5.3.tgz#0311218631193fc1ea1c37531a1e7085a813bb60" + integrity sha512-5EMmLCV98Pi4o/f/3DP/v/tNqLHMIc9I8LKClNDWhZ9JTho89/kQcitCXQBMG7sAfVRK0Ie3T2EDOzp1YXYiVA== eslint-scope@^8.4.0: version "8.4.0" @@ -1887,23 +1880,23 @@ eslint-visitor-keys@^5.0.0: integrity sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA== eslint@^9.39.1: - version "9.39.3" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.39.3.tgz#08d63df1533d7743c0907b32a79a7e134e63ee2f" - integrity sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg== + version "9.39.4" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.39.4.tgz#855da1b2e2ad66dc5991195f35e262bcec8117b5" + integrity sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ== dependencies: "@eslint-community/eslint-utils" "^4.8.0" "@eslint-community/regexpp" "^4.12.1" - "@eslint/config-array" "^0.21.1" + "@eslint/config-array" "^0.21.2" "@eslint/config-helpers" "^0.4.2" "@eslint/core" "^0.17.0" - "@eslint/eslintrc" "^3.3.1" - "@eslint/js" "9.39.3" + "@eslint/eslintrc" "^3.3.5" + "@eslint/js" "9.39.4" "@eslint/plugin-kit" "^0.4.1" "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" "@humanwhocodes/retry" "^0.4.2" "@types/estree" "^1.0.6" - ajv "^6.12.4" + ajv "^6.14.0" chalk "^4.0.0" cross-spawn "^7.0.6" debug "^4.3.2" @@ -1922,7 +1915,7 @@ eslint@^9.39.1: is-glob "^4.0.0" json-stable-stringify-without-jsonify "^1.0.1" lodash.merge "^4.6.2" - minimatch "^3.1.2" + minimatch "^3.1.5" natural-compare "^1.4.0" optionator "^0.9.3" @@ -2020,9 +2013,9 @@ flat-cache@^4.0.0: keyv "^4.5.4" flatted@^3.2.9: - version "3.3.3" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" - integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== + version "3.4.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.4.2.tgz#f5c23c107f0f37de8dbdf24f13722b3b98d52726" + integrity sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA== follow-redirects@^1.15.11: version "1.15.11" @@ -2030,29 +2023,29 @@ follow-redirects@^1.15.11: integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== form-data@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" - integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== + version "4.0.6" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.6.tgz#28e864e1b786dbebb68db1f452f9635278665827" + integrity sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" es-set-tostringtag "^2.1.0" - hasown "^2.0.2" - mime-types "^2.1.12" + hasown "^2.0.4" + mime-types "^2.1.35" -frappe-js-sdk@^1.13.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/frappe-js-sdk/-/frappe-js-sdk-1.13.0.tgz#eaea81e361d7c77f38aa5ea502f668197c9ea4c5" - integrity sha512-+5JiRHfN3qTkZ37g+FtuSZMxEQ+wIJLTLMoIR1pBYGw4R7KO7Ed4zz8jE8ad0c4xwHQFelZ+ByPe7sej52eWOQ== +frappe-js-sdk@^1.14.0: + version "1.14.0" + resolved "https://registry.yarnpkg.com/frappe-js-sdk/-/frappe-js-sdk-1.14.0.tgz#6cfc3a91598dc179890ff2b1db675f228bd1565a" + integrity sha512-v0n75UP8SffSH77QWbvD43FXndF+P8Us1MyIVH287uwPpLYYk7tXCA/ftNTn3a2YV7VdncNU7XDwxYNgAoBt8w== dependencies: - axios "^1.16.0" + axios "^1.18.1" -frappe-react-sdk@^1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/frappe-react-sdk/-/frappe-react-sdk-1.15.0.tgz#0fd2e5daf7c2a40a6acc6536c2a110ae14aef161" - integrity sha512-JYFo3olbknsHOsKknHcu4sRJikf8S9xUg+qdM79fOgEUepUmuYnG8pFs/1fPCdNrnYyVXj908AoQ1GT6GP6Viw== +frappe-react-sdk@^1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/frappe-react-sdk/-/frappe-react-sdk-1.17.0.tgz#4777261b80e6ba195a007e61e75757c02b881cc1" + integrity sha512-1Q0T5Qdtm1+g0sb0PSxIvleVK17gG2QTXgRVeCC927JCFgH8UsrQNbx8MZ1ojlPIp8AahA0NRwH+C4RL0cT8sw== dependencies: - frappe-js-sdk "^1.13.0" + frappe-js-sdk "^1.14.0" socket.io-client "4.7.1" swr "^2.4.1" @@ -2067,9 +2060,9 @@ function-bind@^1.1.2: integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== fuse.js@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-7.3.0.tgz#68e1ea1c6c0ff262f1801a949a78edbe05b0bc13" - integrity sha512-plz8RVjfcDedTGfVngWH1jmJvBvAwi1v2jecfDerbEnMcmOYUEEwKFTHbNoCiYyzaK2Ws8lABkTCcRSqCY1q4w== + version "7.4.2" + resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-7.4.2.tgz#a0513219603f1f3f09bbba587c7b919cc3ba6294" + integrity sha512-LVbzjD4WA6UP5B1UnP8wuaXJiLnqMdM/E4fiJXTJ5haJ5b/MBNsK29h2fm6swEoQaVQjvYFWKLE2RanyZIoRVQ== gensync@^1.0.0-beta.2: version "1.0.0-beta.2" @@ -2149,10 +2142,10 @@ has-tostringtag@^1.0.2: dependencies: has-symbols "^1.0.3" -hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== +hasown@^2.0.2, hasown@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.4.tgz#8c62d8cb90beb2aad5d0a5b67581ad9854c3f003" + integrity sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A== dependencies: function-bind "^1.1.2" @@ -2270,6 +2263,14 @@ html-void-elements@^3.0.0: resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-3.0.0.tgz#fc9dbd84af9e747249034d4d62602def6517f1d7" integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== +https-proxy-agent@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + ignore@^5.2.0: version "5.3.2" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" @@ -2343,20 +2344,20 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -jiti@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.6.1.tgz#178ef2fc9a1a594248c20627cd820187a4d78d92" - integrity sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ== +jiti@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.7.0.tgz#974228f2f4ca2bc21885a1797b45fea68e950c64" + integrity sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ== -jotai-family@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/jotai-family/-/jotai-family-1.0.1.tgz#0782aaaf22042b63111df4c1f9acf7b2ceff03cb" - integrity sha512-Zb/79GNDhC/z82R+6qTTpeKW4l4H6ZCApfF5W8G4SH37E4mhbysU7r8DkP0KX94hWvjB/6lt/97nSr3wB+64Zg== +jotai-family@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/jotai-family/-/jotai-family-1.0.2.tgz#11d9f88a39579aaf0d80dcd8826b8c32cf6b5269" + integrity sha512-U1aTMGxmsmz2Z8gaJD1/ljmMnsmG4/dqrcsfwGbjWV7p6boB9Vy3+75YwUpwPj7GbLNJk9O8rl1VNi8d7+6Rxw== -jotai@^2.20.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/jotai/-/jotai-2.20.0.tgz#0e3422f6f7141758e8212d72338f9cf3bef5fd45" - integrity sha512-b5GAqgmXmXzB4WPaTH26ppk9Sl7AA9WSQX7yfdM+gJ1rFROiWcVbi97gFuN/yVCojOcbcvop2sfLL+fjxW0JVg== +jotai@^2.20.1: + version "2.20.1" + resolved "https://registry.yarnpkg.com/jotai/-/jotai-2.20.1.tgz#473274f1b78c60acce1b868be5655b3c706dec8e" + integrity sha512-dnuKfU/GLi8B28RRMjQ3AfoN7kfzP8o41+AX2FmITZqEMY8PHnjABq+VkEooomLwYaGjda+pgy0yFSjaHX/ZPg== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -2364,9 +2365,9 @@ jotai@^2.20.0: integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.1.tgz#854c292467705b699476e1a2decc0c8a3458806b" - integrity sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA== + version "4.3.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.3.0.tgz#d1900572a7f7cf0b5f540c83673e60bad3436592" + integrity sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q== dependencies: argparse "^2.0.1" @@ -2526,9 +2527,9 @@ lru-cache@^5.1.1: yallist "^3.0.2" lucide-react@^1.14.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-1.14.0.tgz#3c3867749f5ff4eeb5a6f423557ec6a50521366f" - integrity sha512-+1mdWcfSJVUsaTIjN9zoezmUhfXo5l0vP7ekBMPo3jcS/aIkxHnXqAPsByszMZx/Y8oQBRJxJx5xg+RH3urzxA== + version "1.22.0" + resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-1.22.0.tgz#f2930b21a1d3941fbee8a1017a5973d06ec4860b" + integrity sha512-c9o3l0PiNcgOQDW4F31BEYHudE7kgxVt3o30qMl36ZPwTxXlGB4QnLilhERvVM4uh/pl5MDyY1/gzZSYcHDtBg== magic-string@^0.30.21: version "0.30.21" @@ -3005,7 +3006,7 @@ mime-db@1.52.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12: +mime-types@^2.1.35: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -3013,13 +3014,13 @@ mime-types@^2.1.12: mime-db "1.52.0" minimatch@^10.2.2: - version "10.2.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.2.4.tgz#465b3accbd0218b8281f5301e27cedc697f96fde" - integrity sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg== + version "10.2.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.2.5.tgz#bd48687a0be38ed2961399105600f832095861d1" + integrity sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg== dependencies: - brace-expansion "^5.0.2" + brace-expansion "^5.0.5" -minimatch@^3.1.2, minimatch@^3.1.3: +minimatch@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.5.tgz#580c88f8d5445f2bd6aa8f3cadefa0de79fbd69e" integrity sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w== @@ -3032,19 +3033,19 @@ ms@^2.1.3: integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== nanoid@^3.3.12: - version "3.3.12" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.12.tgz#ab3d912e217a6d0a514f00a72a16543a28982c05" - integrity sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ== + version "3.3.15" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.15.tgz#36c490fad8c6e86c824c940dfdde999b69ed4316" + integrity sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA== natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -node-releases@^2.0.27: - version "2.0.27" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.27.tgz#eedca519205cf20f650f61d56b070db111231e4e" - integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA== +node-releases@^2.0.48: + version "2.0.50" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.50.tgz#597197a852071ce42fc2550e58e223242bcba969" + integrity sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg== object-assign@^4.1.1: version "4.1.1" @@ -3124,10 +3125,10 @@ picomatch@^4.0.4: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.4.tgz#fd6f5e00a143086e074dffe4c924b8fb293b0589" integrity sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A== -postcss@^8.5.15: - version "8.5.15" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.15.tgz#d1eaf677a324e9ec02196da2d3fecf4a0b9a735c" - integrity sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A== +postcss@^8.5.16: + version "8.5.16" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.16.tgz#1230ce0b5df354c24c0ea45f99ce5f6a88279d28" + integrity sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg== dependencies: nanoid "^3.3.12" picocolors "^1.1.1" @@ -3148,9 +3149,9 @@ prop-types@^15.8.1: react-is "^16.13.1" property-information@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-7.1.0.tgz#b622e8646e02b580205415586b40804d3e8bfd5d" - integrity sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ== + version "7.2.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-7.2.0.tgz#0809b34264e995c0bfcd3227028a1e35210af80a" + integrity sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg== proxy-from-env@^1.1.0: version "1.1.0" @@ -3162,66 +3163,66 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -radix-ui@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/radix-ui/-/radix-ui-1.4.3.tgz#17712d9e26ee61fdf4cd3969f4e16a794419508b" - integrity sha512-aWizCQiyeAenIdUbqEpXgRA1ya65P13NKn/W8rWkcN0OPkRDxdBVLWnIEDsS2RpwCK2nobI7oMUSmexzTDyAmA== +radix-ui@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/radix-ui/-/radix-ui-1.6.1.tgz#5b39570921052e46d1326e1ca4be8ffbfb043ce0" + integrity sha512-QXDXJtB6sK83mLASONYUZCauatcWb+knFviFpN1EhtdbbmlsRmzCLrbZSKztnNiem2KOHIBbiDbauVB7SORXMw== dependencies: - "@radix-ui/primitive" "1.1.3" - "@radix-ui/react-accessible-icon" "1.1.7" - "@radix-ui/react-accordion" "1.2.12" - "@radix-ui/react-alert-dialog" "1.1.15" - "@radix-ui/react-arrow" "1.1.7" - "@radix-ui/react-aspect-ratio" "1.1.7" - "@radix-ui/react-avatar" "1.1.10" - "@radix-ui/react-checkbox" "1.3.3" - "@radix-ui/react-collapsible" "1.1.12" - "@radix-ui/react-collection" "1.1.7" - "@radix-ui/react-compose-refs" "1.1.2" - "@radix-ui/react-context" "1.1.2" - "@radix-ui/react-context-menu" "2.2.16" - "@radix-ui/react-dialog" "1.1.15" - "@radix-ui/react-direction" "1.1.1" - "@radix-ui/react-dismissable-layer" "1.1.11" - "@radix-ui/react-dropdown-menu" "2.1.16" - "@radix-ui/react-focus-guards" "1.1.3" - "@radix-ui/react-focus-scope" "1.1.7" - "@radix-ui/react-form" "0.1.8" - "@radix-ui/react-hover-card" "1.1.15" - "@radix-ui/react-label" "2.1.7" - "@radix-ui/react-menu" "2.1.16" - "@radix-ui/react-menubar" "1.1.16" - "@radix-ui/react-navigation-menu" "1.2.14" - "@radix-ui/react-one-time-password-field" "0.1.8" - "@radix-ui/react-password-toggle-field" "0.1.3" - "@radix-ui/react-popover" "1.1.15" - "@radix-ui/react-popper" "1.2.8" - "@radix-ui/react-portal" "1.1.9" - "@radix-ui/react-presence" "1.1.5" - "@radix-ui/react-primitive" "2.1.3" - "@radix-ui/react-progress" "1.1.7" - "@radix-ui/react-radio-group" "1.3.8" - "@radix-ui/react-roving-focus" "1.1.11" - "@radix-ui/react-scroll-area" "1.2.10" - "@radix-ui/react-select" "2.2.6" - "@radix-ui/react-separator" "1.1.7" - "@radix-ui/react-slider" "1.3.6" - "@radix-ui/react-slot" "1.2.3" - "@radix-ui/react-switch" "1.2.6" - "@radix-ui/react-tabs" "1.1.13" - "@radix-ui/react-toast" "1.2.15" - "@radix-ui/react-toggle" "1.1.10" - "@radix-ui/react-toggle-group" "1.1.11" - "@radix-ui/react-toolbar" "1.1.11" - "@radix-ui/react-tooltip" "1.2.8" - "@radix-ui/react-use-callback-ref" "1.1.1" - "@radix-ui/react-use-controllable-state" "1.2.2" - "@radix-ui/react-use-effect-event" "0.0.2" - "@radix-ui/react-use-escape-keydown" "1.1.1" - "@radix-ui/react-use-is-hydrated" "0.1.0" - "@radix-ui/react-use-layout-effect" "1.1.1" - "@radix-ui/react-use-size" "1.1.1" - "@radix-ui/react-visually-hidden" "1.2.3" + "@radix-ui/primitive" "1.1.4" + "@radix-ui/react-accessible-icon" "1.1.11" + "@radix-ui/react-accordion" "1.2.15" + "@radix-ui/react-alert-dialog" "1.1.18" + "@radix-ui/react-arrow" "1.1.11" + "@radix-ui/react-aspect-ratio" "1.1.11" + "@radix-ui/react-avatar" "1.2.1" + "@radix-ui/react-checkbox" "1.3.6" + "@radix-ui/react-collapsible" "1.1.15" + "@radix-ui/react-collection" "1.1.11" + "@radix-ui/react-compose-refs" "1.1.3" + "@radix-ui/react-context" "1.1.4" + "@radix-ui/react-context-menu" "2.3.2" + "@radix-ui/react-dialog" "1.1.18" + "@radix-ui/react-direction" "1.1.2" + "@radix-ui/react-dismissable-layer" "1.1.14" + "@radix-ui/react-dropdown-menu" "2.1.19" + "@radix-ui/react-focus-guards" "1.1.4" + "@radix-ui/react-focus-scope" "1.1.11" + "@radix-ui/react-form" "0.1.11" + "@radix-ui/react-hover-card" "1.1.18" + "@radix-ui/react-label" "2.1.11" + "@radix-ui/react-menu" "2.1.19" + "@radix-ui/react-menubar" "1.1.19" + "@radix-ui/react-navigation-menu" "1.2.17" + "@radix-ui/react-one-time-password-field" "0.1.11" + "@radix-ui/react-password-toggle-field" "0.1.6" + "@radix-ui/react-popover" "1.1.18" + "@radix-ui/react-popper" "1.3.2" + "@radix-ui/react-portal" "1.1.13" + "@radix-ui/react-presence" "1.1.6" + "@radix-ui/react-primitive" "2.1.7" + "@radix-ui/react-progress" "1.1.11" + "@radix-ui/react-radio-group" "1.4.2" + "@radix-ui/react-roving-focus" "1.1.14" + "@radix-ui/react-scroll-area" "1.2.13" + "@radix-ui/react-select" "2.3.2" + "@radix-ui/react-separator" "1.1.11" + "@radix-ui/react-slider" "1.4.2" + "@radix-ui/react-slot" "1.3.0" + "@radix-ui/react-switch" "1.3.2" + "@radix-ui/react-tabs" "1.1.16" + "@radix-ui/react-toast" "1.2.18" + "@radix-ui/react-toggle" "1.1.13" + "@radix-ui/react-toggle-group" "1.1.14" + "@radix-ui/react-toolbar" "1.1.14" + "@radix-ui/react-tooltip" "1.2.11" + "@radix-ui/react-use-callback-ref" "1.1.2" + "@radix-ui/react-use-controllable-state" "1.2.3" + "@radix-ui/react-use-effect-event" "0.0.3" + "@radix-ui/react-use-escape-keydown" "1.1.3" + "@radix-ui/react-use-is-hydrated" "0.1.1" + "@radix-ui/react-use-layout-effect" "1.1.2" + "@radix-ui/react-use-size" "1.1.2" + "@radix-ui/react-visually-hidden" "1.2.7" react-currency-input-field@^4.0.5: version "4.0.5" @@ -3238,10 +3239,10 @@ react-day-picker@9.14.0: date-fns "^4.1.0" date-fns-jalali "4.1.0-0" -react-dom@^19.2.6: - version "19.2.6" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.2.6.tgz#44a81b0bcca22da814c00847d09d01c8615529b7" - integrity sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g== +react-dom@^19.2.7: + version "19.2.7" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.2.7.tgz#0450dc9ae9ddbff76ef196401cd8b8c7fb466ccc" + integrity sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ== dependencies: scheduler "^0.27.0" @@ -3255,14 +3256,14 @@ react-dropzone@^15.0.0: prop-types "^15.8.1" react-hook-form@^7.75.0: - version "7.75.0" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.75.0.tgz#4364affb4af39e45eeb7e3c6e10f6579cdcca7a2" - integrity sha512-Ovv94H+0p3sJ7B9B5QxPuCP1u8V/cHuVGyH55cSwodYDtoJwK+fqk3vjfIgSX59I2U/bU4z0nRJ9HMLpNiWEmw== + version "7.80.0" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.80.0.tgz#028e142324d592239599ab7cf1c0d82167696194" + integrity sha512-4P+fk6oXsxY+6xSj7Euhc2sumQD8zQqCuVHoJwoyp9EchP+IUW9OESB7uHFJOKsIBQ4MQqYE84INJFqUCYNoOg== react-hotkeys-hook@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/react-hotkeys-hook/-/react-hotkeys-hook-5.3.2.tgz#7715fcc43dc4be6efefe04eca22f8faa0f799567" - integrity sha512-DDDy9xK6mbTQ6aPlQvIl0dA/a90T/AWml4Rm21JXFDLlRHalIg4/Rv3equUQYs5xPTWq+oEl6RD7mi/nBpU3Uw== + version "5.3.3" + resolved "https://registry.yarnpkg.com/react-hotkeys-hook/-/react-hotkeys-hook-5.3.3.tgz#e44fd66134eb95d37f5ac435ad073fd5364ac2fb" + integrity sha512-aswgyWUnE25hmhzHTfKDmKzsaSE5DJ4LKaU/o6rQSXkDd/1Bh9TfAFQbHkf6fLy11HvlYkp+cDDarGdhmCDhoQ== react-is@^16.13.1: version "16.13.1" @@ -3294,7 +3295,7 @@ react-remove-scroll-bar@^2.3.7: react-style-singleton "^2.2.2" tslib "^2.0.0" -react-remove-scroll@^2.6.3: +react-remove-scroll@^2.7.2: version "2.7.2" resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz#6442da56791117661978ae99cd29be9026fecca0" integrity sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q== @@ -3305,20 +3306,12 @@ react-remove-scroll@^2.6.3: use-callback-ref "^1.3.3" use-sidecar "^1.1.3" -react-router-dom@^7.15.0: - version "7.15.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-7.15.0.tgz#a4b95c4402d896c2ad437014aff9076b94673063" - integrity sha512-VcrVg64Fo8nwBvDscajG8gRTLIuTC6N50nb22l2HOOV4PTOHgoGp8mUjy9wLiHYoYTSYI36tUnXZgasSRFZorQ== +react-router@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-8.1.0.tgz#242c9169bdf8da4e080279c92048f0016eb3aa4b" + integrity sha512-Mdfi61uObuvWNN9OhChOC0HV6YWOIfKRzEWOvCHRSuQg8IM+Nv10edaM/2HE8ZixBpUTdQbruyWqC3sDkkh9vw== dependencies: - react-router "7.15.0" - -react-router@7.15.0, react-router@^7.15.0: - version "7.15.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-7.15.0.tgz#cb438ff254ab5a1e356ef5a23d7821d8f6fbe652" - integrity sha512-HW9vYwuM8f4yx66Izy8xfrzCM+SBJluoZcCbww9A1TySax11S5Vgw6fi3ZjMONw9J4gQwngL7PzkyIpJJpJ7RQ== - dependencies: - cookie "^1.0.1" - set-cookie-parser "^2.6.0" + cookie-es "^3.1.1" react-style-singleton@^2.2.2, react-style-singleton@^2.2.3: version "2.2.3" @@ -3328,10 +3321,10 @@ react-style-singleton@^2.2.2, react-style-singleton@^2.2.3: get-nonce "^1.0.0" tslib "^2.0.0" -react@^19.2.6: - version "19.2.6" - resolved "https://registry.yarnpkg.com/react/-/react-19.2.6.tgz#3dadb8e12b2a7934c1d5317973e5dce1301f9a4d" - integrity sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q== +react@^19.2.7: + version "19.2.7" + resolved "https://registry.yarnpkg.com/react/-/react-19.2.7.tgz#1f47a1bfc06f8ec885752c6f4af14369a9f8260b" + integrity sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ== rehype-raw@^7.0.0: version "7.0.0" @@ -3389,29 +3382,29 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -rolldown@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/rolldown/-/rolldown-1.0.3.tgz#db88a3008fb0e28230a00423727ce75ba32121ac" - integrity sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g== +rolldown@~1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/rolldown/-/rolldown-1.1.3.tgz#87072bfd0d1bdd02a66076a261a62e8e49b3f0e2" + integrity sha512-1F1eEtUBtFvcGm1HQ9TiUIUHPQG7mSAODrhIzjxoUEFuo8OcbrGLiVLkevNgj84TE4lnHvnumwFjhJO5Eu135g== dependencies: - "@oxc-project/types" "=0.133.0" + "@oxc-project/types" "=0.137.0" "@rolldown/pluginutils" "^1.0.0" optionalDependencies: - "@rolldown/binding-android-arm64" "1.0.3" - "@rolldown/binding-darwin-arm64" "1.0.3" - "@rolldown/binding-darwin-x64" "1.0.3" - "@rolldown/binding-freebsd-x64" "1.0.3" - "@rolldown/binding-linux-arm-gnueabihf" "1.0.3" - "@rolldown/binding-linux-arm64-gnu" "1.0.3" - "@rolldown/binding-linux-arm64-musl" "1.0.3" - "@rolldown/binding-linux-ppc64-gnu" "1.0.3" - "@rolldown/binding-linux-s390x-gnu" "1.0.3" - "@rolldown/binding-linux-x64-gnu" "1.0.3" - "@rolldown/binding-linux-x64-musl" "1.0.3" - "@rolldown/binding-openharmony-arm64" "1.0.3" - "@rolldown/binding-wasm32-wasi" "1.0.3" - "@rolldown/binding-win32-arm64-msvc" "1.0.3" - "@rolldown/binding-win32-x64-msvc" "1.0.3" + "@rolldown/binding-android-arm64" "1.1.3" + "@rolldown/binding-darwin-arm64" "1.1.3" + "@rolldown/binding-darwin-x64" "1.1.3" + "@rolldown/binding-freebsd-x64" "1.1.3" + "@rolldown/binding-linux-arm-gnueabihf" "1.1.3" + "@rolldown/binding-linux-arm64-gnu" "1.1.3" + "@rolldown/binding-linux-arm64-musl" "1.1.3" + "@rolldown/binding-linux-ppc64-gnu" "1.1.3" + "@rolldown/binding-linux-s390x-gnu" "1.1.3" + "@rolldown/binding-linux-x64-gnu" "1.1.3" + "@rolldown/binding-linux-x64-musl" "1.1.3" + "@rolldown/binding-openharmony-arm64" "1.1.3" + "@rolldown/binding-wasm32-wasi" "1.1.3" + "@rolldown/binding-win32-arm64-msvc" "1.1.3" + "@rolldown/binding-win32-x64-msvc" "1.1.3" scheduler@^0.27.0: version "0.27.0" @@ -3424,14 +3417,9 @@ semver@^6.3.1: integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.7.3: - version "7.7.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" - integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== - -set-cookie-parser@^2.6.0: - version "2.7.2" - resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz#ccd08673a9ae5d2e44ea2a2de25089e67c7edf68" - integrity sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw== + version "7.8.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.8.5.tgz#39b646037dd50c14fb451e7e4cac58ed8b863f69" + integrity sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA== shebang-command@^2.0.0: version "2.0.0" @@ -3513,22 +3501,22 @@ supports-color@^7.1.0: has-flag "^4.0.0" swr@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/swr/-/swr-2.4.1.tgz#c9e48abff6bf4b04846342e2f1f6be108a078cf6" - integrity sha512-2CC6CiKQtEwaEeNiqWTAw9PGykW8SR5zZX8MZk6TeAvEAnVS7Visz8WzphqgtQ8v2xz/4Q5K+j+SeMaKXeeQIA== + version "2.4.2" + resolved "https://registry.yarnpkg.com/swr/-/swr-2.4.2.tgz#741ba9c804db756cfa966376cbc33f84a2d88cfd" + integrity sha512-ej644Y2bvkIajfR32KGeSSdBXQW+ScjGjkybZgSE7kFpk9eGnV44XY9FJylXi+W75pavSX1PVNB57W5EbhGIYw== dependencies: dequal "^2.0.3" use-sync-external-store "^1.6.0" tailwind-merge@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-3.5.0.tgz#06502f4496ba15151445d97d916a26564d50d1ca" - integrity sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A== + version "3.6.0" + resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-3.6.0.tgz#88d83242d1dd7bc847223f73dcf210dd1f2ee11c" + integrity sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w== -tailwindcss@4.3.0, tailwindcss@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-4.3.0.tgz#0a874e044a859cf6de413f3a59e76a9bedf05264" - integrity sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q== +tailwindcss@4.3.2, tailwindcss@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-4.3.2.tgz#408ee67d767a0fef7b174674bb9c5ce136a5ace1" + integrity sha512-WtctNNSH8A9jlMIqxzuYumOHU5uGZyRv0Q5svQl+oEPy5w84YpBxdb7MdqyiSPQge5jTJ6zFQLq0PFygdccSBA== tapable@^2.3.3: version "2.3.3" @@ -3553,10 +3541,10 @@ trough@^2.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-2.2.0.tgz#94a60bd6bd375c152c1df911a4b11d5b0256f50f" integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw== -ts-api-utils@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.4.0.tgz#2690579f96d2790253bdcf1ca35d569ad78f9ad8" - integrity sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA== +ts-api-utils@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.5.0.tgz#4acd4a155e22734990a5ed1fe9e97f113bcb37c1" + integrity sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA== tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.7.0, tslib@^2.8.1: version "2.8.1" @@ -3575,25 +3563,25 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -typescript-eslint@^8.48.0: - version "8.56.1" - resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.56.1.tgz#15a9fcc5d2150a0d981772bb36f127a816fe103f" - integrity sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ== +typescript-eslint@^8.62.1: + version "8.62.1" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.62.1.tgz#eb93fd94d527aa04ec5b844fb0b4ada613cc7d3f" + integrity sha512-vymnnM5g0AKQDSAyfP12nMIBvgwgA42syg74kkuZ4x1VuTzwQKwc5h9rGxeShCjny5o+zWAb6OEoz7XLgrIkIw== dependencies: - "@typescript-eslint/eslint-plugin" "8.56.1" - "@typescript-eslint/parser" "8.56.1" - "@typescript-eslint/typescript-estree" "8.56.1" - "@typescript-eslint/utils" "8.56.1" + "@typescript-eslint/eslint-plugin" "8.62.1" + "@typescript-eslint/parser" "8.62.1" + "@typescript-eslint/typescript-estree" "8.62.1" + "@typescript-eslint/utils" "8.62.1" typescript@~5.9.3: version "5.9.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.3.tgz#5b4f59e15310ab17a216f5d6cf53ee476ede670f" integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== -undici-types@~7.18.0: - version "7.18.2" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.18.2.tgz#29357a89e7b7ca4aef3bf0fd3fd0cd73884229e9" - integrity sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w== +"undici-types@>=7.24.0 <7.24.7": + version "7.24.6" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.24.6.tgz#61275b485d7fd4e9d269c7cf04ec2873c9cc0f91" + integrity sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg== unified@^11.0.0: version "11.0.5" @@ -3646,7 +3634,7 @@ unist-util-visit@^5.0.0: unist-util-is "^6.0.0" unist-util-visit-parents "^6.0.0" -update-browserslist-db@^1.2.0: +update-browserslist-db@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d" integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w== @@ -3676,7 +3664,7 @@ use-sidecar@^1.1.3: detect-node-es "^1.1.0" tslib "^2.0.0" -use-sync-external-store@^1.5.0, use-sync-external-store@^1.6.0: +use-sync-external-store@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz#b174bfa65cb2b526732d9f2ac0a408027876f32d" integrity sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w== @@ -3713,14 +3701,14 @@ vfile@^6.0.0: vfile-message "^4.0.0" vite@^8.0.16: - version "8.0.16" - resolved "https://registry.yarnpkg.com/vite/-/vite-8.0.16.tgz#ae073866c06563d6634a90169a496e11bd84f1a6" - integrity sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw== + version "8.1.2" + resolved "https://registry.yarnpkg.com/vite/-/vite-8.1.2.tgz#3ac29b5868ccf28c59321391be1ebe906f135ebd" + integrity sha512-6YYPbRXTxx6bRXmOn7XdnQAy5DQNHhDgtjhDHI13oe4pY93kkcdGJWxpGwOm++/Wh0QpQhDrpIoVMrmrsI5AGQ== dependencies: lightningcss "^1.32.0" picomatch "^4.0.4" - postcss "^8.5.15" - rolldown "1.0.3" + postcss "^8.5.16" + rolldown "~1.1.3" tinyglobby "^0.2.17" optionalDependencies: fsevents "~2.3.3" @@ -3768,9 +3756,9 @@ yocto-queue@^0.1.0: integrity sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ== "zod@^3.25.0 || ^4.0.0": - version "4.3.6" - resolved "https://registry.yarnpkg.com/zod/-/zod-4.3.6.tgz#89c56e0aa7d2b05107d894412227087885ab112a" - integrity sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg== + version "4.4.3" + resolved "https://registry.yarnpkg.com/zod/-/zod-4.4.3.tgz#b680f172885d18bbebf21a834ea25e55a1bbf356" + integrity sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ== zwitch@^2.0.0: version "2.0.4" From 2cb577b912bee24f598653e68f95c39c85637d02 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 1 Jul 2026 13:31:12 +0530 Subject: [PATCH 06/91] fix(banking): use custom renderer for translated strings and parser for rules (backport #56643) (#56647) fix(banking): use custom renderer for translated strings and parser for rules (#56643) fix(banking): use custom renderer for translated strings and parser for formula evaluation (cherry picked from commit 8447f551e7b0ee9f611cf42533e33141105b0af2) Co-authored-by: Nikhil Kothari --- banking/package.json | 1 + .../BankClearanceSummary.tsx | 12 ++--- .../BankEntryModalContent.tsx | 32 ++----------- .../BankReconciliationStatement.tsx | 12 ++--- .../BankTransactionList.tsx | 12 ++--- .../IncorrectlyClearedEntries.tsx | 18 +++---- .../BankReconciliation/Rules/RuleForm.tsx | 4 +- banking/src/lib/amountFormula.ts | 26 ++++++++++ banking/yarn.lock | 5 ++ .../bank_transaction_rule.py | 47 +++++++++++++++++++ .../test_bank_transaction_rule.py | 42 +++++++++++++++++ 11 files changed, 154 insertions(+), 57 deletions(-) create mode 100644 banking/src/lib/amountFormula.ts diff --git a/banking/package.json b/banking/package.json index 439e4376789..a957fb01bf6 100644 --- a/banking/package.json +++ b/banking/package.json @@ -42,6 +42,7 @@ "react-router": "^8.1.0", "rehype-raw": "^7.0.0", "remark-gfm": "^4.0.1", + "safe-expr-eval": "^1.0.4", "sonner": "^2.0.7", "tailwind-merge": "^3.5.0", "tailwindcss": "^4.3.0", diff --git a/banking/src/components/features/BankReconciliation/BankClearanceSummary.tsx b/banking/src/components/features/BankReconciliation/BankClearanceSummary.tsx index dd248d31092..c26b9e9fb22 100644 --- a/banking/src/components/features/BankReconciliation/BankClearanceSummary.tsx +++ b/banking/src/components/features/BankReconciliation/BankClearanceSummary.tsx @@ -2,7 +2,6 @@ import { useAtomValue } from "jotai" import { MissingFiltersBanner } from "./MissingFiltersBanner" import { bankRecDateAtom, SelectedBank, selectedBankAccountAtom } from "./bankRecAtoms" import { useCurrentCompany } from "@/hooks/useCurrentCompany" -import { Paragraph } from "@/components/ui/typography" import type { ColumnDef } from "@tanstack/react-table" import { useCallback, useMemo, useState } from "react" import { useFrappeGetCall, useFrappePostCall, useSWRConfig } from "frappe-react-sdk" @@ -26,6 +25,7 @@ import { Form } from "@/components/ui/form" import { useForm } from "react-hook-form" import { DateField } from "@/components/ui/form-elements" import { Empty, EmptyMedia, EmptyHeader, EmptyTitle, EmptyDescription } from "@/components/ui/empty" +import MarkdownRenderer from "@/components/ui/markdown" const BankClearanceSummary = () => { const bankAccount = useAtomValue(selectedBankAccountAtom) @@ -203,14 +203,14 @@ const BankClearanceSummaryView = () => { [accountCurrency, bankAccount, companyID, mutate, onCopy], ) + const content = _("Below is a list of all accounting entries posted against the bank account {0} between {1} and {2}.", [`${bankAccount?.account}`, `${formattedFromDate}`, `${formattedToDate}`]) + return
- - ${bankAccount?.account}`, `${formattedFromDate}`, `${formattedToDate}`]) - }} /> - + + +
{error && } diff --git a/banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx b/banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx index 17ef3314a1f..4e5ddb425e2 100644 --- a/banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx +++ b/banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx @@ -18,6 +18,7 @@ import { useMultiFileUploadProgress } from "@/hooks/useMultiFileUploadProgress" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" import { Checkbox } from "@/components/ui/checkbox" import { ArrowDownRight, ArrowUpRight, Plus, Trash2 } from "lucide-react" +import { evaluateAmountFormula } from "@/lib/amountFormula" import { flt, formatCurrency } from "@/lib/numbers" import { cn } from "@/lib/utils" import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip" @@ -215,38 +216,13 @@ const BankEntryForm = ({ selectedTransaction }: { selectedTransaction: Unreconci }) } else { - /** - * The debit and credit amounts can also be expressions - like "transaction_amount * 0.5" - * So we need to compute the value of the expression - * We can use the eval function to do this. But we need to expose certain variables to the expression. - * One of them is transaction_amount which is the unallocated amount of the selected transaction - * @param expression - The expression to compute - * @returns The computed value - */ - const computeExpression = (expression: string) => { - - const script = ` - const transaction_amount = ${selectedTransaction.unallocated_amount ?? 0} - ${expression}; - ` - - let value = 0; - - try { - value = window.eval(script); - } catch (error: unknown) { - console.error(error); - value = 0; - } - - return value; - } + const transactionAmount = selectedTransaction.unallocated_amount ?? 0 if (!acc?.debit && !acc?.credit) { hasTotallyEmptyRowEarlier = true; } - const computedDebit = acc?.debit ? flt(computeExpression(acc.debit), 2) : 0 - const computedCredit = acc?.credit ? flt(computeExpression(acc.credit), 2) : 0 + const computedDebit = acc?.debit ? flt(evaluateAmountFormula(acc.debit, transactionAmount), 2) : 0 + const computedCredit = acc?.credit ? flt(evaluateAmountFormula(acc.credit, transactionAmount), 2) : 0 totalDebits = flt(totalDebits + computedDebit, 2) totalCredits = flt(totalCredits + computedCredit, 2) diff --git a/banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx b/banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx index 7b505efadc3..0815bc8a65e 100644 --- a/banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx +++ b/banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx @@ -2,7 +2,6 @@ import { useAtomValue } from "jotai" import { MissingFiltersBanner } from "./MissingFiltersBanner" import { bankRecDateAtom, selectedBankAccountAtom } from "./bankRecAtoms" import { useCurrentCompany } from "@/hooks/useCurrentCompany" -import { Paragraph } from "@/components/ui/typography" import { useCallback, useMemo } from "react" import type { ColumnDef } from "@tanstack/react-table" import { useFrappeGetCall } from "frappe-react-sdk" @@ -19,6 +18,7 @@ import _ from "@/lib/translate" import { toast } from "sonner" import { useCopyToClipboard } from "usehooks-ts" import { Empty, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle } from "@/components/ui/empty" +import MarkdownRenderer from "@/components/ui/markdown" const BankReconciliationStatement = () => { const bankAccount = useAtomValue(selectedBankAccountAtom) @@ -189,14 +189,14 @@ const BankReconciliationStatementView = () => { return data.message.result.filter((row: BankClearanceSummaryEntry) => Boolean(row.payment_entry)) }, [data]) + const content = _("Below is a list of all entries posted against the bank account {0} which have not been cleared till {1}.", [`${bankAccount?.account}`, `${formatDate(dates.toDate)}`]) + return
- - ${bankAccount?.account}`, `${formatDate(dates.toDate)}`]) - }} /> - + + +
{error && } diff --git a/banking/src/components/features/BankReconciliation/BankTransactionList.tsx b/banking/src/components/features/BankReconciliation/BankTransactionList.tsx index 17f231a0833..1513e567a4b 100644 --- a/banking/src/components/features/BankReconciliation/BankTransactionList.tsx +++ b/banking/src/components/features/BankReconciliation/BankTransactionList.tsx @@ -1,7 +1,6 @@ import { useAtomValue, useSetAtom } from "jotai" import { MissingFiltersBanner } from "./MissingFiltersBanner" import { bankRecDateAtom, bankRecUnreconcileModalAtom, selectedBankAccountAtom } from "./bankRecAtoms" -import { Paragraph } from "@/components/ui/typography" import { formatDate } from "@/lib/date" import { ListView, type ListViewColumnMeta } from "@/components/ui/list-view" import { formatCurrency, getCurrencyFormatInfo } from "@/lib/numbers" @@ -23,6 +22,7 @@ import { useCallback, useMemo, useState } from "react" import { Link } from "react-router" import { Empty, EmptyTitle, EmptyHeader, EmptyMedia, EmptyDescription, EmptyContent } from "@/components/ui/empty" import { InputGroup, InputGroupAddon } from "@/components/ui/input-group" +import MarkdownRenderer from "@/components/ui/markdown" const BankTransactions = () => { const selectedBank = useAtomValue(selectedBankAccountAtom) @@ -243,14 +243,14 @@ const BankTransactionListView = () => { }, [data, search, amountFilter, typeFilter, status]) + const content = _("Below is a list of all bank transactions imported in the system for the bank account {0} between {1} and {2}.", [`${bankAccount?.account_name}`, `${formattedFromDate}`, `${formattedToDate}`]) + return
- - ${bankAccount?.account_name}`, `${formattedFromDate}`, `${formattedToDate}`]) - }} /> - + + +
-

{{ _("GENERAL LEDGER") }}

+

{{ _("STATEMENT OF ACCOUNTS") }}

{% if filters.party[0] == filters.party_name[0] %}
{{ _("Customer: ") }} {{ filters.party_name[0] }}
From 20f6dd0224413f56503030b77086a04b650bdab0 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Thu, 2 Jul 2026 12:25:52 +0530 Subject: [PATCH 16/91] fix: don't treat batch slot at FIFO queue head as qty slot An incoming SLE without resolvable serial/batch details hit the negative-head branch in _compute_incoming_stock even when the head was a batch slot, because flt() on the batch number string returns 0.0. _add_to_negative_fifo_head then crashed with "TypeError: can only concatenate str (not 'float') to str". Guard the branch with is_qty_slot, mirroring the existing check in _add_transfer_slot_to_fifo_queue. Co-Authored-By: Claude Fable 5 (cherry picked from commit c47a95a4d259863baa911f6161b5128df95e42d4) --- .../stock/report/stock_ageing/stock_ageing.py | 2 +- .../report/stock_ageing/test_stock_ageing.py | 41 +++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/erpnext/stock/report/stock_ageing/stock_ageing.py b/erpnext/stock/report/stock_ageing/stock_ageing.py index 43366cee4bb..195227d1839 100644 --- a/erpnext/stock/report/stock_ageing/stock_ageing.py +++ b/erpnext/stock/report/stock_ageing/stock_ageing.py @@ -492,7 +492,7 @@ class FIFOSlots: self._add_serial_fifo_slots(row, fifo_queue, serial_nos) elif batch_nos and row.get("has_batch_no"): self._add_batch_fifo_slots(row, fifo_queue, batch_nos) - elif fifo_queue and flt(fifo_queue[0][FIFO_QTY_INDEX]) <= 0: + elif fifo_queue and is_qty_slot(fifo_queue[0]) and flt(fifo_queue[0][FIFO_QTY_INDEX]) <= 0: self._add_to_negative_fifo_head(row, fifo_queue) else: fifo_queue.append([flt(row.actual_qty), row.posting_date, flt(row.stock_value_difference)]) diff --git a/erpnext/stock/report/stock_ageing/test_stock_ageing.py b/erpnext/stock/report/stock_ageing/test_stock_ageing.py index 37b4b081cfe..02265ab65d0 100644 --- a/erpnext/stock/report/stock_ageing/test_stock_ageing.py +++ b/erpnext/stock/report/stock_ageing/test_stock_ageing.py @@ -1434,6 +1434,47 @@ class TestStockAgeing(ERPNextTestSuite): self.assertEqual(item_result["total_qty"], -4.0) self.assertEqual(item_result["fifo_queue"], [[batch_no, 1, -4.0, "2021-11-10", -40.0]]) + def test_untagged_receipt_with_negative_batch_head(self): + """An incoming SLE without batch details must not treat a negative + batch slot at the queue head as a qty slot (TypeError: str += float).""" + sle = [ + frappe._dict( + name="Enclosure Item", + actual_qty=-10, + qty_after_transaction=-10, + stock_value_difference=-100, + warehouse="WH 1", + posting_date="2021-12-01", + voucher_type="Stock Entry", + voucher_no="001", + has_serial_no=False, + has_batch_no=True, + serial_no=None, + batch_no="QI-06448", + ), + frappe._dict( + name="Enclosure Item", + actual_qty=45, + qty_after_transaction=35, + stock_value_difference=1051.65, + warehouse="WH 1", + posting_date="2021-12-05", + voucher_type="Purchase Receipt", + voucher_no="002", + has_serial_no=False, + serial_no=None, + batch_no=None, + serial_and_batch_bundle="SABB-00001294", + ), + ] + + slots = FIFOSlots(self.filters, sle).generate() + queue = slots["Enclosure Item"]["fifo_queue"] + + self.assertEqual(slots["Enclosure Item"]["total_qty"], 35.0) + self.assertEqual(queue[0][:3], ["QI-06448", None, -10.0]) + self.assertEqual(queue[1], [45.0, "2021-12-05", 1051.65]) + def test_batchwise_valuation_stock_reconciliation_with_bundle(self): from frappe.utils import add_days, getdate, nowdate From 16bc78834e11d2b85bb088c2af097a108c9e2f97 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Thu, 2 Jul 2026 12:31:24 +0530 Subject: [PATCH 17/91] test: assert full negative batch slot in ageing regression test Co-Authored-By: Claude Fable 5 (cherry picked from commit 8928b42d5d7952053aa191cfe9321015b8a102a1) --- erpnext/stock/report/stock_ageing/test_stock_ageing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/stock/report/stock_ageing/test_stock_ageing.py b/erpnext/stock/report/stock_ageing/test_stock_ageing.py index 02265ab65d0..7809451744d 100644 --- a/erpnext/stock/report/stock_ageing/test_stock_ageing.py +++ b/erpnext/stock/report/stock_ageing/test_stock_ageing.py @@ -1472,7 +1472,7 @@ class TestStockAgeing(ERPNextTestSuite): queue = slots["Enclosure Item"]["fifo_queue"] self.assertEqual(slots["Enclosure Item"]["total_qty"], 35.0) - self.assertEqual(queue[0][:3], ["QI-06448", None, -10.0]) + self.assertEqual(queue[0], ["QI-06448", None, -10.0, "2021-12-01", -100.0]) self.assertEqual(queue[1], [45.0, "2021-12-05", 1051.65]) def test_batchwise_valuation_stock_reconciliation_with_bundle(self): From 4573cd15a9f2a529bc39f2cd1099b7d89f7cd3ce Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 2 Jul 2026 13:50:57 +0530 Subject: [PATCH 18/91] fix: restore Save button on reverse journal entry (backport #56770) (#56772) fix: restore Save button on reverse journal entry (#56770) Reversing a submitted Journal Entry opened a draft with reversal_of set, which called frm.set_read_only(). That strips the write and submit perms from frm.perm, so the toolbar never rendered the Save (or later Submit) button and the reversal could not be saved. Lock the fields and the accounts grid as read_only instead, leaving perms intact so Save and Submit still work while nothing stays editable. Ticket: 72857 (cherry picked from commit 0a05dd44264812dcfdeaac7aca2dbb193f64c989) Co-authored-by: Jatin3128 <140256508+Jatin3128@users.noreply.github.com> --- erpnext/accounts/doctype/journal_entry/journal_entry.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.js b/erpnext/accounts/doctype/journal_entry/journal_entry.js index b1dc0c477b7..4659f3e2b4b 100644 --- a/erpnext/accounts/doctype/journal_entry/journal_entry.js +++ b/erpnext/accounts/doctype/journal_entry/journal_entry.js @@ -71,7 +71,7 @@ frappe.ui.form.on("Journal Entry", { refresh: function (frm) { if (frm.doc.reversal_of && (frm.is_new() || frm.doc.docstatus == 0)) { - frm.set_read_only(); + erpnext.journal_entry.lock_reversal_entry(frm); } erpnext.toggle_naming_series(); @@ -564,6 +564,13 @@ $.extend(erpnext.journal_entry, { }); }, + lock_reversal_entry: function (frm) { + frm.fields + .filter((field) => field.has_input) + .forEach((field) => frm.set_df_property(field.df.fieldname, "read_only", 1)); + frm.set_df_property("accounts", "read_only", 1); + }, + set_debit_credit_in_company_currency: function (frm, cdt, cdn) { var row = locals[cdt][cdn]; From 19d03fee463d239a01a9fa52571f90e443a9f60c Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 2 Jul 2026 09:31:16 +0000 Subject: [PATCH 19/91] fix: block serialized to non-serialized item change when SABB exists (backport #56773) (#56775) * fix: block serialized to non-serialized item change when SABB exists (#56773) (cherry picked from commit 0e8ae7548d12dbee6b50a02730d962f30b89765e) # Conflicts: # erpnext/stock/doctype/item/item.py # erpnext/stock/doctype/item/test_item.py * chore: fix conflicts Remove validation for standard cost change and adjust serialized item change validation. * chore: fix conflicts Removed test for opening stock with serial and batch numbers. --------- Co-authored-by: rohitwaghchaure --- erpnext/stock/doctype/item/item.py | 20 ++++++++++++ erpnext/stock/doctype/item/test_item.py | 41 +++++++++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py index 2e1d7fa4158..bb40f6cb810 100644 --- a/erpnext/stock/doctype/item/item.py +++ b/erpnext/stock/doctype/item/item.py @@ -225,6 +225,7 @@ class Item(Document): self.validate_item_defaults() self.validate_auto_reorder_enabled_in_stock_settings() self.cant_change() + self.validate_serialized_change_with_bundle() self.validate_item_tax_net_rate_range() if not self.is_new(): @@ -1102,6 +1103,25 @@ class Item(Document): frappe.throw(msg, title=_("Linked with submitted documents")) + def validate_serialized_change_with_bundle(self): + """Block turning a serialized item non-serialized while any Serial and Batch Bundle still exists + for it. Such bundles carry the item's serial numbers; the user must delete or cancel them first.""" + if self.is_new() or self.has_serial_no or not self._doc_before_save: + return + + # Only relevant when the item was serialized before and is now being unset. + if not self._doc_before_save.has_serial_no: + return + + # Draft (docstatus 0) or submitted (docstatus 1) bundles block the change; cancelled ones don't. + if frappe.db.count("Serial and Batch Bundle", {"item_code": self.name, "docstatus": ("<", 2)}): + frappe.throw( + _( + "Cannot change Item {0} from serialized to non-serialized because a Serial and Batch Bundle exists for it. Please delete or cancel the Serial and Batch Bundle first." + ).format(frappe.bold(self.name)), + title=_("Serial and Batch Bundle Exists"), + ) + def _get_linked_submitted_documents(self, changed_fields: list[str]) -> dict[str, str] | None: linked_doctypes = [ "Delivery Note Item", diff --git a/erpnext/stock/doctype/item/test_item.py b/erpnext/stock/doctype/item/test_item.py index a31842097ce..0a08a562ecd 100644 --- a/erpnext/stock/doctype/item/test_item.py +++ b/erpnext/stock/doctype/item/test_item.py @@ -1044,6 +1044,47 @@ class TestItem(ERPNextTestSuite): msg="Different Variant UOM should not be allowed when `allow_different_uom` is disabled.", ) + def test_cannot_unset_serialized_while_bundle_exists(self): + from erpnext.stock.doctype.serial_and_batch_bundle.test_serial_and_batch_bundle import ( + make_serial_batch_bundle, + ) + + item = make_item( + properties={"has_serial_no": 1, "is_stock_item": 1, "serial_no_series": "TSN-UNSET-.####"} + ).name + + serial_no = f"{item}-SN-01" + frappe.get_doc( + {"doctype": "Serial No", "serial_no": serial_no, "item_code": item, "company": "_Test Company"} + ).insert() + + # A draft (unsubmitted) Serial and Batch Bundle for the item must block the change. + bundle = make_serial_batch_bundle( + { + "item_code": item, + "warehouse": "_Test Warehouse - _TC", + "company": "_Test Company", + "qty": 1, + "rate": 100, + "voucher_type": "Stock Entry", + "serial_nos": [serial_no], + "type_of_transaction": "Inward", + "do_not_submit": True, + "ignore_sabb_validation": True, + } + ) + + doc = frappe.get_doc("Item", item) + doc.has_serial_no = 0 + self.assertRaises(frappe.ValidationError, doc.save) + + # Once the bundle is removed, the item can be made non-serialized. + frappe.delete_doc("Serial and Batch Bundle", bundle.name, force=True) + doc = frappe.get_doc("Item", item) + doc.has_serial_no = 0 + doc.save() + self.assertEqual(frappe.db.get_value("Item", item, "has_serial_no"), 0) + def set_item_variant_settings(fields): doc = frappe.get_doc("Item Variant Settings") From 003b6554c40af17fa5f6760473ace7c94a6f6e5a Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 2 Jul 2026 12:55:16 +0000 Subject: [PATCH 20/91] fix(company): ignore user permissions for link fields having link to `Account` and `Cost Center` (backport #56748) (#56795) * fix(company): ignore user permissions for link fields having link to `Account` and `Cost Center` (#56748) (cherry picked from commit 9cea43b006124b9428b4fa0df807fd58959d5ab9) # Conflicts: # erpnext/setup/doctype/company/company.json * chore: resolves conflict --------- Co-authored-by: Diptanil Saha --- erpnext/setup/doctype/company/company.json | 44 +++++++++++++++++++++- erpnext/setup/doctype/company/company.py | 1 + 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/erpnext/setup/doctype/company/company.json b/erpnext/setup/doctype/company/company.json index 37eda038e3b..353cd799415 100644 --- a/erpnext/setup/doctype/company/company.json +++ b/erpnext/setup/doctype/company/company.json @@ -346,33 +346,48 @@ "options": "Account" }, { + "depends_on": "eval:!doc.__islocal", "fieldname": "round_off_account", "fieldtype": "Link", + "ignore_user_permissions": 1, "label": "Round Off Account", + "no_copy": 1, "options": "Account" }, { + "depends_on": "eval:!doc.__islocal", "fieldname": "round_off_cost_center", "fieldtype": "Link", + "ignore_user_permissions": 1, "label": "Round Off Cost Center", + "no_copy": 1, "options": "Cost Center" }, { + "depends_on": "eval:!doc.__islocal", "fieldname": "write_off_account", "fieldtype": "Link", + "ignore_user_permissions": 1, "label": "Write Off Account", + "no_copy": 1, "options": "Account" }, { + "depends_on": "eval:!doc.__islocal", "fieldname": "exchange_gain_loss_account", "fieldtype": "Link", + "ignore_user_permissions": 1, "label": "Exchange Gain / Loss Account", + "no_copy": 1, "options": "Account" }, { + "depends_on": "eval:!doc.__islocal", "fieldname": "unrealized_exchange_gain_loss_account", "fieldtype": "Link", + "ignore_user_permissions": 1, "label": "Unrealized Exchange Gain/Loss Account", + "no_copy": 1, "options": "Account" }, { @@ -499,15 +514,19 @@ "options": "Account" }, { + "depends_on": "eval:!doc.__islocal", "fieldname": "accumulated_depreciation_account", "fieldtype": "Link", + "ignore_user_permissions": 1, "label": "Accumulated Depreciation Account", "no_copy": 1, "options": "Account" }, { + "depends_on": "eval:!doc.__islocal", "fieldname": "depreciation_expense_account", "fieldtype": "Link", + "ignore_user_permissions": 1, "label": "Depreciation Expense Account", "no_copy": 1, "options": "Account" @@ -522,29 +541,39 @@ "fieldtype": "Column Break" }, { + "depends_on": "eval:!doc.__islocal", "fieldname": "disposal_account", "fieldtype": "Link", + "ignore_user_permissions": 1, "label": "Gain/Loss Account on Asset Disposal", "no_copy": 1, "options": "Account" }, { + "depends_on": "eval:!doc.__islocal", "fieldname": "depreciation_cost_center", "fieldtype": "Link", + "ignore_user_permissions": 1, "label": "Asset Depreciation Cost Center", "no_copy": 1, "options": "Cost Center" }, { + "depends_on": "eval:!doc.__islocal", "fieldname": "capital_work_in_progress_account", "fieldtype": "Link", + "ignore_user_permissions": 1, "label": "Capital Work In Progress Account", + "no_copy": 1, "options": "Account" }, { + "depends_on": "eval:!doc.__islocal", "fieldname": "asset_received_but_not_billed", "fieldtype": "Link", + "ignore_user_permissions": 1, "label": "Asset Received But Not Billed", + "no_copy": 1, "options": "Account" }, { @@ -676,15 +705,21 @@ "options": "Warehouse" }, { + "depends_on": "eval:!doc.__islocal", "fieldname": "unrealized_profit_loss_account", "fieldtype": "Link", + "ignore_user_permissions": 1, "label": "Unrealized Profit / Loss Account", + "no_copy": 1, "options": "Account" }, { + "depends_on": "eval:!doc.__islocal", "fieldname": "default_discount_account", "fieldtype": "Link", + "ignore_user_permissions": 1, "label": "Default Payment Discount Account", + "no_copy": 1, "options": "Account" }, { @@ -726,8 +761,10 @@ "documentation_url": "https://docs.erpnext.com/docs/user/manual/en/advance-in-separate-party-account", "fieldname": "default_advance_received_account", "fieldtype": "Link", + "ignore_user_permissions": 1, "label": "Default Advance Received Account", "mandatory_depends_on": "book_advance_payments_as_liability", + "no_copy": 1, "options": "Account" }, { @@ -736,8 +773,10 @@ "documentation_url": "https://docs.erpnext.com/docs/user/manual/en/advance-in-separate-party-account", "fieldname": "default_advance_paid_account", "fieldtype": "Link", + "ignore_user_permissions": 1, "label": "Default Advance Paid Account", "mandatory_depends_on": "book_advance_payments_as_liability", + "no_copy": 1, "options": "Account" }, { @@ -817,9 +856,12 @@ "options": "Account" }, { + "depends_on": "eval:!doc.__islocal", "fieldname": "round_off_for_opening", "fieldtype": "Link", + "ignore_user_permissions": 1, "label": "Round Off for Opening", + "no_copy": 1, "options": "Account" }, { @@ -970,7 +1012,7 @@ "image_field": "company_logo", "is_tree": 1, "links": [], - "modified": "2026-04-17 17:11:46.586135", + "modified": "2026-07-02 07:21:21.794533", "modified_by": "Administrator", "module": "Setup", "name": "Company", diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py index dcd6da347c9..7ac095a6fdd 100644 --- a/erpnext/setup/doctype/company/company.py +++ b/erpnext/setup/doctype/company/company.py @@ -80,6 +80,7 @@ class Company(NestedSet): default_operating_cost_account: DF.Link | None default_payable_account: DF.Link | None default_provisional_account: DF.Link | None + default_purchase_price_variance_account: DF.Link | None default_receivable_account: DF.Link | None default_sales_contact: DF.Link | None default_scrap_warehouse: DF.Link | None From f72289e27c02fabb1ba5e369774720ed6534a68e Mon Sep 17 00:00:00 2001 From: Shllokkk <140623894+Shllokkk@users.noreply.github.com> Date: Thu, 2 Jul 2026 19:33:16 +0530 Subject: [PATCH 21/91] fix: guard against missing DocType in onboarding steps patch (#56804) (cherry picked from commit caa4358057c9e22c32a81045b9ba5819442b5cc1) --- .../patches/v16_0/complete_onboarding_steps_for_older_sites.py | 1 + 1 file changed, 1 insertion(+) diff --git a/erpnext/patches/v16_0/complete_onboarding_steps_for_older_sites.py b/erpnext/patches/v16_0/complete_onboarding_steps_for_older_sites.py index 7230334266e..3f6e30bcbc5 100644 --- a/erpnext/patches/v16_0/complete_onboarding_steps_for_older_sites.py +++ b/erpnext/patches/v16_0/complete_onboarding_steps_for_older_sites.py @@ -34,6 +34,7 @@ def complete_onboarding_steps_if_record_exists(steps): if ( step.action == "Create Entry" and step.reference_document + and frappe.db.exists("DocType", step.reference_document) and frappe.get_all(step.reference_document, limit=1) ): frappe.db.set_value("Onboarding Step", step.name, "is_complete", 1, update_modified=False) From fa4d32dcdbb39294a71a372bc5669d353f147c33 Mon Sep 17 00:00:00 2001 From: khushi8112 Date: Fri, 3 Jul 2026 02:16:59 +0530 Subject: [PATCH 22/91] fix: render letter head footer in print formats (cherry picked from commit e60a4679721caf69d0da69b195267c93d6778736) --- .../pos_invoice_standard/pos_invoice_standard.json | 4 ++-- .../pos_invoice_with_item_image.json | 4 ++-- .../purchase_invoice_standard/purchase_invoice_standard.json | 4 ++-- .../purchase_invoice_with_item_image.json | 4 ++-- .../sales_invoice_standard/sales_invoice_standard.json | 4 ++-- .../sales_invoice_with_item_image.json | 4 ++-- .../purchase_order_standard/purchase_order_standard.json | 4 ++-- .../purchase_order_with_item_image.json | 4 ++-- .../request_for_quotation_with_item_image.json | 4 ++-- .../print_format/quotation_standard/quotation_standard.json | 4 ++-- .../quotation_with_item_image/quotation_with_item_image.json | 4 ++-- .../sales_order_standard/sales_order_standard.json | 4 ++-- .../sales_order_with_item_image.json | 4 ++-- .../delivery_note_standard/delivery_note_standard.json | 4 ++-- .../delivery_note_with_item_image.json | 4 ++-- 15 files changed, 30 insertions(+), 30 deletions(-) diff --git a/erpnext/accounts/print_format/pos_invoice_standard/pos_invoice_standard.json b/erpnext/accounts/print_format/pos_invoice_standard/pos_invoice_standard.json index 0386801ffc3..fc5df2b44fc 100644 --- a/erpnext/accounts/print_format/pos_invoice_standard/pos_invoice_standard.json +++ b/erpnext/accounts/print_format/pos_invoice_standard/pos_invoice_standard.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n \n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Customer Name\") }}: {{doc.customer_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Payment Due Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.due_date) }}\n\t\t\t\t
{{ _(\"Invoice Number\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Invoice Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.posting_date) }}\n\t\t\t\t
{{ _(\"Bill From\") }}:
\n\t\t\t\t\t{% if doc.company_address %}\n {% set company_address = frappe.db.get_value(\"Address\", doc.company_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ company_address.get(\"address_line1\") or \"\" }}
\n {% if company_address.get(\"address_line2\") %}{{ company_address.get(\"address_line2\") }}
{% endif %}\n {{ company_address.get(\"city\") or \"\" }}, {{ company_address.get(\"state\") or \"\" }} {{ company_address.get(\"pincode\") or \"\" }}, {{ company_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
{{ _(\"Bill To\") }}:
\n\t\t\t\t {% if doc.customer_address %}\n\t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.customer_name }}
\n\t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n
\n{% endfor %}\n", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n \n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Customer Name\") }}: {{doc.customer_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Payment Due Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.due_date) }}\n\t\t\t\t
{{ _(\"Invoice Number\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Invoice Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.posting_date) }}\n\t\t\t\t
{{ _(\"Bill From\") }}:
\n\t\t\t\t\t{% if doc.company_address %}\n {% set company_address = frappe.db.get_value(\"Address\", doc.company_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ company_address.get(\"address_line1\") or \"\" }}
\n {% if company_address.get(\"address_line2\") %}{{ company_address.get(\"address_line2\") }}
{% endif %}\n {{ company_address.get(\"city\") or \"\" }}, {{ company_address.get(\"state\") or \"\" }} {{ company_address.get(\"pincode\") or \"\" }}, {{ company_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
{{ _(\"Bill To\") }}:
\n\t\t\t\t {% if doc.customer_address %}\n\t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.customer_name }}
\n\t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2025-11-30 16:58:32.571054", + "modified": "2026-07-03 02:13:38.336447", "modified_by": "Administrator", "module": "Accounts", "name": "POS Invoice Standard", diff --git a/erpnext/accounts/print_format/pos_invoice_with_item_image/pos_invoice_with_item_image.json b/erpnext/accounts/print_format/pos_invoice_with_item_image/pos_invoice_with_item_image.json index ae878a47c77..be48c3a9f8f 100644 --- a/erpnext/accounts/print_format/pos_invoice_with_item_image/pos_invoice_with_item_image.json +++ b/erpnext/accounts/print_format/pos_invoice_with_item_image/pos_invoice_with_item_image.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Customer Name:
\n\t\t\t\t\t\t
Bill to:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.customer_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.customer_address %}\n \t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n \t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Invoice Number:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Invoice Date:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.posting_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Payment Due Date:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.due_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}\n", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Customer Name:
\n\t\t\t\t\t\t
Bill to:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.customer_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.customer_address %}\n \t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n \t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Invoice Number:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Invoice Date:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.posting_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Payment Due Date:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.due_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2025-11-30 17:22:25.000765", + "modified": "2026-07-03 02:08:39.075598", "modified_by": "Administrator", "module": "Accounts", "name": "POS Invoice with Item Image", diff --git a/erpnext/accounts/print_format/purchase_invoice_standard/purchase_invoice_standard.json b/erpnext/accounts/print_format/purchase_invoice_standard/purchase_invoice_standard.json index 4e4d3d0575f..ed7feebfe8b 100644 --- a/erpnext/accounts/print_format/purchase_invoice_standard/purchase_invoice_standard.json +++ b/erpnext/accounts/print_format/purchase_invoice_standard/purchase_invoice_standard.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Supplier Name\") }}: {{doc.supplier_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Due Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.due_date) }}\n\t\t\t\t
{{ _(\"Invoice Number\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Invoice Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.posting_date) }}\n\t\t\t\t
{{ _(\"Supplier Address\") }}:
\n\t\t\t\t\t{% if doc.supplier_address %}\n\t\t\t\t\t\t{% set supplier_address = frappe.db.get_value(\"Address\", doc.supplier_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.supplier_name }}
\n\t\t\t\t\t\t{{ supplier_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if supplier_address.address_line2 %}{{ supplier_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ supplier_address.city or \"\" }} {{ supplier_address.state or \"\" }} {{ supplier_address.pincode or \"\" }} {{ supplier_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
{{ _(\"Company Address\") }}:
\n {% if doc.billing_address %}\n {% set billing_address = frappe.db.get_value(\"Address\", doc.billing_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ billing_address.get(\"address_line1\") or \"\" }}
\n {% if billing_address.get(\"address_line2\") %}{{ billing_address.get(\"address_line2\") }}
{% endif %}\n {{ billing_address.get(\"city\") or \"\" }}, {{ billing_address.get(\"state\") or \"\" }} {{ billing_address.get(\"pincode\") or \"\" }}, {{ billing_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n
\n{% endfor %}\n", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Supplier Name\") }}: {{doc.supplier_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Due Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.due_date) }}\n\t\t\t\t
{{ _(\"Invoice Number\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Invoice Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.posting_date) }}\n\t\t\t\t
{{ _(\"Supplier Address\") }}:
\n\t\t\t\t\t{% if doc.supplier_address %}\n\t\t\t\t\t\t{% set supplier_address = frappe.db.get_value(\"Address\", doc.supplier_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.supplier_name }}
\n\t\t\t\t\t\t{{ supplier_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if supplier_address.address_line2 %}{{ supplier_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ supplier_address.city or \"\" }} {{ supplier_address.state or \"\" }} {{ supplier_address.pincode or \"\" }} {{ supplier_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
{{ _(\"Company Address\") }}:
\n {% if doc.billing_address %}\n {% set billing_address = frappe.db.get_value(\"Address\", doc.billing_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ billing_address.get(\"address_line1\") or \"\" }}
\n {% if billing_address.get(\"address_line2\") %}{{ billing_address.get(\"address_line2\") }}
{% endif %}\n {{ billing_address.get(\"city\") or \"\" }}, {{ billing_address.get(\"state\") or \"\" }} {{ billing_address.get(\"pincode\") or \"\" }}, {{ billing_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-02-23 00:46:57.038144", + "modified": "2026-07-03 02:13:38.336447", "modified_by": "Administrator", "module": "Accounts", "name": "Purchase Invoice Standard", diff --git a/erpnext/accounts/print_format/purchase_invoice_with_item_image/purchase_invoice_with_item_image.json b/erpnext/accounts/print_format/purchase_invoice_with_item_image/purchase_invoice_with_item_image.json index ddcd4b48d5a..f66e3b2989f 100644 --- a/erpnext/accounts/print_format/purchase_invoice_with_item_image/purchase_invoice_with_item_image.json +++ b/erpnext/accounts/print_format/purchase_invoice_with_item_image/purchase_invoice_with_item_image.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Supplier Name:\") }}
\n\t\t\t\t\t\t
{{ _(\"Supplier Address:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.supplier_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.supplier_address %}\n \t\t\t\t\t\t{% set supplier_address = frappe.db.get_value(\"Address\", doc.supplier_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.supplier_name }}
\n \t\t\t\t\t\t{{ supplier_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if supplier_address.address_line2 %}{{ supplier_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ supplier_address.city or \"\" }} {{ supplier_address.state or \"\" }} {{ supplier_address.pincode or \"\" }} {{ supplier_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Purchase Invoice:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Posting Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.posting_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Due By:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.due_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}\n", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Supplier Name:\") }}
\n\t\t\t\t\t\t
{{ _(\"Supplier Address:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.supplier_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.supplier_address %}\n \t\t\t\t\t\t{% set supplier_address = frappe.db.get_value(\"Address\", doc.supplier_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.supplier_name }}
\n \t\t\t\t\t\t{{ supplier_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if supplier_address.address_line2 %}{{ supplier_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ supplier_address.city or \"\" }} {{ supplier_address.state or \"\" }} {{ supplier_address.pincode or \"\" }} {{ supplier_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Purchase Invoice:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Posting Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.posting_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Due By:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.due_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-02-23 12:58:12.227646", + "modified": "2026-07-03 02:08:39.075598", "modified_by": "Administrator", "module": "Accounts", "name": "Purchase Invoice with Item Image", diff --git a/erpnext/accounts/print_format/sales_invoice_standard/sales_invoice_standard.json b/erpnext/accounts/print_format/sales_invoice_standard/sales_invoice_standard.json index f66861078d3..403d8c3cad9 100644 --- a/erpnext/accounts/print_format/sales_invoice_standard/sales_invoice_standard.json +++ b/erpnext/accounts/print_format/sales_invoice_standard/sales_invoice_standard.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Customer Name\") }}: {{doc.customer_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Payment Due Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.due_date) }}\n\t\t\t\t
{{ _(\"Invoice Number\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Invoice Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.posting_date) }}\n\t\t\t\t
{{ _(\"Bill From\") }}:
\n\t\t\t\t\t{% if doc.company_address %}\n {% set company_address = frappe.db.get_value(\"Address\", doc.company_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ company_address.get(\"address_line1\") or \"\" }}
\n {% if company_address.get(\"address_line2\") %}{{ company_address.get(\"address_line2\") }}
{% endif %}\n {{ company_address.get(\"city\") or \"\" }}, {{ company_address.get(\"state\") or \"\" }} {{ company_address.get(\"pincode\") or \"\" }}, {{ company_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
{{ _(\"Bill To\") }}:
\n\t\t\t\t {% if doc.customer_address %}\n\t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.customer_name }}
\n\t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n
\n{% endfor %}\n", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Customer Name\") }}: {{doc.customer_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Payment Due Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.due_date) }}\n\t\t\t\t
{{ _(\"Invoice Number\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Invoice Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.posting_date) }}\n\t\t\t\t
{{ _(\"Bill From\") }}:
\n\t\t\t\t\t{% if doc.company_address %}\n {% set company_address = frappe.db.get_value(\"Address\", doc.company_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ company_address.get(\"address_line1\") or \"\" }}
\n {% if company_address.get(\"address_line2\") %}{{ company_address.get(\"address_line2\") }}
{% endif %}\n {{ company_address.get(\"city\") or \"\" }}, {{ company_address.get(\"state\") or \"\" }} {{ company_address.get(\"pincode\") or \"\" }}, {{ company_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
{{ _(\"Bill To\") }}:
\n\t\t\t\t {% if doc.customer_address %}\n\t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.customer_name }}
\n\t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2025-10-12 17:18:38.613066", + "modified": "2026-07-03 02:13:38.336447", "modified_by": "Administrator", "module": "Accounts", "name": "Sales Invoice Standard", diff --git a/erpnext/accounts/print_format/sales_invoice_with_item_image/sales_invoice_with_item_image.json b/erpnext/accounts/print_format/sales_invoice_with_item_image/sales_invoice_with_item_image.json index 1d3b4dac309..01d9d6a4a16 100644 --- a/erpnext/accounts/print_format/sales_invoice_with_item_image/sales_invoice_with_item_image.json +++ b/erpnext/accounts/print_format/sales_invoice_with_item_image/sales_invoice_with_item_image.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Customer Name:
\n\t\t\t\t\t\t
Bill to:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.customer_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.customer_address %}\n \t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n \t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Invoice Number:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Invoice Date:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.posting_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Payment Due Date:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.due_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}\n", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Customer Name:
\n\t\t\t\t\t\t
Bill to:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.customer_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.customer_address %}\n \t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n \t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Invoice Number:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Invoice Date:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.posting_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Payment Due Date:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.due_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2025-10-10 18:20:55.546151", + "modified": "2026-07-03 02:08:39.075598", "modified_by": "Administrator", "module": "Accounts", "name": "Sales Invoice with Item Image", diff --git a/erpnext/buying/print_format/purchase_order_standard/purchase_order_standard.json b/erpnext/buying/print_format/purchase_order_standard/purchase_order_standard.json index c5ee7381d5f..22a678c31a2 100644 --- a/erpnext/buying/print_format/purchase_order_standard/purchase_order_standard.json +++ b/erpnext/buying/print_format/purchase_order_standard/purchase_order_standard.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Supplier Name\") }}: {{doc.supplier_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Required By\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.schedule_date) }}\n\t\t\t\t
{{ _(\"Order Number\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Order Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.transaction_date) }}\n\t\t\t\t
{{ _(\"Supplier Address\") }}:
\n\t\t\t\t\t{% if doc.supplier_address %}\n\t\t\t\t\t\t{% set supplier_address = frappe.db.get_value(\"Address\", doc.supplier_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.supplier_name }}
\n\t\t\t\t\t\t{{ supplier_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if supplier_address.address_line2 %}{{ supplier_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ supplier_address.city or \"\" }} {{ supplier_address.state or \"\" }} {{ supplier_address.pincode or \"\" }} {{ supplier_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
{{ _(\"Company Address\") }}:
\n {% if doc.billing_address %}\n {% set billing_address = frappe.db.get_value(\"Address\", doc.billing_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ billing_address.get(\"address_line1\") or \"\" }}
\n {% if billing_address.get(\"address_line2\") %}{{ billing_address.get(\"address_line2\") }}
{% endif %}\n {{ billing_address.get(\"city\") or \"\" }}, {{ billing_address.get(\"state\") or \"\" }} {{ billing_address.get(\"pincode\") or \"\" }}, {{ billing_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n
\n{% endfor %}\n", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Supplier Name\") }}: {{doc.supplier_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Required By\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.schedule_date) }}\n\t\t\t\t
{{ _(\"Order Number\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Order Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.transaction_date) }}\n\t\t\t\t
{{ _(\"Supplier Address\") }}:
\n\t\t\t\t\t{% if doc.supplier_address %}\n\t\t\t\t\t\t{% set supplier_address = frappe.db.get_value(\"Address\", doc.supplier_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.supplier_name }}
\n\t\t\t\t\t\t{{ supplier_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if supplier_address.address_line2 %}{{ supplier_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ supplier_address.city or \"\" }} {{ supplier_address.state or \"\" }} {{ supplier_address.pincode or \"\" }} {{ supplier_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
{{ _(\"Company Address\") }}:
\n {% if doc.billing_address %}\n {% set billing_address = frappe.db.get_value(\"Address\", doc.billing_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ billing_address.get(\"address_line1\") or \"\" }}
\n {% if billing_address.get(\"address_line2\") %}{{ billing_address.get(\"address_line2\") }}
{% endif %}\n {{ billing_address.get(\"city\") or \"\" }}, {{ billing_address.get(\"state\") or \"\" }} {{ billing_address.get(\"pincode\") or \"\" }}, {{ billing_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2025-11-30 16:55:52.799647", + "modified": "2026-07-03 02:13:38.336447", "modified_by": "Administrator", "module": "Buying", "name": "Purchase Order Standard", diff --git a/erpnext/buying/print_format/purchase_order_with_item_image/purchase_order_with_item_image.json b/erpnext/buying/print_format/purchase_order_with_item_image/purchase_order_with_item_image.json index b70401ea0a2..02d7eb8cf1c 100644 --- a/erpnext/buying/print_format/purchase_order_with_item_image/purchase_order_with_item_image.json +++ b/erpnext/buying/print_format/purchase_order_with_item_image/purchase_order_with_item_image.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Supplier Name:\") }}
\n\t\t\t\t\t\t
{{ _(\"Supplier Address:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.supplier_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.supplier_address %}\n \t\t\t\t\t\t{% set supplier_address = frappe.db.get_value(\"Address\", doc.supplier_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.supplier_name }}
\n \t\t\t\t\t\t{{ supplier_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if supplier_address.address_line2 %}{{ supplier_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ supplier_address.city or \"\" }} {{ supplier_address.state or \"\" }} {{ supplier_address.pincode or \"\" }} {{ supplier_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Purchase Order:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Order Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.transaction_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Required By:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.schedule_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}\n", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Supplier Name:\") }}
\n\t\t\t\t\t\t
{{ _(\"Supplier Address:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.supplier_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.supplier_address %}\n \t\t\t\t\t\t{% set supplier_address = frappe.db.get_value(\"Address\", doc.supplier_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.supplier_name }}
\n \t\t\t\t\t\t{{ supplier_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if supplier_address.address_line2 %}{{ supplier_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ supplier_address.city or \"\" }} {{ supplier_address.state or \"\" }} {{ supplier_address.pincode or \"\" }} {{ supplier_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Purchase Order:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Order Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.transaction_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Required By:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.schedule_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-02-23 14:15:59.698407", + "modified": "2026-07-03 02:08:39.075598", "modified_by": "Administrator", "module": "Buying", "name": "Purchase Order with Item Image", diff --git a/erpnext/buying/print_format/request_for_quotation_with_item_image/request_for_quotation_with_item_image.json b/erpnext/buying/print_format/request_for_quotation_with_item_image/request_for_quotation_with_item_image.json index 26f131aec5b..460fda987f6 100644 --- a/erpnext/buying/print_format/request_for_quotation_with_item_image/request_for_quotation_with_item_image.json +++ b/erpnext/buying/print_format/request_for_quotation_with_item_image/request_for_quotation_with_item_image.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Supplier Name:\") }}
\n\t\t\t\t\t\t
{{ _(\"Shipping Address:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.vendor }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.shipping_address %}\n \t\t\t\t\t\t{% set shipping_address = frappe.db.get_value(\"Address\", doc.shipping_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.shipping_address }}
\n \t\t\t\t\t\t{{ shipping_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if shipping_address.address_line2 %}{{ shipping_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ shipping_address.city or \"\" }} {{ shipping_address.state or \"\" }} {{ shipping_address.pincode or \"\" }} {{ shipping_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Order Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.transaction_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Required By:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.schedule_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}\n", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Supplier Name:\") }}
\n\t\t\t\t\t\t
{{ _(\"Shipping Address:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.vendor }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.shipping_address %}\n \t\t\t\t\t\t{% set shipping_address = frappe.db.get_value(\"Address\", doc.shipping_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.shipping_address }}
\n \t\t\t\t\t\t{{ shipping_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if shipping_address.address_line2 %}{{ shipping_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ shipping_address.city or \"\" }} {{ shipping_address.state or \"\" }} {{ shipping_address.pincode or \"\" }} {{ shipping_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Order Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.transaction_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Required By:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.schedule_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-03-23 14:29:41.591636", + "modified": "2026-07-03 02:08:39.075598", "modified_by": "Administrator", "module": "Buying", "name": "Request for Quotation with Item Image", diff --git a/erpnext/selling/print_format/quotation_standard/quotation_standard.json b/erpnext/selling/print_format/quotation_standard/quotation_standard.json index e719f52b150..8e7bd303cc5 100644 --- a/erpnext/selling/print_format/quotation_standard/quotation_standard.json +++ b/erpnext/selling/print_format/quotation_standard/quotation_standard.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "\n\n{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Party Name\") }}: {{doc.party_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Valid Till\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.valid_till) }}\n\t\t\t\t
{{ _(\"Quotation\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Posting Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.transaction_date) }}\n\t\t\t\t
{{ _(\"Bill From\") }}:
\n\t\t\t\t\t{% if doc.company_address %}\n {% set company_address = frappe.db.get_value(\"Address\", doc.company_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ company_address.get(\"address_line1\") or \"\" }}
\n {% if company_address.get(\"address_line2\") %}{{ company_address.get(\"address_line2\") }}
{% endif %}\n {{ company_address.get(\"city\") or \"\" }}, {{ company_address.get(\"state\") or \"\" }} {{ company_address.get(\"pincode\") or \"\" }}, {{ company_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
{{ _(\"Bill To\") }}:
\n\t\t\t\t {% if doc.customer_address %}\n\t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.customer_name }}
\n\t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t\t
\n\t
\n
\n{% endfor %}\n", + "html": "\n\n{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Party Name\") }}: {{doc.party_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Valid Till\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.valid_till) }}\n\t\t\t\t
{{ _(\"Quotation\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Posting Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.transaction_date) }}\n\t\t\t\t
{{ _(\"Bill From\") }}:
\n\t\t\t\t\t{% if doc.company_address %}\n {% set company_address = frappe.db.get_value(\"Address\", doc.company_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ company_address.get(\"address_line1\") or \"\" }}
\n {% if company_address.get(\"address_line2\") %}{{ company_address.get(\"address_line2\") }}
{% endif %}\n {{ company_address.get(\"city\") or \"\" }}, {{ company_address.get(\"state\") or \"\" }} {{ company_address.get(\"pincode\") or \"\" }}, {{ company_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
{{ _(\"Bill To\") }}:
\n\t\t\t\t {% if doc.customer_address %}\n\t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.customer_name }}
\n\t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t\t
\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-03-23 16:14:39.728914", + "modified": "2026-07-03 02:13:38.336447", "modified_by": "Administrator", "module": "Selling", "name": "Quotation Standard", diff --git a/erpnext/selling/print_format/quotation_with_item_image/quotation_with_item_image.json b/erpnext/selling/print_format/quotation_with_item_image/quotation_with_item_image.json index 2d195632178..256ec5cefaf 100644 --- a/erpnext/selling/print_format/quotation_with_item_image/quotation_with_item_image.json +++ b/erpnext/selling/print_format/quotation_with_item_image/quotation_with_item_image.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Customer Name:
\n\t\t\t\t\t\t
Bill to:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.customer_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.customer_address %}\n \t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n \t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Quotation:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Posting Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.transaction_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Valid Till:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.valid_till) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}\n", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Customer Name:
\n\t\t\t\t\t\t
Bill to:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.customer_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.customer_address %}\n \t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n \t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Quotation:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Posting Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.transaction_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Valid Till:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.valid_till) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-03-18 11:57:39.954918", + "modified": "2026-07-03 02:08:39.075598", "modified_by": "Administrator", "module": "Selling", "name": "Quotation with Item Image", diff --git a/erpnext/selling/print_format/sales_order_standard/sales_order_standard.json b/erpnext/selling/print_format/sales_order_standard/sales_order_standard.json index 0df19107c1b..5242383b5db 100644 --- a/erpnext/selling/print_format/sales_order_standard/sales_order_standard.json +++ b/erpnext/selling/print_format/sales_order_standard/sales_order_standard.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "\n\n{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Customer Name\") }}: {{doc.customer_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Delievery Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.delivery_date) }}\n\t\t\t\t
{{ _(\"Sales Order\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Posting Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.transaction_date) }}\n\t\t\t\t
{{ _(\"Bill From\") }}:
\n\t\t\t\t\t{% if doc.company_address %}\n {% set company_address = frappe.db.get_value(\"Address\", doc.company_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ company_address.get(\"address_line1\") or \"\" }}
\n {% if company_address.get(\"address_line2\") %}{{ company_address.get(\"address_line2\") }}
{% endif %}\n {{ company_address.get(\"city\") or \"\" }}, {{ company_address.get(\"state\") or \"\" }} {{ company_address.get(\"pincode\") or \"\" }}, {{ company_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
{{ _(\"Bill To\") }}:
\n\t\t\t\t {% if doc.customer_address %}\n\t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.customer_name }}
\n\t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n
\n{% endfor %}\n", + "html": "\n\n{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Customer Name\") }}: {{doc.customer_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Delievery Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.delivery_date) }}\n\t\t\t\t
{{ _(\"Sales Order\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Posting Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.transaction_date) }}\n\t\t\t\t
{{ _(\"Bill From\") }}:
\n\t\t\t\t\t{% if doc.company_address %}\n {% set company_address = frappe.db.get_value(\"Address\", doc.company_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ company_address.get(\"address_line1\") or \"\" }}
\n {% if company_address.get(\"address_line2\") %}{{ company_address.get(\"address_line2\") }}
{% endif %}\n {{ company_address.get(\"city\") or \"\" }}, {{ company_address.get(\"state\") or \"\" }} {{ company_address.get(\"pincode\") or \"\" }}, {{ company_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
{{ _(\"Bill To\") }}:
\n\t\t\t\t {% if doc.customer_address %}\n\t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.customer_name }}
\n\t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-02-23 13:04:24.036955", + "modified": "2026-07-03 02:13:38.336447", "modified_by": "Administrator", "module": "Selling", "name": "Sales Order Standard", diff --git a/erpnext/selling/print_format/sales_order_with_item_image/sales_order_with_item_image.json b/erpnext/selling/print_format/sales_order_with_item_image/sales_order_with_item_image.json index 25cd22bcf66..c4f73603055 100644 --- a/erpnext/selling/print_format/sales_order_with_item_image/sales_order_with_item_image.json +++ b/erpnext/selling/print_format/sales_order_with_item_image/sales_order_with_item_image.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Customer Name:
\n\t\t\t\t\t\t
Bill to:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.customer_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.customer_address %}\n \t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n \t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Sales Order:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Order Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.transaction_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Delivery Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.delivery_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}\n", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Customer Name:
\n\t\t\t\t\t\t
Bill to:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.customer_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.customer_address %}\n \t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n \t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Sales Order:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Order Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.transaction_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Delivery Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.delivery_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-02-23 13:00:02.496058", + "modified": "2026-07-03 02:08:39.075598", "modified_by": "Administrator", "module": "Selling", "name": "Sales Order with Item Image", diff --git a/erpnext/stock/print_format/delivery_note_standard/delivery_note_standard.json b/erpnext/stock/print_format/delivery_note_standard/delivery_note_standard.json index 691c0403f72..39345cdaca7 100644 --- a/erpnext/stock/print_format/delivery_note_standard/delivery_note_standard.json +++ b/erpnext/stock/print_format/delivery_note_standard/delivery_note_standard.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Customer Name\") }}: {{doc.customer_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Status\") }}: {{ doc.status }}\n\t\t\t\t
{{ _(\"Delivery Note\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.posting_date) }}\n\t\t\t\t
{{ _(\"Company Address\") }}:
\n\t\t\t\t\t{% if doc.company_address %}\n {% set company_address = frappe.db.get_value(\"Address\", doc.company_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ company_address.get(\"address_line1\") or \"\" }}
\n {% if company_address.get(\"address_line2\") %}{{ company_address.get(\"address_line2\") }}
{% endif %}\n {{ company_address.get(\"city\") or \"\" }}, {{ company_address.get(\"state\") or \"\" }} {{ company_address.get(\"pincode\") or \"\" }}, {{ company_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
{{ _(\"Customer Address\") }}:
\n\t\t\t\t {% if doc.customer_address %}\n\t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.customer_name }}
\n\t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n
\n{% endfor %}\n", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Customer Name\") }}: {{doc.customer_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Status\") }}: {{ doc.status }}\n\t\t\t\t
{{ _(\"Delivery Note\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.posting_date) }}\n\t\t\t\t
{{ _(\"Company Address\") }}:
\n\t\t\t\t\t{% if doc.company_address %}\n {% set company_address = frappe.db.get_value(\"Address\", doc.company_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ company_address.get(\"address_line1\") or \"\" }}
\n {% if company_address.get(\"address_line2\") %}{{ company_address.get(\"address_line2\") }}
{% endif %}\n {{ company_address.get(\"city\") or \"\" }}, {{ company_address.get(\"state\") or \"\" }} {{ company_address.get(\"pincode\") or \"\" }}, {{ company_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
{{ _(\"Customer Address\") }}:
\n\t\t\t\t {% if doc.customer_address %}\n\t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.customer_name }}
\n\t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2025-11-30 16:53:24.456411", + "modified": "2026-07-03 02:13:38.336447", "modified_by": "Administrator", "module": "Stock", "name": "Delivery Note Standard", diff --git a/erpnext/stock/print_format/delivery_note_with_item_image/delivery_note_with_item_image.json b/erpnext/stock/print_format/delivery_note_with_item_image/delivery_note_with_item_image.json index d59b9bcba9d..85bad75c570 100644 --- a/erpnext/stock/print_format/delivery_note_with_item_image/delivery_note_with_item_image.json +++ b/erpnext/stock/print_format/delivery_note_with_item_image/delivery_note_with_item_image.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Customer Name:\") }}
\n\t\t\t\t\t\t
{{ _(\"Address:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.customer_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.customer_address %}\n \t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n \t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Delivery Note:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Delivery Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.posting_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Status:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.status }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}\n", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Customer Name:\") }}
\n\t\t\t\t\t\t
{{ _(\"Address:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.customer_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.customer_address %}\n \t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n \t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Delivery Note:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Delivery Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.posting_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Status:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.status }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2025-11-30 17:17:23.062996", + "modified": "2026-07-03 02:08:39.075598", "modified_by": "Administrator", "module": "Stock", "name": "Delivery Note with Item Image", From 0371e8eaf07ee02331bc228761c7085524187af7 Mon Sep 17 00:00:00 2001 From: khushi8112 Date: Fri, 3 Jul 2026 02:26:52 +0530 Subject: [PATCH 23/91] fix: add page numbers to print format footer (cherry picked from commit 2d0c0a8c09591e92d9eb8e79fc6d007fbf396559) --- .../pos_invoice_standard/pos_invoice_standard.json | 4 ++-- .../pos_invoice_with_item_image.json | 4 ++-- .../purchase_invoice_standard/purchase_invoice_standard.json | 4 ++-- .../purchase_invoice_with_item_image.json | 4 ++-- .../sales_invoice_standard/sales_invoice_standard.json | 4 ++-- .../sales_invoice_with_item_image.json | 4 ++-- .../purchase_order_standard/purchase_order_standard.json | 4 ++-- .../purchase_order_with_item_image.json | 4 ++-- .../request_for_quotation_with_item_image.json | 4 ++-- .../print_format/quotation_standard/quotation_standard.json | 4 ++-- .../quotation_with_item_image/quotation_with_item_image.json | 4 ++-- .../sales_order_standard/sales_order_standard.json | 4 ++-- .../sales_order_with_item_image.json | 4 ++-- .../delivery_note_standard/delivery_note_standard.json | 4 ++-- .../delivery_note_with_item_image.json | 4 ++-- 15 files changed, 30 insertions(+), 30 deletions(-) diff --git a/erpnext/accounts/print_format/pos_invoice_standard/pos_invoice_standard.json b/erpnext/accounts/print_format/pos_invoice_standard/pos_invoice_standard.json index fc5df2b44fc..df8ef243ef3 100644 --- a/erpnext/accounts/print_format/pos_invoice_standard/pos_invoice_standard.json +++ b/erpnext/accounts/print_format/pos_invoice_standard/pos_invoice_standard.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n \n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Customer Name\") }}: {{doc.customer_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Payment Due Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.due_date) }}\n\t\t\t\t
{{ _(\"Invoice Number\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Invoice Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.posting_date) }}\n\t\t\t\t
{{ _(\"Bill From\") }}:
\n\t\t\t\t\t{% if doc.company_address %}\n {% set company_address = frappe.db.get_value(\"Address\", doc.company_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ company_address.get(\"address_line1\") or \"\" }}
\n {% if company_address.get(\"address_line2\") %}{{ company_address.get(\"address_line2\") }}
{% endif %}\n {{ company_address.get(\"city\") or \"\" }}, {{ company_address.get(\"state\") or \"\" }} {{ company_address.get(\"pincode\") or \"\" }}, {{ company_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
{{ _(\"Bill To\") }}:
\n\t\t\t\t {% if doc.customer_address %}\n\t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.customer_name }}
\n\t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n \n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Customer Name\") }}: {{doc.customer_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Payment Due Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.due_date) }}\n\t\t\t\t
{{ _(\"Invoice Number\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Invoice Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.posting_date) }}\n\t\t\t\t
{{ _(\"Bill From\") }}:
\n\t\t\t\t\t{% if doc.company_address %}\n {% set company_address = frappe.db.get_value(\"Address\", doc.company_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ company_address.get(\"address_line1\") or \"\" }}
\n {% if company_address.get(\"address_line2\") %}{{ company_address.get(\"address_line2\") }}
{% endif %}\n {{ company_address.get(\"city\") or \"\" }}, {{ company_address.get(\"state\") or \"\" }} {{ company_address.get(\"pincode\") or \"\" }}, {{ company_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
{{ _(\"Bill To\") }}:
\n\t\t\t\t {% if doc.customer_address %}\n\t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.customer_name }}
\n\t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t\t{% if print_settings.repeat_header_footer %}\n\t\t

\n\t\t\t{{ _(\"Page {0} of {1}\").format('', '') }}\n\t\t

\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-07-03 02:13:38.336447", + "modified": "2026-07-03 02:26:31.243291", "modified_by": "Administrator", "module": "Accounts", "name": "POS Invoice Standard", diff --git a/erpnext/accounts/print_format/pos_invoice_with_item_image/pos_invoice_with_item_image.json b/erpnext/accounts/print_format/pos_invoice_with_item_image/pos_invoice_with_item_image.json index be48c3a9f8f..a9d81808a78 100644 --- a/erpnext/accounts/print_format/pos_invoice_with_item_image/pos_invoice_with_item_image.json +++ b/erpnext/accounts/print_format/pos_invoice_with_item_image/pos_invoice_with_item_image.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Customer Name:
\n\t\t\t\t\t\t
Bill to:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.customer_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.customer_address %}\n \t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n \t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Invoice Number:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Invoice Date:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.posting_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Payment Due Date:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.due_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Customer Name:
\n\t\t\t\t\t\t
Bill to:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.customer_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.customer_address %}\n \t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n \t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Invoice Number:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Invoice Date:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.posting_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Payment Due Date:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.due_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t\t{% if print_settings.repeat_header_footer %}\n\t\t

\n\t\t\t{{ _(\"Page {0} of {1}\").format('', '') }}\n\t\t

\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-07-03 02:08:39.075598", + "modified": "2026-07-03 02:26:31.243291", "modified_by": "Administrator", "module": "Accounts", "name": "POS Invoice with Item Image", diff --git a/erpnext/accounts/print_format/purchase_invoice_standard/purchase_invoice_standard.json b/erpnext/accounts/print_format/purchase_invoice_standard/purchase_invoice_standard.json index ed7feebfe8b..058c5747ad3 100644 --- a/erpnext/accounts/print_format/purchase_invoice_standard/purchase_invoice_standard.json +++ b/erpnext/accounts/print_format/purchase_invoice_standard/purchase_invoice_standard.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Supplier Name\") }}: {{doc.supplier_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Due Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.due_date) }}\n\t\t\t\t
{{ _(\"Invoice Number\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Invoice Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.posting_date) }}\n\t\t\t\t
{{ _(\"Supplier Address\") }}:
\n\t\t\t\t\t{% if doc.supplier_address %}\n\t\t\t\t\t\t{% set supplier_address = frappe.db.get_value(\"Address\", doc.supplier_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.supplier_name }}
\n\t\t\t\t\t\t{{ supplier_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if supplier_address.address_line2 %}{{ supplier_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ supplier_address.city or \"\" }} {{ supplier_address.state or \"\" }} {{ supplier_address.pincode or \"\" }} {{ supplier_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
{{ _(\"Company Address\") }}:
\n {% if doc.billing_address %}\n {% set billing_address = frappe.db.get_value(\"Address\", doc.billing_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ billing_address.get(\"address_line1\") or \"\" }}
\n {% if billing_address.get(\"address_line2\") %}{{ billing_address.get(\"address_line2\") }}
{% endif %}\n {{ billing_address.get(\"city\") or \"\" }}, {{ billing_address.get(\"state\") or \"\" }} {{ billing_address.get(\"pincode\") or \"\" }}, {{ billing_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Supplier Name\") }}: {{doc.supplier_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Due Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.due_date) }}\n\t\t\t\t
{{ _(\"Invoice Number\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Invoice Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.posting_date) }}\n\t\t\t\t
{{ _(\"Supplier Address\") }}:
\n\t\t\t\t\t{% if doc.supplier_address %}\n\t\t\t\t\t\t{% set supplier_address = frappe.db.get_value(\"Address\", doc.supplier_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.supplier_name }}
\n\t\t\t\t\t\t{{ supplier_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if supplier_address.address_line2 %}{{ supplier_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ supplier_address.city or \"\" }} {{ supplier_address.state or \"\" }} {{ supplier_address.pincode or \"\" }} {{ supplier_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
{{ _(\"Company Address\") }}:
\n {% if doc.billing_address %}\n {% set billing_address = frappe.db.get_value(\"Address\", doc.billing_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ billing_address.get(\"address_line1\") or \"\" }}
\n {% if billing_address.get(\"address_line2\") %}{{ billing_address.get(\"address_line2\") }}
{% endif %}\n {{ billing_address.get(\"city\") or \"\" }}, {{ billing_address.get(\"state\") or \"\" }} {{ billing_address.get(\"pincode\") or \"\" }}, {{ billing_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t\t{% if print_settings.repeat_header_footer %}\n\t\t

\n\t\t\t{{ _(\"Page {0} of {1}\").format('', '') }}\n\t\t

\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-07-03 02:13:38.336447", + "modified": "2026-07-03 02:26:31.243291", "modified_by": "Administrator", "module": "Accounts", "name": "Purchase Invoice Standard", diff --git a/erpnext/accounts/print_format/purchase_invoice_with_item_image/purchase_invoice_with_item_image.json b/erpnext/accounts/print_format/purchase_invoice_with_item_image/purchase_invoice_with_item_image.json index f66e3b2989f..f3677f07639 100644 --- a/erpnext/accounts/print_format/purchase_invoice_with_item_image/purchase_invoice_with_item_image.json +++ b/erpnext/accounts/print_format/purchase_invoice_with_item_image/purchase_invoice_with_item_image.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Supplier Name:\") }}
\n\t\t\t\t\t\t
{{ _(\"Supplier Address:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.supplier_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.supplier_address %}\n \t\t\t\t\t\t{% set supplier_address = frappe.db.get_value(\"Address\", doc.supplier_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.supplier_name }}
\n \t\t\t\t\t\t{{ supplier_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if supplier_address.address_line2 %}{{ supplier_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ supplier_address.city or \"\" }} {{ supplier_address.state or \"\" }} {{ supplier_address.pincode or \"\" }} {{ supplier_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Purchase Invoice:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Posting Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.posting_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Due By:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.due_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Supplier Name:\") }}
\n\t\t\t\t\t\t
{{ _(\"Supplier Address:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.supplier_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.supplier_address %}\n \t\t\t\t\t\t{% set supplier_address = frappe.db.get_value(\"Address\", doc.supplier_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.supplier_name }}
\n \t\t\t\t\t\t{{ supplier_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if supplier_address.address_line2 %}{{ supplier_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ supplier_address.city or \"\" }} {{ supplier_address.state or \"\" }} {{ supplier_address.pincode or \"\" }} {{ supplier_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Purchase Invoice:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Posting Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.posting_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Due By:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.due_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t\t{% if print_settings.repeat_header_footer %}\n\t\t

\n\t\t\t{{ _(\"Page {0} of {1}\").format('', '') }}\n\t\t

\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-07-03 02:08:39.075598", + "modified": "2026-07-03 02:26:31.243291", "modified_by": "Administrator", "module": "Accounts", "name": "Purchase Invoice with Item Image", diff --git a/erpnext/accounts/print_format/sales_invoice_standard/sales_invoice_standard.json b/erpnext/accounts/print_format/sales_invoice_standard/sales_invoice_standard.json index 403d8c3cad9..83a26fc8ab5 100644 --- a/erpnext/accounts/print_format/sales_invoice_standard/sales_invoice_standard.json +++ b/erpnext/accounts/print_format/sales_invoice_standard/sales_invoice_standard.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Customer Name\") }}: {{doc.customer_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Payment Due Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.due_date) }}\n\t\t\t\t
{{ _(\"Invoice Number\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Invoice Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.posting_date) }}\n\t\t\t\t
{{ _(\"Bill From\") }}:
\n\t\t\t\t\t{% if doc.company_address %}\n {% set company_address = frappe.db.get_value(\"Address\", doc.company_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ company_address.get(\"address_line1\") or \"\" }}
\n {% if company_address.get(\"address_line2\") %}{{ company_address.get(\"address_line2\") }}
{% endif %}\n {{ company_address.get(\"city\") or \"\" }}, {{ company_address.get(\"state\") or \"\" }} {{ company_address.get(\"pincode\") or \"\" }}, {{ company_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
{{ _(\"Bill To\") }}:
\n\t\t\t\t {% if doc.customer_address %}\n\t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.customer_name }}
\n\t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Customer Name\") }}: {{doc.customer_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Payment Due Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.due_date) }}\n\t\t\t\t
{{ _(\"Invoice Number\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Invoice Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.posting_date) }}\n\t\t\t\t
{{ _(\"Bill From\") }}:
\n\t\t\t\t\t{% if doc.company_address %}\n {% set company_address = frappe.db.get_value(\"Address\", doc.company_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ company_address.get(\"address_line1\") or \"\" }}
\n {% if company_address.get(\"address_line2\") %}{{ company_address.get(\"address_line2\") }}
{% endif %}\n {{ company_address.get(\"city\") or \"\" }}, {{ company_address.get(\"state\") or \"\" }} {{ company_address.get(\"pincode\") or \"\" }}, {{ company_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
{{ _(\"Bill To\") }}:
\n\t\t\t\t {% if doc.customer_address %}\n\t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.customer_name }}
\n\t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t\t{% if print_settings.repeat_header_footer %}\n\t\t

\n\t\t\t{{ _(\"Page {0} of {1}\").format('', '') }}\n\t\t

\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-07-03 02:13:38.336447", + "modified": "2026-07-03 02:26:31.243291", "modified_by": "Administrator", "module": "Accounts", "name": "Sales Invoice Standard", diff --git a/erpnext/accounts/print_format/sales_invoice_with_item_image/sales_invoice_with_item_image.json b/erpnext/accounts/print_format/sales_invoice_with_item_image/sales_invoice_with_item_image.json index 01d9d6a4a16..5f19124c267 100644 --- a/erpnext/accounts/print_format/sales_invoice_with_item_image/sales_invoice_with_item_image.json +++ b/erpnext/accounts/print_format/sales_invoice_with_item_image/sales_invoice_with_item_image.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Customer Name:
\n\t\t\t\t\t\t
Bill to:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.customer_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.customer_address %}\n \t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n \t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Invoice Number:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Invoice Date:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.posting_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Payment Due Date:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.due_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Customer Name:
\n\t\t\t\t\t\t
Bill to:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.customer_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.customer_address %}\n \t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n \t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Invoice Number:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Invoice Date:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.posting_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Payment Due Date:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.due_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t\t{% if print_settings.repeat_header_footer %}\n\t\t

\n\t\t\t{{ _(\"Page {0} of {1}\").format('', '') }}\n\t\t

\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-07-03 02:08:39.075598", + "modified": "2026-07-03 02:26:31.243291", "modified_by": "Administrator", "module": "Accounts", "name": "Sales Invoice with Item Image", diff --git a/erpnext/buying/print_format/purchase_order_standard/purchase_order_standard.json b/erpnext/buying/print_format/purchase_order_standard/purchase_order_standard.json index 22a678c31a2..20e847440b4 100644 --- a/erpnext/buying/print_format/purchase_order_standard/purchase_order_standard.json +++ b/erpnext/buying/print_format/purchase_order_standard/purchase_order_standard.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Supplier Name\") }}: {{doc.supplier_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Required By\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.schedule_date) }}\n\t\t\t\t
{{ _(\"Order Number\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Order Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.transaction_date) }}\n\t\t\t\t
{{ _(\"Supplier Address\") }}:
\n\t\t\t\t\t{% if doc.supplier_address %}\n\t\t\t\t\t\t{% set supplier_address = frappe.db.get_value(\"Address\", doc.supplier_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.supplier_name }}
\n\t\t\t\t\t\t{{ supplier_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if supplier_address.address_line2 %}{{ supplier_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ supplier_address.city or \"\" }} {{ supplier_address.state or \"\" }} {{ supplier_address.pincode or \"\" }} {{ supplier_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
{{ _(\"Company Address\") }}:
\n {% if doc.billing_address %}\n {% set billing_address = frappe.db.get_value(\"Address\", doc.billing_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ billing_address.get(\"address_line1\") or \"\" }}
\n {% if billing_address.get(\"address_line2\") %}{{ billing_address.get(\"address_line2\") }}
{% endif %}\n {{ billing_address.get(\"city\") or \"\" }}, {{ billing_address.get(\"state\") or \"\" }} {{ billing_address.get(\"pincode\") or \"\" }}, {{ billing_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Supplier Name\") }}: {{doc.supplier_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Required By\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.schedule_date) }}\n\t\t\t\t
{{ _(\"Order Number\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Order Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.transaction_date) }}\n\t\t\t\t
{{ _(\"Supplier Address\") }}:
\n\t\t\t\t\t{% if doc.supplier_address %}\n\t\t\t\t\t\t{% set supplier_address = frappe.db.get_value(\"Address\", doc.supplier_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.supplier_name }}
\n\t\t\t\t\t\t{{ supplier_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if supplier_address.address_line2 %}{{ supplier_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ supplier_address.city or \"\" }} {{ supplier_address.state or \"\" }} {{ supplier_address.pincode or \"\" }} {{ supplier_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
{{ _(\"Company Address\") }}:
\n {% if doc.billing_address %}\n {% set billing_address = frappe.db.get_value(\"Address\", doc.billing_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ billing_address.get(\"address_line1\") or \"\" }}
\n {% if billing_address.get(\"address_line2\") %}{{ billing_address.get(\"address_line2\") }}
{% endif %}\n {{ billing_address.get(\"city\") or \"\" }}, {{ billing_address.get(\"state\") or \"\" }} {{ billing_address.get(\"pincode\") or \"\" }}, {{ billing_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t\t{% if print_settings.repeat_header_footer %}\n\t\t

\n\t\t\t{{ _(\"Page {0} of {1}\").format('', '') }}\n\t\t

\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-07-03 02:13:38.336447", + "modified": "2026-07-03 02:26:31.243291", "modified_by": "Administrator", "module": "Buying", "name": "Purchase Order Standard", diff --git a/erpnext/buying/print_format/purchase_order_with_item_image/purchase_order_with_item_image.json b/erpnext/buying/print_format/purchase_order_with_item_image/purchase_order_with_item_image.json index 02d7eb8cf1c..c8f9f43bb0b 100644 --- a/erpnext/buying/print_format/purchase_order_with_item_image/purchase_order_with_item_image.json +++ b/erpnext/buying/print_format/purchase_order_with_item_image/purchase_order_with_item_image.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Supplier Name:\") }}
\n\t\t\t\t\t\t
{{ _(\"Supplier Address:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.supplier_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.supplier_address %}\n \t\t\t\t\t\t{% set supplier_address = frappe.db.get_value(\"Address\", doc.supplier_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.supplier_name }}
\n \t\t\t\t\t\t{{ supplier_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if supplier_address.address_line2 %}{{ supplier_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ supplier_address.city or \"\" }} {{ supplier_address.state or \"\" }} {{ supplier_address.pincode or \"\" }} {{ supplier_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Purchase Order:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Order Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.transaction_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Required By:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.schedule_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Supplier Name:\") }}
\n\t\t\t\t\t\t
{{ _(\"Supplier Address:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.supplier_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.supplier_address %}\n \t\t\t\t\t\t{% set supplier_address = frappe.db.get_value(\"Address\", doc.supplier_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.supplier_name }}
\n \t\t\t\t\t\t{{ supplier_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if supplier_address.address_line2 %}{{ supplier_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ supplier_address.city or \"\" }} {{ supplier_address.state or \"\" }} {{ supplier_address.pincode or \"\" }} {{ supplier_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Purchase Order:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Order Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.transaction_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Required By:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.schedule_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t\t{% if print_settings.repeat_header_footer %}\n\t\t

\n\t\t\t{{ _(\"Page {0} of {1}\").format('', '') }}\n\t\t

\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-07-03 02:08:39.075598", + "modified": "2026-07-03 02:26:31.243291", "modified_by": "Administrator", "module": "Buying", "name": "Purchase Order with Item Image", diff --git a/erpnext/buying/print_format/request_for_quotation_with_item_image/request_for_quotation_with_item_image.json b/erpnext/buying/print_format/request_for_quotation_with_item_image/request_for_quotation_with_item_image.json index 460fda987f6..8ec8d02c73c 100644 --- a/erpnext/buying/print_format/request_for_quotation_with_item_image/request_for_quotation_with_item_image.json +++ b/erpnext/buying/print_format/request_for_quotation_with_item_image/request_for_quotation_with_item_image.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Supplier Name:\") }}
\n\t\t\t\t\t\t
{{ _(\"Shipping Address:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.vendor }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.shipping_address %}\n \t\t\t\t\t\t{% set shipping_address = frappe.db.get_value(\"Address\", doc.shipping_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.shipping_address }}
\n \t\t\t\t\t\t{{ shipping_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if shipping_address.address_line2 %}{{ shipping_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ shipping_address.city or \"\" }} {{ shipping_address.state or \"\" }} {{ shipping_address.pincode or \"\" }} {{ shipping_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Order Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.transaction_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Required By:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.schedule_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Supplier Name:\") }}
\n\t\t\t\t\t\t
{{ _(\"Shipping Address:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.vendor }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.shipping_address %}\n \t\t\t\t\t\t{% set shipping_address = frappe.db.get_value(\"Address\", doc.shipping_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.shipping_address }}
\n \t\t\t\t\t\t{{ shipping_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if shipping_address.address_line2 %}{{ shipping_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ shipping_address.city or \"\" }} {{ shipping_address.state or \"\" }} {{ shipping_address.pincode or \"\" }} {{ shipping_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Order Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.transaction_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Required By:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.schedule_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t\t{% if print_settings.repeat_header_footer %}\n\t\t

\n\t\t\t{{ _(\"Page {0} of {1}\").format('', '') }}\n\t\t

\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-07-03 02:08:39.075598", + "modified": "2026-07-03 02:26:31.243291", "modified_by": "Administrator", "module": "Buying", "name": "Request for Quotation with Item Image", diff --git a/erpnext/selling/print_format/quotation_standard/quotation_standard.json b/erpnext/selling/print_format/quotation_standard/quotation_standard.json index 8e7bd303cc5..9b23e3cce2b 100644 --- a/erpnext/selling/print_format/quotation_standard/quotation_standard.json +++ b/erpnext/selling/print_format/quotation_standard/quotation_standard.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "\n\n{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Party Name\") }}: {{doc.party_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Valid Till\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.valid_till) }}\n\t\t\t\t
{{ _(\"Quotation\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Posting Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.transaction_date) }}\n\t\t\t\t
{{ _(\"Bill From\") }}:
\n\t\t\t\t\t{% if doc.company_address %}\n {% set company_address = frappe.db.get_value(\"Address\", doc.company_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ company_address.get(\"address_line1\") or \"\" }}
\n {% if company_address.get(\"address_line2\") %}{{ company_address.get(\"address_line2\") }}
{% endif %}\n {{ company_address.get(\"city\") or \"\" }}, {{ company_address.get(\"state\") or \"\" }} {{ company_address.get(\"pincode\") or \"\" }}, {{ company_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
{{ _(\"Bill To\") }}:
\n\t\t\t\t {% if doc.customer_address %}\n\t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.customer_name }}
\n\t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t\t
\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", + "html": "\n\n{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Party Name\") }}: {{doc.party_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Valid Till\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.valid_till) }}\n\t\t\t\t
{{ _(\"Quotation\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Posting Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.transaction_date) }}\n\t\t\t\t
{{ _(\"Bill From\") }}:
\n\t\t\t\t\t{% if doc.company_address %}\n {% set company_address = frappe.db.get_value(\"Address\", doc.company_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ company_address.get(\"address_line1\") or \"\" }}
\n {% if company_address.get(\"address_line2\") %}{{ company_address.get(\"address_line2\") }}
{% endif %}\n {{ company_address.get(\"city\") or \"\" }}, {{ company_address.get(\"state\") or \"\" }} {{ company_address.get(\"pincode\") or \"\" }}, {{ company_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
{{ _(\"Bill To\") }}:
\n\t\t\t\t {% if doc.customer_address %}\n\t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.customer_name }}
\n\t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t\t
\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t\t{% if print_settings.repeat_header_footer %}\n\t\t

\n\t\t\t{{ _(\"Page {0} of {1}\").format('', '') }}\n\t\t

\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-07-03 02:13:38.336447", + "modified": "2026-07-03 02:26:31.243291", "modified_by": "Administrator", "module": "Selling", "name": "Quotation Standard", diff --git a/erpnext/selling/print_format/quotation_with_item_image/quotation_with_item_image.json b/erpnext/selling/print_format/quotation_with_item_image/quotation_with_item_image.json index 256ec5cefaf..ba1474a8173 100644 --- a/erpnext/selling/print_format/quotation_with_item_image/quotation_with_item_image.json +++ b/erpnext/selling/print_format/quotation_with_item_image/quotation_with_item_image.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Customer Name:
\n\t\t\t\t\t\t
Bill to:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.customer_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.customer_address %}\n \t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n \t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Quotation:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Posting Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.transaction_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Valid Till:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.valid_till) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Customer Name:
\n\t\t\t\t\t\t
Bill to:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.customer_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.customer_address %}\n \t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n \t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Quotation:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Posting Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.transaction_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Valid Till:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.valid_till) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t\t{% if print_settings.repeat_header_footer %}\n\t\t

\n\t\t\t{{ _(\"Page {0} of {1}\").format('', '') }}\n\t\t

\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-07-03 02:08:39.075598", + "modified": "2026-07-03 02:26:31.243291", "modified_by": "Administrator", "module": "Selling", "name": "Quotation with Item Image", diff --git a/erpnext/selling/print_format/sales_order_standard/sales_order_standard.json b/erpnext/selling/print_format/sales_order_standard/sales_order_standard.json index 5242383b5db..7298cef9505 100644 --- a/erpnext/selling/print_format/sales_order_standard/sales_order_standard.json +++ b/erpnext/selling/print_format/sales_order_standard/sales_order_standard.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "\n\n{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Customer Name\") }}: {{doc.customer_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Delievery Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.delivery_date) }}\n\t\t\t\t
{{ _(\"Sales Order\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Posting Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.transaction_date) }}\n\t\t\t\t
{{ _(\"Bill From\") }}:
\n\t\t\t\t\t{% if doc.company_address %}\n {% set company_address = frappe.db.get_value(\"Address\", doc.company_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ company_address.get(\"address_line1\") or \"\" }}
\n {% if company_address.get(\"address_line2\") %}{{ company_address.get(\"address_line2\") }}
{% endif %}\n {{ company_address.get(\"city\") or \"\" }}, {{ company_address.get(\"state\") or \"\" }} {{ company_address.get(\"pincode\") or \"\" }}, {{ company_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
{{ _(\"Bill To\") }}:
\n\t\t\t\t {% if doc.customer_address %}\n\t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.customer_name }}
\n\t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", + "html": "\n\n{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Customer Name\") }}: {{doc.customer_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Delievery Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.delivery_date) }}\n\t\t\t\t
{{ _(\"Sales Order\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Posting Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.transaction_date) }}\n\t\t\t\t
{{ _(\"Bill From\") }}:
\n\t\t\t\t\t{% if doc.company_address %}\n {% set company_address = frappe.db.get_value(\"Address\", doc.company_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ company_address.get(\"address_line1\") or \"\" }}
\n {% if company_address.get(\"address_line2\") %}{{ company_address.get(\"address_line2\") }}
{% endif %}\n {{ company_address.get(\"city\") or \"\" }}, {{ company_address.get(\"state\") or \"\" }} {{ company_address.get(\"pincode\") or \"\" }}, {{ company_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
{{ _(\"Bill To\") }}:
\n\t\t\t\t {% if doc.customer_address %}\n\t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.customer_name }}
\n\t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t\t{% if print_settings.repeat_header_footer %}\n\t\t

\n\t\t\t{{ _(\"Page {0} of {1}\").format('', '') }}\n\t\t

\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-07-03 02:13:38.336447", + "modified": "2026-07-03 02:26:31.243291", "modified_by": "Administrator", "module": "Selling", "name": "Sales Order Standard", diff --git a/erpnext/selling/print_format/sales_order_with_item_image/sales_order_with_item_image.json b/erpnext/selling/print_format/sales_order_with_item_image/sales_order_with_item_image.json index c4f73603055..47c89caccc0 100644 --- a/erpnext/selling/print_format/sales_order_with_item_image/sales_order_with_item_image.json +++ b/erpnext/selling/print_format/sales_order_with_item_image/sales_order_with_item_image.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Customer Name:
\n\t\t\t\t\t\t
Bill to:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.customer_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.customer_address %}\n \t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n \t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Sales Order:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Order Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.transaction_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Delivery Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.delivery_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
Customer Name:
\n\t\t\t\t\t\t
Bill to:
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.customer_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.customer_address %}\n \t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n \t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Sales Order:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Order Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.transaction_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Delivery Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.delivery_date) }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t\t{% if print_settings.repeat_header_footer %}\n\t\t

\n\t\t\t{{ _(\"Page {0} of {1}\").format('', '') }}\n\t\t

\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-07-03 02:08:39.075598", + "modified": "2026-07-03 02:26:31.243291", "modified_by": "Administrator", "module": "Selling", "name": "Sales Order with Item Image", diff --git a/erpnext/stock/print_format/delivery_note_standard/delivery_note_standard.json b/erpnext/stock/print_format/delivery_note_standard/delivery_note_standard.json index 39345cdaca7..9aeea1d16d9 100644 --- a/erpnext/stock/print_format/delivery_note_standard/delivery_note_standard.json +++ b/erpnext/stock/print_format/delivery_note_standard/delivery_note_standard.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Customer Name\") }}: {{doc.customer_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Status\") }}: {{ doc.status }}\n\t\t\t\t
{{ _(\"Delivery Note\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.posting_date) }}\n\t\t\t\t
{{ _(\"Company Address\") }}:
\n\t\t\t\t\t{% if doc.company_address %}\n {% set company_address = frappe.db.get_value(\"Address\", doc.company_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ company_address.get(\"address_line1\") or \"\" }}
\n {% if company_address.get(\"address_line2\") %}{{ company_address.get(\"address_line2\") }}
{% endif %}\n {{ company_address.get(\"city\") or \"\" }}, {{ company_address.get(\"state\") or \"\" }} {{ company_address.get(\"pincode\") or \"\" }}, {{ company_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
{{ _(\"Customer Address\") }}:
\n\t\t\t\t {% if doc.customer_address %}\n\t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.customer_name }}
\n\t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\t{% if letter_head and not no_letterhead %}\n\t\t
{{ letter_head }}
\n\t{% endif %}\n\t{% if print_heading_template %}\n\t\t{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n\t{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t{{ _(\"Customer Name\") }}: {{doc.customer_name }}\n\t\t\t\t\n\t\t\t\t\t{{ _(\"Status\") }}: {{ doc.status }}\n\t\t\t\t
{{ _(\"Delivery Note\") }}: {{ doc.name }}\n\t\t\t\t\t{{ _(\"Date\") }}: {{\n\t\t\t\t\tfrappe.utils.format_date(doc.posting_date) }}\n\t\t\t\t
{{ _(\"Company Address\") }}:
\n\t\t\t\t\t{% if doc.company_address %}\n {% set company_address = frappe.db.get_value(\"Address\", doc.company_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.company }}
\n {{ company_address.get(\"address_line1\") or \"\" }}
\n {% if company_address.get(\"address_line2\") %}{{ company_address.get(\"address_line2\") }}
{% endif %}\n {{ company_address.get(\"city\") or \"\" }}, {{ company_address.get(\"state\") or \"\" }} {{ company_address.get(\"pincode\") or \"\" }}, {{ company_address.get(\"country\") or \"\" }}
\n {% endif %}\n\t\t\t\t
{{ _(\"Customer Address\") }}:
\n\t\t\t\t {% if doc.customer_address %}\n\t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n {{ doc.customer_name }}
\n\t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n\t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n\t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n\t\t\t\t\t{% endif %}\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}{{ item.item_name }}{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}\n\t\t\t\t\t\t{{ item.get_formatted(\"net_amount\", doc) }}\n\t\t\t\t\t
\n\n\t\t\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t

{{ _(\"Total in words\") }}

\n\t\t\t\t
{{ doc.in_words }}
\n\t\t\t
\n\t\t\t\t \n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t{%- endfor -%}\n\t\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
{{ _(\"Sub Total:\") }}
{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):
{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t\t
{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t\t
{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ _(\"Grand Total:\") }}{{ doc.get_formatted(\"grand_total\", doc) }}
\n\t\t\t
\n\n\t\t\n\t\t
\n\t\t\t{% if doc.terms %}\n\t\t\t
\n\t\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t\t{{ doc.terms}}\n\t\t\t
\n\t\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t\t{% if print_settings.repeat_header_footer %}\n\t\t

\n\t\t\t{{ _(\"Page {0} of {1}\").format('', '') }}\n\t\t

\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-07-03 02:13:38.336447", + "modified": "2026-07-03 02:26:31.243291", "modified_by": "Administrator", "module": "Stock", "name": "Delivery Note Standard", diff --git a/erpnext/stock/print_format/delivery_note_with_item_image/delivery_note_with_item_image.json b/erpnext/stock/print_format/delivery_note_with_item_image/delivery_note_with_item_image.json index 85bad75c570..b3dc2dbb580 100644 --- a/erpnext/stock/print_format/delivery_note_with_item_image/delivery_note_with_item_image.json +++ b/erpnext/stock/print_format/delivery_note_with_item_image/delivery_note_with_item_image.json @@ -9,14 +9,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Customer Name:\") }}
\n\t\t\t\t\t\t
{{ _(\"Address:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.customer_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.customer_address %}\n \t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n \t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Delivery Note:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Delivery Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.posting_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Status:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.status }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", + "html": "{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, print_heading_template=None) -%}\n\n{% if letter_head and not no_letterhead %}\n
{{ letter_head }}
\n{% endif %}\n{% if print_heading_template %}\n{{ frappe.render_template(print_heading_template, {\"doc\":doc}) }}\n{% endif %}\n{%- endmacro -%}\n\n{% for page in layout %}\n
\n\t
\n\t\t{{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }}\n\t
\n\t{%- if doc.meta.is_submittable and doc.docstatus==2-%}\n\t\t
\n\t\t\t

{{ _(\"CANCELLED\") }}

\n\t\t
\n\t{%- endif -%}\n\t{%- if doc.meta.is_submittable and doc.docstatus==0 and (print_settings==None or print_settings.add_draft_heading) -%}\n\t\t
\n\t\t\t

{{ _(\"DRAFT\") }}

\n\t\t
\n\t{%- endif -%}\n\n\t\n\n\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Customer Name:\") }}
\n\t\t\t\t\t\t
{{ _(\"Address:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.customer_name }}
\n\t\t\t\t\t\t
\n \t\t\t\t\t{% if doc.customer_address %}\n \t\t\t\t\t\t{% set customer_address = frappe.db.get_value(\"Address\", doc.customer_address, [\"address_line1\", \"address_line2\", \"city\", \"state\", \"pincode\", \"country\"], as_dict=True) %}\n \t\t\t\t\t\t{{ customer_address.address_line1 or \"\" }}
\n \t\t\t\t\t\t{% if customer_address.address_line2 %}{{ customer_address.address_line2 }}
{% endif %}\n \t\t\t\t\t\t{{ customer_address.city or \"\" }} {{ customer_address.state or \"\" }} {{ customer_address.pincode or \"\" }} {{ customer_address.country or \"\" }}
\n \t\t\t\t\t{% endif %}\n\t\t\t\t\t\t
\n\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Delivery Note:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.name }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Delivery Date:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ frappe.utils.format_date(doc.posting_date) }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ _(\"Status:\") }}
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
{{ doc.status }}
\n\t\t\t\t\t
\n\t\t\t\t
\n\n\t\t\n\t\t{% set item_naming_by = frappe.db.get_single_value(\"Stock Settings\", \"item_naming_by\") %}\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{% for item in doc.items %}\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{% if item_naming_by != \"Item Code\" %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% endif %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{% endfor %}\n\t\t\t\n\t\t
{{ _(\"No\") }}{{ _(\"Item\") }}{{ _(\"Item Code\") }}{{ _(\"Quantity\") }}{{ _(\"Rate\") }}{{ _(\"Amount\") }}
{{ loop.index }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if item.image %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% endif %}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{{ item.item_name }}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t
{{ item.item_code }}{{ item.get_formatted(\"qty\", 0) }} {{ item.uom }}{{ item.get_formatted(\"net_rate\", doc) }}{{ item.get_formatted(\"net_amount\", doc) }}
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{%- if doc.apply_discount_on == \"Net Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t\t{%- for tax in doc.taxes -%}\n\t\t\t\t\t{%- if (tax.tax_amount or print_settings.print_taxes_with_zero_amount) and (not tax.included_in_print_rate or doc.flags.show_inclusive_tax_in_print) -%}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t{%- endif -%}\n\t\t\t\t{%- endfor -%}\n\t\t\t\t{%- if doc.apply_discount_on == \"Grand Total\" -%}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{%- endif -%}\n\t\t\t
{{ _(\"Sub Total:\") }}{{ doc.get_formatted(\"total\", doc) }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
{{ tax.get_formatted(\"description\") }} ({{ tax.get_formatted(\"rate\") }}%):{{ tax.get_formatted(\"tax_amount\") }}
\n\t\t\t\t\t\t\t{{ _(\"Discount\") }} ({{ doc.additional_discount_percentage }}%):\n\t\t\t\t\t\t{{ doc.get_formatted(\"discount_amount\", doc) }}
\n\t\t
\n\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t {{ _(\"In Words: \") }}{{ doc.in_words }}\n\t\t\t\t\t\t
\n\t\t\t\t\t
{{ _(\"Grand Total:\") }}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{{ doc.get_formatted(\"grand_total\", doc) }}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t
\n\n\n\t\t\n\t\t{% if doc.terms %}\n\t\t
\n\t\t\t
{{ _(\"Terms and Conditions\") }}
\n\t\t\t{{ doc.terms}}\n\t\t
\n\t\t{% endif %}\n\t
\n\t
\n\t\t{% if not no_letterhead and footer %}\n\t\t
\n\t\t\t{{ footer }}\n\t\t
\n\t\t{% endif %}\n\t\t{% if print_settings.repeat_header_footer %}\n\t\t

\n\t\t\t{{ _(\"Page {0} of {1}\").format('', '') }}\n\t\t

\n\t\t{% endif %}\n\t
\n
\n{% endfor %}", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-07-03 02:08:39.075598", + "modified": "2026-07-03 02:26:31.243291", "modified_by": "Administrator", "module": "Stock", "name": "Delivery Note with Item Image", From 8c56a5ac0c0807575d8723c0e70a36ca4cb2a5aa Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 3 Jul 2026 10:35:43 +0530 Subject: [PATCH 24/91] fix: don't attempt to create SABB for non-serialized / non-batch items (backport #56627) (#56803) * fix: don't attempt to create SABB for non-serialized / non-batch items (#56627) * fix: don't attempt to create SABB for non-serialized / non-batch items * fix(stock): skip serial batch lookup for rows without item code (cherry picked from commit 5b738b7b0d21289569c92f0f3a85c7a57f3a2981) # Conflicts: # erpnext/stock/services/serial_batch_bundle_service.py * chore: resolve conflicts --------- Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com> --- erpnext/controllers/stock_controller.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/erpnext/controllers/stock_controller.py b/erpnext/controllers/stock_controller.py index 331be31d280..b81e63ad6e9 100644 --- a/erpnext/controllers/stock_controller.py +++ b/erpnext/controllers/stock_controller.py @@ -387,6 +387,10 @@ class StockController(AccountsController): parent_details = self.get_parent_details_for_packed_items() for row in self.get(table_name): + item_code = row.get("rm_item_code") or row.get("item_code") + if not item_code or not self.is_serial_batch_item(item_code): + continue + if ( not via_landed_cost_voucher and row.serial_and_batch_bundle From 17598e262655dd95b77909a441bd9b7b168b8af0 Mon Sep 17 00:00:00 2001 From: pandiyan Date: Fri, 3 Jul 2026 11:06:29 +0530 Subject: [PATCH 25/91] fix: skip stock reservation for opted-out production plans (backport of #56798) Co-Authored-By: pandiyan --- .../purchase_receipt/purchase_receipt.py | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py index 7994770eaa5..90d4dfab63c 100644 --- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py @@ -1034,6 +1034,13 @@ class PurchaseReceipt(BuyingController): return production_plan_references = self.get_production_plan_references() + if not production_plan_references: + return + + reservable_plans = self.get_reservable_production_plans(production_plan_references) + if not reservable_plans: + return + production_plan_items = [] self.reload() @@ -1041,6 +1048,9 @@ class PurchaseReceipt(BuyingController): for row in self.items: if row.material_request_item and row.material_request_item in production_plan_references: _ref = production_plan_references[row.material_request_item] + if _ref.production_plan not in reservable_plans: + continue + docnames.append(_ref.production_plan) row.update( { @@ -1066,6 +1076,25 @@ class PurchaseReceipt(BuyingController): docnames, from_doctype="Production Plan", to_doctype="Work Order" ) + def get_reservable_production_plans(self, production_plan_references) -> set: + """Production Plans that opted into stock reservation (``reserve_stock``). + + A Production Plan only gets this flag set if "Auto Reserve Stock" was enabled in + Stock Settings when it was created, or the user ticked "Reserve Stock" manually. + Without this check, a Purchase Receipt would auto-reserve stock for every + Production Plan whenever "Enable Stock Reservation" is on, ignoring both of those. + """ + plan_names = {ref.production_plan for ref in production_plan_references.values()} + return { + p.name + for p in frappe.get_all( + "Production Plan", + filters={"name": ["in", list(plan_names)]}, + fields=["name", "reserve_stock"], + ) + if p.reserve_stock + } + def get_production_plan_references(self): production_plan_references = frappe._dict() material_request_items = [] From 91a319c9e3ccec10bc42f379f72c37ff838397bb Mon Sep 17 00:00:00 2001 From: pandiyan Date: Fri, 3 Jul 2026 11:06:39 +0530 Subject: [PATCH 26/91] test: cover reserve stock gating on purchase receipt submit (backport of #56798) Co-Authored-By: pandiyan --- .../production_plan/test_production_plan.py | 139 ++++++++++++++++++ 1 file changed, 139 insertions(+) diff --git a/erpnext/manufacturing/doctype/production_plan/test_production_plan.py b/erpnext/manufacturing/doctype/production_plan/test_production_plan.py index 9ab329b8f19..448ab26817e 100644 --- a/erpnext/manufacturing/doctype/production_plan/test_production_plan.py +++ b/erpnext/manufacturing/doctype/production_plan/test_production_plan.py @@ -2322,6 +2322,145 @@ class TestProductionPlan(ERPNextTestSuite): self.assertTrue(len(reserved_entries) == 0) frappe.db.set_single_value("Stock Settings", "enable_stock_reservation", 0) + def test_no_stock_reservation_via_purchase_receipt_when_reserve_stock_disabled(self): + from erpnext.buying.doctype.purchase_order.purchase_order import make_purchase_receipt + from erpnext.manufacturing.doctype.bom.test_bom import create_nested_bom + from erpnext.stock.doctype.material_request.material_request import make_purchase_order + + frappe.db.set_single_value("Stock Settings", "enable_stock_reservation", 1) + frappe.db.set_single_value("Stock Settings", "auto_reserve_stock", 0) + + bom_tree = {"FG For SR No Auto Reserve": {"RM For SR No Auto Reserve": {}}} + parent_bom = create_nested_bom(bom_tree, prefix="") + + warehouse = "_Test Warehouse - _TC" + + # reserve_stock is deliberately left unset (defaults to 0): this is what happens when + # "Auto Reserve Stock" is off and nobody ticks "Reserve Stock" on the Production Plan by hand. + plan = create_production_plan( + item_code=parent_bom.item, + planned_qty=5, + ignore_existing_ordered_qty=1, + do_not_submit=1, + warehouse=warehouse, + for_warehouse=warehouse, + ) + plan.get_sub_assembly_items() + plan.set("mr_items", []) + for d in get_items_for_material_requests(plan.as_dict()): + plan.append("mr_items", d) + plan.save() + + self.assertEqual(plan.reserve_stock, 0) + plan.submit() + + plan.submit_material_request = 1 + plan.make_material_request() + + material_requests = frappe.get_all( + "Material Request", filters={"production_plan": plan.name}, pluck="name" + ) + self.assertGreater(len(material_requests), 0) + + for mr_name in list(set(material_requests)): + po = make_purchase_order(mr_name) + po.supplier = "_Test Supplier" + po.submit() + + pr = make_purchase_receipt(po.name) + pr.submit() + + sre = StockReservation(plan) + reserved_entries = sre.get_reserved_entries("Production Plan", plan.name) + self.assertEqual(len(reserved_entries), 0) + + frappe.db.set_single_value("Stock Settings", "enable_stock_reservation", 0) + + def test_stock_reservation_ignores_production_plans_with_reserve_stock_off_on_shared_purchase_order(self): + from erpnext.buying.doctype.purchase_order.purchase_order import make_purchase_receipt + from erpnext.manufacturing.doctype.bom.test_bom import create_nested_bom + + frappe.db.set_single_value("Stock Settings", "enable_stock_reservation", 1) + frappe.db.set_single_value("Stock Settings", "auto_reserve_stock", 0) + + warehouse = "_Test Warehouse - _TC" + + bom_reserve = create_nested_bom({"FG SR Mixed Reserve": {"RM SR Mixed Reserve": {}}}, prefix="") + bom_skip = create_nested_bom({"FG SR Mixed Skip": {"RM SR Mixed Skip": {}}}, prefix="") + + def make_submitted_plan(item_code, reserve_stock): + plan = create_production_plan( + item_code=item_code, + planned_qty=5, + ignore_existing_ordered_qty=1, + do_not_submit=1, + warehouse=warehouse, + for_warehouse=warehouse, + reserve_stock=reserve_stock, + ) + plan.get_sub_assembly_items() + plan.set("mr_items", []) + for d in get_items_for_material_requests(plan.as_dict()): + plan.append("mr_items", d) + plan.save() + plan.submit() + plan.submit_material_request = 1 + plan.make_material_request() + return plan + + plan_reserve = make_submitted_plan(bom_reserve.item, reserve_stock=1) + plan_skip = make_submitted_plan(bom_skip.item, reserve_stock=0) + + self.assertEqual(plan_reserve.reserve_stock, 1) + self.assertEqual(plan_skip.reserve_stock, 0) + + mr_reserve = frappe.get_all( + "Material Request", filters={"production_plan": plan_reserve.name}, pluck="name" + )[0] + mr_skip = frappe.get_all( + "Material Request", filters={"production_plan": plan_skip.name}, pluck="name" + )[0] + + # One Purchase Order pulling rows from both Material Requests, so the Purchase Receipt made + # from it has both a reservable and a non-reservable Production Plan reference in `doc.items`. + po = frappe.new_doc("Purchase Order") + po.supplier = "_Test Supplier" + po.company = plan_reserve.company + po.schedule_date = nowdate() + + for mr_name in (mr_reserve, mr_skip): + mr = frappe.get_doc("Material Request", mr_name) + for item in mr.items: + po.append( + "items", + { + "item_code": item.item_code, + "qty": item.qty, + "rate": 100, + "schedule_date": nowdate(), + "warehouse": warehouse, + "material_request": mr.name, + "material_request_item": item.name, + }, + ) + + po.submit() + + pr = make_purchase_receipt(po.name) + pr.submit() + + reserved_for_plan_reserve = StockReservation(plan_reserve).get_reserved_entries( + "Production Plan", plan_reserve.name + ) + reserved_for_plan_skip = StockReservation(plan_skip).get_reserved_entries( + "Production Plan", plan_skip.name + ) + + self.assertGreater(len(reserved_for_plan_reserve), 0) + self.assertEqual(len(reserved_for_plan_skip), 0) + + frappe.db.set_single_value("Stock Settings", "enable_stock_reservation", 0) + def test_stock_reservation_of_serial_nos_against_production_plan(self): from erpnext.buying.doctype.purchase_order.purchase_order import make_purchase_receipt from erpnext.manufacturing.doctype.bom.test_bom import create_nested_bom From 3571512101a5b42d7e11eb7fdc144a922b0ad66e Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Fri, 3 Jul 2026 11:29:44 +0530 Subject: [PATCH 27/91] fix: FIFO queue checks and incorrect entries filter in stock ledger reports - 'Show Incorrect Entries' always returned an empty result (regression from #43619); now returns entries from one row before the first incorrect one - FIFO queue columns were computed for serialized/batched SLEs that don't maintain a stock queue, showing false differences; left empty for such rows - compare value/valuation differences at currency precision, qty at float precision (cherry picked from commit 94ab09e4a3c6af85e086c6393518a432f11a86c7) # Conflicts: # erpnext/stock/report/stock_ledger_invariant_check/test_stock_ledger_invariant_check.py --- .../stock_ledger_invariant_check.py | 90 ++++++++++--------- .../test_stock_ledger_invariant_check.py | 76 ++++++++++++++++ .../stock_ledger_variance.py | 32 ++++--- 3 files changed, 147 insertions(+), 51 deletions(-) create mode 100644 erpnext/stock/report/stock_ledger_invariant_check/test_stock_ledger_invariant_check.py diff --git a/erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py b/erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py index 954acf998d8..421529c90e6 100644 --- a/erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py +++ b/erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py @@ -20,6 +20,7 @@ SLE_FIELDS = ( "outgoing_rate", "stock_queue", "batch_no", + "serial_no", "stock_value", "stock_value_difference", "valuation_rate", @@ -52,16 +53,16 @@ def add_invariant_check_fields(sles, filters): balance_qty = 0.0 balance_stock_value = 0.0 - incorrect_idx = 0 - precision = frappe.get_precision("Stock Ledger Entry", "actual_qty") + incorrect_idx = None + float_precision = cint(frappe.db.get_single_value("System Settings", "float_precision")) or 3 + currency_precision = ( + cint(frappe.db.get_single_value("System Settings", "currency_precision")) or float_precision + ) for idx, sle in enumerate(sles): - queue = json.loads(sle.stock_queue) if sle.stock_queue else [] - - fifo_qty = 0.0 - fifo_value = 0.0 - for qty, rate in queue: - fifo_qty += qty - fifo_value += qty * rate + if sle.batch_no: + sle.use_batchwise_valuation = frappe.db.get_value( + "Batch", sle.batch_no, "use_batchwise_valuation", cache=True + ) if sle.actual_qty < 0: sle.consumption_rate = sle.stock_value_difference / sle.actual_qty @@ -77,57 +78,66 @@ def add_invariant_check_fields(sles, filters): if balance_qty is None: balance_qty = sle.qty_after_transaction - sle.fifo_queue_qty = fifo_qty - sle.fifo_stock_value = fifo_value - sle.fifo_valuation_rate = fifo_value / fifo_qty if fifo_qty else None sle.balance_value_by_qty = ( sle.stock_value / sle.qty_after_transaction if sle.qty_after_transaction else None ) sle.expected_qty_after_transaction = balance_qty sle.stock_value_from_diff = balance_stock_value - # set difference fields sle.difference_in_qty = sle.qty_after_transaction - sle.expected_qty_after_transaction - sle.fifo_qty_diff = sle.qty_after_transaction - fifo_qty - sle.fifo_value_diff = sle.stock_value - fifo_value - sle.fifo_valuation_diff = ( - sle.valuation_rate - sle.fifo_valuation_rate if sle.fifo_valuation_rate else None - ) sle.valuation_diff = ( sle.valuation_rate - sle.balance_value_by_qty if sle.balance_value_by_qty else None ) sle.diff_value_diff = sle.stock_value_from_diff - sle.stock_value - if not incorrect_idx and filters.get("show_incorrect_entries"): - if is_sle_has_correct_data(sle, precision): - continue - else: - incorrect_idx = idx + if maintains_fifo_queue(sle): + add_fifo_fields(sle, sles[idx - 1] if idx else None) - if idx > 0: - sle.fifo_stock_diff = sle.fifo_stock_value - sles[idx - 1].fifo_stock_value - sle.fifo_difference_diff = sle.fifo_stock_diff - sle.stock_value_difference - - if sle.batch_no: - sle.use_batchwise_valuation = frappe.db.get_value( - "Batch", sle.batch_no, "use_batchwise_valuation", cache=True - ) + if incorrect_idx is None and not is_sle_has_correct_data(sle, float_precision, currency_precision): + incorrect_idx = idx if filters.get("show_incorrect_entries"): - if incorrect_idx > 0: - sles = sles[cint(incorrect_idx) - 1 :] - - return [] + if incorrect_idx is None: + return [] + return sles[max(incorrect_idx - 1, 0) :] return sles -def is_sle_has_correct_data(sle, precision): - if flt(sle.difference_in_qty, precision) != 0.0 or flt(sle.diff_value_diff, precision) != 0: - print(flt(sle.difference_in_qty, precision), flt(sle.diff_value_diff, precision)) - return False +def maintains_fifo_queue(sle): + # no queue is maintained for serialized/batchwise-valued stock + return not ( + sle.serial_and_batch_bundle or sle.serial_no or (sle.batch_no and sle.use_batchwise_valuation) + ) - return True + +def add_fifo_fields(sle, prev_sle): + queue = json.loads(sle.stock_queue) if sle.stock_queue else [] + + fifo_qty = 0.0 + fifo_value = 0.0 + for qty, rate in queue: + fifo_qty += qty + fifo_value += qty * rate + + sle.fifo_queue_qty = fifo_qty + sle.fifo_stock_value = fifo_value + sle.fifo_valuation_rate = fifo_value / fifo_qty if fifo_qty else None + sle.fifo_qty_diff = sle.qty_after_transaction - fifo_qty + sle.fifo_value_diff = sle.stock_value - fifo_value + sle.fifo_valuation_diff = ( + sle.valuation_rate - sle.fifo_valuation_rate if sle.fifo_valuation_rate else None + ) + if prev_sle and prev_sle.fifo_stock_value is not None: + sle.fifo_stock_diff = sle.fifo_stock_value - prev_sle.fifo_stock_value + sle.fifo_difference_diff = sle.fifo_stock_diff - sle.stock_value_difference + + +def is_sle_has_correct_data(sle, float_precision, currency_precision): + return ( + flt(sle.difference_in_qty, float_precision) == 0.0 + and flt(sle.diff_value_diff, currency_precision) == 0.0 + ) def get_columns(): diff --git a/erpnext/stock/report/stock_ledger_invariant_check/test_stock_ledger_invariant_check.py b/erpnext/stock/report/stock_ledger_invariant_check/test_stock_ledger_invariant_check.py new file mode 100644 index 00000000000..0f71a8834b2 --- /dev/null +++ b/erpnext/stock/report/stock_ledger_invariant_check/test_stock_ledger_invariant_check.py @@ -0,0 +1,76 @@ +# Copyright (c) 2026, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt + +import frappe + +from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry +from erpnext.stock.report.stock_ledger_invariant_check.stock_ledger_invariant_check import execute +from erpnext.tests.utils import ERPNextTestSuite + +WAREHOUSE = "Stores - _TC" +COMPANY = "_Test Company" +ITEM = "_Test Item" + + +class TestStockLedgerInvariantCheck(ERPNextTestSuite): + def run_report(self, **extra): + filters = frappe._dict({"company": COMPANY, "warehouse": WAREHOUSE}) + filters.update(extra) + return execute(filters)[1] + + def make_movements(self) -> str: + frappe.db.set_value("Item", ITEM, "valuation_method", "FIFO") + make_stock_entry(item_code=ITEM, to_warehouse=WAREHOUSE, qty=10, rate=100, posting_date="2026-06-01") + make_stock_entry(item_code=ITEM, to_warehouse=WAREHOUSE, qty=5, rate=120, posting_date="2026-06-02") + make_stock_entry(item_code=ITEM, from_warehouse=WAREHOUSE, qty=4, rate=0, posting_date="2026-06-03") + return ITEM + + def test_diagnostic_rows_have_no_discrepancy(self): + item = self.make_movements() + + data = self.run_report(item_code=item) + + self.assertEqual(len(data), 3) + for row in data: + self.assertLess(abs(row.difference_in_qty), 0.01) + self.assertLess(abs(row.fifo_qty_diff), 0.01) + self.assertLess(abs(row.diff_value_diff), 0.01) + + def test_running_balance_matches(self): + item = self.make_movements() + + data = self.run_report(item_code=item) + + self.assertEqual(data[-1].qty_after_transaction, 11) + + def test_show_incorrect_entries(self): + item = self.make_movements() + + self.assertEqual(self.run_report(item_code=item, show_incorrect_entries=1), []) + + sle = frappe.get_last_doc( + "Stock Ledger Entry", {"item_code": item, "warehouse": WAREHOUSE, "is_cancelled": 0} + ) + frappe.db.set_value( + "Stock Ledger Entry", sle.name, "qty_after_transaction", sle.qty_after_transaction + 5 + ) + + data = self.run_report(item_code=item, show_incorrect_entries=1) + self.assertEqual(len(data), 2) # incorrect entry + one before it for context + self.assertEqual(data[-1].name, sle.name) + + def test_batch_item_skips_fifo_queue_checks(self): + from erpnext.stock.doctype.item.test_item import make_item + + item = make_item( + properties={"has_batch_no": 1, "create_new_batch": 1, "batch_number_series": "SLIC-BAT-.####"} + ).name + make_stock_entry(item_code=item, to_warehouse=WAREHOUSE, qty=10, rate=100) + + data = self.run_report(item_code=item) + self.assertTrue(data) + for row in data: + self.assertIsNone(row.fifo_qty_diff) + self.assertIsNone(row.fifo_value_diff) + + self.assertEqual(self.run_report(item_code=item, show_incorrect_entries=1), []) diff --git a/erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py b/erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py index e0d39c5dc7a..c44c74d9aba 100644 --- a/erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py +++ b/erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py @@ -205,7 +205,10 @@ def get_data(filters=None): data = [] if item_warehouse_map: - precision = cint(frappe.db.get_single_value("System Settings", "float_precision")) + float_precision = cint(frappe.db.get_single_value("System Settings", "float_precision")) or 3 + currency_precision = ( + cint(frappe.db.get_single_value("System Settings", "currency_precision")) or float_precision + ) for item_warehouse in item_warehouse_map: report_data = stock_ledger_invariant_check(item_warehouse) @@ -215,7 +218,11 @@ def get_data(filters=None): for row in report_data: if has_difference( - row, precision, filters.difference_in, item_warehouse.valuation_method or valuation_method + row, + float_precision, + currency_precision, + filters.difference_in, + item_warehouse.valuation_method or valuation_method, ): row.update( { @@ -261,23 +268,26 @@ def get_item_warehouse_combinations(filters: dict | None = None) -> dict: return query.run(as_dict=1) -def has_difference(row, precision, difference_in, valuation_method): +def has_difference(row, float_precision, currency_precision, difference_in, valuation_method): if valuation_method == "Moving Average": - qty_diff = flt(row.difference_in_qty, precision) - value_diff = flt(row.diff_value_diff, precision) - valuation_diff = flt(row.valuation_diff, precision) + qty_diff = flt(row.difference_in_qty, float_precision) + value_diff = flt(row.diff_value_diff, currency_precision) + valuation_diff = flt(row.valuation_diff, currency_precision) else: - qty_diff = flt(row.difference_in_qty, precision) - value_diff = flt(row.diff_value_diff, precision) + qty_diff = flt(row.difference_in_qty, float_precision) + value_diff = flt(row.diff_value_diff, currency_precision) if row.stock_queue and json.loads(row.stock_queue): value_diff = value_diff or ( - flt(row.fifo_value_diff, precision) or flt(row.fifo_difference_diff, precision) + flt(row.fifo_value_diff, currency_precision) + or flt(row.fifo_difference_diff, currency_precision) ) - qty_diff = qty_diff or flt(row.fifo_qty_diff, precision) + qty_diff = qty_diff or flt(row.fifo_qty_diff, float_precision) - valuation_diff = flt(row.valuation_diff, precision) or flt(row.fifo_valuation_diff, precision) + valuation_diff = flt(row.valuation_diff, currency_precision) or flt( + row.fifo_valuation_diff, currency_precision + ) if difference_in == "Qty" and qty_diff: return True From 056195ce07cfbdc4a133105688e0e20bc7898fca Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Fri, 3 Jul 2026 11:39:51 +0530 Subject: [PATCH 28/91] fix: address review comments - restore mutated SLE after test via addCleanup - explicit return False in has_difference - comment the fifo_stock_diff guard for non-queue predecessors (cherry picked from commit ef5f47fafdc7e81122f0e335be7d2faff8a730a9) --- .../stock_ledger_invariant_check.py | 1 + .../test_stock_ledger_invariant_check.py | 7 +++++++ .../report/stock_ledger_variance/stock_ledger_variance.py | 2 ++ 3 files changed, 10 insertions(+) diff --git a/erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py b/erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py index 421529c90e6..aef9fec6414 100644 --- a/erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py +++ b/erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py @@ -128,6 +128,7 @@ def add_fifo_fields(sle, prev_sle): sle.fifo_valuation_diff = ( sle.valuation_rate - sle.fifo_valuation_rate if sle.fifo_valuation_rate else None ) + # prev row may not maintain a queue; H and H - F stay blank across the gap if prev_sle and prev_sle.fifo_stock_value is not None: sle.fifo_stock_diff = sle.fifo_stock_value - prev_sle.fifo_stock_value sle.fifo_difference_diff = sle.fifo_stock_diff - sle.stock_value_difference diff --git a/erpnext/stock/report/stock_ledger_invariant_check/test_stock_ledger_invariant_check.py b/erpnext/stock/report/stock_ledger_invariant_check/test_stock_ledger_invariant_check.py index 0f71a8834b2..49504b31207 100644 --- a/erpnext/stock/report/stock_ledger_invariant_check/test_stock_ledger_invariant_check.py +++ b/erpnext/stock/report/stock_ledger_invariant_check/test_stock_ledger_invariant_check.py @@ -51,6 +51,13 @@ class TestStockLedgerInvariantCheck(ERPNextTestSuite): sle = frappe.get_last_doc( "Stock Ledger Entry", {"item_code": item, "warehouse": WAREHOUSE, "is_cancelled": 0} ) + self.addCleanup( + frappe.db.set_value, + "Stock Ledger Entry", + sle.name, + "qty_after_transaction", + sle.qty_after_transaction, + ) frappe.db.set_value( "Stock Ledger Entry", sle.name, "qty_after_transaction", sle.qty_after_transaction + 5 ) diff --git a/erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py b/erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py index c44c74d9aba..e72ab8cee4a 100644 --- a/erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py +++ b/erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py @@ -297,3 +297,5 @@ def has_difference(row, float_precision, currency_precision, difference_in, valu return True elif difference_in not in ["Qty", "Value", "Valuation"] and (qty_diff or value_diff or valuation_diff): return True + + return False From feb58caf1e787c77c1a515493f169f22ff587f45 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Fri, 3 Jul 2026 12:12:46 +0530 Subject: [PATCH 29/91] test: drop redundant cleanup, db rolls back after each test (cherry picked from commit 3b1e57966e14160ab620d3b60d99ad25e95db5b9) --- .../test_stock_ledger_invariant_check.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/erpnext/stock/report/stock_ledger_invariant_check/test_stock_ledger_invariant_check.py b/erpnext/stock/report/stock_ledger_invariant_check/test_stock_ledger_invariant_check.py index 49504b31207..0f71a8834b2 100644 --- a/erpnext/stock/report/stock_ledger_invariant_check/test_stock_ledger_invariant_check.py +++ b/erpnext/stock/report/stock_ledger_invariant_check/test_stock_ledger_invariant_check.py @@ -51,13 +51,6 @@ class TestStockLedgerInvariantCheck(ERPNextTestSuite): sle = frappe.get_last_doc( "Stock Ledger Entry", {"item_code": item, "warehouse": WAREHOUSE, "is_cancelled": 0} ) - self.addCleanup( - frappe.db.set_value, - "Stock Ledger Entry", - sle.name, - "qty_after_transaction", - sle.qty_after_transaction, - ) frappe.db.set_value( "Stock Ledger Entry", sle.name, "qty_after_transaction", sle.qty_after_transaction + 5 ) From a1fe6cee5d8b54464a8d5c1f42937522dc4675df Mon Sep 17 00:00:00 2001 From: pandiyan Date: Fri, 3 Jul 2026 12:29:25 +0530 Subject: [PATCH 30/91] fix: remove company default on cost center in stock entry detail the ":company" default pre-filled every row before set_default_cost_center() ran, so its "if not row.cost_center" guard was always false and the project/item group/brand priority chain in get_default_cost_center() never ran. (cherry picked from commit edfa0a7a1d599a9f20406b3b114f8c666148e4f0) # Conflicts: # erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json --- .../stock/doctype/stock_entry_detail/stock_entry_detail.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json b/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json index b41a7038b78..6af0a387f5c 100644 --- a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json +++ b/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json @@ -345,7 +345,6 @@ "print_hide": 1 }, { - "default": ":Company", "depends_on": "eval:cint(erpnext.is_perpetual_inventory_enabled(parent.company))", "fieldname": "cost_center", "fieldtype": "Link", @@ -679,7 +678,11 @@ "index_web_pages_for_search": 1, "istable": 1, "links": [], +<<<<<<< HEAD "modified": "2026-06-30 12:18:34.132425", +======= + "modified": "2026-07-03 12:11:53.714931", +>>>>>>> edfa0a7a1d (fix: remove company default on cost center in stock entry detail) "modified_by": "Administrator", "module": "Stock", "name": "Stock Entry Detail", From 149af49d011abf758f1a301a4d4a13e6da1d04c0 Mon Sep 17 00:00:00 2001 From: pandiyan Date: Fri, 3 Jul 2026 13:12:35 +0530 Subject: [PATCH 31/91] test: cover cost center fallback to item group default in manufacture entry the existing test_cost_center_for_manufacture only checks a raw material row against an item-level override, which is set independently of the ":company" default guard and never exercised the bug. (cherry picked from commit a168bb7ea49f669597aadcf898c35e1fd0cb2dbd) --- .../doctype/work_order/test_work_order.py | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/erpnext/manufacturing/doctype/work_order/test_work_order.py b/erpnext/manufacturing/doctype/work_order/test_work_order.py index 7233a1aea34..57d44084fd0 100644 --- a/erpnext/manufacturing/doctype/work_order/test_work_order.py +++ b/erpnext/manufacturing/doctype/work_order/test_work_order.py @@ -686,6 +686,28 @@ class TestWorkOrder(ERPNextTestSuite): ste = make_stock_entry(wo_order.name, "Material Transfer for Manufacture", wo_order.qty) self.assertEqual(ste.get("items")[0].get("cost_center"), "_Test Cost Center - _TC") + @ERPNextTestSuite.change_settings("Manufacturing Settings", {"make_serial_no_batch_from_work_order": 0}) + def test_cost_center_for_manufacture_falls_back_to_item_group_default(self): + # "_Test Item Group" is master data with buying_cost_center already set to + # "_Test Cost Center 2 - _TC" for "_Test Company"; only the FG item and its + # BOM need to be created, since no existing item in that group has one. + fg_item = make_item( + "_Test FG Item For Item Group Cost Center", + {"is_stock_item": 1, "item_group": "_Test Item Group", "include_item_in_manufacturing": 1}, + ) + + if not frappe.db.exists("BOM", {"item": fg_item.name, "is_active": 1, "is_default": 1}): + make_bom(item=fg_item.name, raw_materials=["_Test Item"]) + + wo_order = make_wo_order_test_record( + production_item=fg_item.name, skip_transfer=1, source_warehouse="_Test Warehouse - _TC" + ) + ste = frappe.get_doc(make_stock_entry(wo_order.name, "Manufacture", wo_order.qty)) + ste.insert() + + fg_row = next(d for d in ste.items if d.is_finished_item) + self.assertEqual(fg_row.cost_center, "_Test Cost Center 2 - _TC") + def test_operation_time_with_batch_size(self): fg_item = "Test Batch Size Item For BOM" rm1 = "Test Batch Size Item RM 1 For BOM" From 1da28f2278982cb630a4d206193148f724e2222f Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 3 Jul 2026 22:48:35 +0530 Subject: [PATCH 32/91] fix: use live source warehouse valuation for internal transfer purchase receipts (backport #56431) (#56677) fix: use live source warehouse valuation for internal transfer purchase receipts (#56431) fix: anchor incoming SLE rate to DN rate for intra-company PR transfers (cherry picked from commit 35de9deb0a4b598b9df9e4761f11a4b34f6378ea) Co-authored-by: Shllokkk <140623894+Shllokkk@users.noreply.github.com> --- .../purchase_receipt/test_purchase_receipt.py | 86 +++++++++++++++++++ erpnext/stock/stock_ledger.py | 10 ++- 2 files changed, 94 insertions(+), 2 deletions(-) diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py index 52e3b8cf4f0..f5aedd15de2 100644 --- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py @@ -1976,6 +1976,92 @@ class TestPurchaseReceipt(ERPNextTestSuite): self.assertEqual(query[0].value, 0) + def test_internal_transfer_pr_incoming_sle_anchored_to_dn_rate(self): + """Internal-transfer PR's inward SLE must use DN.incoming_rate even when + PR.item.valuation_rate was wrong at submit, so divisional_loss does not + leak to COGS.""" + from erpnext.stock.doctype.delivery_note.delivery_note import make_inter_company_purchase_receipt + from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note + from erpnext.stock.stock_ledger import update_entries_after + + prepare_data_for_internal_transfer() + customer = "_Test Internal Customer 2" + company = "_Test Company with perpetual inventory" + + from_warehouse = create_warehouse("_Test Drift From", company=company) + transit_warehouse = create_warehouse("_Test Drift Transit", company=company) + to_warehouse = create_warehouse("_Test Drift Receiver", company=company) + item_doc = create_item("Test Internal Drift Item") + + make_purchase_receipt( + item_code=item_doc.name, + company=company, + posting_date=add_days(today(), -1), + warehouse=from_warehouse, + qty=10, + rate=100, + ) + + dn = create_delivery_note( + item_code=item_doc.name, + company=company, + customer=customer, + cost_center="Main - TCP1", + expense_account="Cost of Goods Sold - TCP1", + qty=1, + rate=100, + warehouse=from_warehouse, + target_warehouse=transit_warehouse, + ) + self.assertEqual(flt(dn.items[0].incoming_rate), 100.0) + + pr = make_inter_company_purchase_receipt(dn.name) + pr.items[0].warehouse = to_warehouse + pr.submit() + + # Simulate the failure path + frappe.db.set_value( + "Purchase Receipt Item", + pr.items[0].name, + {"sales_incoming_rate": 0, "valuation_rate": 80}, + ) + inward_sle = frappe.db.get_value( + "Stock Ledger Entry", + { + "voucher_type": "Purchase Receipt", + "voucher_no": pr.name, + "warehouse": to_warehouse, + "is_cancelled": 0, + }, + ["name", "item_code", "warehouse", "posting_date", "posting_time", "creation"], + as_dict=True, + ) + frappe.db.set_value( + "Stock Ledger Entry", + inward_sle.name, + {"incoming_rate": 80, "stock_value_difference": 80}, + ) + + update_entries_after( + { + "item_code": inward_sle.item_code, + "warehouse": inward_sle.warehouse, + "posting_date": inward_sle.posting_date, + "posting_time": inward_sle.posting_time, + "sle_id": inward_sle.name, + "creation": inward_sle.creation, + } + ) + + refreshed = frappe.db.get_value( + "Stock Ledger Entry", + inward_sle.name, + ["incoming_rate", "stock_value_difference"], + as_dict=True, + ) + self.assertEqual(flt(refreshed.incoming_rate), 100.0) + self.assertEqual(flt(refreshed.stock_value_difference), 100.0) + def test_backdated_transaction_for_internal_transfer_in_trasit_warehouse_for_purchase_invoice( self, ): diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py index 1da3940204c..749a329f6bb 100644 --- a/erpnext/stock/stock_ledger.py +++ b/erpnext/stock/stock_ledger.py @@ -877,10 +877,16 @@ class update_entries_after: if ( sle.voucher_type in ["Purchase Receipt", "Purchase Invoice"] and sle.voucher_detail_no - and sle.actual_qty < 0 and is_internal_transfer(sle) ): - sle.outgoing_rate = get_incoming_rate_for_inter_company_transfer(sle) + # Anchor both legs of an internal-transfer PR/PI to the DN/SI incoming_rate; + # otherwise an inward SLE that inherits a stale PR.valuation_rate leaks the + # gap to COGS via divisional_loss. + rate = get_incoming_rate_for_inter_company_transfer(sle) + if sle.actual_qty < 0: + sle.outgoing_rate = rate + elif rate: + sle.incoming_rate = rate dimensions = get_inventory_dimensions() has_dimensions = False From 17f2de42f331e589691e8500a338ac270d33d2e3 Mon Sep 17 00:00:00 2001 From: rohitwaghchaure Date: Fri, 3 Jul 2026 23:02:05 +0530 Subject: [PATCH 33/91] fix: auto fetch serial no from previous operation output (backport to v16) (#56861) --- .../doctype/job_card/job_card.py | 5 +- .../doctype/job_card/test_job_card.py | 291 +++++++++++++++++- .../doctype/work_order/work_order.py | 18 ++ .../stock/doctype/stock_entry/stock_entry.py | 133 ++++++++ .../stock_entry_type/stock_entry_type.py | 8 +- 5 files changed, 450 insertions(+), 5 deletions(-) diff --git a/erpnext/manufacturing/doctype/job_card/job_card.py b/erpnext/manufacturing/doctype/job_card/job_card.py index 703b37e4d5a..27d4212cbd1 100644 --- a/erpnext/manufacturing/doctype/job_card/job_card.py +++ b/erpnext/manufacturing/doctype/job_card/job_card.py @@ -1720,7 +1720,7 @@ def make_material_request(source_name, target_doc=None): @frappe.whitelist() -def make_stock_entry(source_name, target_doc=None): +def make_stock_entry(source_name: str, target_doc: Document | str | None = None): def update_item(source, target, source_parent): target.t_warehouse = source_parent.wip_warehouse @@ -1752,6 +1752,8 @@ def make_stock_entry(source_name, target_doc=None): target.set_missing_values() target.set_stock_entry_type() + from erpnext.stock.doctype.stock_entry.stock_entry import set_previous_operation_serial_batch + wo_allows_alternate_item = frappe.db.get_value( "Work Order", target.work_order, "allow_alternative_item" ) @@ -1760,6 +1762,7 @@ def make_stock_entry(source_name, target_doc=None): wo_allows_alternate_item and frappe.get_cached_value("Item", item.item_code, "allow_alternative_item") ) + set_previous_operation_serial_batch(target, item) doclist = get_mapped_doc( "Job Card", diff --git a/erpnext/manufacturing/doctype/job_card/test_job_card.py b/erpnext/manufacturing/doctype/job_card/test_job_card.py index 0ba142a598e..3f75c24a4bb 100644 --- a/erpnext/manufacturing/doctype/job_card/test_job_card.py +++ b/erpnext/manufacturing/doctype/job_card/test_job_card.py @@ -1057,6 +1057,9 @@ class TestJobCard(ERPNextTestSuite): job_card.submit() for row in fg_bom.items: + if row.item_code == sfg.name: + continue + make_stock_entry( item_code=row.item_code, target="Stores - _TC", @@ -1067,9 +1070,295 @@ class TestJobCard(ERPNextTestSuite): manufacturing_entry = frappe.get_doc(job_card.make_stock_entry_for_semi_fg_item()) manufacturing_entry.submit() + sfg_row = next(row for row in manufacturing_entry.items if row.item_code == sfg.name) + self.assertEqual(flt(sfg_row.basic_rate, 3), 95.0) + self.assertEqual(manufacturing_entry.items[2].item_code, scrap2.name) self.assertEqual(manufacturing_entry.items[2].qty, 9) - self.assertEqual(flt(manufacturing_entry.items[2].basic_rate, 3), 5.556) + self.assertEqual(flt(manufacturing_entry.items[2].basic_rate, 3), 5.278) + + def test_semi_fg_batch_auto_pull_on_manufacture(self): + from erpnext.manufacturing.doctype.operation.test_operation import make_operation + from erpnext.stock.doctype.item.test_item import make_item + from erpnext.stock.serial_batch_bundle import get_batches_from_bundle + + frappe.db.set_value("UOM", "Nos", "must_be_whole_number", 0) + frappe.db.set_single_value("Manufacturing Settings", "make_serial_no_batch_from_work_order", 0) + warehouse = "Stores - _TC" + + rm1 = make_item("Auto Pull RM 1", {"is_stock_item": 1}).name + rm2 = make_item("Auto Pull RM 2", {"is_stock_item": 1}).name + fg1 = make_item("Auto Pull FG 1", {"is_stock_item": 1}).name + sfg = make_item( + "Auto Pull SFG 1", + { + "is_stock_item": 1, + "has_batch_no": 1, + "create_new_batch": 1, + "batch_number_series": "AP-SFG-.#####", + }, + ).name + + sfg_bom = frappe.new_doc("BOM", company="_Test Company", item=sfg, quantity=1) + sfg_bom.append("items", {"item_code": rm1, "qty": 1}) + sfg_bom.insert() + sfg_bom.submit() + + fg_bom = frappe.new_doc( + "BOM", + company="_Test Company", + item=fg1, + quantity=1, + with_operations=1, + track_semi_finished_goods=1, + ) + fg_bom.append("items", {"item_code": rm2, "qty": 1}) + + operation1 = { + "operation": "Auto Pull Op A", + "workstation": "_Test Workstation A", + "finished_good": sfg, + "bom_no": sfg_bom.name, + "finished_good_qty": 1, + "sequence_id": 1, + "time_in_mins": 60, + "source_warehouse": warehouse, + "fg_warehouse": warehouse, + "skip_material_transfer": 1, + } + operation2 = { + "operation": "Auto Pull Op B", + "workstation": "_Test Workstation A", + "finished_good": fg1, + "finished_good_qty": 1, + "is_final_finished_good": 1, + "sequence_id": 2, + "time_in_mins": 60, + "source_warehouse": warehouse, + "fg_warehouse": warehouse, + "skip_material_transfer": 1, + } + + make_workstation(operation1) + make_operation(operation1) + make_operation(operation2) + + fg_bom.append("operations", operation1) + fg_bom.append("operations", operation2) + fg_bom.append("items", {"item_code": sfg, "qty": 1, "uom": "Nos", "operation_row_id": 2}) + fg_bom.insert() + fg_bom.submit() + + work_order = make_wo_order_test_record( + item=fg1, + qty=5, + source_warehouse=warehouse, + fg_warehouse=warehouse, + bom_no=fg_bom.name, + skip_transfer=1, + do_not_save=True, + ) + work_order.operations[0].time_in_mins = 60 + work_order.operations[1].time_in_mins = 60 + work_order.save() + work_order.submit() + + make_stock_entry(item_code=rm1, target=warehouse, qty=10, basic_rate=100) + make_stock_entry(item_code=rm2, target=warehouse, qty=10, basic_rate=100) + + jc_a = frappe.get_doc( + "Job Card", + frappe.db.get_value( + "Job Card", {"work_order": work_order.name, "operation": "Auto Pull Op A"}, "name" + ), + ) + jc_a.append( + "time_logs", + { + "from_time": "2024-01-01 08:00:00", + "to_time": "2024-01-01 09:00:00", + "completed_qty": jc_a.for_quantity, + }, + ) + jc_a.submit() + me_a = frappe.get_doc(jc_a.make_stock_entry_for_semi_fg_item()) + me_a.submit() + + me_a.reload() + sfg_fg_row = next(r for r in me_a.items if r.is_finished_item and r.item_code == sfg) + self.assertTrue(sfg_fg_row.serial_and_batch_bundle) + produced_batches = get_batches_from_bundle(sfg_fg_row.serial_and_batch_bundle) + + jc_b = frappe.get_doc( + "Job Card", + frappe.db.get_value( + "Job Card", {"work_order": work_order.name, "operation": "Auto Pull Op B"}, "name" + ), + ) + jc_b.append( + "time_logs", + { + "from_time": "2024-02-01 08:00:00", + "to_time": "2024-02-01 09:00:00", + "completed_qty": jc_b.for_quantity, + }, + ) + jc_b.submit() + me_b = frappe.get_doc(jc_b.make_stock_entry_for_semi_fg_item()) + + sfg_consume_row = next(r for r in me_b.items if r.item_code == sfg and r.s_warehouse) + self.assertTrue( + sfg_consume_row.serial_and_batch_bundle, + "Previous operation's batch was not auto-pulled into the semi-finished consumption row", + ) + consumed_batches = get_batches_from_bundle(sfg_consume_row.serial_and_batch_bundle) + self.assertEqual(set(consumed_batches.keys()), set(produced_batches.keys())) + + def test_semi_fg_auto_pull_with_uom_conversion(self): + from erpnext.manufacturing.doctype.operation.test_operation import make_operation + from erpnext.stock.doctype.item.test_item import make_item + from erpnext.stock.doctype.stock_entry.stock_entry import set_previous_operation_serial_batch + from erpnext.stock.serial_batch_bundle import get_batches_from_bundle + + frappe.db.set_value("UOM", "Nos", "must_be_whole_number", 0) + frappe.db.set_single_value("Manufacturing Settings", "make_serial_no_batch_from_work_order", 0) + warehouse = "Stores - _TC" + + rm1 = make_item("UOM Pull RM 1", {"is_stock_item": 1}).name + rm2 = make_item("UOM Pull RM 2", {"is_stock_item": 1}).name + fg1 = make_item("UOM Pull FG 1", {"is_stock_item": 1}).name + sfg = make_item( + "UOM Pull SFG 1", + { + "is_stock_item": 1, + "has_batch_no": 1, + "create_new_batch": 1, + "batch_number_series": "UP-SFG-.#####", + "uoms": [{"uom": "Box", "conversion_factor": 5}], + }, + ).name + + sfg_bom = frappe.new_doc("BOM", company="_Test Company", item=sfg, quantity=1) + sfg_bom.append("items", {"item_code": rm1, "qty": 1}) + sfg_bom.insert() + sfg_bom.submit() + + fg_bom = frappe.new_doc( + "BOM", + company="_Test Company", + item=fg1, + quantity=1, + with_operations=1, + track_semi_finished_goods=1, + ) + fg_bom.append("items", {"item_code": rm2, "qty": 1}) + + operation1 = { + "operation": "UOM Pull Op A", + "workstation": "_Test Workstation A", + "finished_good": sfg, + "bom_no": sfg_bom.name, + "finished_good_qty": 1, + "sequence_id": 1, + "time_in_mins": 60, + "source_warehouse": warehouse, + "fg_warehouse": warehouse, + "skip_material_transfer": 1, + } + operation2 = { + "operation": "UOM Pull Op B", + "workstation": "_Test Workstation A", + "finished_good": fg1, + "finished_good_qty": 1, + "is_final_finished_good": 1, + "sequence_id": 2, + "time_in_mins": 60, + "source_warehouse": warehouse, + "fg_warehouse": warehouse, + "skip_material_transfer": 1, + } + + make_workstation(operation1) + make_operation(operation1) + make_operation(operation2) + + fg_bom.append("operations", operation1) + fg_bom.append("operations", operation2) + fg_bom.append("items", {"item_code": sfg, "qty": 1, "uom": "Nos", "operation_row_id": 2}) + fg_bom.insert() + fg_bom.submit() + + work_order = make_wo_order_test_record( + item=fg1, + qty=5, + source_warehouse=warehouse, + fg_warehouse=warehouse, + bom_no=fg_bom.name, + skip_transfer=1, + do_not_save=True, + ) + work_order.operations[0].time_in_mins = 60 + work_order.operations[1].time_in_mins = 60 + work_order.save() + work_order.submit() + + make_stock_entry(item_code=rm1, target=warehouse, qty=10, basic_rate=100) + make_stock_entry(item_code=sfg, target=warehouse, qty=5, basic_rate=100, posting_date="2024-01-01") + + jc_a = frappe.get_doc( + "Job Card", + frappe.db.get_value( + "Job Card", {"work_order": work_order.name, "operation": "UOM Pull Op A"}, "name" + ), + ) + jc_a.append( + "time_logs", + { + "from_time": "2024-02-01 08:00:00", + "to_time": "2024-02-01 09:00:00", + "completed_qty": jc_a.for_quantity, + }, + ) + jc_a.submit() + me_a = frappe.get_doc(jc_a.make_stock_entry_for_semi_fg_item()) + me_a.submit() + me_a.reload() + + sfg_fg_row = next(r for r in me_a.items if r.is_finished_item and r.item_code == sfg) + produced_batches = get_batches_from_bundle(sfg_fg_row.serial_and_batch_bundle) + + se = frappe.new_doc("Stock Entry") + se.company = "_Test Company" + se.purpose = "Material Transfer" + se.work_order = work_order.name + se.set_stock_entry_type() + row = se.append( + "items", + { + "item_code": sfg, + "qty": 1, + "uom": "Box", + "conversion_factor": 5, + "s_warehouse": warehouse, + "t_warehouse": "_Test Warehouse - _TC", + }, + ) + set_previous_operation_serial_batch(se, row) + + self.assertTrue(row.serial_and_batch_bundle) + self.assertEqual( + abs(frappe.db.get_value("Serial and Batch Bundle", row.serial_and_batch_bundle, "total_qty")), + 5.0, + ) + + se.save() + se.submit() + se.reload() + + row = se.items[0] + consumed_batches = get_batches_from_bundle(row.serial_and_batch_bundle) + self.assertEqual(set(consumed_batches.keys()), set(produced_batches.keys())) + self.assertEqual(abs(sum(consumed_batches.values())), 5.0) def test_secondary_items_without_sfg(self): for row in frappe.get_doc("BOM", self.work_order.bom_no).items: diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py index 66a94b6b657..5de2594b146 100644 --- a/erpnext/manufacturing/doctype/work_order/work_order.py +++ b/erpnext/manufacturing/doctype/work_order/work_order.py @@ -266,6 +266,7 @@ class WorkOrder(Document): self.validate_sales_order() self.set_default_warehouse() + self.set_operation_warehouses() self.validate_warehouse_belongs_to_company() self.check_wip_warehouse_skip() self.calculate_operating_cost() @@ -1410,6 +1411,23 @@ class WorkOrder(Document): self.set("operations", operations) self.calculate_time() + self.set_operation_warehouses() + + def set_operation_warehouses(self): + if not self.track_semi_finished_goods or not self.operations: + return + + operations = self.operations + last_idx = len(operations) - 1 + for idx, op in enumerate(operations): + if not op.source_warehouse: + op.source_warehouse = self.source_warehouse + + if not op.fg_warehouse: + op.fg_warehouse = self.fg_warehouse if idx == last_idx else self.source_warehouse + + if not op.wip_warehouse: + op.wip_warehouse = self.wip_warehouse def calculate_time(self): for d in self.get("operations"): diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index baad1a81ff6..d9856ca5055 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -4727,3 +4727,136 @@ def get_transferred_qty(material_request): ).run(as_dict=True) return query[0] + + +def get_previous_operation_output_sn_batch(work_order, item_code, warehouse): + """Serial nos / batches that an earlier operation produced for ``item_code`` (a + semi-finished good) and are still available in ``warehouse`` -- i.e. produced by a + prior operation's Manufacture entry minus whatever later entries already pulled out + of that warehouse. Returns an empty result for ordinary raw materials.""" + result = frappe._dict(serial_nos=[], batches=defaultdict(float)) + if not (work_order and item_code and warehouse): + return result + + if not frappe.db.exists("Work Order Operation", {"parent": work_order, "finished_good": item_code}): + return result + + item_details = frappe.get_cached_value("Item", item_code, ["has_serial_no", "has_batch_no"], as_dict=1) + if not item_details or not (item_details.has_serial_no or item_details.has_batch_no): + return result + + produced = _get_operation_sn_batch(work_order, item_code, warehouse, produced=True) + consumed = _get_operation_sn_batch(work_order, item_code, warehouse, produced=False) + + for serial_no in produced.serial_nos: + if serial_no not in consumed.serial_nos: + result.serial_nos.append(serial_no) + + for batch_no, qty in produced.batches.items(): + available = flt(qty) - flt(consumed.batches.get(batch_no)) + if available > 0: + result.batches[batch_no] = available + + return result + + +def _get_operation_sn_batch(work_order, item_code, warehouse, produced=True): + bundles = _get_operation_bundles(work_order, item_code, warehouse, produced) + result = frappe._dict(serial_nos=[], batches=defaultdict(float)) + if not bundles: + return result + + sbe = frappe.qb.DocType("Serial and Batch Entry") + entries = ( + frappe.qb.from_(sbe) + .select(sbe.serial_no, sbe.batch_no, sbe.qty) + .where((sbe.parent.isin(bundles)) & (sbe.is_cancelled == 0)) + .orderby(sbe.parent) + .orderby(sbe.idx) + ).run(as_dict=True) + + for row in entries: + if row.serial_no: + result.serial_nos.append(row.serial_no) + if row.batch_no: + result.batches[row.batch_no] += abs(flt(row.qty)) + + return result + + +def _get_operation_bundles(work_order, item_code, warehouse, produced): + se = frappe.qb.DocType("Stock Entry") + sed = frappe.qb.DocType("Stock Entry Detail") + warehouse_field = sed.t_warehouse if produced else sed.s_warehouse + + query = ( + frappe.qb.from_(se) + .inner_join(sed) + .on(sed.parent == se.name) + .select(sed.serial_and_batch_bundle) + .where( + (se.work_order == work_order) + & (se.docstatus == 1) + & (sed.item_code == item_code) + & (warehouse_field == warehouse) + & (sed.serial_and_batch_bundle.isnotnull()) + ) + ) + if produced: + query = query.where((se.purpose == "Manufacture") & (sed.is_finished_item == 1)) + + return [row[0] for row in query.run()] + + +def _cap_pool_to_qty(pool, qty): + """Trim the available serial/batch pool to at most ``qty`` (fill what's available).""" + serial_nos, batches = [], frappe._dict() + if pool.serial_nos: + serial_nos = pool.serial_nos[: cint(qty)] + elif pool.batches: + remaining = flt(qty) + for batch_no, batch_qty in pool.batches.items(): + if remaining <= 0: + break + use = min(flt(batch_qty), remaining) + batches[batch_no] = use + remaining -= use + return serial_nos, batches + + +def set_previous_operation_serial_batch(parent_doc, row): + """Auto-pull serial nos / batches produced by a previous operation onto a + consumption / transfer-out ``row`` of a Stock Entry, filling what is available and + leaving any shortfall blank for the user. No-op for ordinary raw materials or when + the row already carries serial/batch.""" + warehouse = row.get("s_warehouse") or row.get("from_warehouse") + qty = flt(row.get("qty")) * flt(row.get("conversion_factor") or 1) + + if not parent_doc.get("work_order") or not warehouse or qty <= 0: + return + if row.get("serial_and_batch_bundle") or row.get("serial_no") or row.get("batch_no"): + return + + pool = get_previous_operation_output_sn_batch(parent_doc.work_order, row.item_code, warehouse) + serial_nos, batches = _cap_pool_to_qty(pool, qty) + if not serial_nos and not batches: + return + + bundle = SerialBatchCreation( + { + "item_code": row.item_code, + "warehouse": warehouse, + "posting_datetime": get_combine_datetime(parent_doc.posting_date, parent_doc.posting_time), + "voucher_type": "Stock Entry", + "company": parent_doc.company, + "type_of_transaction": "Outward", + "qty": flt(qty), + "serial_nos": serial_nos, + "batches": batches, + "do_not_submit": True, + } + ).make_serial_and_batch_bundle() + + if bundle and bundle.get("name"): + row.serial_and_batch_bundle = bundle.name + row.use_serial_batch_fields = 0 diff --git a/erpnext/stock/doctype/stock_entry_type/stock_entry_type.py b/erpnext/stock/doctype/stock_entry_type/stock_entry_type.py index ba0354fd1c8..6a809d6f1b2 100644 --- a/erpnext/stock/doctype/stock_entry_type/stock_entry_type.py +++ b/erpnext/stock/doctype/stock_entry_type/stock_entry_type.py @@ -106,6 +106,8 @@ class ManufactureEntry: ) def add_raw_materials(self): + from erpnext.stock.doctype.stock_entry.stock_entry import set_previous_operation_serial_batch + if self.job_card: item_dict = {} if not item_dict: @@ -127,9 +129,7 @@ class ManufactureEntry: _dict.from_warehouse = self.source_wh.get(item_code) or self.wip_warehouse _dict.to_warehouse = "" - if backflush_based_on != "BOM" and not frappe.db.get_value( - "Job Card", self.job_card, "skip_material_transfer" - ): + if backflush_based_on != "BOM" and not self.skip_material_transfer: calculated_qty = flt(_dict.transferred_qty) - flt(_dict.consumed_qty) if calculated_qty < 0: frappe.throw( @@ -138,6 +138,8 @@ class ManufactureEntry: _dict.qty = calculated_qty self.update_available_serial_batches(_dict, available_serial_batches) + elif self.skip_material_transfer: + set_previous_operation_serial_batch(self.stock_entry, _dict) self.stock_entry.add_to_stock_entry_detail(item_dict) From 3aad7fee24d658e40198e4c190241a67d0d19448 Mon Sep 17 00:00:00 2001 From: Pandiyan P Date: Sat, 4 Jul 2026 12:46:32 +0530 Subject: [PATCH 34/91] fix: resolve conflicts --- .../stock/doctype/stock_entry_detail/stock_entry_detail.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json b/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json index 6af0a387f5c..ce2bf227106 100644 --- a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json +++ b/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json @@ -678,11 +678,7 @@ "index_web_pages_for_search": 1, "istable": 1, "links": [], -<<<<<<< HEAD - "modified": "2026-06-30 12:18:34.132425", -======= "modified": "2026-07-03 12:11:53.714931", ->>>>>>> edfa0a7a1d (fix: remove company default on cost center in stock entry detail) "modified_by": "Administrator", "module": "Stock", "name": "Stock Entry Detail", From a39753ee0834d37f4b7a4936dfa62b3e38d881ef Mon Sep 17 00:00:00 2001 From: pandiyan Date: Fri, 3 Jul 2026 18:25:01 +0530 Subject: [PATCH 35/91] fix: clear stray permission message when item dashboard has no warehouse access (cherry picked from commit 8c7b2f4d3cd374d1e51e083e850c7a71de0fbd06) --- erpnext/stock/dashboard/item_dashboard.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/erpnext/stock/dashboard/item_dashboard.py b/erpnext/stock/dashboard/item_dashboard.py index 5de54c55461..9d1c7b55122 100644 --- a/erpnext/stock/dashboard/item_dashboard.py +++ b/erpnext/stock/dashboard/item_dashboard.py @@ -12,6 +12,9 @@ def get_data( item_code=None, warehouse=None, item_group=None, start=0, sort_by="actual_qty", sort_order="desc" ): """Return data to render the item dashboard""" + if not frappe.has_permission("Bin", "read"): + return [] + filters = [] if item_code: filters.append(["item_code", "=", item_code]) @@ -33,7 +36,10 @@ def get_data( if build_match_conditions("Warehouse", user=frappe.session.user): filters.append(["warehouse", "in", [w.name for w in frappe.get_list("Warehouse")]]) except frappe.PermissionError: - # user does not have access on warehouse + # user does not have access on warehouse; build_match_conditions already queued a + # "Not permitted" message via frappe.throw before this was caught, drop it so the + # client doesn't show a spurious error for a request that's failing gracefully here + frappe.clear_last_message() return [] items = frappe.db.get_all( From c9648112935ac15fe10aa3f80cf80480b56b1d1e Mon Sep 17 00:00:00 2001 From: pandiyan Date: Fri, 3 Jul 2026 18:25:08 +0530 Subject: [PATCH 36/91] fix: skip item prices tab render for users without item price read access (cherry picked from commit ef794f390cde3d5666aa8aa5f13d9f9049246553) --- erpnext/stock/doctype/item/item.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/erpnext/stock/doctype/item/item.js b/erpnext/stock/doctype/item/item.js index 8bb5bc373e7..c37e35d2114 100644 --- a/erpnext/stock/doctype/item/item.js +++ b/erpnext/stock/doctype/item/item.js @@ -668,6 +668,13 @@ $.extend(erpnext.item, { render_item_prices: function (frm) { if (frm.doc.__islocal) return; + + if (!frappe.model.can_read("Item Price")) { + frm.toggle_display("prices_html", false); + return; + } + frm.toggle_display("prices_html", true); + const requested_item = frm.doc.name; const container = frm.fields_dict["prices_html"].$wrapper; From 6d9f5fac767e0232659ce7880b00ebc4bbf94204 Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Fri, 3 Jul 2026 11:29:18 +0530 Subject: [PATCH 37/91] fix: race condition and repeatable read in process pcv - Update using child table name to avoid scanning whole table, which eventually leads to mariadb 1020 (REPEATABLE READ). - Avoid race condition in final summarization (cherry picked from commit ff6881764b843a3046934fddbbbfd8a907637ef8) --- .../process_period_closing_voucher.py | 33 +++++++++---------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/erpnext/accounts/doctype/process_period_closing_voucher/process_period_closing_voucher.py b/erpnext/accounts/doctype/process_period_closing_voucher/process_period_closing_voucher.py index 3239e6f4a00..966ded8f6fa 100644 --- a/erpnext/accounts/doctype/process_period_closing_voucher/process_period_closing_voucher.py +++ b/erpnext/accounts/doctype/process_period_closing_voucher/process_period_closing_voucher.py @@ -100,7 +100,7 @@ def start_pcv_processing(docname: str): ppcvd = qb.DocType("Process Period Closing Voucher Detail") if normal_balances := ( qb.from_(ppcvd) - .select(ppcvd.processing_date, ppcvd.report_type, ppcvd.parentfield) + .select(ppcvd.name, ppcvd.processing_date, ppcvd.report_type, ppcvd.parentfield) .where(ppcvd.parent.eq(docname) & ppcvd.status.eq("Queued")) .orderby(ppcvd.parentfield, ppcvd.idx, ppcvd.processing_date) .limit(4) @@ -111,12 +111,7 @@ def start_pcv_processing(docname: str): for x in normal_balances: frappe.db.set_value( "Process Period Closing Voucher Detail", - { - "processing_date": x.processing_date, - "parent": docname, - "report_type": x.report_type, - "parentfield": x.parentfield, - }, + x.name, "status", "Running", ) @@ -127,10 +122,12 @@ def start_pcv_processing(docname: str): is_async=True, enqueue_after_commit=True, docname=docname, + row_name=x.name, date=x.processing_date, report_type=x.report_type, parentfield=x.parentfield, ) + frappe.db.commit() else: frappe.db.set_value("Process Period Closing Voucher", docname, "status", "Completed") @@ -254,7 +251,7 @@ def schedule_next_date(docname: str): ppcvd = qb.DocType("Process Period Closing Voucher Detail") if to_process := ( qb.from_(ppcvd) - .select(ppcvd.processing_date, ppcvd.report_type, ppcvd.parentfield) + .select(ppcvd.name, ppcvd.processing_date, ppcvd.report_type, ppcvd.parentfield) .where(ppcvd.parent.eq(docname) & ppcvd.status.eq("Queued")) .orderby(ppcvd.parentfield, ppcvd.idx, ppcvd.processing_date) .limit(1) @@ -264,15 +261,11 @@ def schedule_next_date(docname: str): if not is_scheduler_inactive(): frappe.db.set_value( "Process Period Closing Voucher Detail", - { - "processing_date": to_process[0].processing_date, - "parent": docname, - "report_type": to_process[0].report_type, - "parentfield": to_process[0].parentfield, - }, + to_process[0].name, "status", "Running", ) + frappe.db.commit() frappe.enqueue( method="erpnext.accounts.doctype.process_period_closing_voucher.process_period_closing_voucher.process_individual_date", queue="long", @@ -280,6 +273,7 @@ def schedule_next_date(docname: str): is_async=True, enqueue_after_commit=True, docname=docname, + row_name=to_process[0].name, date=to_process[0].processing_date, report_type=to_process[0].report_type, parentfield=to_process[0].parentfield, @@ -444,6 +438,8 @@ def summarize_and_post_ledger_entries(docname): make_closing_entries(closing_entries, pcv.name, pcv.company, pcv.period_end_date) + frappe.db.commit() + frappe.db.set_value("Period Closing Voucher", pcv.name, "gle_processing_status", "Completed") frappe.db.set_value("Process Period Closing Voucher", docname, "status", "Completed") @@ -529,10 +525,10 @@ def build_dimension_wise_balance_dict(gl_entries): return dimension_balances -def process_individual_date(docname: str, date, report_type, parentfield): +def process_individual_date(docname: str, row_name, date, report_type, parentfield): current_date_status = frappe.db.get_value( "Process Period Closing Voucher Detail", - {"processing_date": date, "report_type": report_type, "parentfield": parentfield}, + row_name, "status", ) if current_date_status != "Running": @@ -579,17 +575,18 @@ def process_individual_date(docname: str, date, report_type, parentfield): # save results frappe.db.set_value( "Process Period Closing Voucher Detail", - {"processing_date": date, "parent": docname, "report_type": report_type, "parentfield": parentfield}, + row_name, "closing_balance", frappe.json.dumps(res), ) frappe.db.set_value( "Process Period Closing Voucher Detail", - {"processing_date": date, "parent": docname, "report_type": report_type, "parentfield": parentfield}, + row_name, "status", "Completed", ) + frappe.db.commit() # chain call schedule_next_date(docname) From 019b02adcdf95a1f0c31ebff0f0440200160d9c3 Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Fri, 3 Jul 2026 13:00:00 +0530 Subject: [PATCH 38/91] fix: prevent repeatable read related concurrency errors Process Period Closing Voucher and Process Period Closing Voucher Details are trackers how the jobs are processed. Keep transactions on them very short. (cherry picked from commit 7e4045e8282714928989453529d679ff3bf4b6eb) --- .../process_period_closing_voucher.py | 99 +++++++++++-------- 1 file changed, 58 insertions(+), 41 deletions(-) diff --git a/erpnext/accounts/doctype/process_period_closing_voucher/process_period_closing_voucher.py b/erpnext/accounts/doctype/process_period_closing_voucher/process_period_closing_voucher.py index 966ded8f6fa..691948cabad 100644 --- a/erpnext/accounts/doctype/process_period_closing_voucher/process_period_closing_voucher.py +++ b/erpnext/accounts/doctype/process_period_closing_voucher/process_period_closing_voucher.py @@ -89,47 +89,55 @@ class ProcessPeriodClosingVoucher(Document): cancel_pcv_processing(self.name) +def initialize_parallel_threads(docname: str): + threads = 4 + timeout = frappe.db.get_single_value("Accounts Settings", "pcv_job_timeout") or 3600 + ppcvd = qb.DocType("Process Period Closing Voucher Detail") + + frappe.db.set_value("Process Period Closing Voucher", docname, "status", "Running") + + if normal_balances := ( + qb.from_(ppcvd) + .select(ppcvd.name, ppcvd.processing_date, ppcvd.report_type, ppcvd.parentfield) + .where(ppcvd.parent.eq(docname) & ppcvd.status.eq("Queued")) + .orderby(ppcvd.parentfield, ppcvd.idx, ppcvd.processing_date) + .limit(threads) + .for_update(skip_locked=True) + .run(as_dict=True) + ): + if not is_scheduler_inactive(): + for x in normal_balances: + frappe.db.set_value( + "Process Period Closing Voucher Detail", + x.name, + "status", + "Running", + ) + frappe.enqueue( + method="erpnext.accounts.doctype.process_period_closing_voucher.process_period_closing_voucher.process_individual_date", + queue="long", + timeout=timeout, + is_async=True, + enqueue_after_commit=True, + docname=docname, + row_name=x.name, + date=x.processing_date, + report_type=x.report_type, + parentfield=x.parentfield, + ) + # keep transaction on PPCV and PPCVD short + # prevents concurrency errors - REPEATABLE READ + if not frappe.in_test: + frappe.db.commit() + else: + frappe.db.set_value("Process Period Closing Voucher", docname, "status", "Completed") + + @frappe.whitelist() def start_pcv_processing(docname: str): if frappe.db.get_value("Process Period Closing Voucher", docname, "status") in ["Queued", "Running"]: frappe.has_permission("Process Period Closing Voucher", "write", doc=docname, throw=True) - frappe.db.set_value("Process Period Closing Voucher", docname, "status", "Running") - - timeout = frappe.db.get_single_value("Accounts Settings", "pcv_job_timeout") or 3600 - - ppcvd = qb.DocType("Process Period Closing Voucher Detail") - if normal_balances := ( - qb.from_(ppcvd) - .select(ppcvd.name, ppcvd.processing_date, ppcvd.report_type, ppcvd.parentfield) - .where(ppcvd.parent.eq(docname) & ppcvd.status.eq("Queued")) - .orderby(ppcvd.parentfield, ppcvd.idx, ppcvd.processing_date) - .limit(4) - .for_update(skip_locked=True) - .run(as_dict=True) - ): - if not is_scheduler_inactive(): - for x in normal_balances: - frappe.db.set_value( - "Process Period Closing Voucher Detail", - x.name, - "status", - "Running", - ) - frappe.enqueue( - method="erpnext.accounts.doctype.process_period_closing_voucher.process_period_closing_voucher.process_individual_date", - queue="long", - timeout=timeout, - is_async=True, - enqueue_after_commit=True, - docname=docname, - row_name=x.name, - date=x.processing_date, - report_type=x.report_type, - parentfield=x.parentfield, - ) - frappe.db.commit() - else: - frappe.db.set_value("Process Period Closing Voucher", docname, "status", "Completed") + initialize_parallel_threads(docname) @frappe.whitelist() @@ -247,8 +255,8 @@ def get_gle_for_closing_account(pcv, dimension_balance, dimensions): @frappe.whitelist() def schedule_next_date(docname: str): timeout = frappe.db.get_single_value("Accounts Settings", "pcv_job_timeout") or 3600 - ppcvd = qb.DocType("Process Period Closing Voucher Detail") + if to_process := ( qb.from_(ppcvd) .select(ppcvd.name, ppcvd.processing_date, ppcvd.report_type, ppcvd.parentfield) @@ -265,7 +273,11 @@ def schedule_next_date(docname: str): "status", "Running", ) - frappe.db.commit() + # keep transaction on PPCV and PPCVD short + # prevents concurrency errors - REPEATABLE READ + if not frappe.in_test: + frappe.db.commit() + frappe.enqueue( method="erpnext.accounts.doctype.process_period_closing_voucher.process_period_closing_voucher.process_individual_date", queue="long", @@ -438,7 +450,10 @@ def summarize_and_post_ledger_entries(docname): make_closing_entries(closing_entries, pcv.name, pcv.company, pcv.period_end_date) - frappe.db.commit() + # keep transaction on PPCV and PPCVD short + # prevents concurrency errors - REPEATABLE READ + if not frappe.in_test: + frappe.db.commit() frappe.db.set_value("Period Closing Voucher", pcv.name, "gle_processing_status", "Completed") frappe.db.set_value("Process Period Closing Voucher", docname, "status", "Completed") @@ -586,7 +601,9 @@ def process_individual_date(docname: str, row_name, date, report_type, parentfie "status", "Completed", ) - frappe.db.commit() + # commit heavy computation before touching PPCV or PPCVD + if not frappe.in_test: + frappe.db.commit() # chain call schedule_next_date(docname) From d759574f9a5104b2827247bffca2b4375308885a Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Fri, 3 Jul 2026 15:51:18 +0530 Subject: [PATCH 39/91] refactor: prevent whole table scan while scheduling next date - helps in concurrency isolation (cherry picked from commit 21f4603144d3ffbe5e1b871dbaa02631e61919c2) --- .../process_period_closing_voucher_detail.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/erpnext/accounts/doctype/process_period_closing_voucher_detail/process_period_closing_voucher_detail.py b/erpnext/accounts/doctype/process_period_closing_voucher_detail/process_period_closing_voucher_detail.py index f3a8302ac5b..0e0b905c96a 100644 --- a/erpnext/accounts/doctype/process_period_closing_voucher_detail/process_period_closing_voucher_detail.py +++ b/erpnext/accounts/doctype/process_period_closing_voucher_detail/process_period_closing_voucher_detail.py @@ -1,7 +1,7 @@ # Copyright (c) 2025, Frappe Technologies Pvt. Ltd. and contributors # For license information, please see license.txt -# import frappe +import frappe from frappe.model.document import Document @@ -24,3 +24,10 @@ class ProcessPeriodClosingVoucherDetail(Document): # end: auto-generated types pass + + +def on_doctype_update(): + frappe.db.add_index( + "Process Period Closing Voucher Detail", + ["parent", "status", "parentfield", "idx", "processing_date"], + ) From 9cf7f441fb0c0afcce7f211c8461ab0c63b1fa40 Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Fri, 3 Jul 2026 17:02:32 +0530 Subject: [PATCH 40/91] refactor(test): row name based utility methods (cherry picked from commit dbc409736a4069d66d110da73aacd3bab1fac371) --- .../test_process_period_closing_voucher.py | 44 +++++++++++-------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/erpnext/accounts/doctype/process_period_closing_voucher/test_process_period_closing_voucher.py b/erpnext/accounts/doctype/process_period_closing_voucher/test_process_period_closing_voucher.py index f34c1dbedfe..5de93ef1bdd 100644 --- a/erpnext/accounts/doctype/process_period_closing_voucher/test_process_period_closing_voucher.py +++ b/erpnext/accounts/doctype/process_period_closing_voucher/test_process_period_closing_voucher.py @@ -48,18 +48,27 @@ class TestProcessPeriodClosingVoucher(ERPNextTestSuite): ppcv.save() return ppcv - def set_processing_date_status(self, date, ppcv, rpt_type, parentfield, status): + def set_processing_date_status(self, row_name, status): frappe.db.set_value( "Process Period Closing Voucher Detail", - {"processing_date": date, "parent": ppcv, "report_type": rpt_type, "parentfield": parentfield}, + row_name, "status", status, ) - def get_processing_date_closing_balance(self, date, ppcv, rpt_type, parentfield): + def get_row_name(self, ppcv_name, rpt_type, parentfield): + return frappe.db.get_all( + "Process Period Closing Voucher Detail", + filters={"parent": ppcv_name, "report_type": rpt_type, "parentfield": parentfield}, + order_by="report_type, idx", + pluck="name", + limit=1, + )[0] + + def get_processing_date_closing_balance(self, row_name): return frappe.db.get_value( "Process Period Closing Voucher Detail", - {"processing_date": date, "parent": ppcv, "report_type": rpt_type, "parentfield": parentfield}, + row_name, "closing_balance", ) @@ -97,11 +106,10 @@ class TestProcessPeriodClosingVoucher(ERPNextTestSuite): parentfield = "normal_balances" rpt_type = "Profit and Loss" # status has to be set to 'Running' for logic to run - self.set_processing_date_status(today(), ppcv.name, rpt_type, parentfield, "Running") - process_individual_date(ppcv.name, today(), rpt_type, parentfield) - bal = frappe.parse_json( - self.get_processing_date_closing_balance(today(), ppcv.name, rpt_type, parentfield) - ) + row_name = self.get_row_name(ppcv.name, rpt_type, parentfield) + self.set_processing_date_status(row_name, "Running") + process_individual_date(ppcv.name, row_name, today(), rpt_type, parentfield) + bal = frappe.parse_json(self.get_processing_date_closing_balance(row_name)) self.assertEqual(len(bal), 1) expected_pl = { "account": "Sales - _TC", @@ -117,11 +125,10 @@ class TestProcessPeriodClosingVoucher(ERPNextTestSuite): # Balance sheet balance rpt_type = "Balance Sheet" - self.set_processing_date_status(today(), ppcv.name, rpt_type, parentfield, "Running") - process_individual_date(ppcv.name, today(), rpt_type, parentfield) - bal = frappe.parse_json( - self.get_processing_date_closing_balance(today(), ppcv.name, rpt_type, parentfield) - ) + row_name = self.get_row_name(ppcv.name, rpt_type, parentfield) + self.set_processing_date_status(row_name, "Running") + process_individual_date(ppcv.name, row_name, today(), rpt_type, parentfield) + bal = frappe.parse_json(self.get_processing_date_closing_balance(row_name)) self.assertEqual(len(bal), 1) expected_bs = { "account": "Debtors - _TC", @@ -138,11 +145,10 @@ class TestProcessPeriodClosingVoucher(ERPNextTestSuite): # Opening balance parentfield = "z_opening_balances" rpt_type = "Balance Sheet" - self.set_processing_date_status(today(), ppcv.name, rpt_type, parentfield, "Running") - process_individual_date(ppcv.name, today(), rpt_type, parentfield) - bal = frappe.parse_json( - self.get_processing_date_closing_balance(today(), ppcv.name, rpt_type, parentfield) - ) + row_name = self.get_row_name(ppcv.name, rpt_type, parentfield) + self.set_processing_date_status(row_name, "Running") + process_individual_date(ppcv.name, row_name, today(), rpt_type, parentfield) + bal = frappe.parse_json(self.get_processing_date_closing_balance(row_name)) self.assertEqual(len(bal), 2) opening_cash = next(x for x in bal if x["account"] == "Cash - _TC") expected_opening_cash = { From 5a9d40ce047c3a02c7ae9cdb5104a69f9d303f1c Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Fri, 3 Jul 2026 17:04:51 +0530 Subject: [PATCH 41/91] chore: linter fix (cherry picked from commit a9ffdac8062de9b2e2e68a9c457e9e96e8ced37b) --- .../process_period_closing_voucher.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/erpnext/accounts/doctype/process_period_closing_voucher/process_period_closing_voucher.py b/erpnext/accounts/doctype/process_period_closing_voucher/process_period_closing_voucher.py index 691948cabad..be6f8ddfbbb 100644 --- a/erpnext/accounts/doctype/process_period_closing_voucher/process_period_closing_voucher.py +++ b/erpnext/accounts/doctype/process_period_closing_voucher/process_period_closing_voucher.py @@ -128,7 +128,7 @@ def initialize_parallel_threads(docname: str): # keep transaction on PPCV and PPCVD short # prevents concurrency errors - REPEATABLE READ if not frappe.in_test: - frappe.db.commit() + frappe.db.commit() # nosemgrep else: frappe.db.set_value("Process Period Closing Voucher", docname, "status", "Completed") @@ -276,7 +276,7 @@ def schedule_next_date(docname: str): # keep transaction on PPCV and PPCVD short # prevents concurrency errors - REPEATABLE READ if not frappe.in_test: - frappe.db.commit() + frappe.db.commit() # nosemgrep frappe.enqueue( method="erpnext.accounts.doctype.process_period_closing_voucher.process_period_closing_voucher.process_individual_date", @@ -453,7 +453,7 @@ def summarize_and_post_ledger_entries(docname): # keep transaction on PPCV and PPCVD short # prevents concurrency errors - REPEATABLE READ if not frappe.in_test: - frappe.db.commit() + frappe.db.commit() # nosemgrep frappe.db.set_value("Period Closing Voucher", pcv.name, "gle_processing_status", "Completed") frappe.db.set_value("Process Period Closing Voucher", docname, "status", "Completed") @@ -603,7 +603,7 @@ def process_individual_date(docname: str, row_name, date, report_type, parentfie ) # commit heavy computation before touching PPCV or PPCVD if not frappe.in_test: - frappe.db.commit() + frappe.db.commit() # nosemgrep # chain call schedule_next_date(docname) From 5c6631f6afa79fe620c6b5da2ec8685b8fa5de63 Mon Sep 17 00:00:00 2001 From: MochaMind Date: Mon, 6 Jul 2026 00:00:21 +0530 Subject: [PATCH 42/91] chore: update POT file (#56900) --- erpnext/locale/main.pot | 1910 ++++++++++++++++++++------------------- 1 file changed, 976 insertions(+), 934 deletions(-) diff --git a/erpnext/locale/main.pot b/erpnext/locale/main.pot index ca3bb588a37..8c4a6825a4a 100644 --- a/erpnext/locale/main.pot +++ b/erpnext/locale/main.pot @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ERPNext VERSION\n" "Report-Msgid-Bugs-To: hello@frappe.io\n" -"POT-Creation-Date: 2026-06-28 10:20+0000\n" -"PO-Revision-Date: 2026-06-28 10:20+0000\n" +"POT-Creation-Date: 2026-07-05 10:19+0000\n" +"PO-Revision-Date: 2026-07-05 10:19+0000\n" "Last-Translator: hello@frappe.io\n" "Language-Team: hello@frappe.io\n" "MIME-Version: 1.0\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.16.0\n" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1591 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1641 msgid "" "\n" "\t\t\tThe Batch {0} of an item {1} has negative stock in the warehouse {2}{3}.\n" @@ -94,15 +94,15 @@ msgstr "" msgid " Summary" msgstr "" -#: erpnext/stock/doctype/item/item.py:265 +#: erpnext/stock/doctype/item/item.py:266 msgid "\"Customer Provided Item\" cannot be Purchase Item also" msgstr "" -#: erpnext/stock/doctype/item/item.py:267 +#: erpnext/stock/doctype/item/item.py:268 msgid "\"Customer Provided Item\" cannot have Valuation Rate" msgstr "" -#: erpnext/stock/doctype/item/item.py:366 +#: erpnext/stock/doctype/item/item.py:367 msgid "\"Is Fixed Asset\" cannot be unchecked, as Asset record exists against the item" msgstr "" @@ -267,7 +267,7 @@ msgstr "" msgid "% of materials delivered against this Sales Order" msgstr "" -#: erpnext/controllers/accounts_controller.py:2394 +#: erpnext/controllers/accounts_controller.py:2414 msgid "'Account' in the Accounting section of Customer {0}" msgstr "" @@ -283,7 +283,7 @@ msgstr "" msgid "'Days Since Last Order' must be greater than or equal to zero" msgstr "" -#: erpnext/controllers/accounts_controller.py:2399 +#: erpnext/controllers/accounts_controller.py:2419 msgid "'Default {0} Account' in Company {1}" msgstr "" @@ -301,15 +301,15 @@ msgstr "" msgid "'From Date' must be after 'To Date'" msgstr "" -#: erpnext/stock/doctype/item/item.py:449 +#: erpnext/stock/doctype/item/item.py:450 msgid "'Has Serial No' can not be 'Yes' for non-stock item" msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:143 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:147 msgid "'Inspection Required before Delivery' has disabled for the item {0}, no need to create the QI" msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:134 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:138 msgid "'Inspection Required before Purchase' has disabled for the item {0}, no need to create the QI" msgstr "" @@ -345,23 +345,23 @@ msgstr "" msgid "'{0}' has been already added." msgstr "" -#: erpnext/setup/doctype/company/company.py:304 -#: erpnext/setup/doctype/company/company.py:315 +#: erpnext/setup/doctype/company/company.py:305 +#: erpnext/setup/doctype/company/company.py:316 msgid "'{0}' should be in company currency {1}." msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:174 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:203 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:214 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:106 msgid "(A) Qty After Transaction" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:208 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:219 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:111 msgid "(B) Expected Qty After Transaction" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:223 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:234 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:126 msgid "(C) Total Qty in Queue" msgstr "" @@ -371,7 +371,7 @@ msgid "(C) Total qty in queue" msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:194 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:233 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:244 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:136 msgid "(D) Balance Stock Value" msgstr "" @@ -382,12 +382,12 @@ msgid "(Daily Yield * No of Units Produced) / 100" msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:199 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:238 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:249 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:141 msgid "(E) Balance Stock Value in Queue" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:248 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:259 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:151 msgid "(F) Change in Stock Value" msgstr "" @@ -396,7 +396,7 @@ msgstr "" msgid "(Forecast)" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:253 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:264 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:156 msgid "(G) Sum of Change in Stock Value" msgstr "" @@ -407,7 +407,7 @@ msgstr "" msgid "(Good Units Produced / Total Units Produced) × 100" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:263 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:274 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:166 msgid "(H) Change in Stock Value (FIFO Queue)" msgstr "" @@ -422,17 +422,17 @@ msgstr "" msgid "(Hour Rate / 60) * Actual Operation Time" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:273 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:284 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:176 msgid "(I) Valuation Rate" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:278 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:289 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:181 msgid "(J) Valuation Rate as per FIFO" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:288 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:299 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:191 msgid "(K) Valuation = Value (D) ÷ Qty (A)" msgstr "" @@ -616,7 +616,7 @@ msgstr "" msgid "<0" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:541 +#: erpnext/assets/doctype/asset/asset.py:545 msgid "Cannot create asset.

You're trying to create {0} asset(s) from {2} {3}.
However, only {1} item(s) were purchased and {4} asset(s) already exist against {5}." msgstr "" @@ -792,7 +792,7 @@ msgstr "" msgid "
  • Clearance date must be after cheque date for row(s): {0}
  • " msgstr "" -#: erpnext/controllers/accounts_controller.py:2277 +#: erpnext/controllers/accounts_controller.py:2297 msgid "
  • Item {0} in row(s) {1} billed more than {2}
  • " msgstr "" @@ -809,7 +809,7 @@ msgstr "" msgid "
  • {}
  • " msgstr "" -#: erpnext/controllers/accounts_controller.py:2274 +#: erpnext/controllers/accounts_controller.py:2294 msgid "

    Cannot overbill for the following Items:

    " msgstr "" @@ -854,7 +854,7 @@ msgstr "" msgid "

    Price List Rate has not been set as editable in Selling Settings. In this scenario, setting Update Price List Based On to Price List Rate will prevent auto-updation of Item Price.

    Are you sure you want to continue?" msgstr "" -#: erpnext/controllers/accounts_controller.py:2286 +#: erpnext/controllers/accounts_controller.py:2306 msgid "

    To allow over-billing, please set allowance in Accounts Settings.

    " msgstr "" @@ -939,11 +939,11 @@ msgstr "" msgid "Your Shortcuts" msgstr "" -#: erpnext/accounts/doctype/payment_request/payment_request.py:1135 +#: erpnext/accounts/doctype/payment_request/payment_request.py:1136 msgid "Grand Total: {0}" msgstr "" -#: erpnext/accounts/doctype/payment_request/payment_request.py:1136 +#: erpnext/accounts/doctype/payment_request/payment_request.py:1137 msgid "Outstanding Amount: {0}" msgstr "" @@ -987,18 +987,18 @@ msgid "" "\n" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:213 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:224 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:116 msgid "A - B" msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:189 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:228 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:239 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:131 msgid "A - C" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:355 +#: erpnext/selling/doctype/customer/customer.py:356 msgid "A Customer Group exists with same name please change the Customer name or rename the Customer Group" msgstr "" @@ -1014,7 +1014,7 @@ msgstr "" msgid "A Packing Slip can only be created for Draft Delivery Note." msgstr "" -#: erpnext/accounts/general_ledger.py:827 +#: erpnext/accounts/general_ledger.py:829 msgid "A Period Closing Voucher is already submitted and an Opening Entry can no longer be created. {0} to learn more." msgstr "" @@ -1056,6 +1056,14 @@ msgstr "" msgid "A driver must be set to submit." msgstr "" +#: erpnext/public/js/setup_wizard.js:27 +msgid "A few quick questions so we can set things up the way you work." +msgstr "" + +#: erpnext/public/js/setup_wizard.js:25 +msgid "A little about you" +msgstr "" + #. Description of a DocType #: erpnext/stock/doctype/warehouse/warehouse.json msgid "A logical Warehouse against which stock entries are made." @@ -1171,11 +1179,11 @@ msgstr "" msgid "Abbreviation" msgstr "" -#: erpnext/setup/doctype/company/company.py:239 +#: erpnext/setup/doctype/company/company.py:240 msgid "Abbreviation already used for another company" msgstr "" -#: erpnext/setup/doctype/company/company.py:236 +#: erpnext/setup/doctype/company/company.py:237 msgid "Abbreviation is mandatory" msgstr "" @@ -1237,7 +1245,7 @@ msgid "Accepted Qty in Stock UOM" msgstr "" #. Label of the qty (Float) field in DocType 'Purchase Receipt Item' -#: erpnext/public/js/controllers/transaction.js:2864 +#: erpnext/public/js/controllers/transaction.js:2886 #: erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json msgid "Accepted Quantity" msgstr "" @@ -1397,7 +1405,7 @@ msgid "Account Manager" msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1057 -#: erpnext/controllers/accounts_controller.py:2403 +#: erpnext/controllers/accounts_controller.py:2423 msgid "Account Missing" msgstr "" @@ -1491,8 +1499,8 @@ msgstr "" msgid "Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'" msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:101 -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:107 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:148 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:154 msgid "Account company does not match with the rule company." msgstr "" @@ -1518,15 +1526,15 @@ msgstr "" msgid "Account is not set for the dashboard chart {0}" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:635 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:611 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:217 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1201 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:315 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:316 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:659 msgid "Account is required" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:903 +#: erpnext/assets/doctype/asset/asset.py:907 msgid "Account not Found" msgstr "" @@ -1591,7 +1599,7 @@ msgstr "" msgid "Account {0} does not belong to company {1}" msgstr "" -#: erpnext/setup/doctype/company/company.py:286 +#: erpnext/setup/doctype/company/company.py:287 msgid "Account {0} does not belong to company: {1}" msgstr "" @@ -1623,7 +1631,7 @@ msgstr "" msgid "Account {0} is added in the child company {1}" msgstr "" -#: erpnext/setup/doctype/company/company.py:275 +#: erpnext/setup/doctype/company/company.py:276 msgid "Account {0} is disabled." msgstr "" @@ -1631,7 +1639,7 @@ msgstr "" msgid "Account {0} is frozen" msgstr "" -#: erpnext/controllers/accounts_controller.py:1478 +#: erpnext/controllers/accounts_controller.py:1498 msgid "Account {0} is invalid. Account Currency must be {1}" msgstr "" @@ -1667,7 +1675,7 @@ msgstr "" msgid "Account: {0} is not permitted under Payment Entry" msgstr "" -#: erpnext/controllers/accounts_controller.py:3287 +#: erpnext/controllers/accounts_controller.py:3307 msgid "Account: {0} with currency: {1} can not be selected" msgstr "" @@ -1693,7 +1701,7 @@ msgstr "" #: erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json #: erpnext/accounts/doctype/shipping_rule/shipping_rule.json #: erpnext/buying/doctype/supplier/supplier.json -#: erpnext/desktop_icon/accounting.json +#: erpnext/desktop_icon/accounting.json erpnext/public/js/setup_wizard.js:91 #: erpnext/selling/doctype/customer/customer.json #: erpnext/setup/setup_wizard/data/industry_type.txt:1 #: erpnext/setup/workspace/home/home.json erpnext/stock/doctype/item/item.json @@ -1946,8 +1954,8 @@ msgstr "" msgid "Accounting Entries" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:937 -#: erpnext/assets/doctype/asset/asset.py:952 +#: erpnext/assets/doctype/asset/asset.py:941 +#: erpnext/assets/doctype/asset/asset.py:956 #: erpnext/assets/doctype/asset_capitalization/asset_capitalization.py:546 msgid "Accounting Entry for Asset" msgstr "" @@ -1961,7 +1969,7 @@ msgstr "" msgid "Accounting Entry for Landed Cost Voucher for SCR {0}" msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:838 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:843 msgid "Accounting Entry for Service" msgstr "" @@ -1974,25 +1982,25 @@ msgstr "" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1267 #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1506 #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1528 -#: erpnext/controllers/stock_controller.py:728 -#: erpnext/controllers/stock_controller.py:745 -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:935 +#: erpnext/controllers/stock_controller.py:768 +#: erpnext/controllers/stock_controller.py:785 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:940 #: erpnext/stock/doctype/stock_entry/stock_entry.py:2265 #: erpnext/stock/doctype/stock_entry/stock_entry.py:2279 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:753 msgid "Accounting Entry for Stock" msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:735 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:740 msgid "Accounting Entry for {0}" msgstr "" -#: erpnext/controllers/accounts_controller.py:2444 +#: erpnext/controllers/accounts_controller.py:2464 msgid "Accounting Entry for {0}: {1} can only be made in currency: {2}" msgstr "" #: erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js:193 -#: erpnext/assets/doctype/asset/asset.js:185 +#: erpnext/assets/doctype/asset/asset.js:190 #: erpnext/assets/doctype/asset_repair/asset_repair.js:92 #: erpnext/buying/doctype/supplier/supplier.js:123 #: erpnext/public/js/controllers/stock_controller.js:88 @@ -2057,7 +2065,7 @@ msgstr "" #: erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.json #: erpnext/assets/doctype/asset_category/asset_category.json #: erpnext/setup/doctype/company/company.json -#: erpnext/setup/doctype/company/company.py:445 +#: erpnext/setup/doctype/company/company.py:446 #: erpnext/setup/doctype/customer_group/customer_group.json #: erpnext/setup/doctype/email_digest/email_digest.json #: erpnext/setup/doctype/incoterm/incoterm.json @@ -2218,7 +2226,7 @@ msgstr "" #. Label of the accumulated_depreciation_amount (Currency) field in DocType #. 'Depreciation Schedule' #: erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py:178 -#: erpnext/assets/doctype/asset/asset.js:380 +#: erpnext/assets/doctype/asset/asset.js:385 #: erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json msgid "Accumulated Depreciation Amount" msgstr "" @@ -2490,7 +2498,7 @@ msgstr "" msgid "Actual End Date (via Timesheet)" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:299 +#: erpnext/manufacturing/doctype/work_order/work_order.py:300 msgid "Actual End Date cannot be before Actual Start Date" msgstr "" @@ -2716,13 +2724,13 @@ msgstr "" msgid "Add Raw Materials" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:711 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:687 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1260 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:728 msgid "Add Row" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:227 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:228 #: banking/src/components/features/Settings/MatchingRules.tsx:30 msgid "Add Rule" msgstr "" @@ -2810,7 +2818,7 @@ msgstr "" msgid "Add a charge to the payment entry with the unallocated amount" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:800 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:776 msgid "Add a row with the difference amount" msgstr "" @@ -2876,7 +2884,7 @@ msgstr "" msgid "Added Supplier Role to User {0}." msgstr "" -#: erpnext/controllers/website_list_for_contact.py:307 +#: erpnext/controllers/website_list_for_contact.py:308 msgid "Added {1} Role to User {0}." msgstr "" @@ -3137,7 +3145,7 @@ msgstr "" msgid "Additional Transferred Qty" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:775 +#: erpnext/manufacturing/doctype/work_order/work_order.py:782 msgid "" "Additional Transferred Qty {0}\n" "\t\t\t\t\tcannot be greater than {1}.\n" @@ -3295,7 +3303,7 @@ msgstr "" msgid "Adjustment Against" msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:660 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:664 msgid "Adjustment based on Purchase Invoice rate" msgstr "" @@ -3372,7 +3380,7 @@ msgstr "" #: erpnext/accounts/doctype/pos_invoice/pos_invoice.json #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json -#: erpnext/controllers/accounts_controller.py:286 +#: erpnext/controllers/accounts_controller.py:306 #: erpnext/setup/doctype/company/company.json msgid "Advance Payments" msgstr "" @@ -3745,7 +3753,7 @@ msgstr "" #: erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:165 #: erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:185 #: erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py:169 -#: erpnext/accounts/utils.py:1632 erpnext/public/js/setup_wizard.js:184 +#: erpnext/accounts/utils.py:1632 erpnext/public/js/setup_wizard.js:279 msgid "All Accounts" msgstr "" @@ -3797,21 +3805,21 @@ msgstr "" #: erpnext/patches/v11_0/update_department_lft_rgt.py:9 #: erpnext/patches/v11_0/update_department_lft_rgt.py:11 #: erpnext/patches/v11_0/update_department_lft_rgt.py:16 -#: erpnext/setup/doctype/company/company.py:438 -#: erpnext/setup/doctype/company/company.py:441 -#: erpnext/setup/doctype/company/company.py:446 -#: erpnext/setup/doctype/company/company.py:452 -#: erpnext/setup/doctype/company/company.py:458 -#: erpnext/setup/doctype/company/company.py:464 -#: erpnext/setup/doctype/company/company.py:470 -#: erpnext/setup/doctype/company/company.py:476 -#: erpnext/setup/doctype/company/company.py:482 -#: erpnext/setup/doctype/company/company.py:488 -#: erpnext/setup/doctype/company/company.py:494 -#: erpnext/setup/doctype/company/company.py:500 -#: erpnext/setup/doctype/company/company.py:506 -#: erpnext/setup/doctype/company/company.py:512 -#: erpnext/setup/doctype/company/company.py:518 +#: erpnext/setup/doctype/company/company.py:439 +#: erpnext/setup/doctype/company/company.py:442 +#: erpnext/setup/doctype/company/company.py:447 +#: erpnext/setup/doctype/company/company.py:453 +#: erpnext/setup/doctype/company/company.py:459 +#: erpnext/setup/doctype/company/company.py:465 +#: erpnext/setup/doctype/company/company.py:471 +#: erpnext/setup/doctype/company/company.py:477 +#: erpnext/setup/doctype/company/company.py:483 +#: erpnext/setup/doctype/company/company.py:489 +#: erpnext/setup/doctype/company/company.py:495 +#: erpnext/setup/doctype/company/company.py:501 +#: erpnext/setup/doctype/company/company.py:507 +#: erpnext/setup/doctype/company/company.py:513 +#: erpnext/setup/doctype/company/company.py:519 msgid "All Departments" msgstr "" @@ -3891,7 +3899,7 @@ msgstr "" msgid "All Territories" msgstr "" -#: erpnext/setup/doctype/company/company.py:383 +#: erpnext/setup/doctype/company/company.py:384 msgid "All Warehouses" msgstr "" @@ -3918,11 +3926,11 @@ msgstr "" msgid "All items are already requested" msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1486 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1520 msgid "All items have already been Invoiced/Returned" msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:1193 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:1201 msgid "All items have already been received" msgstr "" @@ -3930,7 +3938,7 @@ msgstr "" msgid "All items have already been transferred for this Work Order." msgstr "" -#: erpnext/public/js/controllers/transaction.js:2993 +#: erpnext/public/js/controllers/transaction.js:3009 msgid "All items in this document already have a linked Quality Inspection." msgstr "" @@ -3956,7 +3964,7 @@ msgstr "" msgid "All the required items (raw materials) will be fetched from BOM and populated in this table. Here you can also change the Source Warehouse for any item. And during the production, you can track transferred raw materials from this table." msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:833 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:836 msgid "All these items have already been Invoiced/Returned" msgstr "" @@ -4529,11 +4537,11 @@ msgstr "" msgid "Allows users to submit Supplier Quotations with zero quantity. Useful when rates are fixed but the quantities are not. Eg. Rate Contracts." msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1184 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1205 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1257 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1291 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1310 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1190 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1211 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1263 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1297 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1316 msgid "Already Imported" msgstr "" @@ -4561,7 +4569,7 @@ msgstr "" #: erpnext/manufacturing/doctype/work_order/work_order.js:158 #: erpnext/manufacturing/doctype/work_order/work_order.js:173 #: erpnext/public/js/utils.js:604 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:339 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:344 msgid "Alternate Item" msgstr "" @@ -4717,7 +4725,7 @@ msgstr "" #: erpnext/accounts/doctype/bank_statement_import_log_column_map/bank_statement_import_log_column_map.json #: erpnext/accounts/doctype/budget_distribution/budget_distribution.json #: erpnext/accounts/doctype/cashier_closing_payments/cashier_closing_payments.json -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:629 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:636 #: erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json #: erpnext/accounts/doctype/payment_entry/payment_entry.json #: erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.json @@ -4773,7 +4781,7 @@ msgstr "" #: erpnext/manufacturing/doctype/bom_item/bom_item.json #: erpnext/manufacturing/doctype/work_order_additional_item/work_order_additional_item.json #: erpnext/manufacturing/doctype/work_order_item/work_order_item.json -#: erpnext/public/js/controllers/transaction.js:536 +#: erpnext/public/js/controllers/transaction.js:558 #: erpnext/selling/doctype/quotation/quotation.js:315 #: erpnext/selling/doctype/quotation_item/quotation_item.json #: erpnext/selling/doctype/sales_order_item/sales_order_item.json @@ -5079,7 +5087,7 @@ msgstr "" msgid "Any" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:49 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:50 msgid "Any debit transaction with the keyword 'Bank Fee'." msgstr "" @@ -5543,7 +5551,7 @@ msgstr "" msgid "As the field {0} is enabled, the value of the field {1} should be more than 1." msgstr "" -#: erpnext/stock/doctype/item/item.py:1093 +#: erpnext/stock/doctype/item/item.py:1094 msgid "As there are existing submitted transactions against item {0}, you can not change the value of {1}." msgstr "" @@ -5693,7 +5701,7 @@ msgstr "" msgid "Asset Category Name" msgstr "" -#: erpnext/stock/doctype/item/item.py:358 +#: erpnext/stock/doctype/item/item.py:359 msgid "Asset Category is mandatory for Fixed Asset item" msgstr "" @@ -5733,7 +5741,7 @@ msgstr "" msgid "Asset Depreciation Schedule {0} for Asset {1} and Finance Book {2} already exists." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:235 +#: erpnext/assets/doctype/asset/asset.py:239 msgid "Asset Depreciation Schedules created/updated:
    {0}

    Please check, edit if needed, and submit the Asset." msgstr "" @@ -5825,7 +5833,7 @@ msgstr "" msgid "Asset Movement Item" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1183 +#: erpnext/assets/doctype/asset/asset.py:1187 msgid "Asset Movement record {0} created" msgstr "" @@ -5887,7 +5895,7 @@ msgstr "" #. Batch Bundle' #. Label of the asset_repair (Link) field in DocType 'Stock Entry' #. Label of a Workspace Sidebar Item -#: erpnext/assets/doctype/asset/asset.js:108 +#: erpnext/assets/doctype/asset/asset.js:113 #: erpnext/assets/doctype/asset_repair/asset_repair.json #: erpnext/assets/workspace/assets/assets.json #: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.json @@ -5939,7 +5947,7 @@ msgstr "" #. Label of the asset_value (Currency) field in DocType 'Asset Capitalization #. Asset Item' #: erpnext/assets/dashboard_fixtures.py:180 -#: erpnext/assets/doctype/asset/asset.js:512 +#: erpnext/assets/doctype/asset/asset.js:517 #: erpnext/assets/doctype/asset_capitalization_asset_item/asset_capitalization_asset_item.json #: erpnext/assets/report/fixed_asset_register/fixed_asset_register.py:209 #: erpnext/assets/report/fixed_asset_register/fixed_asset_register.py:460 @@ -5950,7 +5958,7 @@ msgstr "" #. Name of a DocType #. Label of a Link in the Assets Workspace #. Label of a Workspace Sidebar Item -#: erpnext/assets/doctype/asset/asset.js:100 +#: erpnext/assets/doctype/asset/asset.js:105 #: erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.json #: erpnext/assets/workspace/assets/assets.json #: erpnext/workspace_sidebar/assets.json @@ -5967,11 +5975,11 @@ msgstr "" msgid "Asset Value Analytics" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:277 +#: erpnext/assets/doctype/asset/asset.py:281 msgid "Asset cancelled" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:732 +#: erpnext/assets/doctype/asset/asset.py:736 msgid "Asset cannot be cancelled, as it is already {0}" msgstr "" @@ -5983,15 +5991,15 @@ msgstr "" msgid "Asset capitalized after Asset Capitalization {0} was submitted" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:286 +#: erpnext/assets/doctype/asset/asset.py:290 msgid "Asset created" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1424 +#: erpnext/assets/doctype/asset/asset.py:1428 msgid "Asset created after being split from Asset {0}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:289 +#: erpnext/assets/doctype/asset/asset.py:293 msgid "Asset deleted" msgstr "" @@ -6032,7 +6040,7 @@ msgstr "" msgid "Asset sold" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:264 +#: erpnext/assets/doctype/asset/asset.py:268 msgid "Asset submitted" msgstr "" @@ -6040,7 +6048,7 @@ msgstr "" msgid "Asset transferred to Location {0}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1433 +#: erpnext/assets/doctype/asset/asset.py:1437 msgid "Asset updated after being split into Asset {0}" msgstr "" @@ -6149,6 +6157,10 @@ msgstr "" msgid "Assign to Name" msgstr "" +#: erpnext/templates/pages/projects.html:48 +msgid "Assignment" +msgstr "" + #. Label of the filters_section (Section Break) field in DocType 'Service Level #. Agreement' #: erpnext/support/doctype/service_level_agreement/service_level_agreement.json @@ -6167,7 +6179,7 @@ msgstr "" msgid "At Row #{0}: The picked quantity {1} for the item {2} is greater than available stock {3} in the warehouse {4}." msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1436 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1486 msgid "At Row {0}: In Serial and Batch Bundle {1} must have docstatus as 1 and not 0" msgstr "" @@ -6175,7 +6187,7 @@ msgstr "" msgid "At least one account with exchange gain or loss is required" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1289 +#: erpnext/assets/doctype/asset/asset.py:1293 msgid "At least one asset has to be selected." msgstr "" @@ -6224,7 +6236,7 @@ msgstr "" msgid "At row #{0}: you have selected the Difference Account {1}, which is a Cost of Goods Sold type account. Please select a different account" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1184 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1234 msgid "At row {0}: Batch No is mandatory for Item {1}" msgstr "" @@ -6232,15 +6244,15 @@ msgstr "" msgid "At row {0}: Parent Row No cannot be set for item {1}" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1169 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1219 msgid "At row {0}: Qty is mandatory for the batch {1}" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1176 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1226 msgid "At row {0}: Serial No is mandatory for Item {1}" msgstr "" -#: erpnext/controllers/stock_controller.py:676 +#: erpnext/controllers/stock_controller.py:716 msgid "At row {0}: Serial and Batch Bundle {1} has already created. Please remove the values from the serial no or batch no fields." msgstr "" @@ -6304,11 +6316,11 @@ msgstr "" msgid "Attribute Value" msgstr "" -#: erpnext/stock/doctype/item/item.py:883 +#: erpnext/stock/doctype/item/item.py:884 msgid "Attribute Value {0} is not valid for the selected attribute {1}." msgstr "" -#: erpnext/stock/doctype/item/item.py:1029 +#: erpnext/stock/doctype/item/item.py:1030 msgid "Attribute table is mandatory" msgstr "" @@ -6316,19 +6328,19 @@ msgstr "" msgid "Attribute value: {0} must appear only once" msgstr "" -#: erpnext/stock/doctype/item/item.py:872 +#: erpnext/stock/doctype/item/item.py:873 msgid "Attribute {0} is disabled." msgstr "" -#: erpnext/stock/doctype/item/item.py:860 +#: erpnext/stock/doctype/item/item.py:861 msgid "Attribute {0} is not valid for the selected template." msgstr "" -#: erpnext/stock/doctype/item/item.py:1033 +#: erpnext/stock/doctype/item/item.py:1034 msgid "Attribute {0} selected multiple times in Attributes Table" msgstr "" -#: erpnext/stock/doctype/item/item.py:961 +#: erpnext/stock/doctype/item/item.py:962 msgid "Attributes" msgstr "" @@ -6438,11 +6450,11 @@ msgstr "" msgid "Auto Reconcile" msgstr "" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1037 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1038 msgid "Auto Reconciliation" msgstr "" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:985 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:986 msgid "Auto Reconciliation has started in the background" msgstr "" @@ -6737,7 +6749,7 @@ msgstr "" msgid "Available for Use Date" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:382 +#: erpnext/assets/doctype/asset/asset.py:386 msgid "Available for use date is required" msgstr "" @@ -6749,7 +6761,7 @@ msgstr "" msgid "Available {0}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:488 +#: erpnext/assets/doctype/asset/asset.py:492 msgid "Available-for-use Date should be after purchase date" msgstr "" @@ -6875,7 +6887,7 @@ msgstr "" #: erpnext/selling/doctype/sales_order/sales_order.js:1458 #: erpnext/stock/doctype/material_request/material_request.js:351 #: erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:805 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:810 #: erpnext/stock/report/bom_search/bom_search.py:38 #: erpnext/subcontracting/doctype/subcontracting_inward_order_item/subcontracting_inward_order_item.json #: erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js:525 @@ -7147,7 +7159,7 @@ msgid "BOM and Production" msgstr "" #: erpnext/stock/doctype/material_request/material_request.js:386 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:857 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:862 msgid "BOM does not contain any stock item" msgstr "" @@ -7238,8 +7250,8 @@ msgstr "" #: erpnext/accounts/doctype/bank_statement_import_log_column_map/bank_statement_import_log_column_map.json #: erpnext/accounts/report/account_balance/account_balance.py:36 #: erpnext/accounts/report/general_ledger/general_ledger.html:168 -#: erpnext/accounts/report/purchase_register/purchase_register.py:242 -#: erpnext/accounts/report/sales_register/sales_register.py:278 +#: erpnext/accounts/report/purchase_register/purchase_register.py:258 +#: erpnext/accounts/report/sales_register/sales_register.py:292 #: erpnext/stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.py:71 msgid "Balance" msgstr "" @@ -7504,7 +7516,7 @@ msgstr "" msgid "Bank Charges Account" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:34 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:35 msgid "Bank Charges, Salary, etc." msgstr "" @@ -7546,7 +7558,7 @@ msgstr "" msgid "Bank Draft" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:97 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:98 msgid "Bank Entries Created" msgstr "" @@ -7560,7 +7572,7 @@ msgstr "" #: banking/src/components/features/BankReconciliation/BankEntryModal.tsx:17 #: banking/src/components/features/BankReconciliation/MatchAndReconcile.tsx:478 #: banking/src/components/features/BankReconciliation/MatchAndReconcile.tsx:571 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:269 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:270 #: banking/src/components/features/Settings/KeyboardShortcuts.tsx:14 #: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.json #: erpnext/accounts/doctype/journal_entry/journal_entry.json @@ -7568,7 +7580,7 @@ msgstr "" msgid "Bank Entry" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:319 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:295 msgid "Bank Entry Created" msgstr "" @@ -7578,7 +7590,7 @@ msgstr "" msgid "Bank Entry Type" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:212 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:213 msgid "Bank Fee, Salary, etc." msgstr "" @@ -7727,11 +7739,11 @@ msgstr "" msgid "Bank account cannot be named as {0}" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:700 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:676 msgid "Bank account credit for withdrawal" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:683 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:659 msgid "Bank account debit for deposit" msgstr "" @@ -7782,11 +7794,11 @@ msgstr "" msgid "Barcode Type" msgstr "" -#: erpnext/stock/doctype/item/item.py:526 +#: erpnext/stock/doctype/item/item.py:527 msgid "Barcode {0} already used in Item {1}" msgstr "" -#: erpnext/stock/doctype/item/item.py:541 +#: erpnext/stock/doctype/item/item.py:542 msgid "Barcode {0} is not a valid {1} code" msgstr "" @@ -7908,7 +7920,7 @@ msgstr "" msgid "Based On Value" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:427 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:428 msgid "Based on the above entries, the balance amount (debit or credit) will be set for the last row to balance the journal entry." msgstr "" @@ -7944,7 +7956,7 @@ msgstr "" #: erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py:80 #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:158 #: erpnext/stock/report/stock_ledger/stock_ledger.py:419 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:171 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:182 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:80 #: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.js:19 #: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.py:32 @@ -8024,7 +8036,7 @@ msgstr "" #: erpnext/manufacturing/doctype/job_card/job_card.json #: erpnext/manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:89 #: erpnext/manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.py:115 -#: erpnext/public/js/controllers/transaction.js:2890 +#: erpnext/public/js/controllers/transaction.js:2912 #: erpnext/public/js/utils/barcode_scanner.js:281 #: erpnext/public/js/utils/serial_no_batch_selector.js:449 #: erpnext/stock/doctype/delivery_note_item/delivery_note_item.json @@ -8055,11 +8067,11 @@ msgstr "" msgid "Batch No" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1187 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1237 msgid "Batch No is mandatory" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:3470 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:3520 msgid "Batch No {0} does not exists" msgstr "" @@ -8082,7 +8094,7 @@ msgstr "" msgid "Batch Nos" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2009 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2059 msgid "Batch Nos are created successfully" msgstr "" @@ -8100,7 +8112,7 @@ msgstr "" msgid "Batch Qty" msgstr "" -#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.py:125 +#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.py:126 msgid "Batch Qty updated successfully" msgstr "" @@ -8136,7 +8148,7 @@ msgstr "" msgid "Batch and Serial No" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1002 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1009 msgid "Batch not created for item {} since it does not have a batch series." msgstr "" @@ -8178,7 +8190,7 @@ msgid "Batch-Wise Balance History" msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:164 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:183 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:194 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:86 msgid "Batchwise Valuation" msgstr "" @@ -8204,15 +8216,15 @@ msgstr "" msgid "Below Subscription Plans are of different currency to the party default billing currency/Company currency: {0}" msgstr "" -#: banking/src/components/features/BankReconciliation/BankClearanceSummary.tsx:211 +#: banking/src/components/features/BankReconciliation/BankClearanceSummary.tsx:206 msgid "Below is a list of all accounting entries posted against the bank account {0} between {1} and {2}." msgstr "" -#: banking/src/components/features/BankReconciliation/BankTransactionList.tsx:251 +#: banking/src/components/features/BankReconciliation/BankTransactionList.tsx:246 msgid "Below is a list of all bank transactions imported in the system for the bank account {0} between {1} and {2}." msgstr "" -#: banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx:197 +#: banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx:192 msgid "Below is a list of all entries posted against the bank account {0} which have not been cleared till {1}." msgstr "" @@ -8220,7 +8232,7 @@ msgstr "" #. Label of the bill_date (Date) field in DocType 'Subcontracting Receipt' #: erpnext/accounts/doctype/journal_entry/journal_entry.json #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1207 -#: erpnext/accounts/report/purchase_register/purchase_register.py:214 +#: erpnext/accounts/report/purchase_register/purchase_register.py:230 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json msgid "Bill Date" msgstr "" @@ -8229,7 +8241,7 @@ msgstr "" #. Label of the bill_no (Data) field in DocType 'Subcontracting Receipt' #: erpnext/accounts/doctype/journal_entry/journal_entry.json #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1206 -#: erpnext/accounts/report/purchase_register/purchase_register.py:213 +#: erpnext/accounts/report/purchase_register/purchase_register.py:229 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json msgid "Bill No" msgstr "" @@ -8246,13 +8258,13 @@ msgstr "" #: erpnext/manufacturing/doctype/bom/bom.py:1373 #: erpnext/manufacturing/workspace/manufacturing/manufacturing.json #: erpnext/stock/doctype/material_request/material_request.js:139 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:791 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:796 #: erpnext/workspace_sidebar/subcontracting.json msgid "Bill of Materials" msgstr "" #. Option for the 'Status' (Select) field in DocType 'Timesheet' -#: erpnext/controllers/website_list_for_contact.py:206 +#: erpnext/controllers/website_list_for_contact.py:207 #: erpnext/projects/doctype/timesheet/timesheet.json #: erpnext/projects/doctype/timesheet/timesheet_list.js:9 msgid "Billed" @@ -8347,7 +8359,7 @@ msgstr "" msgid "Billing Address Name" msgstr "" -#: erpnext/controllers/accounts_controller.py:573 +#: erpnext/controllers/accounts_controller.py:593 msgid "Billing Address does not belong to the {0}" msgstr "" @@ -8695,7 +8707,7 @@ msgstr "" msgid "Booked Fixed Asset" msgstr "" -#: erpnext/accounts/general_ledger.py:847 +#: erpnext/accounts/general_ledger.py:849 msgid "Books have been closed till the period ending on {0}" msgstr "" @@ -9434,7 +9446,7 @@ msgstr "" msgid "Can be approved by {0}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2767 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2782 msgid "Can not close Work Order. Since {0} Job Cards are in Work In Progress state." msgstr "" @@ -9468,12 +9480,12 @@ msgid "Can only make payment against unbilled {0}" msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.js:1510 -#: erpnext/controllers/accounts_controller.py:3196 +#: erpnext/controllers/accounts_controller.py:3216 #: erpnext/public/js/controllers/accounts.js:100 msgid "Can refer row only if the charge type is 'On Previous Row Amount' or 'Previous Row Total'" msgstr "" -#: erpnext/setup/doctype/company/company.py:207 +#: erpnext/setup/doctype/company/company.py:208 #: erpnext/stock/doctype/stock_settings/stock_settings.py:183 msgid "Can't change the valuation method, as there are transactions against some items which do not have its own valuation method" msgstr "" @@ -9519,7 +9531,7 @@ msgstr "" msgid "Cannot Calculate Arrival Time as Driver Address is Missing." msgstr "" -#: erpnext/setup/doctype/company/company.py:226 +#: erpnext/setup/doctype/company/company.py:227 msgid "Cannot Change Inventory Account Setting" msgstr "" @@ -9527,9 +9539,9 @@ msgstr "" msgid "Cannot Create Return" msgstr "" -#: erpnext/stock/doctype/item/item.py:681 -#: erpnext/stock/doctype/item/item.py:694 -#: erpnext/stock/doctype/item/item.py:708 +#: erpnext/stock/doctype/item/item.py:682 +#: erpnext/stock/doctype/item/item.py:695 +#: erpnext/stock/doctype/item/item.py:709 msgid "Cannot Merge" msgstr "" @@ -9557,7 +9569,7 @@ msgstr "" msgid "Cannot apply TDS against multiple parties in one entry" msgstr "" -#: erpnext/stock/doctype/item/item.py:361 +#: erpnext/stock/doctype/item/item.py:362 msgid "Cannot be a fixed asset item as Stock Ledger is created." msgstr "" @@ -9577,7 +9589,7 @@ msgstr "" msgid "Cannot cancel as processing of cancelled documents is pending." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1180 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1187 msgid "Cannot cancel because submitted Stock Entry {0} exists" msgstr "" @@ -9601,10 +9613,14 @@ msgstr "" msgid "Cannot cancel transaction for Completed Work Order." msgstr "" -#: erpnext/stock/doctype/item/item.py:981 +#: erpnext/stock/doctype/item/item.py:982 msgid "Cannot change Attributes after stock transaction. Make a new Item and transfer stock to the new Item" msgstr "" +#: erpnext/stock/doctype/item/item.py:1119 +msgid "Cannot change Item {0} from serialized to non-serialized because a Serial and Batch Bundle exists for it. Please delete or cancel the Serial and Batch Bundle first." +msgstr "" + #: erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py:74 msgid "Cannot change Reference Document Type." msgstr "" @@ -9613,11 +9629,11 @@ msgstr "" msgid "Cannot change Service Stop Date for item in row {0}" msgstr "" -#: erpnext/stock/doctype/item/item.py:972 +#: erpnext/stock/doctype/item/item.py:973 msgid "Cannot change Variant properties after stock transaction. You will have to make a new Item to do this." msgstr "" -#: erpnext/setup/doctype/company/company.py:331 +#: erpnext/setup/doctype/company/company.py:332 msgid "Cannot change company's default currency, because there are existing transactions. Transactions must be cancelled to change the default currency." msgstr "" @@ -9645,7 +9661,7 @@ msgstr "" msgid "Cannot create Intercompany {0}. All items in the source {1} have already been fully invoiced. Please check the existing linked {2}s." msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1016 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1021 msgid "Cannot create Stock Reservation Entries for future dated Purchase Receipts." msgstr "" @@ -9683,7 +9699,7 @@ msgstr "" msgid "Cannot delete Serial No {0}, as it is used in stock transactions" msgstr "" -#: erpnext/controllers/accounts_controller.py:3811 +#: erpnext/controllers/accounts_controller.py:3831 msgid "Cannot delete an item which has been ordered" msgstr "" @@ -9700,7 +9716,7 @@ msgstr "" msgid "Cannot disable Serial and Batch No for Item, as there are existing records for serial / batch." msgstr "" -#: erpnext/setup/doctype/company/company.py:561 +#: erpnext/setup/doctype/company/company.py:562 msgid "Cannot disable perpetual inventory, as there are existing Stock Ledger Entries for the company {0}. Please cancel the stock transactions first and try again." msgstr "" @@ -9708,7 +9724,7 @@ msgstr "" msgid "Cannot disable {0} as it may lead to incorrect stock valuation." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:792 +#: erpnext/manufacturing/doctype/work_order/work_order.py:799 msgid "Cannot disassemble more than produced quantity." msgstr "" @@ -9716,7 +9732,7 @@ msgstr "" msgid "Cannot disassemble {0} qty against Stock Entry {1}. Only {2} qty available to disassemble." msgstr "" -#: erpnext/setup/doctype/company/company.py:223 +#: erpnext/setup/doctype/company/company.py:224 msgid "Cannot enable Item-wise Inventory Account, as there are existing Stock Ledger Entries for the company {0} with Warehouse-wise Inventory Account. Please cancel the stock transactions first and try again." msgstr "" @@ -9741,7 +9757,7 @@ msgstr "" msgid "Cannot find Item with this Barcode" msgstr "" -#: erpnext/controllers/accounts_controller.py:3763 +#: erpnext/controllers/accounts_controller.py:3783 msgid "Cannot find a default warehouse for item {0}. Please set one in the Item Master or in Stock Settings." msgstr "" @@ -9749,15 +9765,15 @@ msgstr "" msgid "Cannot merge {0} '{1}' into '{2}' as both have existing accounting entries in different currencies for company '{3}'." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:642 +#: erpnext/manufacturing/doctype/work_order/work_order.py:643 msgid "Cannot produce more Item {0} than Sales Order quantity {1} {2}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1537 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1561 msgid "Cannot produce more item for {0}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1541 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1565 msgid "Cannot produce more than {0} items for {1}" msgstr "" @@ -9765,12 +9781,12 @@ msgstr "" msgid "Cannot receive from customer against negative outstanding" msgstr "" -#: erpnext/controllers/accounts_controller.py:3959 +#: erpnext/controllers/accounts_controller.py:3979 msgid "Cannot reduce quantity than ordered or purchased quantity" msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.js:1523 -#: erpnext/controllers/accounts_controller.py:3211 +#: erpnext/controllers/accounts_controller.py:3231 #: erpnext/public/js/controllers/accounts.js:117 msgid "Cannot refer row number greater than or equal to current row number for this Charge type" msgstr "" @@ -9783,14 +9799,14 @@ msgstr "" msgid "Cannot retrieve link token. Check Error Log for more information" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:368 +#: erpnext/selling/doctype/customer/customer.py:369 msgid "Cannot select a Group type Customer Group. Please select a non-group Customer Group." msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.js:1516 #: erpnext/accounts/doctype/payment_entry/payment_entry.js:1694 #: erpnext/accounts/doctype/payment_entry/payment_entry.py:1848 -#: erpnext/controllers/accounts_controller.py:3201 +#: erpnext/controllers/accounts_controller.py:3221 #: erpnext/public/js/controllers/accounts.js:109 #: erpnext/public/js/controllers/taxes_and_totals.js:555 msgid "Cannot select charge type as 'On Previous Row Amount' or 'On Previous Row Total' for first row" @@ -9804,15 +9820,15 @@ msgstr "" msgid "Cannot set authorization on basis of Discount for {0}" msgstr "" -#: erpnext/stock/doctype/item/item.py:772 +#: erpnext/stock/doctype/item/item.py:773 msgid "Cannot set multiple Item Defaults for a company." msgstr "" -#: erpnext/controllers/accounts_controller.py:3925 +#: erpnext/controllers/accounts_controller.py:3945 msgid "Cannot set quantity less than delivered quantity." msgstr "" -#: erpnext/controllers/accounts_controller.py:3926 +#: erpnext/controllers/accounts_controller.py:3946 msgid "Cannot set quantity less than received quantity." msgstr "" @@ -9828,7 +9844,7 @@ msgstr "" msgid "Cannot submit Job Card {0} while it is On Hold. Please resume and complete the job before submission." msgstr "" -#: erpnext/controllers/accounts_controller.py:3953 +#: erpnext/controllers/accounts_controller.py:3973 msgid "Cannot update rate as item {0} is already ordered or purchased against this quotation" msgstr "" @@ -9861,7 +9877,7 @@ msgstr "" msgid "Capacity Planning" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1166 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1173 msgid "Capacity Planning Error, planned start time can not be same as end time" msgstr "" @@ -9905,7 +9921,7 @@ msgstr "" msgid "Capital Work in Progress" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:223 +#: erpnext/assets/doctype/asset/asset.js:228 msgid "Capitalize Asset" msgstr "" @@ -9914,7 +9930,7 @@ msgstr "" msgid "Capitalize Repair Cost" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:221 +#: erpnext/assets/doctype/asset/asset.js:226 msgid "Capitalize this asset before submitting." msgstr "" @@ -10218,7 +10234,7 @@ msgstr "" msgid "Change this date manually to setup the next synchronization start date" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:158 +#: erpnext/selling/doctype/customer/customer.py:159 msgid "Changed customer name to '{}' as '{}' already exists." msgstr "" @@ -10247,7 +10263,7 @@ msgid "Channel Partner" msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.py:2277 -#: erpnext/controllers/accounts_controller.py:3264 +#: erpnext/controllers/accounts_controller.py:3284 msgid "Charge of type 'Actual' in row {0} cannot be included in Item Rate or Paid Amount" msgstr "" @@ -10297,7 +10313,7 @@ msgstr "" #: erpnext/accounts/doctype/accounts_settings/accounts_settings.json #: erpnext/accounts/doctype/cost_center/cost_center_tree.js:52 #: erpnext/accounts/workspace/invoicing/invoicing.json -#: erpnext/public/js/setup_wizard.js:43 +#: erpnext/public/js/setup_wizard.js:138 #: erpnext/setup/doctype/company/company.js:123 #: erpnext/setup/doctype/company/company.json #: erpnext/setup/workspace/home/home.json @@ -10441,7 +10457,7 @@ msgstr "" #. Label of the reference_date (Date) field in DocType 'Payment Entry' #: erpnext/accounts/doctype/payment_entry/payment_entry.json -#: erpnext/public/js/controllers/transaction.js:2801 +#: erpnext/public/js/controllers/transaction.js:2823 msgid "Cheque/Reference Date" msgstr "" @@ -10499,7 +10515,7 @@ msgstr "" #. Label of the child_row_reference (Data) field in DocType 'Quality #. Inspection' -#: erpnext/public/js/controllers/transaction.js:2896 +#: erpnext/public/js/controllers/transaction.js:2918 #: erpnext/stock/doctype/quality_inspection/quality_inspection.json msgid "Child Row Reference" msgstr "" @@ -10702,7 +10718,7 @@ msgstr "" msgid "Closed Documents" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2690 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2705 msgid "Closed Work Order can not be stopped or Re-opened" msgstr "" @@ -11166,7 +11182,7 @@ msgstr "" #. Label of the company (Link) field in DocType 'Issue' #. Label of the company (Link) field in DocType 'Warranty Claim' #. Label of a Workspace Sidebar Item -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:81 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:82 #: banking/src/pages/BankStatementImporter.tsx:84 #: erpnext/accounts/dashboard_chart_source/account_balance_timeline/account_balance_timeline.js:8 #: erpnext/accounts/doctype/account/account.json @@ -11476,11 +11492,11 @@ msgstr "" msgid "Company" msgstr "" -#: erpnext/public/js/setup_wizard.js:36 +#: erpnext/public/js/setup_wizard.js:131 msgid "Company Abbreviation" msgstr "" -#: erpnext/public/js/setup_wizard.js:174 +#: erpnext/public/js/setup_wizard.js:269 msgid "Company Abbreviation cannot have more than 5 characters" msgstr "" @@ -11541,11 +11557,11 @@ msgstr "" msgid "Company Address Name" msgstr "" -#: erpnext/controllers/accounts_controller.py:4389 +#: erpnext/controllers/accounts_controller.py:4409 msgid "Company Address is missing. You don't have permission to create an Address. Please contact your System Manager." msgstr "" -#: erpnext/controllers/accounts_controller.py:4377 +#: erpnext/controllers/accounts_controller.py:4397 msgid "Company Address is missing. You don't have permission to update it. Please contact your System Manager." msgstr "" @@ -11623,7 +11639,7 @@ msgstr "" msgid "Company Logo" msgstr "" -#: erpnext/public/js/setup_wizard.js:77 +#: erpnext/public/js/setup_wizard.js:172 msgid "Company Name cannot be Company" msgstr "" @@ -11653,7 +11669,7 @@ msgid "Company currencies of both the companies should match for Inter Company T msgstr "" #: erpnext/stock/doctype/material_request/material_request.js:380 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:851 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:856 msgid "Company field is required" msgstr "" @@ -11669,7 +11685,7 @@ msgstr "" msgid "Company is mandatory for generating an invoice. Please set a default company in Global Defaults." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:85 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:86 msgid "Company is required" msgstr "" @@ -11683,7 +11699,7 @@ msgstr "" msgid "Company name not same" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:330 +#: erpnext/assets/doctype/asset/asset.py:334 msgid "Company of asset {0} and purchase document {1} doesn't matches." msgstr "" @@ -11812,7 +11828,7 @@ msgstr "" msgid "Completed Qty" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1455 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1479 msgid "Completed Qty cannot be greater than 'Qty to Manufacture'" msgstr "" @@ -11923,8 +11939,8 @@ msgstr "" msgid "Conditions will be applied on all the selected items combined. " msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:395 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:413 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:396 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:414 msgid "Configure Accounts" msgstr "" @@ -12206,7 +12222,7 @@ msgstr "" msgid "Consumed Qty" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1866 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1881 msgid "Consumed Qty cannot be greater than Reserved Qty for item {0}" msgstr "" @@ -12243,7 +12259,7 @@ msgstr "" msgid "Consumer Products" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:198 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:209 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:101 msgid "Consumption Rate" msgstr "" @@ -12363,7 +12379,7 @@ msgstr "" msgid "Contact Person" msgstr "" -#: erpnext/controllers/accounts_controller.py:585 +#: erpnext/controllers/accounts_controller.py:605 msgid "Contact Person does not belong to the {0}" msgstr "" @@ -12374,7 +12390,7 @@ msgstr "" #. Option for the 'Check' (Select) field in DocType 'Bank Transaction Rule #. Description Conditions' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:200 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:201 #: erpnext/accounts/doctype/bank_transaction_rule_description_conditions/bank_transaction_rule_description_conditions.json msgid "Contains" msgstr "" @@ -12557,23 +12573,23 @@ msgstr "" msgid "Conversion Rate" msgstr "" -#: erpnext/stock/doctype/item/item.py:444 +#: erpnext/stock/doctype/item/item.py:445 msgid "Conversion factor for default Unit of Measure must be 1 in row {0}" msgstr "" -#: erpnext/controllers/stock_controller.py:122 +#: erpnext/controllers/stock_controller.py:158 msgid "Conversion factor for item {0} has been reset to 1.0 as the uom {1} is same as stock uom {2}." msgstr "" -#: erpnext/controllers/accounts_controller.py:2979 +#: erpnext/controllers/accounts_controller.py:2999 msgid "Conversion rate cannot be 0" msgstr "" -#: erpnext/controllers/accounts_controller.py:2986 +#: erpnext/controllers/accounts_controller.py:3006 msgid "Conversion rate is 1.00, but document currency is different from company currency" msgstr "" -#: erpnext/controllers/accounts_controller.py:2982 +#: erpnext/controllers/accounts_controller.py:3002 msgid "Conversion rate must be 1.00 if document currency is same as company currency" msgstr "" @@ -12779,8 +12795,8 @@ msgstr "" #. Label of the cost_center (Link) field in DocType 'Subcontracting Receipt #. Supplied Item' #. Label of a Workspace Sidebar Item -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:591 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:650 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:567 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:626 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1179 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1223 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:593 @@ -12836,7 +12852,7 @@ msgstr "" #: erpnext/accounts/report/purchase_register/purchase_register.js:46 #: erpnext/accounts/report/sales_payment_summary/sales_payment_summary.py:29 #: erpnext/accounts/report/sales_register/sales_register.js:52 -#: erpnext/accounts/report/sales_register/sales_register.py:252 +#: erpnext/accounts/report/sales_register/sales_register.py:266 #: erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:79 #: erpnext/accounts/report/trial_balance/trial_balance.js:49 #: erpnext/assets/doctype/asset/asset.json @@ -12924,7 +12940,7 @@ msgid "Cost Center is required" msgstr "" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1472 -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:903 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:908 msgid "Cost Center is required in row {0} in Taxes table for type {1}" msgstr "" @@ -12944,11 +12960,11 @@ msgstr "" msgid "Cost Center {0} cannot be used for allocation as it is used as main cost center in other allocation record." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:358 +#: erpnext/assets/doctype/asset/asset.py:362 msgid "Cost Center {} doesn't belong to Company {}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:365 +#: erpnext/assets/doctype/asset/asset.py:369 msgid "Cost Center {} is a group cost center and group cost centers cannot be used in transactions" msgstr "" @@ -13089,11 +13105,11 @@ msgstr "" msgid "Could not auto create Customer due to the following missing mandatory field(s):" msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:655 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:656 msgid "Could not create Credit Note automatically, please uncheck 'Issue Credit Note' and submit again" msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:972 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:978 msgid "Could not detect any tables in this PDF. It may be a scanned or image-based statement, which is not supported (no OCR)." msgstr "" @@ -13216,7 +13232,7 @@ msgstr "" msgid "Create Asset Location" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:277 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:278 msgid "Create Bank Entry against" msgstr "" @@ -13394,7 +13410,7 @@ msgstr "" msgid "Create Payment Entry for Consolidated POS Invoices." msgstr "" -#: erpnext/public/js/controllers/transaction.js:543 +#: erpnext/public/js/controllers/transaction.js:565 msgid "Create Payment Request" msgstr "" @@ -13581,12 +13597,12 @@ msgstr "" msgid "Create Users" msgstr "" -#: erpnext/stock/doctype/item/item.js:1011 +#: erpnext/stock/doctype/item/item.js:1097 msgid "Create Variant" msgstr "" -#: erpnext/stock/doctype/item/item.js:816 -#: erpnext/stock/doctype/item/item.js:860 +#: erpnext/stock/doctype/item/item.js:909 +#: erpnext/stock/doctype/item/item.js:946 msgid "Create Variants" msgstr "" @@ -13617,12 +13633,12 @@ msgstr "" msgid "Create a new rule to automatically classify transactions." msgstr "" -#: erpnext/stock/doctype/item/item.js:843 -#: erpnext/stock/doctype/item/item.js:1004 +#: erpnext/stock/doctype/item/item.js:929 +#: erpnext/stock/doctype/item/item.js:1090 msgid "Create a variant with the template image." msgstr "" -#: erpnext/stock/stock_ledger.py:2027 +#: erpnext/stock/stock_ledger.py:2033 msgid "Create an incoming stock transaction for the Item." msgstr "" @@ -13743,7 +13759,7 @@ msgstr "" msgid "Creating User..." msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:36 +#: erpnext/setup/setup_wizard/setup_wizard.py:44 msgid "Creating demo data" msgstr "" @@ -13752,7 +13768,7 @@ msgid "Creating {} out of {} {}" msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:141 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:154 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:165 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:46 msgid "Creation" msgstr "" @@ -13778,11 +13794,11 @@ msgstr "" #. Label of the credit_in_account_currency (Currency) field in DocType 'Journal #. Entry Account' #: banking/src/components/features/ActionLog/ActionLogDialogBody.tsx:199 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:594 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:693 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:570 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:669 #: banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx:133 #: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:140 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:404 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:405 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:596 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:711 #: erpnext/accounts/doctype/account/account.json @@ -13794,8 +13810,8 @@ msgstr "" #: erpnext/accounts/report/cheques_and_deposits_incorrectly_cleared/cheques_and_deposits_incorrectly_cleared.py:146 #: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:431 #: erpnext/accounts/report/general_ledger/general_ledger.html:167 -#: erpnext/accounts/report/purchase_register/purchase_register.py:241 -#: erpnext/accounts/report/sales_register/sales_register.py:277 +#: erpnext/accounts/report/purchase_register/purchase_register.py:257 +#: erpnext/accounts/report/sales_register/sales_register.py:291 #: erpnext/accounts/report/trial_balance/trial_balance.py:530 #: erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.py:212 #: erpnext/accounts/report/voucher_wise_balance/voucher_wise_balance.py:34 @@ -13810,7 +13826,7 @@ msgstr "" msgid "Credit ({0})" msgstr "" -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:643 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:650 msgid "Credit Account" msgstr "" @@ -13887,7 +13903,7 @@ msgstr "" msgid "Credit Limit" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:643 +#: erpnext/selling/doctype/customer/customer.py:645 msgid "Credit Limit Crossed" msgstr "" @@ -13950,7 +13966,7 @@ msgstr "" msgid "Credit Note will update it's own outstanding amount, even if 'Return Against' is specified." msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:652 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:653 msgid "Credit Note {0} has been created automatically" msgstr "" @@ -13958,7 +13974,7 @@ msgstr "" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:383 #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:391 -#: erpnext/controllers/accounts_controller.py:2383 +#: erpnext/controllers/accounts_controller.py:2403 msgid "Credit To" msgstr "" @@ -13967,20 +13983,20 @@ msgstr "" msgid "Credit in Company Currency" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:609 -#: erpnext/selling/doctype/customer/customer.py:664 +#: erpnext/selling/doctype/customer/customer.py:611 +#: erpnext/selling/doctype/customer/customer.py:666 msgid "Credit limit has been crossed for customer {0} ({1}/{2})" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:395 +#: erpnext/selling/doctype/customer/customer.py:396 msgid "Credit limit is already defined for the Company {0}" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:663 +#: erpnext/selling/doctype/customer/customer.py:665 msgid "Credit limit reached for customer {0}" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:213 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:215 msgid "Creditor Turnover Ratio" msgstr "" @@ -14271,7 +14287,7 @@ msgstr "" msgid "Current Qty" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:152 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:154 msgid "Current Ratio" msgstr "" @@ -14459,7 +14475,7 @@ msgstr "" #: erpnext/accounts/report/pos_register/pos_register.py:120 #: erpnext/accounts/report/pos_register/pos_register.py:181 #: erpnext/accounts/report/sales_register/sales_register.js:21 -#: erpnext/accounts/report/sales_register/sales_register.py:187 +#: erpnext/accounts/report/sales_register/sales_register.py:201 #: erpnext/assets/doctype/asset/asset.json #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/supplier/supplier.js:225 @@ -14523,7 +14539,7 @@ msgstr "" #: erpnext/stock/doctype/pick_list/pick_list.json #: erpnext/stock/doctype/serial_no/serial_no.json #: erpnext/stock/doctype/shipment/shipment.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:489 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:494 #: erpnext/stock/doctype/warehouse/warehouse.json #: erpnext/stock/report/delayed_item_report/delayed_item_report.js:36 #: erpnext/stock/report/delayed_item_report/delayed_item_report.py:121 @@ -14735,7 +14751,7 @@ msgstr "" #: erpnext/accounts/report/gross_profit/gross_profit.py:423 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:208 #: erpnext/accounts/report/sales_register/sales_register.js:27 -#: erpnext/accounts/report/sales_register/sales_register.py:202 +#: erpnext/accounts/report/sales_register/sales_register.py:216 #: erpnext/crm/doctype/opportunity/opportunity.json #: erpnext/crm/doctype/prospect/prospect.json #: erpnext/crm/workspace/crm/crm.json @@ -14846,7 +14862,7 @@ msgstr "" #: erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:35 #: erpnext/accounts/report/gross_profit/gross_profit.py:430 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:228 -#: erpnext/accounts/report/sales_register/sales_register.py:193 +#: erpnext/accounts/report/sales_register/sales_register.py:207 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/crm/doctype/opportunity/opportunity.json #: erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.json @@ -14946,7 +14962,7 @@ msgstr "" msgid "Customer Provided Item Cost" msgstr "" -#: erpnext/setup/doctype/company/company.py:487 +#: erpnext/setup/doctype/company/company.py:488 msgid "Customer Service" msgstr "" @@ -15005,7 +15021,7 @@ msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1190 #: erpnext/selling/doctype/sales_order/sales_order.py:436 -#: erpnext/stock/doctype/delivery_note/delivery_note.py:406 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:407 msgid "Customer {0} does not belong to project {1}" msgstr "" @@ -15106,7 +15122,7 @@ msgid "Cycle/Second" msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:204 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:243 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:254 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:146 msgid "D - E" msgstr "" @@ -15350,11 +15366,11 @@ msgstr "" #. Label of the debit_in_account_currency (Currency) field in DocType 'Journal #. Entry Account' #: banking/src/components/features/ActionLog/ActionLogDialogBody.tsx:198 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:593 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:673 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:569 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:649 #: banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx:126 #: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:133 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:403 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:404 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:595 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:696 #: erpnext/accounts/doctype/account/account.json @@ -15366,8 +15382,8 @@ msgstr "" #: erpnext/accounts/report/cheques_and_deposits_incorrectly_cleared/cheques_and_deposits_incorrectly_cleared.py:139 #: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:424 #: erpnext/accounts/report/general_ledger/general_ledger.html:166 -#: erpnext/accounts/report/purchase_register/purchase_register.py:240 -#: erpnext/accounts/report/sales_register/sales_register.py:276 +#: erpnext/accounts/report/purchase_register/purchase_register.py:256 +#: erpnext/accounts/report/sales_register/sales_register.py:290 #: erpnext/accounts/report/trial_balance/trial_balance.py:523 #: erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.py:205 #: erpnext/accounts/report/voucher_wise_balance/voucher_wise_balance.py:27 @@ -15388,7 +15404,7 @@ msgstr "" msgid "Debit / Credit Note Posting Date" msgstr "" -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:633 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:640 msgid "Debit Account" msgstr "" @@ -15460,7 +15476,7 @@ msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1061 #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1072 -#: erpnext/controllers/accounts_controller.py:2383 +#: erpnext/controllers/accounts_controller.py:2403 msgid "Debit To" msgstr "" @@ -15504,11 +15520,11 @@ msgstr "" msgid "Debits" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:170 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:172 msgid "Debt Equity Ratio" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:212 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:214 msgid "Debtor Turnover Ratio" msgstr "" @@ -15618,14 +15634,14 @@ msgstr "" #. Label of the default_advance_paid_account (Link) field in DocType 'Company' #: erpnext/setup/doctype/company/company.json -#: erpnext/setup/doctype/company/company.py:316 +#: erpnext/setup/doctype/company/company.py:317 msgid "Default Advance Paid Account" msgstr "" #. Label of the default_advance_received_account (Link) field in DocType #. 'Company' #: erpnext/setup/doctype/company/company.json -#: erpnext/setup/doctype/company/company.py:305 +#: erpnext/setup/doctype/company/company.py:306 msgid "Default Advance Received Account" msgstr "" @@ -15640,19 +15656,19 @@ msgstr "" msgid "Default BOM" msgstr "" -#: erpnext/stock/doctype/item/item.py:487 +#: erpnext/stock/doctype/item/item.py:488 msgid "Default BOM ({0}) must be active for this item or its template" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2458 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2473 msgid "Default BOM for {0} not found" msgstr "" -#: erpnext/controllers/accounts_controller.py:3997 +#: erpnext/controllers/accounts_controller.py:4017 msgid "Default BOM not found for FG Item {0}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2455 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2470 msgid "Default BOM not found for Item {0} and Project {1}" msgstr "" @@ -15984,15 +16000,15 @@ msgstr "" msgid "Default Unit of Measure" msgstr "" -#: erpnext/stock/doctype/item/item.py:1376 +#: erpnext/stock/doctype/item/item.py:1396 msgid "Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You need to either cancel the linked documents or create a new Item." msgstr "" -#: erpnext/stock/doctype/item/item.py:1359 +#: erpnext/stock/doctype/item/item.py:1379 msgid "Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You will need to create a new Item to use a different Default UOM." msgstr "" -#: erpnext/stock/doctype/item/item.py:1007 +#: erpnext/stock/doctype/item/item.py:1008 msgid "Default Unit of Measure for Variant '{0}' must be same as in Template '{1}'" msgstr "" @@ -16290,7 +16306,7 @@ msgstr "" #. Order' #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/purchase_order/purchase_order_list.js:20 -#: erpnext/controllers/website_list_for_contact.py:212 +#: erpnext/controllers/website_list_for_contact.py:213 #: erpnext/stock/doctype/serial_no/serial_no.json #: erpnext/stock/doctype/shipment/shipment.json #: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.json @@ -16451,7 +16467,7 @@ msgstr "" #: erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.js:22 #: erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:21 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:291 -#: erpnext/accounts/report/sales_register/sales_register.py:245 +#: erpnext/accounts/report/sales_register/sales_register.py:259 #: erpnext/selling/doctype/sales_order/sales_order.js:1048 #: erpnext/selling/doctype/sales_order/sales_order_list.js:81 #: erpnext/selling/doctype/selling_settings/selling_settings.js:52 @@ -16678,7 +16694,7 @@ msgstr "" #. Option for the 'Transaction Type' (Select) field in DocType 'Bank #. Transaction Rule' #: banking/src/components/features/BankReconciliation/BankTransactionList.tsx:95 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:162 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:163 #: banking/src/components/features/BankStatementImporter/CSV/StatementDetails.tsx:247 #: banking/src/components/features/BankStatementImporter/CSV/StatementDetails.tsx:314 #: banking/src/pages/BankStatementImporter.tsx:194 @@ -16727,7 +16743,7 @@ msgstr "" #. Label of the depreciation_amount (Currency) field in DocType 'Depreciation #. Schedule' #: erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py:172 -#: erpnext/assets/doctype/asset/asset.js:379 +#: erpnext/assets/doctype/asset/asset.js:384 #: erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json msgid "Depreciation Amount" msgstr "" @@ -16758,7 +16774,7 @@ msgstr "" #: erpnext/accounts/doctype/journal_entry/journal_entry.json #: erpnext/accounts/doctype/journal_entry_template/journal_entry_template.json #: erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py:190 -#: erpnext/assets/doctype/asset/asset.js:122 +#: erpnext/assets/doctype/asset/asset.js:127 msgid "Depreciation Entry" msgstr "" @@ -16767,7 +16783,7 @@ msgstr "" msgid "Depreciation Entry Posting Status" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1257 +#: erpnext/assets/doctype/asset/asset.py:1261 msgid "Depreciation Entry against asset {0}" msgstr "" @@ -16810,15 +16826,15 @@ msgstr "" msgid "Depreciation Posting Date" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:918 +#: erpnext/assets/doctype/asset/asset.js:927 msgid "Depreciation Posting Date cannot be before Available-for-use Date" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:387 +#: erpnext/assets/doctype/asset/asset.py:391 msgid "Depreciation Row {0}: Depreciation Posting Date cannot be before Available-for-use Date" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:717 +#: erpnext/assets/doctype/asset/asset.py:721 msgid "Depreciation Row {0}: Expected value after useful life must be greater than or equal to {1}" msgstr "" @@ -16847,7 +16863,7 @@ msgstr "" msgid "Depreciation Schedule View" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:482 +#: erpnext/assets/doctype/asset/asset.py:486 msgid "Depreciation cannot be calculated for fully depreciated assets" msgstr "" @@ -16942,7 +16958,7 @@ msgstr "" #. Label of the difference (Currency) field in DocType 'POS Closing Entry #. Detail' #: banking/src/components/features/BankReconciliation/BankBalance.tsx:106 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:792 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:768 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:871 #: erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.json #: erpnext/accounts/doctype/bisect_nodes/bisect_nodes.json @@ -17222,7 +17238,7 @@ msgstr "" msgid "Disabled items cannot be selected in any transaction." msgstr "" -#: erpnext/controllers/accounts_controller.py:911 +#: erpnext/controllers/accounts_controller.py:931 msgid "Disabled pricing rules since this {} is an internal transfer" msgstr "" @@ -17231,7 +17247,7 @@ msgstr "" msgid "Disabled suppliers are hidden from selection in new transactions but remain in historical records" msgstr "" -#: erpnext/controllers/accounts_controller.py:925 +#: erpnext/controllers/accounts_controller.py:945 msgid "Disabled tax included prices since this {} is an internal transfer" msgstr "" @@ -17248,8 +17264,8 @@ msgstr "" #. Option for the 'Purpose' (Select) field in DocType 'Stock Entry' #. Option for the 'Purpose' (Select) field in DocType 'Stock Entry Type' #: erpnext/manufacturing/doctype/work_order/work_order.js:1068 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:387 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:430 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:392 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:435 #: erpnext/stock/doctype/stock_entry/stock_entry.json #: erpnext/stock/doctype/stock_entry_type/stock_entry_type.json msgid "Disassemble" @@ -17550,7 +17566,7 @@ msgstr "" msgid "Dislikes" msgstr "" -#: erpnext/setup/doctype/company/company.py:481 +#: erpnext/setup/doctype/company/company.py:482 msgid "Dispatch" msgstr "" @@ -17814,7 +17830,7 @@ msgstr "" msgid "Do not use Batch-wise Valuation" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:956 +#: erpnext/assets/doctype/asset/asset.js:965 msgid "Do you really want to restore this scrapped asset?" msgstr "" @@ -18153,7 +18169,7 @@ msgstr "" msgid "Duplicate Entry. Please check Authorization Rule {0}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:414 +#: erpnext/assets/doctype/asset/asset.py:418 msgid "Duplicate Finance Book" msgstr "" @@ -18771,7 +18787,7 @@ msgstr "" msgid "Ems(Pica)" msgstr "" -#: erpnext/public/js/controllers/transaction.js:2965 +#: erpnext/public/js/controllers/transaction.js:2981 msgid "Enable {0} on the Item master to proceed with {1} inspection." msgstr "" @@ -18797,7 +18813,7 @@ msgstr "" msgid "Enable Auto Email" msgstr "" -#: erpnext/stock/doctype/item/item.py:1168 +#: erpnext/stock/doctype/item/item.py:1188 msgid "Enable Auto Re-Order" msgstr "" @@ -19130,7 +19146,7 @@ msgstr "" msgid "End Time" msgstr "" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:362 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:367 msgid "End Transit" msgstr "" @@ -19177,7 +19193,7 @@ msgstr "" msgid "Ends With" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:202 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:203 msgid "Ends with" msgstr "" @@ -19247,7 +19263,7 @@ msgstr "" msgid "Enter amount to be redeemed." msgstr "" -#: erpnext/stock/doctype/item/item.js:1173 +#: erpnext/stock/doctype/item/item.js:1259 msgid "Enter an Item Code, the name will be auto-filled the same as Item Code on clicking inside the Item Name field." msgstr "" @@ -19259,11 +19275,11 @@ msgstr "" msgid "Enter customer's phone number" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:927 +#: erpnext/assets/doctype/asset/asset.js:936 msgid "Enter date to scrap asset" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:480 +#: erpnext/assets/doctype/asset/asset.py:484 msgid "Enter depreciation details" msgstr "" @@ -19304,7 +19320,7 @@ msgstr "" msgid "Enter the name of the bank or lending institution before submitting." msgstr "" -#: erpnext/stock/doctype/item/item.js:1199 +#: erpnext/stock/doctype/item/item.js:1285 msgid "Enter the opening stock units." msgstr "" @@ -19335,7 +19351,7 @@ msgstr "" msgid "Entity" msgstr "" -#: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:190 +#: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:182 msgid "Entries below have a posting date after {0} but the clearance date is before {1}." msgstr "" @@ -19399,7 +19415,7 @@ msgstr "" msgid "Error in party matching for Bank Transaction {0}" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:350 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:326 msgid "Error uploading attachments" msgstr "" @@ -19468,7 +19484,7 @@ msgstr "" msgid "Example URL" msgstr "" -#: erpnext/stock/doctype/item/item.py:1099 +#: erpnext/stock/doctype/item/item.py:1100 msgid "Example of a linked document: {0}" msgstr "" @@ -19488,7 +19504,7 @@ msgstr "" msgid "Example: If the transaction amount is 200, then this will be calculated as {} = {}" msgstr "" -#: erpnext/stock/stock_ledger.py:2290 +#: erpnext/stock/stock_ledger.py:2315 msgid "Example: Serial No {0} reserved in {1}." msgstr "" @@ -19546,12 +19562,12 @@ msgstr "" #: erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.json #: erpnext/accounts/doctype/purchase_invoice_advance/purchase_invoice_advance.json #: erpnext/accounts/doctype/sales_invoice_advance/sales_invoice_advance.json -#: erpnext/setup/doctype/company/company.py:674 +#: erpnext/setup/doctype/company/company.py:675 msgid "Exchange Gain/Loss" msgstr "" -#: erpnext/controllers/accounts_controller.py:1784 -#: erpnext/controllers/accounts_controller.py:1869 +#: erpnext/controllers/accounts_controller.py:1804 +#: erpnext/controllers/accounts_controller.py:1889 msgid "Exchange Gain/Loss amount has been booked through {0}" msgstr "" @@ -19651,7 +19667,7 @@ msgstr "" msgid "Excise Entry" msgstr "" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:1525 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:1530 msgid "Excise Invoice" msgstr "" @@ -19861,7 +19877,7 @@ msgstr "" msgid "Expense" msgstr "" -#: erpnext/controllers/stock_controller.py:942 +#: erpnext/controllers/stock_controller.py:982 msgid "Expense / Difference account ({0}) must be a 'Profit or Loss' account" msgstr "" @@ -19909,7 +19925,7 @@ msgstr "" msgid "Expense Account" msgstr "" -#: erpnext/controllers/stock_controller.py:922 +#: erpnext/controllers/stock_controller.py:962 msgid "Expense Account Missing" msgstr "" @@ -19961,7 +19977,7 @@ msgid "Expenses Included In Valuation" msgstr "" #: erpnext/stock/doctype/pick_list/pick_list.py:310 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:513 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:518 msgid "Expired Batches" msgstr "" @@ -20093,7 +20109,7 @@ msgid "FIFO Stock Queue (qty, rate)" msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:179 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:218 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:229 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:121 msgid "FIFO/LIFO Queue" msgstr "" @@ -20116,8 +20132,8 @@ msgstr "" msgid "Failed to Authenticate the API key." msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:37 -#: erpnext/setup/setup_wizard/setup_wizard.py:38 +#: erpnext/setup/setup_wizard/setup_wizard.py:45 +#: erpnext/setup/setup_wizard/setup_wizard.py:46 msgid "Failed to create demo data" msgstr "" @@ -20133,8 +20149,8 @@ msgstr "" msgid "Failed to erase demo data, please delete the demo company manually." msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:16 #: erpnext/setup/setup_wizard/setup_wizard.py:17 +#: erpnext/setup/setup_wizard/setup_wizard.py:18 msgid "Failed to install presets" msgstr "" @@ -20142,7 +20158,12 @@ msgstr "" msgid "Failed to parse MT940 format. Error: {0}" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:264 +#: erpnext/setup/setup_wizard/setup_wizard.py:34 +#: erpnext/setup/setup_wizard/setup_wizard.py:36 +msgid "Failed to personalize your setup" +msgstr "" + +#: erpnext/assets/doctype/asset/asset.js:269 msgid "Failed to post depreciation entries" msgstr "" @@ -20154,20 +20175,20 @@ msgstr "" msgid "Failed to send email for campaign {0} to {1}" msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:26 +#: erpnext/setup/setup_wizard/setup_wizard.py:27 msgid "Failed to set defaults" msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:21 #: erpnext/setup/setup_wizard/setup_wizard.py:22 +#: erpnext/setup/setup_wizard/setup_wizard.py:23 msgid "Failed to setup company" msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:28 +#: erpnext/setup/setup_wizard/setup_wizard.py:29 msgid "Failed to setup defaults" msgstr "" -#: erpnext/setup/doctype/company/company.py:856 +#: erpnext/setup/doctype/company/company.py:857 msgid "Failed to setup defaults for country {0}. Please contact support." msgstr "" @@ -20279,7 +20300,7 @@ msgid "Fetch Value From" msgstr "" #: erpnext/stock/doctype/material_request/material_request.js:372 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:828 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:833 msgid "Fetch exploded BOM (including sub-assemblies)" msgstr "" @@ -20307,7 +20328,7 @@ msgid "Fetching Sales Orders..." msgstr "" #: erpnext/accounts/doctype/dunning/dunning.js:135 -#: erpnext/public/js/controllers/transaction.js:1611 +#: erpnext/public/js/controllers/transaction.js:1633 msgid "Fetching exchange rates ..." msgstr "" @@ -20551,7 +20572,7 @@ msgstr "" msgid "Financial Statements" msgstr "" -#: erpnext/public/js/setup_wizard.js:48 +#: erpnext/public/js/setup_wizard.js:143 msgid "Financial Year Begins On" msgstr "" @@ -20620,15 +20641,15 @@ msgstr "" msgid "Finished Good Item Quantity" msgstr "" -#: erpnext/controllers/accounts_controller.py:3983 +#: erpnext/controllers/accounts_controller.py:4003 msgid "Finished Good Item is not specified for service item {0}" msgstr "" -#: erpnext/controllers/accounts_controller.py:4000 +#: erpnext/controllers/accounts_controller.py:4020 msgid "Finished Good Item {0} Qty can not be zero" msgstr "" -#: erpnext/controllers/accounts_controller.py:3994 +#: erpnext/controllers/accounts_controller.py:4014 msgid "Finished Good Item {0} must be a sub-contracted item" msgstr "" @@ -20674,7 +20695,7 @@ msgid "Finished Good {0} must be a sub-contracted item." msgstr "" #: erpnext/selling/doctype/sales_order/sales_order.js:1437 -#: erpnext/setup/doctype/company/company.py:386 +#: erpnext/setup/doctype/company/company.py:387 msgid "Finished Goods" msgstr "" @@ -20864,7 +20885,7 @@ msgstr "" #. Capitalization Asset Item' #. Label of the fixed_asset_account (Link) field in DocType 'Asset Category #. Account' -#: erpnext/assets/doctype/asset/asset.py:899 +#: erpnext/assets/doctype/asset/asset.py:903 #: erpnext/assets/doctype/asset_capitalization_asset_item/asset_capitalization_asset_item.json #: erpnext/assets/doctype/asset_category_account/asset_category_account.json msgid "Fixed Asset Account" @@ -20875,7 +20896,7 @@ msgstr "" msgid "Fixed Asset Defaults" msgstr "" -#: erpnext/stock/doctype/item/item.py:355 +#: erpnext/stock/doctype/item/item.py:356 msgid "Fixed Asset Item must be a non-stock item." msgstr "" @@ -20886,7 +20907,7 @@ msgstr "" msgid "Fixed Asset Register" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:211 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:213 msgid "Fixed Asset Turnover Ratio" msgstr "" @@ -20968,7 +20989,7 @@ msgstr "" msgid "Following Material Requests have been raised automatically based on Item's re-order level" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:834 +#: erpnext/selling/doctype/customer/customer.py:836 msgid "Following fields are mandatory to create address:" msgstr "" @@ -21025,7 +21046,7 @@ msgstr "" msgid "For Item" msgstr "" -#: erpnext/controllers/stock_controller.py:1645 +#: erpnext/controllers/stock_controller.py:1685 msgid "For Item {0} cannot be received more than {1} qty against the {2} {3}" msgstr "" @@ -21070,7 +21091,7 @@ msgstr "" msgid "For Raw Materials" msgstr "" -#: erpnext/controllers/accounts_controller.py:1449 +#: erpnext/controllers/accounts_controller.py:1469 msgid "For Return Invoices with Stock effect, '0' qty Items are not allowed. Following rows are affected: {0}" msgstr "" @@ -21154,7 +21175,7 @@ msgstr "" msgid "For operation {0} at row {1}, please add raw materials or set a BOM against it." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2837 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2852 msgid "For operation {0}: Quantity ({1}) can not be greater than pending quantity({2})" msgstr "" @@ -21208,12 +21229,12 @@ msgstr "" msgid "For the item {0}, the consumed quantity should be {1} according to the BOM {2}." msgstr "" -#: erpnext/public/js/controllers/transaction.js:1421 +#: erpnext/public/js/controllers/transaction.js:1443 msgctxt "Clear payment terms template and/or payment schedule when due date is changed" msgid "For the new {0} to take effect, would you like to clear the current {1}?" msgstr "" -#: erpnext/controllers/stock_controller.py:443 +#: erpnext/controllers/stock_controller.py:483 msgid "For the {0}, no stock is available for the return in the warehouse {1}." msgstr "" @@ -21833,15 +21854,11 @@ msgstr "" msgid "Future date is not allowed" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:258 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:269 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:161 msgid "G - D" msgstr "" -#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:16 -msgid "GENERAL LEDGER" -msgstr "" - #: banking/src/components/features/BankReconciliation/BankPicker.tsx:127 #: banking/src/components/features/BankReconciliation/SelectedTransactionDetails.tsx:64 msgid "GL Account" @@ -21916,7 +21933,7 @@ msgstr "" #: erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:134 #: erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:220 -#: erpnext/setup/doctype/company/company.py:682 +#: erpnext/setup/doctype/company/company.py:683 msgid "Gain/Loss on Asset Disposal" msgstr "" @@ -22005,7 +22022,7 @@ msgstr "" msgid "Generate Demand" msgstr "" -#: erpnext/public/js/setup_wizard.js:54 +#: erpnext/public/js/setup_wizard.js:149 msgid "Generate Demo Data for Exploration" msgstr "" @@ -22165,11 +22182,11 @@ msgstr "" #: erpnext/stock/doctype/material_request/material_request.js:238 #: erpnext/stock/doctype/purchase_receipt/purchase_receipt.js:144 #: erpnext/stock/doctype/purchase_receipt/purchase_receipt.js:244 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:456 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:503 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:536 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:627 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:795 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:461 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:508 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:541 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:632 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:800 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:165 msgid "Get Items From" msgstr "" @@ -22185,8 +22202,8 @@ msgid "Get Items for Purchase Only" msgstr "" #: erpnext/stock/doctype/material_request/material_request.js:346 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:831 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:844 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:836 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:849 msgid "Get Items from BOM" msgstr "" @@ -22372,7 +22389,7 @@ msgstr "" msgid "Goods" msgstr "" -#: erpnext/setup/doctype/company/company.py:387 +#: erpnext/setup/doctype/company/company.py:388 #: erpnext/stock/doctype/stock_entry/stock_entry_list.js:34 msgid "Goods In Transit" msgstr "" @@ -22510,8 +22527,8 @@ msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json #: erpnext/accounts/doctype/subscription/subscription.json #: erpnext/accounts/report/pos_register/pos_register.py:202 -#: erpnext/accounts/report/purchase_register/purchase_register.py:275 -#: erpnext/accounts/report/sales_register/sales_register.py:305 +#: erpnext/accounts/report/purchase_register/purchase_register.py:291 +#: erpnext/accounts/report/sales_register/sales_register.py:319 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/supplier_quotation/supplier_quotation.json #: erpnext/manufacturing/doctype/production_plan_sales_order/production_plan_sales_order.json @@ -22633,7 +22650,7 @@ msgstr "" msgid "Gross Profit Percent" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:171 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:173 msgid "Gross Profit Ratio" msgstr "" @@ -22743,7 +22760,7 @@ msgstr "" msgid "Growth View" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:268 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:279 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:171 msgid "H - F" msgstr "" @@ -23012,7 +23029,7 @@ msgstr "" msgid "Here are the error logs for the aforementioned failed depreciation entries: {0}" msgstr "" -#: erpnext/stock/stock_ledger.py:2012 +#: erpnext/stock/stock_ledger.py:2018 msgid "Here are the options to proceed:" msgstr "" @@ -23200,6 +23217,10 @@ msgstr "" msgid "How Pricing Rule is applied?" msgstr "" +#: erpnext/public/js/setup_wizard.js:40 +msgid "How big is the team?" +msgstr "" + #. Label of the frequency (Select) field in DocType 'Email Digest' #: erpnext/setup/doctype/email_digest/email_digest.json msgid "How frequently?" @@ -23239,7 +23260,7 @@ msgstr "" msgid "Hrs" msgstr "" -#: erpnext/setup/doctype/company/company.py:493 +#: erpnext/setup/doctype/company/company.py:494 msgid "Human Resources" msgstr "" @@ -23253,12 +23274,12 @@ msgstr "" msgid "Hundredweight (US)" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:283 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:294 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:186 msgid "I - J" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:293 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:304 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:196 msgid "I - K" msgstr "" @@ -23425,7 +23446,7 @@ msgstr "" msgid "If checked, updates inventory; stock and accounting entries are created together. Leave unchecked if a Purchase Receipt is created separately." msgstr "" -#: erpnext/public/js/setup_wizard.js:56 +#: erpnext/public/js/setup_wizard.js:151 msgid "If checked, we will create demo data for you to explore the system. This demo data can be erased later." msgstr "" @@ -23657,7 +23678,7 @@ msgstr "" msgid "If no taxes are set, and Taxes and Charges Template is selected, the system will automatically apply the taxes from the chosen template." msgstr "" -#: erpnext/stock/stock_ledger.py:2022 +#: erpnext/stock/stock_ledger.py:2028 msgid "If not, you can Cancel / Submit this entry" msgstr "" @@ -23675,7 +23696,7 @@ msgstr "" msgid "If rate is zero then item will be treated as \"Free Item\"" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:258 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:259 msgid "If rule matches, then:" msgstr "" @@ -23703,7 +23724,7 @@ msgstr "" msgid "If the account is frozen, entries are allowed to restricted users." msgstr "" -#: erpnext/stock/stock_ledger.py:2015 +#: erpnext/stock/stock_ledger.py:2021 msgid "If the item is transacting as a Zero Valuation Rate item in this entry, please enable 'Allow Zero Valuation Rate' in the {0} Item table." msgstr "" @@ -23790,7 +23811,7 @@ msgstr "" msgid "If yes, then this warehouse will be used to store rejected materials" msgstr "" -#: erpnext/stock/doctype/item/item.js:1185 +#: erpnext/stock/doctype/item/item.js:1271 msgid "If you are maintaining stock of this Item in your Inventory, ERPNext will make a stock ledger entry for each transaction of this item." msgstr "" @@ -23971,7 +23992,7 @@ msgstr "" msgid "Ignores legacy Is Opening field in GL Entry that allows adding opening balance post the system is in use while generating reports" msgstr "" -#: erpnext/stock/doctype/item/item.py:253 +#: erpnext/stock/doctype/item/item.py:254 msgid "Image in the description has been removed. To disable this behavior, uncheck \"{0}\" in {1}." msgstr "" @@ -24264,7 +24285,7 @@ msgstr "" msgid "In this case, the amount will be calculated as 25% of the transaction amount. If the transaction amount is 200, then this will be calculated as 200 * 0.25 = 50." msgstr "" -#: erpnext/stock/doctype/item/item.js:1218 +#: erpnext/stock/doctype/item/item.js:1304 msgid "In this section, you can define Company-wide transaction-related defaults for this Item. Eg. Default Warehouse, Default Price List, Supplier, etc." msgstr "" @@ -24578,7 +24599,7 @@ msgstr "" #: erpnext/stock/report/available_serial_no/available_serial_no.py:146 #: erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py:167 #: erpnext/stock/report/stock_ledger/stock_ledger.py:361 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:193 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:204 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:96 msgid "Incoming Rate" msgstr "" @@ -24609,7 +24630,7 @@ msgstr "" msgid "Incorrect Batch Consumed" msgstr "" -#: erpnext/stock/doctype/item/item.py:583 +#: erpnext/stock/doctype/item/item.py:584 msgid "Incorrect Check in (group) Warehouse for Reorder" msgstr "" @@ -24621,7 +24642,7 @@ msgstr "" msgid "Incorrect Component Quantity" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:390 +#: erpnext/assets/doctype/asset/asset.py:394 #: erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.py:56 msgid "Incorrect Date" msgstr "" @@ -24827,14 +24848,14 @@ msgstr "" msgid "Inspected By" msgstr "" -#: erpnext/controllers/stock_controller.py:1539 +#: erpnext/controllers/stock_controller.py:1579 #: erpnext/manufacturing/doctype/job_card/job_card.py:834 msgid "Inspection Rejected" msgstr "" #. Label of the inspection_required (Check) field in DocType 'Stock Entry' -#: erpnext/controllers/stock_controller.py:1509 -#: erpnext/controllers/stock_controller.py:1511 +#: erpnext/controllers/stock_controller.py:1549 +#: erpnext/controllers/stock_controller.py:1551 #: erpnext/stock/doctype/stock_entry/stock_entry.json msgid "Inspection Required" msgstr "" @@ -24851,7 +24872,7 @@ msgstr "" msgid "Inspection Required before Purchase" msgstr "" -#: erpnext/controllers/stock_controller.py:1524 +#: erpnext/controllers/stock_controller.py:1564 #: erpnext/manufacturing/doctype/job_card/job_card.py:815 msgid "Inspection Submission" msgstr "" @@ -24882,7 +24903,7 @@ msgstr "" msgid "Installation Note Item" msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:606 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:607 msgid "Installation Note {0} has already been submitted" msgstr "" @@ -24907,7 +24928,7 @@ msgstr "" msgid "Installed Qty" msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:15 +#: erpnext/setup/setup_wizard/setup_wizard.py:16 msgid "Installing presets" msgstr "" @@ -24921,11 +24942,11 @@ msgstr "" msgid "Insufficient Capacity" msgstr "" -#: erpnext/controllers/accounts_controller.py:3879 -#: erpnext/controllers/accounts_controller.py:3901 -#: erpnext/controllers/accounts_controller.py:4419 -#: erpnext/controllers/accounts_controller.py:4425 -#: erpnext/controllers/accounts_controller.py:4447 +#: erpnext/controllers/accounts_controller.py:3899 +#: erpnext/controllers/accounts_controller.py:3921 +#: erpnext/controllers/accounts_controller.py:4439 +#: erpnext/controllers/accounts_controller.py:4445 +#: erpnext/controllers/accounts_controller.py:4467 msgid "Insufficient Permissions" msgstr "" @@ -24934,12 +24955,12 @@ msgstr "" #: erpnext/stock/doctype/pick_list/pick_list.py:166 #: erpnext/stock/doctype/pick_list/pick_list.py:1093 #: erpnext/stock/doctype/stock_entry/stock_entry.py:1235 -#: erpnext/stock/serial_batch_bundle.py:1225 erpnext/stock/stock_ledger.py:1703 -#: erpnext/stock/stock_ledger.py:2181 +#: erpnext/stock/serial_batch_bundle.py:1225 erpnext/stock/stock_ledger.py:1709 +#: erpnext/stock/stock_ledger.py:2206 msgid "Insufficient Stock" msgstr "" -#: erpnext/stock/stock_ledger.py:2196 +#: erpnext/stock/stock_ledger.py:2221 msgid "Insufficient Stock for Batch" msgstr "" @@ -25094,7 +25115,7 @@ msgstr "" msgid "Internal Customer Accounting" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:256 +#: erpnext/selling/doctype/customer/customer.py:257 msgid "Internal Customer for company {0} already exists" msgstr "" @@ -25102,7 +25123,7 @@ msgstr "" msgid "Internal Purchase Order" msgstr "" -#: erpnext/controllers/accounts_controller.py:811 +#: erpnext/controllers/accounts_controller.py:831 msgid "Internal Sale or Delivery Reference missing." msgstr "" @@ -25110,7 +25131,7 @@ msgstr "" msgid "Internal Sales Order" msgstr "" -#: erpnext/controllers/accounts_controller.py:813 +#: erpnext/controllers/accounts_controller.py:833 msgid "Internal Sales Reference Missing" msgstr "" @@ -25141,7 +25162,7 @@ msgstr "" msgid "Internal Transfer" msgstr "" -#: erpnext/controllers/accounts_controller.py:822 +#: erpnext/controllers/accounts_controller.py:842 msgid "Internal Transfer Reference Missing" msgstr "" @@ -25165,7 +25186,7 @@ msgstr "" msgid "Internal notes about this customer. Not visible on transactions or the portal." msgstr "" -#: erpnext/controllers/stock_controller.py:1606 +#: erpnext/controllers/stock_controller.py:1646 msgid "Internal transfers can only be done in company's default currency" msgstr "" @@ -25185,8 +25206,8 @@ msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1077 #: erpnext/assets/doctype/asset_category/asset_category.py:69 #: erpnext/assets/doctype/asset_category/asset_category.py:97 -#: erpnext/controllers/accounts_controller.py:3225 -#: erpnext/controllers/accounts_controller.py:3233 +#: erpnext/controllers/accounts_controller.py:3245 +#: erpnext/controllers/accounts_controller.py:3253 msgid "Invalid Account" msgstr "" @@ -25195,7 +25216,7 @@ msgid "Invalid Accounting Dimension" msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.py:402 -#: erpnext/accounts/doctype/payment_request/payment_request.py:1006 +#: erpnext/accounts/doctype/payment_request/payment_request.py:1007 msgid "Invalid Allocated Amount" msgstr "" @@ -25207,7 +25228,11 @@ msgstr "" msgid "Invalid Attribute" msgstr "" -#: erpnext/controllers/accounts_controller.py:625 +#: erpnext/stock/doctype/item/item.js:898 +msgid "Invalid Attribute Values" +msgstr "" + +#: erpnext/controllers/accounts_controller.py:645 msgid "Invalid Auto Repeat Date" msgstr "" @@ -25220,7 +25245,7 @@ msgstr "" msgid "Invalid Barcode. There is no Item attached to this barcode." msgstr "" -#: erpnext/public/js/controllers/transaction.js:3177 +#: erpnext/public/js/controllers/transaction.js:3202 msgid "Invalid Blanket Order for the selected Customer and Item" msgstr "" @@ -25240,13 +25265,13 @@ msgstr "" msgid "Invalid Company for Inter Company Transaction." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:361 -#: erpnext/assets/doctype/asset/asset.py:368 -#: erpnext/controllers/accounts_controller.py:3248 +#: erpnext/assets/doctype/asset/asset.py:365 +#: erpnext/assets/doctype/asset/asset.py:372 +#: erpnext/controllers/accounts_controller.py:3268 msgid "Invalid Cost Center" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:369 +#: erpnext/selling/doctype/customer/customer.py:370 msgid "Invalid Customer Group" msgstr "" @@ -25287,8 +25312,8 @@ msgstr "" msgid "Invalid File Type" msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:325 -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:330 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:329 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:334 msgid "Invalid Formula" msgstr "" @@ -25301,7 +25326,7 @@ msgstr "" msgid "Invalid Item" msgstr "" -#: erpnext/stock/doctype/item/item.py:1514 +#: erpnext/stock/doctype/item/item.py:1534 msgid "Invalid Item Defaults" msgstr "" @@ -25310,12 +25335,12 @@ msgstr "" msgid "Invalid Ledger Entries" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:565 +#: erpnext/assets/doctype/asset/asset.py:569 msgid "Invalid Net Purchase Amount" msgstr "" #: erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.py:77 -#: erpnext/accounts/general_ledger.py:834 +#: erpnext/accounts/general_ledger.py:836 msgid "Invalid Opening Entry" msgstr "" @@ -25357,12 +25382,12 @@ msgstr "" msgid "Invalid Purchase Invoice" msgstr "" -#: erpnext/controllers/accounts_controller.py:3921 -#: erpnext/controllers/accounts_controller.py:3935 +#: erpnext/controllers/accounts_controller.py:3941 +#: erpnext/controllers/accounts_controller.py:3955 msgid "Invalid Qty" msgstr "" -#: erpnext/controllers/accounts_controller.py:1467 +#: erpnext/controllers/accounts_controller.py:1487 msgid "Invalid Quantity" msgstr "" @@ -25378,8 +25403,8 @@ msgstr "" msgid "Invalid Sales Invoices" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:654 -#: erpnext/assets/doctype/asset/asset.py:682 +#: erpnext/assets/doctype/asset/asset.py:658 +#: erpnext/assets/doctype/asset/asset.py:686 msgid "Invalid Schedule" msgstr "" @@ -25421,6 +25446,13 @@ msgstr "" msgid "Invalid condition expression" msgstr "" +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:38 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:41 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:49 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:52 +msgid "Invalid debit/credit formula: {0}" +msgstr "" + #: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:1069 msgid "Invalid file URL" msgstr "" @@ -25433,7 +25465,7 @@ msgstr "" msgid "Invalid lost reason {0}, please create a new lost reason" msgstr "" -#: erpnext/stock/doctype/item/item.py:459 +#: erpnext/stock/doctype/item/item.py:460 msgid "Invalid naming series (. missing) for {0}" msgstr "" @@ -25445,7 +25477,7 @@ msgstr "" msgid "Invalid reference {0} {1}" msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:96 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:143 msgid "Invalid regex pattern." msgstr "" @@ -25467,8 +25499,8 @@ msgstr "" #: erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:109 #: erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:119 -#: erpnext/accounts/general_ledger.py:882 -#: erpnext/accounts/general_ledger.py:892 +#: erpnext/accounts/general_ledger.py:884 +#: erpnext/accounts/general_ledger.py:894 msgid "Invalid value {0} for {1} against account {2}" msgstr "" @@ -25521,7 +25553,7 @@ msgstr "" msgid "Inventory Settings" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:214 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:216 msgid "Inventory Turnover Ratio" msgstr "" @@ -26395,11 +26427,11 @@ msgstr "" msgid "Issuing Date" msgstr "" -#: erpnext/stock/doctype/item/item.py:640 +#: erpnext/stock/doctype/item/item.py:641 msgid "It can take upto few hours for accurate stock values to be visible after merging items." msgstr "" -#: erpnext/public/js/controllers/transaction.js:2558 +#: erpnext/public/js/controllers/transaction.js:2580 msgid "It is needed to fetch Item Details." msgstr "" @@ -26778,7 +26810,7 @@ msgstr "" #: erpnext/manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:86 #: erpnext/manufacturing/report/work_order_stock_report/work_order_stock_report.py:119 #: erpnext/projects/doctype/timesheet/timesheet.js:214 -#: erpnext/public/js/controllers/transaction.js:2852 +#: erpnext/public/js/controllers/transaction.js:2874 #: erpnext/public/js/stock_reservation.js:112 #: erpnext/public/js/stock_reservation.js:318 erpnext/public/js/utils.js:596 #: erpnext/public/js/utils.js:753 @@ -27262,7 +27294,7 @@ msgstr "" #: erpnext/manufacturing/report/production_planning_report/production_planning_report.py:371 #: erpnext/manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:92 #: erpnext/manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.py:138 -#: erpnext/public/js/controllers/transaction.js:2858 +#: erpnext/public/js/controllers/transaction.js:2880 #: erpnext/public/js/utils.js:849 #: erpnext/selling/doctype/quotation_item/quotation_item.json #: erpnext/selling/doctype/sales_order/sales_order.js:1286 @@ -27560,11 +27592,11 @@ msgstr "" msgid "Item Variant Settings" msgstr "" -#: erpnext/stock/doctype/item/item.js:1034 +#: erpnext/stock/doctype/item/item.js:1120 msgid "Item Variant {0} already exists with same attributes" msgstr "" -#: erpnext/stock/doctype/item/item.py:835 +#: erpnext/stock/doctype/item/item.py:836 msgid "Item Variants updated" msgstr "" @@ -27674,7 +27706,7 @@ msgstr "" msgid "Item for row {0} does not match Material Request" msgstr "" -#: erpnext/stock/doctype/item/item.py:894 +#: erpnext/stock/doctype/item/item.py:895 msgid "Item has variants." msgstr "" @@ -27700,7 +27732,7 @@ msgstr "" msgid "Item operation" msgstr "" -#: erpnext/controllers/accounts_controller.py:3975 +#: erpnext/controllers/accounts_controller.py:3995 msgid "Item qty can not be updated as raw materials are already processed." msgstr "" @@ -27723,7 +27755,7 @@ msgstr "" msgid "Item valuation reposting in progress. Report might show incorrect item valuation." msgstr "" -#: erpnext/stock/doctype/item/item.py:1051 +#: erpnext/stock/doctype/item/item.py:1052 msgid "Item variant {0} exists with same attributes" msgstr "" @@ -27743,8 +27775,8 @@ msgstr "" msgid "Item {0} cannot be ordered more than {1} against Blanket Order {2}." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:343 -#: erpnext/stock/doctype/item/item.py:686 +#: erpnext/assets/doctype/asset/asset.py:347 +#: erpnext/stock/doctype/item/item.py:687 msgid "Item {0} does not exist" msgstr "" @@ -27752,7 +27784,7 @@ msgstr "" msgid "Item {0} does not exist in the system or has expired" msgstr "" -#: erpnext/controllers/stock_controller.py:557 +#: erpnext/controllers/stock_controller.py:597 msgid "Item {0} does not exist." msgstr "" @@ -27764,7 +27796,7 @@ msgstr "" msgid "Item {0} has already been returned" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:345 +#: erpnext/assets/doctype/asset/asset.py:349 msgid "Item {0} has been disabled" msgstr "" @@ -27776,7 +27808,7 @@ msgstr "" msgid "Item {0} has no changes in delivered quantity. Please unselect the row if you do not wish to update its quantity." msgstr "" -#: erpnext/stock/doctype/item/item.py:1230 +#: erpnext/stock/doctype/item/item.py:1250 msgid "Item {0} has reached its end of life on {1}" msgstr "" @@ -27788,11 +27820,11 @@ msgstr "" msgid "Item {0} is already reserved/delivered against Sales Order {1}." msgstr "" -#: erpnext/stock/doctype/item/item.py:1250 +#: erpnext/stock/doctype/item/item.py:1270 msgid "Item {0} is cancelled" msgstr "" -#: erpnext/stock/doctype/item/item.py:1234 +#: erpnext/stock/doctype/item/item.py:1254 msgid "Item {0} is disabled" msgstr "" @@ -27804,7 +27836,7 @@ msgstr "" msgid "Item {0} is not a serialized Item" msgstr "" -#: erpnext/stock/doctype/item/item.py:1242 +#: erpnext/stock/doctype/item/item.py:1262 msgid "Item {0} is not a stock Item" msgstr "" @@ -27812,7 +27844,7 @@ msgstr "" msgid "Item {0} is not a subcontracted item" msgstr "" -#: erpnext/stock/doctype/item/item.py:852 +#: erpnext/stock/doctype/item/item.py:853 msgid "Item {0} is not a template item." msgstr "" @@ -27820,7 +27852,7 @@ msgstr "" msgid "Item {0} is not active or end of life has been reached" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:347 +#: erpnext/assets/doctype/asset/asset.py:351 msgid "Item {0} must be a Fixed Asset Item" msgstr "" @@ -27832,7 +27864,7 @@ msgstr "" msgid "Item {0} must be a Sub-contracted Item" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:349 +#: erpnext/assets/doctype/asset/asset.py:353 msgid "Item {0} must be a non-stock item" msgstr "" @@ -27946,11 +27978,11 @@ msgstr "" msgid "Items and Pricing" msgstr "" -#: erpnext/controllers/accounts_controller.py:4233 +#: erpnext/controllers/accounts_controller.py:4253 msgid "Items cannot be updated as Subcontracting Inward Order(s) exist against this Subcontracted Sales Order." msgstr "" -#: erpnext/controllers/accounts_controller.py:4226 +#: erpnext/controllers/accounts_controller.py:4246 msgid "Items cannot be updated as Subcontracting Order is created against the Purchase Order {0}." msgstr "" @@ -27992,7 +28024,7 @@ msgstr "" msgid "Items under this warehouse will be suggested" msgstr "" -#: erpnext/controllers/stock_controller.py:166 +#: erpnext/controllers/stock_controller.py:202 msgid "Items {0} do not exist in the Item master." msgstr "" @@ -28181,7 +28213,7 @@ msgstr "" msgid "Job Worker Warehouse" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2892 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2907 msgid "Job card {0} created" msgstr "" @@ -28232,8 +28264,8 @@ msgstr "" #: erpnext/accounts/doctype/payment_reconciliation_invoice/payment_reconciliation_invoice.json #: erpnext/accounts/print_format/journal_auditing_voucher/journal_auditing_voucher.html:10 #: erpnext/accounts/workspace/invoicing/invoicing.json -#: erpnext/assets/doctype/asset/asset.js:385 -#: erpnext/assets/doctype/asset/asset.js:394 +#: erpnext/assets/doctype/asset/asset.js:390 +#: erpnext/assets/doctype/asset/asset.js:399 #: erpnext/assets/doctype/asset/asset.json #: erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.json #: erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json @@ -28284,7 +28316,7 @@ msgstr "" msgid "Journal Entry {0} does not have account {1} or already matched against other voucher" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:394 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:395 msgid "Journal Template Accounts" msgstr "" @@ -29024,7 +29056,7 @@ msgstr "" msgid "Linked Location" msgstr "" -#: erpnext/stock/doctype/item/item.py:1103 +#: erpnext/stock/doctype/item/item.py:1104 msgid "Linked with submitted documents" msgstr "" @@ -29042,7 +29074,7 @@ msgid "Linking to Supplier Failed. Please try again." msgstr "" #: erpnext/accounts/report/financial_ratios/financial_ratios.js:55 -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:150 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:152 msgid "Liquidity Ratios" msgstr "" @@ -29391,10 +29423,10 @@ msgstr "" msgid "Machine operator errors" msgstr "" -#: erpnext/setup/doctype/company/company.py:720 -#: erpnext/setup/doctype/company/company.py:735 +#: erpnext/setup/doctype/company/company.py:721 #: erpnext/setup/doctype/company/company.py:736 #: erpnext/setup/doctype/company/company.py:737 +#: erpnext/setup/doctype/company/company.py:738 msgid "Main" msgstr "" @@ -29414,7 +29446,7 @@ msgstr "" msgid "Main Item Code" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:138 +#: erpnext/assets/doctype/asset/asset.js:143 msgid "Maintain Asset" msgstr "" @@ -29714,11 +29746,11 @@ msgstr "" msgid "Make project from a template." msgstr "" -#: erpnext/stock/doctype/item/item.js:822 +#: erpnext/stock/doctype/item/item.js:915 msgid "Make {0} Variant" msgstr "" -#: erpnext/stock/doctype/item/item.js:824 +#: erpnext/stock/doctype/item/item.js:916 msgid "Make {0} Variants" msgstr "" @@ -29741,7 +29773,7 @@ msgstr "" msgid "Manage your orders" msgstr "" -#: erpnext/setup/doctype/company/company.py:499 +#: erpnext/setup/doctype/company/company.py:500 msgid "Management" msgstr "" @@ -29966,6 +29998,7 @@ msgstr "" #: erpnext/desktop_icon/manufacturing.json #: erpnext/manufacturing/doctype/production_plan_sub_assembly_item/production_plan_sub_assembly_item.json #: erpnext/manufacturing/workspace/manufacturing/manufacturing.json +#: erpnext/public/js/setup_wizard.js:94 #: erpnext/selling/doctype/sales_order/sales_order_dashboard.py:29 #: erpnext/setup/doctype/company/company.json erpnext/setup/install.py:414 #: erpnext/setup/setup_wizard/data/industry_type.txt:31 @@ -30202,7 +30235,7 @@ msgstr "" msgid "Market Segment" msgstr "" -#: erpnext/setup/doctype/company/company.py:451 +#: erpnext/setup/doctype/company/company.py:452 msgid "Marketing" msgstr "" @@ -30298,7 +30331,7 @@ msgstr "" msgid "Material Consumption for Manufacture" msgstr "" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:683 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:688 msgid "Material Consumption is not set in Manufacturing Settings." msgstr "" @@ -30391,8 +30424,8 @@ msgstr "" #: erpnext/stock/doctype/pick_list/pick_list.json #: erpnext/stock/doctype/pick_list_item/pick_list_item.json #: erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:304 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:460 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:309 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:465 #: erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json #: erpnext/stock/doctype/stock_settings/stock_settings.js:153 #: erpnext/stock/workspace/stock/stock.json @@ -30691,11 +30724,11 @@ msgstr "" #: erpnext/manufacturing/doctype/work_order/work_order.js:1059 #: erpnext/manufacturing/doctype/work_order/work_order.js:1082 #: erpnext/stock/doctype/pick_list/pick_list.js:208 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:399 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:404 msgid "Max: {0}" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:63 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:64 msgid "Maximum Amount" msgstr "" @@ -30786,7 +30819,7 @@ msgstr "" msgid "Megawatt" msgstr "" -#: erpnext/stock/stock_ledger.py:2028 +#: erpnext/stock/stock_ledger.py:2034 msgid "Mention Valuation Rate in the Item master." msgstr "" @@ -31069,15 +31102,15 @@ msgstr "" msgid "Min Qty should be greater than Recurse Over Qty" msgstr "" -#: erpnext/stock/doctype/item/item.js:985 +#: erpnext/stock/doctype/item/item.js:1071 msgid "Min Value: {0}, Max Value: {1}, in Increments of: {2}" msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:62 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:104 msgid "Min amount cannot be greater than max amount." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:58 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:59 msgid "Minimum Amount" msgstr "" @@ -31187,7 +31220,7 @@ msgid "Missing Asset" msgstr "" #: erpnext/accounts/doctype/gl_entry/gl_entry.py:186 -#: erpnext/assets/doctype/asset/asset.py:377 +#: erpnext/assets/doctype/asset/asset.py:381 msgid "Missing Cost Center" msgstr "" @@ -31195,7 +31228,7 @@ msgstr "" msgid "Missing Default in Company" msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:929 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:931 msgid "Missing Dependency" msgstr "" @@ -31203,7 +31236,7 @@ msgstr "" msgid "Missing Filters" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:422 +#: erpnext/assets/doctype/asset/asset.py:426 msgid "Missing Finance Book" msgstr "" @@ -31211,7 +31244,7 @@ msgstr "" msgid "Missing Finished Good" msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:310 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:314 msgid "Missing Formula" msgstr "" @@ -31248,7 +31281,7 @@ msgid "Missing required filter: {0}" msgstr "" #: erpnext/manufacturing/doctype/bom/bom.py:1219 -#: erpnext/manufacturing/doctype/work_order/work_order.py:1563 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1587 msgid "Missing value" msgstr "" @@ -31261,8 +31294,8 @@ msgstr "" #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:216 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:248 -#: erpnext/accounts/report/purchase_register/purchase_register.py:201 -#: erpnext/accounts/report/sales_register/sales_register.py:224 +#: erpnext/accounts/report/purchase_register/purchase_register.py:217 +#: erpnext/accounts/report/sales_register/sales_register.py:238 msgid "Mode Of Payment" msgstr "" @@ -31493,11 +31526,11 @@ msgstr "" msgid "Multiple Accounts" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:283 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:284 msgid "Multiple Accounts (Journal Template)" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:440 +#: erpnext/selling/doctype/customer/customer.py:441 msgid "Multiple Loyalty Programs found for Customer {}. Please select manually." msgstr "" @@ -31523,7 +31556,7 @@ msgstr "" msgid "Multiple company fields available: {0}. Please select manually." msgstr "" -#: erpnext/controllers/accounts_controller.py:1313 +#: erpnext/controllers/accounts_controller.py:1333 msgid "Multiple fiscal years exist for the date {0}. Please set company in Fiscal Year" msgstr "" @@ -31536,7 +31569,7 @@ msgid "Music" msgstr "" #. Label of the must_be_whole_number (Check) field in DocType 'UOM' -#: erpnext/manufacturing/doctype/work_order/work_order.py:1510 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1534 #: erpnext/setup/doctype/uom/uom.json #: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:267 #: erpnext/utilities/transaction_base.py:631 @@ -31678,7 +31711,7 @@ msgstr "" msgid "Negative Stock" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1608 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1658 #: erpnext/stock/serial_batch_bundle.py:1548 msgid "Negative Stock Error" msgstr "" @@ -31816,7 +31849,7 @@ msgstr "" msgid "Net Profit" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:172 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:174 msgid "Net Profit Ratio" msgstr "" @@ -31834,11 +31867,11 @@ msgstr "" msgid "Net Purchase Amount" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:450 +#: erpnext/assets/doctype/asset/asset.py:454 msgid "Net Purchase Amount is mandatory" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:560 +#: erpnext/assets/doctype/asset/asset.py:564 msgid "Net Purchase Amount should be equal to purchase amount of one single Asset." msgstr "" @@ -31937,8 +31970,8 @@ msgstr "" #: erpnext/accounts/doctype/shipping_rule/shipping_rule.json #: erpnext/accounts/doctype/subscription/subscription.json #: erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.json -#: erpnext/accounts/report/purchase_register/purchase_register.py:253 -#: erpnext/accounts/report/sales_register/sales_register.py:285 +#: erpnext/accounts/report/purchase_register/purchase_register.py:269 +#: erpnext/accounts/report/sales_register/sales_register.py:299 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/supplier_quotation/supplier_quotation.json #: erpnext/selling/doctype/quotation/quotation.json @@ -31989,7 +32022,7 @@ msgstr "" msgid "Net Weight UOM" msgstr "" -#: erpnext/controllers/accounts_controller.py:1673 +#: erpnext/controllers/accounts_controller.py:1693 msgid "Net total calculation precision loss" msgstr "" @@ -32166,7 +32199,7 @@ msgstr "" msgid "New Workplace" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:405 +#: erpnext/selling/doctype/customer/customer.py:406 msgid "New credit limit is less than current outstanding amount for the customer. Credit limit has to be atleast {0}" msgstr "" @@ -32297,7 +32330,7 @@ msgstr "" #: erpnext/accounts/doctype/journal_entry/journal_entry.py:1582 #: erpnext/accounts/doctype/journal_entry/journal_entry.py:1642 #: erpnext/accounts/doctype/journal_entry/journal_entry.py:1656 -#: erpnext/stock/doctype/item/item.py:1475 +#: erpnext/stock/doctype/item/item.py:1495 msgid "No Permission" msgstr "" @@ -32330,7 +32363,7 @@ msgstr "" msgid "No Supplier found for Inter Company Transactions which represents company {0}" msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:976 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:982 msgid "No Tables Detected" msgstr "" @@ -32342,7 +32375,7 @@ msgstr "" msgid "No Tax withholding account set for Company {0} in Tax Withholding Category {1}." msgstr "" -#: erpnext/accounts/report/gross_profit/gross_profit.py:990 +#: erpnext/accounts/report/gross_profit/gross_profit.py:996 msgid "No Terms" msgstr "" @@ -32359,12 +32392,12 @@ msgstr "" msgid "No Work Orders were created" msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:827 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:832 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:905 msgid "No accounting entries for the following warehouses" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:412 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:413 msgid "No accounts configured" msgstr "" @@ -32400,7 +32433,7 @@ msgstr "" msgid "No bank transactions found" msgstr "" -#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:495 +#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:497 msgid "No billing email found for customer: {0}" msgstr "" @@ -32474,7 +32507,7 @@ msgstr "" msgid "No items in cart" msgstr "" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1046 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1047 msgid "No matches occurred via auto reconciliation" msgstr "" @@ -32598,7 +32631,7 @@ msgstr "" msgid "No pending Material Requests found to link for the given items." msgstr "" -#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:502 +#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:504 msgid "No primary email found for customer: {0}" msgstr "" @@ -32618,7 +32651,7 @@ msgstr "" msgid "No reconciliation actions found" msgstr "" -#: erpnext/accounts/report/purchase_register/purchase_register.py:45 +#: erpnext/accounts/report/purchase_register/purchase_register.py:46 #: erpnext/accounts/report/sales_register/sales_register.py:46 #: erpnext/crm/report/lead_conversion_time/lead_conversion_time.py:18 msgid "No record found" @@ -32675,7 +32708,7 @@ msgstr "" msgid "No tables were extracted from this PDF." msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:40 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:41 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:48 #: banking/src/components/features/BankReconciliation/TransferModalContent.tsx:40 msgid "No transaction selected" @@ -32897,7 +32930,7 @@ msgstr "" msgid "Note: Item {0} added multiple times" msgstr "" -#: erpnext/controllers/accounts_controller.py:711 +#: erpnext/controllers/accounts_controller.py:731 msgid "Note: Payment Entry will not be created since 'Cash or Bank Account' was not specified" msgstr "" @@ -32905,7 +32938,7 @@ msgstr "" msgid "Note: This Cost Center is a Group. Cannot make accounting entries against groups." msgstr "" -#: erpnext/stock/doctype/item/item.py:677 +#: erpnext/stock/doctype/item/item.py:678 msgid "Note: To merge the items, create a separate Stock Reconciliation for the old item {0}" msgstr "" @@ -33706,16 +33739,16 @@ msgstr "" #. Label of the opening_stock (Float) field in DocType 'Item' #. Option for the 'Purpose' (Select) field in DocType 'Stock Reconciliation' -#: erpnext/stock/doctype/item/item.json erpnext/stock/doctype/item/item.py:334 +#: erpnext/stock/doctype/item/item.json erpnext/stock/doctype/item/item.py:335 #: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json msgid "Opening Stock" msgstr "" -#: erpnext/stock/doctype/item/item.py:339 +#: erpnext/stock/doctype/item/item.py:340 msgid "Opening Stock entry created with zero valuation rate: {0}" msgstr "" -#: erpnext/stock/doctype/item/item.py:347 +#: erpnext/stock/doctype/item/item.py:348 msgid "Opening Stock entry created: {0}" msgstr "" @@ -33845,7 +33878,7 @@ msgstr "" msgid "Operation Time" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1572 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1596 msgid "Operation Time must be greater than 0 for Operation {0}" msgstr "" @@ -33882,7 +33915,7 @@ msgstr "" #: erpnext/manufacturing/doctype/bom/bom.json #: erpnext/manufacturing/doctype/work_order/work_order.js:325 #: erpnext/manufacturing/doctype/work_order/work_order.json -#: erpnext/setup/doctype/company/company.py:469 +#: erpnext/setup/doctype/company/company.py:470 #: erpnext/setup/doctype/email_digest/email_digest.json #: erpnext/templates/generators/bom.html:61 msgid "Operations" @@ -34425,8 +34458,8 @@ msgstr "" #: erpnext/accounts/report/accounts_receivable/accounts_receivable.html:141 #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1220 #: erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:167 -#: erpnext/accounts/report/purchase_register/purchase_register.py:289 -#: erpnext/accounts/report/sales_register/sales_register.py:319 +#: erpnext/accounts/report/purchase_register/purchase_register.py:305 +#: erpnext/accounts/report/sales_register/sales_register.py:333 msgid "Outstanding Amount" msgstr "" @@ -34471,7 +34504,7 @@ msgstr "" msgid "Over Billing Allowance (%)" msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1343 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1377 msgid "Over Billing Allowance exceeded for Purchase Receipt Item {0} ({1}) by {2}%" msgstr "" @@ -34494,7 +34527,7 @@ msgstr "" msgid "Over Picking Allowance (%)" msgstr "" -#: erpnext/controllers/stock_controller.py:1776 +#: erpnext/controllers/stock_controller.py:1816 msgid "Over Receipt" msgstr "" @@ -34519,7 +34552,7 @@ msgstr "" msgid "Overbilling of {0} {1} ignored for item {2} because you have {3} role." msgstr "" -#: erpnext/controllers/accounts_controller.py:2191 +#: erpnext/controllers/accounts_controller.py:2211 msgid "Overbilling of {} ignored because you have {} role." msgstr "" @@ -34613,7 +34646,7 @@ msgstr "" #: erpnext/accounts/report/sales_payment_summary/sales_payment_summary.py:23 #: erpnext/accounts/report/sales_payment_summary/sales_payment_summary.py:39 #: erpnext/accounts/report/sales_register/sales_register.js:46 -#: erpnext/accounts/report/sales_register/sales_register.py:236 +#: erpnext/accounts/report/sales_register/sales_register.py:250 #: erpnext/crm/report/lead_details/lead_details.py:45 msgid "Owner" msgstr "" @@ -34668,7 +34701,7 @@ msgstr "" msgid "PDF Tables" msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:928 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:930 msgid "PDF statement support requires the 'pdfplumber' library to be installed." msgstr "" @@ -35027,7 +35060,7 @@ msgstr "" msgid "Packed Items" msgstr "" -#: erpnext/controllers/stock_controller.py:1610 +#: erpnext/controllers/stock_controller.py:1650 msgid "Packed Items cannot be transferred internally" msgstr "" @@ -35064,7 +35097,7 @@ msgstr "" msgid "Packing Slip Item" msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:622 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:623 msgid "Packing Slip(s) cancelled" msgstr "" @@ -35269,7 +35302,7 @@ msgstr "" msgid "Parent Company" msgstr "" -#: erpnext/setup/doctype/company/company.py:604 +#: erpnext/setup/doctype/company/company.py:605 msgid "Parent Company must be a group company" msgstr "" @@ -35578,16 +35611,16 @@ msgstr "" #. Label of the party (Dynamic Link) field in DocType 'Appointment' #. Label of the party_name (Dynamic Link) field in DocType 'Opportunity' #. Label of the party_name (Dynamic Link) field in DocType 'Quotation' -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:589 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:735 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:747 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:565 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:711 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:723 #: banking/src/components/features/BankReconciliation/MatchAndReconcile.tsx:752 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:185 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:197 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:552 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:562 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:359 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:369 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:360 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:370 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:591 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:776 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:788 @@ -35675,7 +35708,7 @@ msgstr "" msgid "Party Account No. (Bank Statement)" msgstr "" -#: erpnext/controllers/accounts_controller.py:2475 +#: erpnext/controllers/accounts_controller.py:2495 msgid "Party Account {0} currency ({1}) and document currency ({2}) should be same" msgstr "" @@ -35802,10 +35835,10 @@ msgstr "" #. Label of the party_type (Select) field in DocType 'Party Specific Item' #. Name of a DocType #. Label of the party_type (Link) field in DocType 'Party Type' -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:614 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:590 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:170 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:409 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:292 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:293 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:640 #: erpnext/accounts/doctype/bank_account/bank_account.json #: erpnext/accounts/doctype/bank_transaction/bank_transaction.json @@ -35858,7 +35891,7 @@ msgstr "" msgid "Party Type and Party is mandatory for {0} account" msgstr "" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:177 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:178 msgid "Party Type and Party is required for Receivable / Payable account {0}" msgstr "" @@ -35872,7 +35905,7 @@ msgstr "" msgid "Party User" msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:72 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:114 msgid "Party account is required to create a payment entry." msgstr "" @@ -35889,11 +35922,11 @@ msgstr "" msgid "Party is required" msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:69 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:111 msgid "Party is required create a payment entry." msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:66 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:108 msgid "Party type is required to create a payment entry." msgstr "" @@ -35920,7 +35953,7 @@ msgstr "" msgid "Passport Number" msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:941 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:947 msgid "Password Required" msgstr "" @@ -35999,8 +36032,8 @@ msgstr "" #: erpnext/accounts/report/accounts_payable/accounts_payable.js:50 #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1157 #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:209 -#: erpnext/accounts/report/purchase_register/purchase_register.py:194 -#: erpnext/accounts/report/purchase_register/purchase_register.py:235 +#: erpnext/accounts/report/purchase_register/purchase_register.py:210 +#: erpnext/accounts/report/purchase_register/purchase_register.py:251 msgid "Payable Account" msgstr "" @@ -36134,7 +36167,7 @@ msgstr "" #. Order' #. Label of a Link in the Invoicing Workspace #. Label of a Workspace Sidebar Item -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:270 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:271 #: erpnext/accounts/doctype/accounts_settings/accounts_settings.js:59 #: erpnext/accounts/doctype/bank_clearance_detail/bank_clearance_detail.json #: erpnext/accounts/doctype/bank_transaction_payments/bank_transaction_payments.json @@ -36179,7 +36212,7 @@ msgstr "" msgid "Payment Entry is already created" msgstr "" -#: erpnext/controllers/accounts_controller.py:1624 +#: erpnext/controllers/accounts_controller.py:1644 msgid "Payment Entry {0} is linked against Order {1}, check if it should be pulled as advance in this invoice." msgstr "" @@ -36459,7 +36492,7 @@ msgstr "" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json #: erpnext/buying/doctype/purchase_order/purchase_order.json -#: erpnext/controllers/accounts_controller.py:2757 +#: erpnext/controllers/accounts_controller.py:2777 #: erpnext/selling/doctype/quotation/quotation.json #: erpnext/selling/doctype/sales_order/sales_order.json msgid "Payment Schedule" @@ -36469,7 +36502,7 @@ msgstr "" msgid "Payment Schedule based Payment Requests cannot be created because a Payment Entry already exists for this document." msgstr "" -#: erpnext/public/js/controllers/transaction.js:507 +#: erpnext/public/js/controllers/transaction.js:529 msgid "Payment Schedules" msgstr "" @@ -36491,7 +36524,7 @@ msgstr "" #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1210 #: erpnext/accounts/report/gross_profit/gross_profit.py:449 #: erpnext/accounts/workspace/invoicing/invoicing.json -#: erpnext/public/js/controllers/transaction.js:522 +#: erpnext/public/js/controllers/transaction.js:544 #: erpnext/selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py:30 #: erpnext/workspace_sidebar/accounts_setup.json msgid "Payment Term" @@ -36923,7 +36956,7 @@ msgstr "" msgid "Period Based On" msgstr "" -#: erpnext/accounts/general_ledger.py:850 +#: erpnext/accounts/general_ledger.py:852 msgid "Period Closed" msgstr "" @@ -37101,6 +37134,10 @@ msgstr "" msgid "Personal Email" msgstr "" +#: erpnext/setup/setup_wizard/setup_wizard.py:33 +msgid "Personalizing your setup" +msgstr "" + #. Option for the 'Fuel Type' (Select) field in DocType 'Vehicle' #: erpnext/setup/doctype/vehicle/vehicle.json msgid "Petrol" @@ -37549,7 +37586,7 @@ msgstr "" msgid "Please add a Temporary Opening account in Chart of Accounts" msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:77 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:119 msgid "Please add an account for the Bank Entry rule." msgstr "" @@ -37573,11 +37610,11 @@ msgstr "" msgid "Please add the account to root level Company - {}" msgstr "" -#: erpnext/controllers/website_list_for_contact.py:301 +#: erpnext/controllers/website_list_for_contact.py:302 msgid "Please add {1} role to user {0}." msgstr "" -#: erpnext/controllers/stock_controller.py:1787 +#: erpnext/controllers/stock_controller.py:1827 msgid "Please adjust the qty or edit {0} to proceed." msgstr "" @@ -37599,7 +37636,7 @@ msgid "Please cancel related transaction." msgstr "" #: erpnext/assets/doctype/asset/asset.js:86 -#: erpnext/assets/doctype/asset/asset.py:249 +#: erpnext/assets/doctype/asset/asset.py:253 msgid "Please capitalize this asset before submitting." msgstr "" @@ -37648,11 +37685,11 @@ msgstr "" msgid "Please complete the job first before entering Pending Quantity" msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:80 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:122 msgid "Please configure accounts for the Bank Entry rule." msgstr "" -#: erpnext/selling/doctype/customer/customer.py:635 +#: erpnext/selling/doctype/customer/customer.py:637 msgid "Please contact any of the following users to extend the credit limits for {0}: {1}" msgstr "" @@ -37660,7 +37697,7 @@ msgstr "" msgid "Please contact any of the following users to {} this transaction." msgstr "" -#: erpnext/selling/doctype/customer/customer.py:628 +#: erpnext/selling/doctype/customer/customer.py:630 msgid "Please contact your administrator to extend the credit limits for {0}." msgstr "" @@ -37680,15 +37717,15 @@ msgstr "" msgid "Please create a new Accounting Dimension if required." msgstr "" -#: erpnext/controllers/accounts_controller.py:812 +#: erpnext/controllers/accounts_controller.py:832 msgid "Please create purchase from internal sale or delivery document itself" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:460 +#: erpnext/assets/doctype/asset/asset.py:464 msgid "Please create purchase receipt or purchase invoice for the item {0}" msgstr "" -#: erpnext/stock/doctype/item/item.py:705 +#: erpnext/stock/doctype/item/item.py:706 msgid "Please delete Product Bundle {0}, before merging {1} into {2}" msgstr "" @@ -37696,7 +37733,7 @@ msgstr "" msgid "Please disable workflow temporarily for Journal Entry {0}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:564 +#: erpnext/assets/doctype/asset/asset.py:568 msgid "Please do not book expense of multiple assets against one single Asset." msgstr "" @@ -37782,7 +37819,7 @@ msgstr "" msgid "Please enter Item Code to get Batch Number" msgstr "" -#: erpnext/public/js/controllers/transaction.js:3034 +#: erpnext/public/js/controllers/transaction.js:3059 msgid "Please enter Item Code to get batch no" msgstr "" @@ -37863,7 +37900,7 @@ msgstr "" msgid "Please enter company name first" msgstr "" -#: erpnext/controllers/accounts_controller.py:2976 +#: erpnext/controllers/accounts_controller.py:2996 msgid "Please enter default currency in Company Master" msgstr "" @@ -37907,7 +37944,7 @@ msgstr "" msgid "Please enter the {schedule_date}." msgstr "" -#: erpnext/public/js/setup_wizard.js:97 +#: erpnext/public/js/setup_wizard.js:192 msgid "Please enter valid Financial Year Start and End Dates" msgstr "" @@ -37963,7 +38000,7 @@ msgstr "" msgid "Please make sure you really want to delete all the transactions for {0}. Your master data will remain as it is. This action cannot be undone." msgstr "" -#: erpnext/stock/doctype/item/item.js:728 +#: erpnext/stock/doctype/item/item.js:735 msgid "Please mention 'Weight UOM' along with Weight." msgstr "" @@ -38057,7 +38094,7 @@ msgstr "" msgid "Please select Company and Posting Date to getting entries" msgstr "" -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:744 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:751 #: erpnext/manufacturing/doctype/plant_floor/plant_floor.js:28 msgid "Please select Company first" msgstr "" @@ -38072,7 +38109,7 @@ msgstr "" msgid "Please select Customer first" msgstr "" -#: erpnext/setup/doctype/company/company.py:535 +#: erpnext/setup/doctype/company/company.py:536 msgid "Please select Existing Company for creating Chart of Accounts" msgstr "" @@ -38081,8 +38118,8 @@ msgstr "" msgid "Please select Finished Good Item for Service Item {0}" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:753 -#: erpnext/assets/doctype/asset/asset.js:768 +#: erpnext/assets/doctype/asset/asset.js:762 +#: erpnext/assets/doctype/asset/asset.js:777 msgid "Please select Item Code first" msgstr "" @@ -38106,7 +38143,7 @@ msgstr "" msgid "Please select Posting Date before selecting Party" msgstr "" -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:745 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:752 msgid "Please select Posting Date first" msgstr "" @@ -38118,7 +38155,7 @@ msgstr "" msgid "Please select Qty against item {0}" msgstr "" -#: erpnext/stock/doctype/item/item.py:371 +#: erpnext/stock/doctype/item/item.py:372 msgid "Please select Sample Retention Warehouse in Stock Settings first" msgstr "" @@ -38138,7 +38175,7 @@ msgstr "" msgid "Please select Subcontracting Order instead of Purchase Order {0}" msgstr "" -#: erpnext/controllers/accounts_controller.py:2832 +#: erpnext/controllers/accounts_controller.py:2852 msgid "Please select Unrealized Profit / Loss account or add default Unrealized Profit / Loss account account for company {0}" msgstr "" @@ -38155,7 +38192,7 @@ msgstr "" #: erpnext/manufacturing/doctype/bom/bom.js:730 #: erpnext/manufacturing/doctype/bom/bom.py:279 #: erpnext/public/js/controllers/accounts.js:274 -#: erpnext/public/js/controllers/transaction.js:3333 +#: erpnext/public/js/controllers/transaction.js:3358 msgid "Please select a Company first." msgstr "" @@ -38232,7 +38269,7 @@ msgstr "" msgid "Please select a row to create a Reposting Entry" msgstr "" -#: erpnext/accounts/report/purchase_register/purchase_register.py:35 +#: erpnext/accounts/report/purchase_register/purchase_register.py:36 msgid "Please select a supplier for fetching payments." msgstr "" @@ -38268,11 +38305,11 @@ msgstr "" msgid "Please select at least one row to fix" msgstr "" -#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.js:50 +#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.js:51 msgid "Please select at least one row with difference value" msgstr "" -#: erpnext/public/js/controllers/transaction.js:550 +#: erpnext/public/js/controllers/transaction.js:572 msgid "Please select at least one schedule." msgstr "" @@ -38372,7 +38409,7 @@ msgstr "" msgid "Please select {0} first" msgstr "" -#: erpnext/public/js/controllers/transaction.js:122 +#: erpnext/public/js/controllers/transaction.js:150 msgid "Please set 'Apply Additional Discount On'" msgstr "" @@ -38482,7 +38519,7 @@ msgstr "" msgid "Please set a Company" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:374 +#: erpnext/assets/doctype/asset/asset.py:378 msgid "Please set a Cost Center for the Asset or set an Asset Depreciation Cost Center for the Company {}" msgstr "" @@ -38507,7 +38544,7 @@ msgstr "" msgid "Please set an Address on the Company '%s'" msgstr "" -#: erpnext/controllers/stock_controller.py:917 +#: erpnext/controllers/stock_controller.py:957 msgid "Please set an Expense Account in the Items table" msgstr "" @@ -38551,11 +38588,11 @@ msgstr "" msgid "Please set default UOM in Stock Settings" msgstr "" -#: erpnext/controllers/stock_controller.py:776 +#: erpnext/controllers/stock_controller.py:816 msgid "Please set default cost of goods sold account in company {0} for booking rounding gain and loss during stock transfer" msgstr "" -#: erpnext/controllers/stock_controller.py:231 +#: erpnext/controllers/stock_controller.py:267 msgid "Please set default inventory account for item {0}, or their item group or brand." msgstr "" @@ -38568,15 +38605,15 @@ msgstr "" msgid "Please set filter based on Item or Warehouse" msgstr "" -#: erpnext/controllers/accounts_controller.py:2391 +#: erpnext/controllers/accounts_controller.py:2411 msgid "Please set one of the following:" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:645 +#: erpnext/assets/doctype/asset/asset.py:649 msgid "Please set opening number of booked depreciations" msgstr "" -#: erpnext/public/js/controllers/transaction.js:2701 +#: erpnext/public/js/controllers/transaction.js:2723 msgid "Please set recurring after saving" msgstr "" @@ -38635,7 +38672,7 @@ msgstr "" msgid "Please set {0} in Company {1} to account for Exchange Gain / Loss" msgstr "" -#: erpnext/controllers/accounts_controller.py:593 +#: erpnext/controllers/accounts_controller.py:613 msgid "Please set {0} to {1}, the same account that was used in the original invoice {2}." msgstr "" @@ -38657,7 +38694,7 @@ msgstr "" msgid "Please specify Company to proceed" msgstr "" -#: erpnext/controllers/accounts_controller.py:3207 +#: erpnext/controllers/accounts_controller.py:3227 #: erpnext/public/js/controllers/accounts.js:114 msgid "Please specify a valid Row ID for row {0} in table {1}" msgstr "" @@ -38829,7 +38866,7 @@ msgstr "" #: banking/src/components/features/ActionLog/ActionLogDialogBody.tsx:398 #: banking/src/components/features/BankReconciliation/BankClearanceSummary.tsx:125 #: banking/src/components/features/BankReconciliation/BankClearanceSummary.tsx:319 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:390 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:366 #: banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx:86 #: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:147 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:459 @@ -38873,8 +38910,8 @@ msgstr "" #: erpnext/accounts/report/payment_ledger/payment_ledger.py:143 #: erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:94 #: erpnext/accounts/report/pos_register/pos_register.py:172 -#: erpnext/accounts/report/purchase_register/purchase_register.py:169 -#: erpnext/accounts/report/sales_register/sales_register.py:185 +#: erpnext/accounts/report/purchase_register/purchase_register.py:185 +#: erpnext/accounts/report/sales_register/sales_register.py:199 #: erpnext/assets/doctype/asset_capitalization/asset_capitalization.json #: erpnext/manufacturing/doctype/job_card/job_card.json #: erpnext/manufacturing/doctype/master_production_schedule/master_production_schedule.json @@ -38901,7 +38938,7 @@ msgstr "" #: erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py:86 #: erpnext/stock/report/serial_no_ledger/serial_no_ledger.py:25 #: erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:150 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:144 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:155 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:36 #: erpnext/templates/form_grid/bank_reconciliation_grid.html:6 msgid "Posting Date" @@ -38918,7 +38955,7 @@ msgstr "" msgid "Posting Date inheritance for exchange gain / loss" msgstr "" -#: erpnext/public/js/controllers/transaction.js:1131 +#: erpnext/public/js/controllers/transaction.js:1153 msgid "Posting Date will change to today's date as Edit Posting Date and Time is unchecked. Are you sure want to proceed?" msgstr "" @@ -38975,7 +39012,7 @@ msgstr "" #: erpnext/stock/report/serial_no_ledger/serial_no_ledger.js:63 #: erpnext/stock/report/serial_no_ledger/serial_no_ledger.py:26 #: erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:151 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:149 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:160 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:41 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json msgid "Posting Time" @@ -40108,7 +40145,7 @@ msgstr "" #. Label of a Card Break in the Manufacturing Workspace #: erpnext/manufacturing/doctype/workstation/workstation.json #: erpnext/manufacturing/workspace/manufacturing/manufacturing.json -#: erpnext/setup/doctype/company/company.py:475 +#: erpnext/setup/doctype/company/company.py:476 msgid "Production" msgstr "" @@ -40330,6 +40367,10 @@ msgstr "" msgid "Project Id" msgstr "" +#: erpnext/public/js/setup_wizard.js:95 +msgid "Project Management" +msgstr "" + #: erpnext/setup/setup_wizard/data/designation.txt:26 msgid "Project Manager" msgstr "" @@ -40658,7 +40699,7 @@ msgstr "" msgid "Providing" msgstr "" -#: erpnext/setup/doctype/company/company.py:574 +#: erpnext/setup/doctype/company/company.py:575 msgid "Provisional Account" msgstr "" @@ -40730,7 +40771,7 @@ msgstr "" #: erpnext/accounts/doctype/tax_rule/tax_rule.json #: erpnext/manufacturing/doctype/material_request_plan_item/material_request_plan_item.json #: erpnext/projects/doctype/project/project_dashboard.py:16 -#: erpnext/setup/doctype/company/company.py:463 erpnext/setup/install.py:428 +#: erpnext/setup/doctype/company/company.py:464 erpnext/setup/install.py:428 #: erpnext/stock/doctype/item/item.json #: erpnext/stock/doctype/item/item_list.js:30 #: erpnext/stock/doctype/item_lead_time/item_lead_time.json @@ -40849,7 +40890,7 @@ msgstr "" #: erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js:30 #: erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json #: erpnext/stock/doctype/quality_inspection/quality_inspection.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:441 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:446 #: erpnext/workspace_sidebar/buying.json #: erpnext/workspace_sidebar/invoicing.json msgid "Purchase Invoice" @@ -40890,7 +40931,7 @@ msgstr "" msgid "Purchase Invoice Trends" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:336 +#: erpnext/assets/doctype/asset/asset.py:340 msgid "Purchase Invoice cannot be made against an existing asset {0}" msgstr "" @@ -40929,7 +40970,7 @@ msgstr "" #: erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json #: erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:237 -#: erpnext/accounts/report/purchase_register/purchase_register.py:216 +#: erpnext/accounts/report/purchase_register/purchase_register.py:232 #: erpnext/buying/doctype/buying_settings/buying_settings.js:47 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/purchase_receipt_item_supplied/purchase_receipt_item_supplied.json @@ -41092,7 +41133,7 @@ msgstr "" msgid "Purchase Orders to Receive" msgstr "" -#: erpnext/controllers/accounts_controller.py:2023 +#: erpnext/controllers/accounts_controller.py:2043 msgid "Purchase Orders {0} are un-linked" msgstr "" @@ -41122,7 +41163,7 @@ msgstr "" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js:49 #: erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:244 -#: erpnext/accounts/report/purchase_register/purchase_register.py:223 +#: erpnext/accounts/report/purchase_register/purchase_register.py:239 #: erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.js:22 #: erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:21 #: erpnext/assets/doctype/asset/asset.json @@ -41329,7 +41370,7 @@ msgstr "" #: erpnext/stock/doctype/item/item_list.js:41 #: erpnext/stock/doctype/material_request/material_request.json #: erpnext/stock/doctype/pick_list/pick_list.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:476 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:481 #: erpnext/stock/doctype/stock_entry/stock_entry.json #: erpnext/stock/doctype/stock_entry_type/stock_entry_type.json #: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json @@ -41529,7 +41570,7 @@ msgstr "" #: erpnext/stock/doctype/stock_closing_balance/stock_closing_balance.json #: erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.json #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:169 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:188 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:199 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:91 msgid "Qty Change" msgstr "" @@ -41562,7 +41603,7 @@ msgstr "" msgid "Qty To Manufacture" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1506 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1530 msgid "Qty To Manufacture ({0}) cannot be a fraction for the UOM {2}. To allow this, disable '{1}' in the UOM {2}." msgstr "" @@ -41665,7 +41706,7 @@ msgstr "" msgid "Qty to Deliver" msgstr "" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:396 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:401 msgid "Qty to Disassemble" msgstr "" @@ -41843,7 +41884,7 @@ msgstr "" msgid "Quality Inspection Analysis" msgstr "" -#: erpnext/public/js/controllers/transaction.js:2964 +#: erpnext/public/js/controllers/transaction.js:2980 msgid "Quality Inspection Not Configured" msgstr "" @@ -41922,8 +41963,8 @@ msgstr "" msgid "Quality Inspection {0} is rejected for the item: {1}" msgstr "" -#: erpnext/public/js/controllers/transaction.js:403 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:208 +#: erpnext/public/js/controllers/transaction.js:431 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:212 msgid "Quality Inspection(s)" msgstr "" @@ -41932,7 +41973,7 @@ msgstr "" msgid "Quality Inspections" msgstr "" -#: erpnext/setup/doctype/company/company.py:505 +#: erpnext/setup/doctype/company/company.py:506 msgid "Quality Management" msgstr "" @@ -42079,7 +42120,7 @@ msgstr "" #: erpnext/stock/doctype/material_request_item/material_request_item.json #: erpnext/stock/doctype/packing_slip_item/packing_slip_item.json #: erpnext/stock/doctype/pick_list_item/pick_list_item.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:824 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:829 #: erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json #: erpnext/stock/doctype/stock_reconciliation_item/stock_reconciliation_item.json #: erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.py:36 @@ -42229,11 +42270,11 @@ msgstr "" msgid "Quantity to Manufacture" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2830 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2845 msgid "Quantity to Manufacture can not be zero for the operation {0}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1498 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1522 msgid "Quantity to Manufacture must be greater than 0." msgstr "" @@ -42270,11 +42311,11 @@ msgstr "" msgid "Queue Size should be between 5 and 100" msgstr "" -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:627 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:634 msgid "Quick Journal Entry" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:152 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:154 msgid "Quick Ratio" msgstr "" @@ -42691,7 +42732,7 @@ msgstr "" msgid "Rate at which this tax is applied" msgstr "" -#: erpnext/controllers/accounts_controller.py:4101 +#: erpnext/controllers/accounts_controller.py:4121 msgid "Rate of '{}' items cannot be changed" msgstr "" @@ -42937,7 +42978,7 @@ msgstr "" msgid "Reached Root" msgstr "" -#: erpnext/accounts/general_ledger.py:831 +#: erpnext/accounts/general_ledger.py:833 msgid "Read the docs" msgstr "" @@ -43107,8 +43148,8 @@ msgstr "" #: erpnext/accounts/report/accounts_receivable/accounts_receivable.js:79 #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1155 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:241 -#: erpnext/accounts/report/sales_register/sales_register.py:217 -#: erpnext/accounts/report/sales_register/sales_register.py:271 +#: erpnext/accounts/report/sales_register/sales_register.py:231 +#: erpnext/accounts/report/sales_register/sales_register.py:285 msgid "Receivable Account" msgstr "" @@ -43227,7 +43268,7 @@ msgstr "" msgid "Received Quantity" msgstr "" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:372 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:377 msgid "Received Stock Entries" msgstr "" @@ -43566,11 +43607,11 @@ msgstr "" msgid "Reference #{0} dated {1}" msgstr "" -#: erpnext/public/js/controllers/transaction.js:2814 +#: erpnext/public/js/controllers/transaction.js:2836 msgid "Reference Date for Early Payment Discount" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:400 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:376 msgid "Reference Date is required" msgstr "" @@ -43680,7 +43721,7 @@ msgstr "" msgid "Reference for Reservation" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:406 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:382 msgid "Reference is required" msgstr "" @@ -43702,39 +43743,11 @@ msgstr "" msgid "Reference: {0}, Item Code: {1} and Customer: {2}" msgstr "" -#. Label of the edit_references (Section Break) field in DocType 'POS Invoice -#. Item' -#. Label of the references_section (Section Break) field in DocType 'POS -#. Invoice Merge Log' -#. Label of the edit_references (Section Break) field in DocType 'Sales Invoice -#. Item' -#. Label of the references_section (Section Break) field in DocType 'Purchase -#. Order Item' -#. Label of the sb_references (Section Break) field in DocType 'Contract' -#. Label of the references_section (Section Break) field in DocType 'Customer' -#. Label of the references_section (Section Break) field in DocType -#. 'Subcontracting Order Item' -#: erpnext/accounts/doctype/fiscal_year/fiscal_year_dashboard.py:10 -#: erpnext/accounts/doctype/pos_invoice_item/pos_invoice_item.json -#: erpnext/accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.json -#: erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template_dashboard.py:15 -#: erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json -#: erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template_dashboard.py:14 -#: erpnext/accounts/doctype/share_type/share_type_dashboard.py:7 -#: erpnext/accounts/doctype/subscription_plan/subscription_plan_dashboard.py:8 -#: erpnext/buying/doctype/purchase_order_item/purchase_order_item.json -#: erpnext/crm/doctype/contract/contract.json -#: erpnext/projects/doctype/timesheet/timesheet_dashboard.py:7 -#: erpnext/selling/doctype/customer/customer.json -#: erpnext/subcontracting/doctype/subcontracting_order_item/subcontracting_order_item.json -msgid "References" -msgstr "" - -#: erpnext/stock/doctype/delivery_note/delivery_note.py:373 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:374 msgid "References to Sales Invoices are Incomplete" msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:365 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:366 msgid "References to Sales Orders are Incomplete" msgstr "" @@ -43766,7 +43779,7 @@ msgstr "" #. Option for the 'Check' (Select) field in DocType 'Bank Transaction Rule #. Description Conditions' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:203 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:204 #: erpnext/accounts/doctype/bank_transaction_rule_description_conditions/bank_transaction_rule_description_conditions.json msgid "Regex" msgstr "" @@ -43906,7 +43919,7 @@ msgid "Remaining Balance" msgstr "" #. Label of the remark (Small Text) field in DocType 'Journal Entry' -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:657 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:664 #: erpnext/accounts/doctype/journal_entry/journal_entry.json #: erpnext/selling/page/point_of_sale/pos_payment.js:489 msgid "Remark" @@ -43933,9 +43946,9 @@ msgstr "" #. Label of the remarks (Text) field in DocType 'Quality Inspection' #. Label of the remarks (Text) field in DocType 'Stock Entry' #. Label of the remarks (Small Text) field in DocType 'Subcontracting Receipt' -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:418 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:592 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:660 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:394 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:568 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:636 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1231 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:594 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:683 @@ -43962,8 +43975,8 @@ msgstr "" #: erpnext/accounts/report/general_ledger/general_ledger.html:163 #: erpnext/accounts/report/general_ledger/general_ledger.py:818 #: erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:112 -#: erpnext/accounts/report/purchase_register/purchase_register.py:296 -#: erpnext/accounts/report/sales_register/sales_register.py:335 +#: erpnext/accounts/report/purchase_register/purchase_register.py:312 +#: erpnext/accounts/report/sales_register/sales_register.py:349 #: erpnext/manufacturing/doctype/bom_creator/bom_creator.json #: erpnext/manufacturing/doctype/downtime_entry/downtime_entry.json #: erpnext/manufacturing/doctype/job_card/job_card.json @@ -44307,7 +44320,7 @@ msgid "Reposting Vouchers Progress" msgstr "" #: erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:216 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:327 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:338 msgid "Reposting entries created: {0}" msgstr "" @@ -44592,7 +44605,7 @@ msgstr "" msgid "Research" msgstr "" -#: erpnext/setup/doctype/company/company.py:511 +#: erpnext/setup/doctype/company/company.py:512 msgid "Research & Development" msgstr "" @@ -44680,7 +44693,7 @@ msgstr "" msgid "Reserved" msgstr "" -#: erpnext/controllers/stock_controller.py:1368 +#: erpnext/controllers/stock_controller.py:1408 msgid "Reserved Batch Conflict" msgstr "" @@ -44750,7 +44763,7 @@ msgstr "" msgid "Reserved Quantity for Production" msgstr "" -#: erpnext/stock/stock_ledger.py:2296 +#: erpnext/stock/stock_ledger.py:2321 msgid "Reserved Serial No." msgstr "" @@ -44766,13 +44779,13 @@ msgstr "" #: erpnext/stock/doctype/pick_list/pick_list.js:178 #: erpnext/stock/report/reserved_stock/reserved_stock.json #: erpnext/stock/report/stock_balance/stock_balance.py:569 -#: erpnext/stock/stock_ledger.py:2280 +#: erpnext/stock/stock_ledger.py:2305 #: erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js:205 #: erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js:333 msgid "Reserved Stock" msgstr "" -#: erpnext/stock/stock_ledger.py:2325 +#: erpnext/stock/stock_ledger.py:2350 msgid "Reserved Stock for Batch" msgstr "" @@ -44989,7 +45002,7 @@ msgstr "" msgid "Restart Subscription" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:178 +#: erpnext/assets/doctype/asset/asset.js:183 msgid "Restore Asset" msgstr "" @@ -45188,11 +45201,11 @@ msgstr "" msgid "Return of Components" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:173 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:175 msgid "Return on Asset Ratio" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:174 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:176 msgid "Return on Equity Ratio" msgstr "" @@ -45588,8 +45601,8 @@ msgstr "" #: erpnext/accounts/doctype/pos_invoice/pos_invoice.json #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json -#: erpnext/accounts/report/purchase_register/purchase_register.py:282 -#: erpnext/accounts/report/sales_register/sales_register.py:312 +#: erpnext/accounts/report/purchase_register/purchase_register.py:298 +#: erpnext/accounts/report/sales_register/sales_register.py:326 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/supplier_quotation/supplier_quotation.json #: erpnext/selling/doctype/quotation/quotation.json @@ -45672,8 +45685,8 @@ msgstr "" msgid "Rounding Loss Allowance should be between 0 and 1" msgstr "" -#: erpnext/controllers/stock_controller.py:788 -#: erpnext/controllers/stock_controller.py:803 +#: erpnext/controllers/stock_controller.py:828 +#: erpnext/controllers/stock_controller.py:843 msgid "Rounding gain/loss Entry for Stock Transfer" msgstr "" @@ -45716,7 +45729,7 @@ msgstr "" msgid "Row # {0}: Returned Item {1} does not exist in {2} {3}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:349 +#: erpnext/manufacturing/doctype/work_order/work_order.py:350 msgid "Row #1: Sequence ID must be 1 for Operation {0}." msgstr "" @@ -45730,15 +45743,15 @@ msgstr "" msgid "Row #{0} (Payment Table): Amount must be positive" msgstr "" -#: erpnext/stock/doctype/item/item.py:564 +#: erpnext/stock/doctype/item/item.py:565 msgid "Row #{0}: A reorder entry already exists for warehouse {1} with reorder type {2}." msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:329 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:333 msgid "Row #{0}: Acceptance Criteria Formula is incorrect." msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:309 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:313 msgid "Row #{0}: Acceptance Criteria Formula is required." msgstr "" @@ -45751,7 +45764,7 @@ msgstr "" msgid "Row #{0}: Accepted Warehouse is mandatory for the accepted Item {1}" msgstr "" -#: erpnext/controllers/accounts_controller.py:1301 +#: erpnext/controllers/accounts_controller.py:1321 msgid "Row #{0}: Account {1} does not belong to company {2}" msgstr "" @@ -45816,27 +45829,27 @@ msgstr "" msgid "Row #{0}: Cannot create entry with different taxable AND withholding document links." msgstr "" -#: erpnext/controllers/accounts_controller.py:3804 +#: erpnext/controllers/accounts_controller.py:3824 msgid "Row #{0}: Cannot delete item {1} which has already been billed." msgstr "" -#: erpnext/controllers/accounts_controller.py:3778 +#: erpnext/controllers/accounts_controller.py:3798 msgid "Row #{0}: Cannot delete item {1} which has already been delivered" msgstr "" -#: erpnext/controllers/accounts_controller.py:3797 +#: erpnext/controllers/accounts_controller.py:3817 msgid "Row #{0}: Cannot delete item {1} which has already been received" msgstr "" -#: erpnext/controllers/accounts_controller.py:3784 +#: erpnext/controllers/accounts_controller.py:3804 msgid "Row #{0}: Cannot delete item {1} which has work order assigned to it." msgstr "" -#: erpnext/controllers/accounts_controller.py:3790 +#: erpnext/controllers/accounts_controller.py:3810 msgid "Row #{0}: Cannot delete item {1} which is already ordered against this Sales Order." msgstr "" -#: erpnext/controllers/accounts_controller.py:4111 +#: erpnext/controllers/accounts_controller.py:4131 msgid "Row #{0}: Cannot set Rate if the billed amount is greater than the amount for Item {1}." msgstr "" @@ -45894,11 +45907,11 @@ msgstr "" msgid "Row #{0}: Customer Provided Item {1} cannot be added multiple times in the Subcontracting Inward process." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:426 +#: erpnext/manufacturing/doctype/work_order/work_order.py:427 msgid "Row #{0}: Customer Provided Item {1} cannot be added multiple times." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:451 +#: erpnext/manufacturing/doctype/work_order/work_order.py:452 msgid "Row #{0}: Customer Provided Item {1} does not exist in the Required Items table linked to the Subcontracting Inward Order." msgstr "" @@ -45906,7 +45919,7 @@ msgstr "" msgid "Row #{0}: Customer Provided Item {1} exceeds quantity available through Subcontracting Inward Order" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:439 +#: erpnext/manufacturing/doctype/work_order/work_order.py:440 msgid "Row #{0}: Customer Provided Item {1} has insufficient quantity in the Subcontracting Inward Order. Available quantity is {2}." msgstr "" @@ -45927,7 +45940,7 @@ msgstr "" msgid "Row #{0}: Default BOM not found for FG Item {1}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:681 +#: erpnext/assets/doctype/asset/asset.py:685 msgid "Row #{0}: Depreciation Start Date is required" msgstr "" @@ -45939,7 +45952,7 @@ msgstr "" msgid "Row #{0}: Expected Delivery Date cannot be before Purchase Order Date" msgstr "" -#: erpnext/controllers/stock_controller.py:919 +#: erpnext/controllers/stock_controller.py:959 msgid "Row #{0}: Expense Account not set for the Item {1}. {2}" msgstr "" @@ -45987,7 +46000,7 @@ msgstr "" msgid "Row #{0}: For {1}, you can select reference document only if account gets debited" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:664 +#: erpnext/assets/doctype/asset/asset.py:668 msgid "Row #{0}: Frequency of Depreciation must be greater than zero" msgstr "" @@ -46019,7 +46032,7 @@ msgstr "" msgid "Row #{0}: Item {1} has no stock in warehouse {2}." msgstr "" -#: erpnext/controllers/stock_controller.py:148 +#: erpnext/controllers/stock_controller.py:184 msgid "Row #{0}: Item {1} has zero rate but '{2}' is not enabled." msgstr "" @@ -46068,11 +46081,11 @@ msgstr "" msgid "Row #{0}: Journal Entry {1} does not have account {2} or already matched against another voucher" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:675 +#: erpnext/assets/doctype/asset/asset.py:679 msgid "Row #{0}: Next Depreciation Date cannot be before Available-for-use Date" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:670 +#: erpnext/assets/doctype/asset/asset.py:674 msgid "Row #{0}: Next Depreciation Date cannot be before Purchase Date" msgstr "" @@ -46084,7 +46097,7 @@ msgstr "" msgid "Row #{0}: Only {1} available to reserve for the Item {2}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:638 +#: erpnext/assets/doctype/asset/asset.py:642 msgid "Row #{0}: Opening Accumulated Depreciation must be less than or equal to {1}" msgstr "" @@ -46113,11 +46126,11 @@ msgstr "" msgid "Row #{0}: Please select the Sub Assembly Warehouse" msgstr "" -#: erpnext/stock/doctype/item/item.py:571 +#: erpnext/stock/doctype/item/item.py:572 msgid "Row #{0}: Please set reorder quantity" msgstr "" -#: erpnext/controllers/accounts_controller.py:616 +#: erpnext/controllers/accounts_controller.py:636 msgid "Row #{0}: Please update deferred revenue/expense account in item row or default account in company master" msgstr "" @@ -46139,15 +46152,15 @@ msgstr "" msgid "Row #{0}: Qty should be less than or equal to Available Qty to Reserve (Actual Qty - Reserved Qty) {1} for Iem {2} against Batch {3} in Warehouse {4}." msgstr "" -#: erpnext/controllers/stock_controller.py:1505 +#: erpnext/controllers/stock_controller.py:1545 msgid "Row #{0}: Quality Inspection is required for Item {1}" msgstr "" -#: erpnext/controllers/stock_controller.py:1520 +#: erpnext/controllers/stock_controller.py:1560 msgid "Row #{0}: Quality Inspection {1} is not submitted for the item: {2}" msgstr "" -#: erpnext/controllers/stock_controller.py:1535 +#: erpnext/controllers/stock_controller.py:1575 msgid "Row #{0}: Quality Inspection {1} was rejected for item {2}" msgstr "" @@ -46155,7 +46168,7 @@ msgstr "" msgid "Row #{0}: Quantity cannot be a non-positive number. Please increase the quantity or remove the Item {1}" msgstr "" -#: erpnext/controllers/accounts_controller.py:1464 +#: erpnext/controllers/accounts_controller.py:1484 msgid "Row #{0}: Quantity for Item {1} cannot be zero." msgstr "" @@ -46167,8 +46180,8 @@ msgstr "" msgid "Row #{0}: Quantity to reserve for the Item {1} should be greater than 0." msgstr "" -#: erpnext/controllers/accounts_controller.py:879 -#: erpnext/controllers/accounts_controller.py:891 +#: erpnext/controllers/accounts_controller.py:899 +#: erpnext/controllers/accounts_controller.py:911 #: erpnext/utilities/transaction_base.py:172 #: erpnext/utilities/transaction_base.py:178 msgid "Row #{0}: Rate must be same as {1}: {2} ({3} / {4})" @@ -46218,11 +46231,11 @@ msgid "" "\t\t\t\t\tthis validation." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:355 +#: erpnext/manufacturing/doctype/work_order/work_order.py:356 msgid "Row #{0}: Sequence ID must be {1} or {2} for Operation {3}." msgstr "" -#: erpnext/controllers/stock_controller.py:303 +#: erpnext/controllers/stock_controller.py:339 msgid "Row #{0}: Serial No {1} does not belong to Batch {2}" msgstr "" @@ -46238,15 +46251,15 @@ msgstr "" msgid "Row #{0}: Serial No(s) {1} are not a part of the linked Subcontracting Inward Order. Please select valid Serial No(s)." msgstr "" -#: erpnext/controllers/accounts_controller.py:644 +#: erpnext/controllers/accounts_controller.py:664 msgid "Row #{0}: Service End Date cannot be before Invoice Posting Date" msgstr "" -#: erpnext/controllers/accounts_controller.py:638 +#: erpnext/controllers/accounts_controller.py:658 msgid "Row #{0}: Service Start Date cannot be greater than Service End Date" msgstr "" -#: erpnext/controllers/accounts_controller.py:632 +#: erpnext/controllers/accounts_controller.py:652 msgid "Row #{0}: Service Start and End Date is required for deferred accounting" msgstr "" @@ -46262,11 +46275,11 @@ msgstr "" msgid "Row #{0}: Source Warehouse must be same as Customer Warehouse {1} from the linked Subcontracting Inward Order" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:460 +#: erpnext/manufacturing/doctype/work_order/work_order.py:461 msgid "Row #{0}: Source Warehouse {1} for item {2} cannot be a customer warehouse." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:415 +#: erpnext/manufacturing/doctype/work_order/work_order.py:416 msgid "Row #{0}: Source Warehouse {1} for item {2} must be same as Source Warehouse {3} in the Work Order." msgstr "" @@ -46282,7 +46295,7 @@ msgstr "" msgid "Row #{0}: Start Time must be before End Time" msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:209 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:213 msgid "Row #{0}: Status is mandatory" msgstr "" @@ -46306,7 +46319,7 @@ msgstr "" msgid "Row #{0}: Stock is already reserved for the Item {1}." msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:527 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:528 msgid "Row #{0}: Stock is reserved for item {1} in warehouse {2}." msgstr "" @@ -46327,11 +46340,11 @@ msgstr "" msgid "Row #{0}: Target Warehouse must be same as Customer Warehouse {1} from the linked Subcontracting Inward Order" msgstr "" -#: erpnext/controllers/stock_controller.py:316 +#: erpnext/controllers/stock_controller.py:352 msgid "Row #{0}: The batch {1} has already expired." msgstr "" -#: erpnext/stock/doctype/item/item.py:580 +#: erpnext/stock/doctype/item/item.py:581 msgid "Row #{0}: The warehouse {1} is not a child warehouse of a group warehouse {2}" msgstr "" @@ -46339,15 +46352,15 @@ msgstr "" msgid "Row #{0}: Timings conflicts with row {1}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:651 +#: erpnext/assets/doctype/asset/asset.py:655 msgid "Row #{0}: Total Number of Depreciations cannot be less than or equal to Opening Number of Booked Depreciations" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:660 +#: erpnext/assets/doctype/asset/asset.py:664 msgid "Row #{0}: Total Number of Depreciations must be greater than zero" msgstr "" -#: erpnext/controllers/stock_controller.py:100 +#: erpnext/controllers/stock_controller.py:136 msgid "Row #{0}: Warehouse {1} does not match with the warehouse {2} in Serial and Batch Bundle {3}." msgstr "" @@ -46375,11 +46388,11 @@ msgstr "" msgid "Row #{0}: {1} can not be negative for item {2}" msgstr "" -#: erpnext/controllers/stock_controller.py:1183 +#: erpnext/controllers/stock_controller.py:1223 msgid "Row #{0}: {1} is mandatory for the Inventory Dimension {2}." msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:322 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:326 msgid "Row #{0}: {1} is not a valid reading field. Please refer to the field description." msgstr "" @@ -46391,7 +46404,7 @@ msgstr "" msgid "Row #{0}: {1} of {2} should be {3}. Please update the {1} or select a different account." msgstr "" -#: erpnext/controllers/accounts_controller.py:3918 +#: erpnext/controllers/accounts_controller.py:3938 msgid "Row #{0}:Quantity for Item {1} cannot be zero." msgstr "" @@ -46439,7 +46452,7 @@ msgstr "" msgid "Row #{}: Either Party ID or Party Name is required" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:421 +#: erpnext/assets/doctype/asset/asset.py:425 msgid "Row #{}: Finance Book should not be empty since you're using multiple." msgstr "" @@ -46463,7 +46476,7 @@ msgstr "" msgid "Row #{}: Please assign task to a member." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:413 +#: erpnext/assets/doctype/asset/asset.py:417 msgid "Row #{}: Please use a different Finance Book." msgstr "" @@ -46492,7 +46505,7 @@ msgstr "" msgid "Row #{}: {} {} does not exist." msgstr "" -#: erpnext/stock/doctype/item/item.py:1507 +#: erpnext/stock/doctype/item/item.py:1527 msgid "Row #{}: {} {} doesn't belong to Company {}. Please select valid {}." msgstr "" @@ -46560,7 +46573,7 @@ msgstr "" msgid "Row {0}: Conversion Factor is mandatory" msgstr "" -#: erpnext/controllers/accounts_controller.py:3245 +#: erpnext/controllers/accounts_controller.py:3265 msgid "Row {0}: Cost Center {1} does not belong to Company {2}" msgstr "" @@ -46588,7 +46601,7 @@ msgstr "" msgid "Row {0}: Delivery Warehouse cannot be same as Customer Warehouse for Item {1}." msgstr "" -#: erpnext/controllers/accounts_controller.py:2745 +#: erpnext/controllers/accounts_controller.py:2765 msgid "Row {0}: Due Date in the Payment Terms table cannot be before Posting Date" msgstr "" @@ -46601,11 +46614,11 @@ msgstr "" msgid "Row {0}: Exchange Rate is mandatory" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:609 +#: erpnext/assets/doctype/asset/asset.py:613 msgid "Row {0}: Expected Value After Useful Life cannot be negative" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:612 +#: erpnext/assets/doctype/asset/asset.py:616 msgid "Row {0}: Expected Value After Useful Life must be less than Net Purchase Amount" msgstr "" @@ -46638,7 +46651,7 @@ msgstr "" msgid "Row {0}: From Time and To Time of {1} is overlapping with {2}" msgstr "" -#: erpnext/controllers/stock_controller.py:1601 +#: erpnext/controllers/stock_controller.py:1641 msgid "Row {0}: From Warehouse is mandatory for internal transfers" msgstr "" @@ -46682,7 +46695,7 @@ msgstr "" msgid "Row {0}: Operation time should be greater than 0 for operation {1}" msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:584 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:585 msgid "Row {0}: Packed Qty must be equal to {1} Qty." msgstr "" @@ -46782,7 +46795,7 @@ msgstr "" msgid "Row {0}: Subcontracted Item is mandatory for the raw material {1}" msgstr "" -#: erpnext/controllers/stock_controller.py:1592 +#: erpnext/controllers/stock_controller.py:1632 msgid "Row {0}: Target Warehouse is mandatory for internal transfers" msgstr "" @@ -46798,7 +46811,7 @@ msgstr "" msgid "Row {0}: The item {1}, quantity must be positive number" msgstr "" -#: erpnext/controllers/accounts_controller.py:3222 +#: erpnext/controllers/accounts_controller.py:3242 msgid "Row {0}: The {3} Account {1} does not belong to the company {2}" msgstr "" @@ -46827,11 +46840,11 @@ msgid "Row {0}: Warehouse {1} is linked to company {2}. Please select a warehous msgstr "" #: erpnext/manufacturing/doctype/bom/bom.py:1239 -#: erpnext/manufacturing/doctype/work_order/work_order.py:489 +#: erpnext/manufacturing/doctype/work_order/work_order.py:490 msgid "Row {0}: Workstation or Workstation Type is mandatory for an operation {1}" msgstr "" -#: erpnext/controllers/accounts_controller.py:1183 +#: erpnext/controllers/accounts_controller.py:1203 msgid "Row {0}: user has not applied the rule {1} on the item {2}" msgstr "" @@ -46843,7 +46856,7 @@ msgstr "" msgid "Row {0}: {1} must be greater than 0" msgstr "" -#: erpnext/controllers/accounts_controller.py:789 +#: erpnext/controllers/accounts_controller.py:809 msgid "Row {0}: {1} {2} cannot be same as {3} (Party Account) {4}" msgstr "" @@ -46889,7 +46902,7 @@ msgstr "" msgid "Rows with Same Account heads will be merged on Ledger" msgstr "" -#: erpnext/controllers/accounts_controller.py:2756 +#: erpnext/controllers/accounts_controller.py:2776 msgid "Rows with duplicate due dates in other rows were found: {0}" msgstr "" @@ -46897,7 +46910,7 @@ msgstr "" msgid "Rows: {0} have 'Payment Entry' as reference_type. This should not be set manually." msgstr "" -#: erpnext/controllers/accounts_controller.py:282 +#: erpnext/controllers/accounts_controller.py:302 msgid "Rows: {0} in {1} section are Invalid. Reference Name should point to a valid Payment Entry or Journal Entry." msgstr "" @@ -46913,7 +46926,7 @@ msgstr "" #. Scheme Price Discount' #. Label of the rule_description (Small Text) field in DocType 'Promotional #. Scheme Product Discount' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:47 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:48 #: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.json #: erpnext/accounts/doctype/pricing_rule/pricing_rule.json #: erpnext/accounts/doctype/promotional_scheme_price_discount/promotional_scheme_price_discount.json @@ -46922,7 +46935,7 @@ msgid "Rule Description" msgstr "" #. Label of the rule_name (Data) field in DocType 'Bank Transaction Rule' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:28 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:29 #: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.json msgid "Rule Name" msgstr "" @@ -46939,7 +46952,7 @@ msgstr "" msgid "Rule matched based on transaction description and other criteria." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:39 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:40 msgid "Rule name is required" msgstr "" @@ -46959,7 +46972,7 @@ msgstr "" msgid "Rules evaluation started" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:189 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:190 msgid "Rules to match against the transaction description" msgstr "" @@ -47047,6 +47060,7 @@ msgstr "" msgid "SO Total Qty" msgstr "" +#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:16 #: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:26 msgid "STATEMENT OF ACCOUNTS" msgstr "" @@ -47114,8 +47128,8 @@ msgstr "" #: erpnext/regional/report/vat_audit_report/vat_audit_report.py:145 #: erpnext/selling/doctype/quotation/quotation.json #: erpnext/selling/doctype/sales_order/sales_order.json -#: erpnext/setup/doctype/company/company.py:457 -#: erpnext/setup/doctype/company/company.py:649 +#: erpnext/setup/doctype/company/company.py:458 +#: erpnext/setup/doctype/company/company.py:650 #: erpnext/setup/doctype/company/company_dashboard.py:9 #: erpnext/setup/doctype/sales_person/sales_person_dashboard.py:12 #: erpnext/setup/install.py:423 @@ -47130,7 +47144,7 @@ msgstr "" msgid "Sales & Purchase" msgstr "" -#: erpnext/setup/doctype/company/company.py:649 +#: erpnext/setup/doctype/company/company.py:650 msgid "Sales Account" msgstr "" @@ -47326,7 +47340,7 @@ msgstr "" msgid "Sales Invoice mode is activated in POS. Please create Sales Invoice instead." msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:597 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:598 msgid "Sales Invoice {0} has already been submitted" msgstr "" @@ -47385,7 +47399,7 @@ msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.js:380 #: erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:284 -#: erpnext/accounts/report/sales_register/sales_register.py:238 +#: erpnext/accounts/report/sales_register/sales_register.py:252 #: erpnext/buying/doctype/purchase_order_item/purchase_order_item.json #: erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.json #: erpnext/controllers/selling_controller.py:494 @@ -47525,7 +47539,7 @@ msgstr "" msgid "Sales Order Trends" msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:284 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:285 msgid "Sales Order required for Item {0}" msgstr "" @@ -47542,7 +47556,7 @@ msgstr "" msgid "Sales Order {0} is not submitted" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:565 +#: erpnext/manufacturing/doctype/work_order/work_order.py:566 msgid "Sales Order {0} is not valid" msgstr "" @@ -47798,7 +47812,7 @@ msgstr "" msgid "Sales Representative" msgstr "" -#: erpnext/accounts/report/gross_profit/gross_profit.py:989 +#: erpnext/accounts/report/gross_profit/gross_profit.py:995 #: erpnext/stock/doctype/delivery_note/delivery_note.js:270 msgid "Sales Return" msgstr "" @@ -47961,7 +47975,7 @@ msgid "Sample Quantity" msgstr "" #: erpnext/stock/doctype/purchase_receipt/purchase_receipt.js:269 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:552 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:557 msgid "Sample Retention Stock Entry" msgstr "" @@ -47973,7 +47987,7 @@ msgstr "" #. Label of the sample_size (Float) field in DocType 'Quality Inspection' #: erpnext/manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:93 -#: erpnext/public/js/controllers/transaction.js:2871 +#: erpnext/public/js/controllers/transaction.js:2893 #: erpnext/stock/doctype/quality_inspection/quality_inspection.json msgid "Sample Size" msgstr "" @@ -48077,13 +48091,13 @@ msgstr "" #. Label of the schedule_date (Date) field in DocType 'Depreciation Schedule' #. Label of the schedule_date (Datetime) field in DocType 'Production Plan Sub #. Assembly Item' -#: erpnext/assets/doctype/asset/asset.js:378 +#: erpnext/assets/doctype/asset/asset.js:383 #: erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json #: erpnext/manufacturing/doctype/production_plan_sub_assembly_item/production_plan_sub_assembly_item.json msgid "Schedule Date" msgstr "" -#: erpnext/public/js/controllers/transaction.js:516 +#: erpnext/public/js/controllers/transaction.js:538 msgid "Schedule Name" msgstr "" @@ -48208,7 +48222,7 @@ msgstr "" msgid "Scrap" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:163 +#: erpnext/assets/doctype/asset/asset.js:168 msgid "Scrap Asset" msgstr "" @@ -48269,6 +48283,10 @@ msgstr "" msgid "Search transactions" msgstr "" +#: erpnext/stock/doctype/item/item.js:798 +msgid "Search values..." +msgstr "" + #. Name of a UOM #: erpnext/setup/setup_wizard/data/uom_data.json msgid "Second" @@ -48385,7 +48403,7 @@ msgstr "" msgid "Select Alternative Items for Sales Order" msgstr "" -#: erpnext/stock/doctype/item/item.js:838 +#: erpnext/stock/doctype/item/item.js:924 msgid "Select Attribute Values" msgstr "" @@ -48488,7 +48506,7 @@ msgstr "" msgid "Select Items based on Delivery Date" msgstr "" -#: erpnext/public/js/controllers/transaction.js:2912 +#: erpnext/public/js/controllers/transaction.js:2928 msgid "Select Items for Quality Inspection" msgstr "" @@ -48518,7 +48536,7 @@ msgstr "" msgid "Select Loyalty Program" msgstr "" -#: erpnext/public/js/controllers/transaction.js:502 +#: erpnext/public/js/controllers/transaction.js:524 msgid "Select Payment Schedule" msgstr "" @@ -48617,14 +48635,14 @@ msgstr "" msgid "Select a transaction to match and reconcile with vouchers" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:586 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:562 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:679 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1175 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:588 msgid "Select all" msgstr "" -#: erpnext/stock/doctype/item/item.js:1180 +#: erpnext/stock/doctype/item/item.js:1266 msgid "Select an Item Group." msgstr "" @@ -48640,7 +48658,7 @@ msgstr "" msgid "Select an item from each set to be used in the Sales Order." msgstr "" -#: erpnext/stock/doctype/item/item.js:852 +#: erpnext/stock/doctype/item/item.js:938 msgid "Select at least one attribute value." msgstr "" @@ -48658,7 +48676,7 @@ msgstr "" msgid "Select date" msgstr "" -#: erpnext/controllers/accounts_controller.py:2997 +#: erpnext/controllers/accounts_controller.py:3017 msgid "Select finance book for the item {0} at row {1}" msgstr "" @@ -48670,7 +48688,7 @@ msgstr "" msgid "Select number of days" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:605 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:581 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:699 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1192 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:632 @@ -48707,7 +48725,7 @@ msgstr "" msgid "Select the customer or supplier." msgstr "" -#: erpnext/assets/doctype/asset/asset.js:930 +#: erpnext/assets/doctype/asset/asset.js:939 msgid "Select the date" msgstr "" @@ -48721,6 +48739,10 @@ msgstr "" msgid "Select the group first to filter the applicable withholding categories below." msgstr "" +#: erpnext/public/js/setup_wizard.js:89 +msgid "Select the modules that you plan to implement" +msgstr "" + #: erpnext/manufacturing/doctype/bom/bom.js:1007 msgid "Select the raw materials (Items) required to manufacture the Item" msgstr "" @@ -48780,22 +48802,22 @@ msgstr "" msgid "Self delivery" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:641 +#: erpnext/assets/doctype/asset/asset.js:646 #: erpnext/stock/doctype/batch/batch_dashboard.py:9 #: erpnext/stock/doctype/item/item_dashboard.py:20 msgid "Sell" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:171 -#: erpnext/assets/doctype/asset/asset.js:630 +#: erpnext/assets/doctype/asset/asset.js:176 +#: erpnext/assets/doctype/asset/asset.js:635 msgid "Sell Asset" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:635 +#: erpnext/assets/doctype/asset/asset.js:640 msgid "Sell Qty" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:651 +#: erpnext/assets/doctype/asset/asset.js:656 msgid "Sell quantity cannot exceed the asset quantity" msgstr "" @@ -48803,7 +48825,7 @@ msgstr "" msgid "Sell quantity cannot exceed the asset quantity. Asset {0} has only {1} item(s)." msgstr "" -#: erpnext/assets/doctype/asset/asset.js:647 +#: erpnext/assets/doctype/asset/asset.js:652 msgid "Sell quantity must be greater than zero" msgstr "" @@ -48915,7 +48937,7 @@ msgid "Send Emails to Suppliers" msgstr "" #. Label of the send_sms (Button) field in DocType 'SMS Center' -#: erpnext/public/js/controllers/transaction.js:721 +#: erpnext/public/js/controllers/transaction.js:743 #: erpnext/selling/doctype/sms_center/sms_center.json msgid "Send SMS" msgstr "" @@ -49057,7 +49079,7 @@ msgstr "" #: erpnext/manufacturing/doctype/job_card/job_card.json #: erpnext/manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:74 #: erpnext/manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.py:114 -#: erpnext/public/js/controllers/transaction.js:2884 +#: erpnext/public/js/controllers/transaction.js:2906 #: erpnext/public/js/utils/serial_no_batch_selector.js:432 #: erpnext/selling/doctype/installation_note_item/installation_note_item.json #: erpnext/stock/doctype/delivery_note_item/delivery_note_item.json @@ -49118,11 +49140,11 @@ msgstr "" msgid "Serial No Range" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2675 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2725 msgid "Serial No Reserved" msgstr "" -#: erpnext/stock/doctype/item/item.py:477 +#: erpnext/stock/doctype/item/item.py:478 msgid "Serial No Series Overlap" msgstr "" @@ -49175,7 +49197,7 @@ msgstr "" msgid "Serial No and Batch Traceability" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1179 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1229 msgid "Serial No is mandatory" msgstr "" @@ -49204,7 +49226,7 @@ msgstr "" msgid "Serial No {0} does not exist" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:3464 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:3514 msgid "Serial No {0} does not exists" msgstr "" @@ -49258,11 +49280,11 @@ msgstr "" msgid "Serial Nos / Batches" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1958 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2008 msgid "Serial Nos are created successfully" msgstr "" -#: erpnext/stock/stock_ledger.py:2286 +#: erpnext/stock/stock_ledger.py:2311 msgid "Serial Nos are reserved in Stock Reservation Entries, you need to unreserve them before proceeding." msgstr "" @@ -49337,21 +49359,25 @@ msgstr "" #: erpnext/stock/report/incorrect_serial_and_batch_bundle/incorrect_serial_and_batch_bundle.py:31 #: erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py:80 #: erpnext/stock/report/stock_ledger/stock_ledger.py:411 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:177 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:188 #: erpnext/subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.json #: erpnext/workspace_sidebar/stock.json msgid "Serial and Batch Bundle" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2180 +#: erpnext/stock/doctype/item/item.py:1122 +msgid "Serial and Batch Bundle Exists" +msgstr "" + +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2230 msgid "Serial and Batch Bundle created" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2274 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2324 msgid "Serial and Batch Bundle updated" msgstr "" -#: erpnext/controllers/stock_controller.py:196 +#: erpnext/controllers/stock_controller.py:232 msgid "Serial and Batch Bundle {0} is already used in {1} {2}." msgstr "" @@ -49359,7 +49385,7 @@ msgstr "" msgid "Serial and Batch Bundle {0} is not submitted" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2250 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2300 msgid "Serial and Batch Bundle {0} is submitted and its entries cannot be modified." msgstr "" @@ -49615,12 +49641,12 @@ msgid "Service Stop Date" msgstr "" #: erpnext/accounts/deferred_revenue.py:45 -#: erpnext/public/js/controllers/transaction.js:1793 +#: erpnext/public/js/controllers/transaction.js:1815 msgid "Service Stop Date cannot be after Service End Date" msgstr "" #: erpnext/accounts/deferred_revenue.py:42 -#: erpnext/public/js/controllers/transaction.js:1790 +#: erpnext/public/js/controllers/transaction.js:1812 msgid "Service Stop Date cannot be before Service Start Date" msgstr "" @@ -49831,11 +49857,11 @@ msgstr "" msgid "Set closing balance as per bank statement" msgstr "" -#: erpnext/setup/doctype/company/company.py:547 +#: erpnext/setup/doctype/company/company.py:548 msgid "Set default inventory account for perpetual inventory" msgstr "" -#: erpnext/setup/doctype/company/company.py:573 +#: erpnext/setup/doctype/company/company.py:574 msgid "Set default {0} account for non stock items" msgstr "" @@ -49902,15 +49928,15 @@ msgstr "" msgid "Set valuation rate for rejected Materials" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:898 +#: erpnext/assets/doctype/asset/asset.py:902 msgid "Set {0} in asset category {1} for company {2}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1231 +#: erpnext/assets/doctype/asset/asset.py:1235 msgid "Set {0} in asset category {1} or company {2}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1228 +#: erpnext/assets/doctype/asset/asset.py:1232 msgid "Set {0} in company {1}" msgstr "" @@ -49963,7 +49989,7 @@ msgstr "" msgid "Setting Item Locations..." msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:25 +#: erpnext/setup/setup_wizard/setup_wizard.py:26 msgid "Setting defaults" msgstr "" @@ -49973,12 +49999,12 @@ msgstr "" msgid "Setting the account as a Company Account is necessary for Bank Reconciliation" msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:20 +#: erpnext/setup/setup_wizard/setup_wizard.py:21 msgid "Setting up company" msgstr "" #: erpnext/manufacturing/doctype/bom/bom.py:1218 -#: erpnext/manufacturing/doctype/work_order/work_order.py:1562 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1586 msgid "Setting {0} is required" msgstr "" @@ -50036,7 +50062,7 @@ msgstr "" msgid "Setup Warehouse" msgstr "" -#: erpnext/public/js/setup_wizard.js:25 +#: erpnext/public/js/setup_wizard.js:120 msgid "Setup your organization" msgstr "" @@ -50118,7 +50144,7 @@ msgid "Shelf Life in Days" msgstr "" #. Label of the shift (Link) field in DocType 'Depreciation Schedule' -#: erpnext/assets/doctype/asset/asset.js:391 +#: erpnext/assets/doctype/asset/asset.js:396 #: erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json msgid "Shift" msgstr "" @@ -50190,7 +50216,7 @@ msgstr "" msgid "Shipment details" msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:768 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:769 msgid "Shipments" msgstr "" @@ -50228,7 +50254,7 @@ msgstr "" msgid "Shipping Address Template" msgstr "" -#: erpnext/controllers/accounts_controller.py:575 +#: erpnext/controllers/accounts_controller.py:595 msgid "Shipping Address does not belong to the {0}" msgstr "" @@ -50728,7 +50754,7 @@ msgstr "" #. Option for the 'Bank Entry Type' (Select) field in DocType 'Bank Transaction #. Rule' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:282 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:283 #: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.json msgid "Single Account" msgstr "" @@ -50813,11 +50839,11 @@ msgid "Sold by" msgstr "" #: erpnext/accounts/report/financial_ratios/financial_ratios.js:55 -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:168 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:170 msgid "Solvency Ratios" msgstr "" -#: erpnext/controllers/accounts_controller.py:4369 +#: erpnext/controllers/accounts_controller.py:4389 msgid "Some required Company details are missing. You don't have permission to update them. Please contact your System Manager." msgstr "" @@ -50932,7 +50958,7 @@ msgstr "" #: erpnext/selling/doctype/sales_order_item/sales_order_item.json #: erpnext/stock/dashboard/item_dashboard.js:227 #: erpnext/stock/doctype/material_request_item/material_request_item.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:815 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:820 #: erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json msgid "Source Warehouse" msgstr "" @@ -50952,7 +50978,7 @@ msgstr "" msgid "Source Warehouse is mandatory for the Item {0}." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:374 +#: erpnext/manufacturing/doctype/work_order/work_order.py:375 msgid "Source Warehouse {0} must be same as Customer Warehouse {1} in the Subcontracting Inward Order." msgstr "" @@ -51022,15 +51048,15 @@ msgstr "" msgid "Spent" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:691 +#: erpnext/assets/doctype/asset/asset.js:696 #: erpnext/stock/doctype/batch/batch.js:104 #: erpnext/stock/doctype/batch/batch.js:185 #: erpnext/support/doctype/issue/issue.js:114 msgid "Split" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:147 -#: erpnext/assets/doctype/asset/asset.js:675 +#: erpnext/assets/doctype/asset/asset.js:152 +#: erpnext/assets/doctype/asset/asset.js:680 msgid "Split Asset" msgstr "" @@ -51054,11 +51080,11 @@ msgstr "" msgid "Split Issue" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:681 +#: erpnext/assets/doctype/asset/asset.js:686 msgid "Split Qty" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1370 +#: erpnext/assets/doctype/asset/asset.py:1374 msgid "Split Quantity must be less than Asset Quantity" msgstr "" @@ -51144,7 +51170,7 @@ msgstr "" #: erpnext/setup/setup_wizard/operations/defaults_setup.py:70 #: erpnext/setup/setup_wizard/operations/install_fixtures.py:493 -#: erpnext/stock/doctype/item/item.py:275 erpnext/tests/utils.py:283 +#: erpnext/stock/doctype/item/item.py:276 erpnext/tests/utils.py:283 #: erpnext/tests/utils.py:2518 msgid "Standard Selling" msgstr "" @@ -51287,7 +51313,7 @@ msgstr "" msgid "Starts With" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:201 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:202 msgid "Starts with" msgstr "" @@ -51347,7 +51373,7 @@ msgstr "" msgid "Status must be one of {0}" msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:275 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:279 msgid "Status set to rejected as there are one or more rejected readings." msgstr "" @@ -51362,6 +51388,7 @@ msgstr "" #: erpnext/accounts/report/account_balance/account_balance.js:57 #: erpnext/desktop_icon/stock.json #: erpnext/manufacturing/doctype/bom/bom_dashboard.py:14 +#: erpnext/public/js/setup_wizard.js:92 #: erpnext/setup/doctype/incoterm/incoterm.json #: erpnext/setup/workspace/home/home.json #: erpnext/stock/doctype/item/item_list.js:21 @@ -51597,7 +51624,7 @@ msgstr "" #. Name of a DocType #: erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.json #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:113 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:138 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:149 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:30 msgid "Stock Ledger Entry" msgstr "" @@ -51751,7 +51778,7 @@ msgstr "" #. Label of a Link in the Stock Workspace #. Label of a Workspace Sidebar Item #: erpnext/setup/workspace/home/home.json -#: erpnext/stock/doctype/item/item.py:668 +#: erpnext/stock/doctype/item/item.py:669 #: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json #: erpnext/stock/doctype/stock_settings/stock_settings.js:155 #: erpnext/stock/workspace/stock/stock.json @@ -51764,7 +51791,7 @@ msgstr "" msgid "Stock Reconciliation Item" msgstr "" -#: erpnext/stock/doctype/item/item.py:668 +#: erpnext/stock/doctype/item/item.py:669 msgid "Stock Reconciliations" msgstr "" @@ -51829,7 +51856,7 @@ msgstr "" #: erpnext/controllers/subcontracting_inward_controller.py:1037 #: erpnext/manufacturing/doctype/production_plan/production_plan.py:2245 -#: erpnext/manufacturing/doctype/work_order/work_order.py:2338 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2353 #: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1777 msgid "Stock Reservation Entries Created" msgstr "" @@ -51857,7 +51884,7 @@ msgstr "" msgid "Stock Reservation Entry created against a Pick List cannot be updated. If you need to make changes, we recommend canceling the existing entry and creating a new one." msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:537 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:538 msgid "Stock Reservation Warehouse Mismatch" msgstr "" @@ -52201,14 +52228,14 @@ msgstr "" msgid "Stop Reason" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1170 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1177 msgid "Stopped Work Order cannot be cancelled, Unstop it first to cancel" msgstr "" -#: erpnext/setup/doctype/company/company.py:384 +#: erpnext/setup/doctype/company/company.py:385 #: erpnext/setup/setup_wizard/operations/defaults_setup.py:33 #: erpnext/setup/setup_wizard/operations/install_fixtures.py:537 -#: erpnext/stock/doctype/item/item.py:312 erpnext/tests/utils.py:248 +#: erpnext/stock/doctype/item/item.py:313 erpnext/tests/utils.py:248 msgid "Stores" msgstr "" @@ -52810,7 +52837,7 @@ msgstr "" msgid "Successfully Set Supplier" msgstr "" -#: erpnext/stock/doctype/item/item.py:390 +#: erpnext/stock/doctype/item/item.py:391 msgid "Successfully changed Stock UOM, please redefine conversion factors for new UOM." msgstr "" @@ -52858,7 +52885,7 @@ msgstr "" msgid "Successfully updated {0} records." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:263 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:264 msgid "Suggest creating a" msgstr "" @@ -52967,7 +52994,7 @@ msgstr "" #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.js:34 #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:189 #: erpnext/accounts/report/purchase_register/purchase_register.js:21 -#: erpnext/accounts/report/purchase_register/purchase_register.py:171 +#: erpnext/accounts/report/purchase_register/purchase_register.py:187 #: erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:29 #: erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:37 #: erpnext/assets/doctype/asset/asset.json @@ -53111,7 +53138,7 @@ msgstr "" #: erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:198 #: erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py:178 #: erpnext/accounts/report/purchase_register/purchase_register.js:27 -#: erpnext/accounts/report/purchase_register/purchase_register.py:186 +#: erpnext/accounts/report/purchase_register/purchase_register.py:202 #: erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:55 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:503 @@ -53210,7 +53237,7 @@ msgstr "" #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1172 #: erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:156 #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:196 -#: erpnext/accounts/report/purchase_register/purchase_register.py:177 +#: erpnext/accounts/report/purchase_register/purchase_register.py:193 #: erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:35 #: erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:73 #: erpnext/buying/doctype/buying_settings/buying_settings.json @@ -53560,7 +53587,7 @@ msgstr "" msgid "System will fetch all the entries if limit value is zero." msgstr "" -#: erpnext/controllers/accounts_controller.py:2236 +#: erpnext/controllers/accounts_controller.py:2256 msgid "System will not check over billing since amount for Item {0} in {1} is zero" msgstr "" @@ -53734,7 +53761,7 @@ msgstr "" #: erpnext/stock/dashboard/item_dashboard.js:234 #: erpnext/stock/doctype/delivery_note_item/delivery_note_item.json #: erpnext/stock/doctype/material_request_item/material_request_item.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:821 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:826 #: erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json msgid "Target Warehouse" msgstr "" @@ -53750,7 +53777,7 @@ msgstr "" msgid "Target Warehouse Address Link" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:319 +#: erpnext/manufacturing/doctype/work_order/work_order.py:320 msgid "Target Warehouse Reservation Error" msgstr "" @@ -53758,7 +53785,7 @@ msgstr "" msgid "Target Warehouse for Finished Good must be same as Finished Good Warehouse {1} in Work Order {2} linked to the Subcontracting Inward Order." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:858 +#: erpnext/manufacturing/doctype/work_order/work_order.py:865 msgid "Target Warehouse is required before Submit" msgstr "" @@ -53766,7 +53793,7 @@ msgstr "" msgid "Target Warehouse is set for some items but the customer is not an internal customer." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:390 +#: erpnext/manufacturing/doctype/work_order/work_order.py:391 msgid "Target Warehouse {0} must be same as Delivery Warehouse {1} in the Subcontracting Inward Order Item." msgstr "" @@ -53990,8 +54017,8 @@ msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json #: erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.js:86 #: erpnext/accounts/report/general_ledger/general_ledger.js:142 -#: erpnext/accounts/report/purchase_register/purchase_register.py:192 -#: erpnext/accounts/report/sales_register/sales_register.py:215 +#: erpnext/accounts/report/purchase_register/purchase_register.py:208 +#: erpnext/accounts/report/sales_register/sales_register.py:229 #: erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:67 #: erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py:205 #: erpnext/accounts/report/tds_computation_summary/tds_computation_summary.py:57 @@ -54080,7 +54107,7 @@ msgstr "" msgid "Tax Template is mandatory." msgstr "" -#: erpnext/accounts/report/sales_register/sales_register.py:295 +#: erpnext/accounts/report/sales_register/sales_register.py:309 msgid "Tax Total" msgstr "" @@ -54396,7 +54423,7 @@ msgstr "" msgid "Taxes and Charges Deducted (Company Currency)" msgstr "" -#: erpnext/stock/doctype/item/item.py:403 +#: erpnext/stock/doctype/item/item.py:404 msgid "Taxes row #{0}: {1} cannot be smaller than {2}" msgstr "" @@ -54668,7 +54695,7 @@ msgstr "" #: erpnext/accounts/report/inactive_sales_items/inactive_sales_items.js:8 #: erpnext/accounts/report/inactive_sales_items/inactive_sales_items.py:22 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:259 -#: erpnext/accounts/report/sales_register/sales_register.py:209 +#: erpnext/accounts/report/sales_register/sales_register.py:223 #: erpnext/crm/doctype/lead/lead.json #: erpnext/crm/doctype/opportunity/opportunity.json #: erpnext/crm/doctype/prospect/prospect.json @@ -54799,7 +54826,7 @@ msgstr "" msgid "The Loyalty Program isn't valid for the selected company" msgstr "" -#: erpnext/accounts/doctype/payment_request/payment_request.py:1108 +#: erpnext/accounts/doctype/payment_request/payment_request.py:1109 msgid "The Payment Request {0} is already paid, cannot process payment twice" msgstr "" @@ -54823,7 +54850,7 @@ msgstr "" msgid "The Serial No at Row #{0}: {1} is not available in warehouse {2}." msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2672 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2722 msgid "The Serial No {0} is reserved against the {1} {2} and cannot be used for any other transaction." msgstr "" @@ -54841,7 +54868,7 @@ msgstr "" msgid "The account head under Liability or Equity, in which Profit/Loss will be booked" msgstr "" -#: erpnext/accounts/doctype/payment_request/payment_request.py:1003 +#: erpnext/accounts/doctype/payment_request/payment_request.py:1004 msgid "The allocated amount is greater than the outstanding amount of Payment Request {0}" msgstr "" @@ -54863,7 +54890,7 @@ msgstr "" msgid "The bank account is not a company account. Please select a company account" msgstr "" -#: erpnext/controllers/stock_controller.py:1357 +#: erpnext/controllers/stock_controller.py:1397 msgid "The batch {0} is already reserved in {1} {2}. So, cannot proceed with the {3} {4}, which is created against the {5} {6}." msgstr "" @@ -54928,7 +54955,7 @@ msgstr "" msgid "The field To Shareholder cannot be blank" msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:387 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:388 msgid "The field {0} in row {1} is not set" msgstr "" @@ -54969,11 +54996,11 @@ msgstr "" msgid "The following batches are expired, please restock them:
    {0}" msgstr "" -#: erpnext/controllers/accounts_controller.py:426 +#: erpnext/controllers/accounts_controller.py:446 msgid "The following cancelled repost entries exist for {0}:

    {1}

    Kindly delete these entries before continuing." msgstr "" -#: erpnext/stock/doctype/item/item.py:948 +#: erpnext/stock/doctype/item/item.py:949 msgid "The following deleted attributes exist in Variants but not in the Template. You can either delete the Variants or keep the attribute(s) in template." msgstr "" @@ -55022,7 +55049,7 @@ msgstr "" msgid "The item {item} is not marked as {type_of} item. You can enable it as {type_of} item from its Item master." msgstr "" -#: erpnext/stock/doctype/item/item.py:670 +#: erpnext/stock/doctype/item/item.py:671 msgid "The items {0} and {1} are present in the following {2} :" msgstr "" @@ -55038,7 +55065,7 @@ msgstr "" msgid "The job card {0} is in {1} state and you cannot start it again." msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:87 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:129 msgid "The last account row must not have any debit or credit amounts set." msgstr "" @@ -55080,7 +55107,7 @@ msgstr "" msgid "The original invoice should be consolidated before or along with the return invoice." msgstr "" -#: erpnext/controllers/accounts_controller.py:204 +#: erpnext/controllers/accounts_controller.py:224 msgid "The outstanding amount {0} in {1} is lesser than {2}. Updating the outstanding to this invoice." msgstr "" @@ -55155,7 +55182,7 @@ msgstr "" msgid "The selected item cannot have Batch" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:656 +#: erpnext/assets/doctype/asset/asset.js:661 msgid "The sell quantity is less than the total asset quantity. The remaining quantity will be split into a new asset. This action cannot be undone.

    Do you want to continue?" msgstr "" @@ -55282,11 +55309,11 @@ msgstr "" msgid "The {0} ({1}) must be equal to {2} ({3})" msgstr "" -#: erpnext/public/js/controllers/transaction.js:3373 +#: erpnext/public/js/controllers/transaction.js:3398 msgid "The {0} contains Unit Price Items." msgstr "" -#: erpnext/stock/doctype/item/item.py:474 +#: erpnext/stock/doctype/item/item.py:475 msgid "The {0} prefix '{1}' already exists. Please change the Serial No Series, otherwise you will get a Duplicate Entry error." msgstr "" @@ -55306,7 +55333,7 @@ msgstr "" msgid "Then Pricing Rules are filtered out based on Customer, Customer Group, Territory, Supplier, Supplier Type, Campaign, Sales Partner etc." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:727 +#: erpnext/assets/doctype/asset/asset.py:731 msgid "There are active maintenance or repairs against the asset. You must complete all of them before cancelling the asset." msgstr "" @@ -55343,7 +55370,7 @@ msgstr "" msgid "There are no transactions in the system for the selected bank account and dates that match the filters." msgstr "" -#: erpnext/stock/doctype/item/item.js:1204 +#: erpnext/stock/doctype/item/item.js:1290 msgid "There are two options to maintain valuation of stock. FIFO (first in - first out) and Moving Average. To understand this topic in detail please visit Item Valuation, FIFO and Moving Average." msgstr "" @@ -55443,7 +55470,7 @@ msgstr "" msgid "This Month's Summary" msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:937 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:943 msgid "This PDF is password protected. Please set the correct statement password on the Bank Account and try again." msgstr "" @@ -55477,7 +55504,7 @@ msgstr "" msgid "This allows creation of sales orders from quotations that have passed their expiration date, providing flexibility in processing orders despite outdated quotes." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:431 +#: erpnext/assets/doctype/asset/asset.py:435 msgid "This asset category is marked as non-depreciable. Please disable depreciation calculation or choose a different category." msgstr "" @@ -55574,7 +55601,7 @@ msgstr "" msgid "This is a root territory and cannot be edited." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:424 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:425 msgid "This is auto computed to balance the journal entry." msgstr "" @@ -55602,7 +55629,7 @@ msgstr "" msgid "This is enabled by default. If you want to plan materials for sub-assemblies of the Item you're manufacturing leave this enabled. If you plan and manufacture the sub-assemblies separately, you can disable this checkbox." msgstr "" -#: erpnext/stock/doctype/item/item.js:1192 +#: erpnext/stock/doctype/item/item.js:1278 msgid "This is for raw material Items that'll be used to create finished goods. If the Item is an additional service like 'washing' that'll be used in the BOM, keep this unchecked." msgstr "" @@ -55610,13 +55637,13 @@ msgstr "" msgid "This is not a valid formula. Check the variable used in the formula." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:198 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:266 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:279 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:199 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:267 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:280 msgid "This is required" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:599 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:575 msgid "This is the bank account entry. You cannot edit it." msgstr "" @@ -55665,7 +55692,7 @@ msgstr "" msgid "This option is useful if you want to ensure a constant supply of raw materials/products and avoid shortage. A Material Request will be raised automatically when stock reached the re-order level defined in the Item form." msgstr "" -#: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:185 +#: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:180 msgid "This report shows all entries in the system where the clearance date is before the posting date which is incorrect." msgstr "" @@ -55701,7 +55728,7 @@ msgstr "" msgid "This schedule was created when Asset {0} was scrapped." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1505 +#: erpnext/assets/doctype/asset/asset.py:1509 msgid "This schedule was created when Asset {0} was {1} into new Asset {2}." msgstr "" @@ -55727,11 +55754,11 @@ msgstr "" msgid "This section allows the user to set the Body and Closing text of the Dunning Letter for the Dunning Type based on language, which can be used in Print." msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1184 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1205 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1257 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1291 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1310 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1190 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1211 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1263 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1297 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1316 msgid "This statement has already been imported." msgstr "" @@ -55778,7 +55805,7 @@ msgstr "" msgid "This will be auto-populated if not set." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:264 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:265 msgid "This will just suggest creating a new entry, and will not automatically create it." msgstr "" @@ -56014,7 +56041,7 @@ msgstr "" msgid "To Currency" msgstr "" -#: erpnext/controllers/accounts_controller.py:625 +#: erpnext/controllers/accounts_controller.py:645 #: erpnext/setup/doctype/holiday_list/holiday_list.py:121 msgid "To Date cannot be before From Date" msgstr "" @@ -56286,11 +56313,11 @@ msgid "To include sub-assembly costs and secondary items in Finished Goods on a msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.py:2268 -#: erpnext/controllers/accounts_controller.py:3255 +#: erpnext/controllers/accounts_controller.py:3275 msgid "To include tax in row {0} in Item rate, taxes in rows {1} must also be included" msgstr "" -#: erpnext/stock/doctype/item/item.py:692 +#: erpnext/stock/doctype/item/item.py:693 msgid "To merge, following properties must be same for both items" msgstr "" @@ -56644,7 +56671,7 @@ msgid "Total Costing Amount (via Timesheet)" msgstr "" #. Label of the total_credit (Currency) field in DocType 'Journal Entry' -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:788 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:764 #: erpnext/accounts/doctype/journal_entry/journal_entry.json msgid "Total Credit" msgstr "" @@ -56667,7 +56694,7 @@ msgid "Total Credits" msgstr "" #. Label of the total_debit (Currency) field in DocType 'Journal Entry' -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:784 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:760 #: erpnext/accounts/doctype/journal_entry/journal_entry.json msgid "Total Debit" msgstr "" @@ -56903,7 +56930,7 @@ msgstr "" msgid "Total Paid Amount" msgstr "" -#: erpnext/controllers/accounts_controller.py:2810 +#: erpnext/controllers/accounts_controller.py:2830 msgid "Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total" msgstr "" @@ -57037,7 +57064,7 @@ msgid "Total Tasks" msgstr "" #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:621 -#: erpnext/accounts/report/purchase_register/purchase_register.py:263 +#: erpnext/accounts/report/purchase_register/purchase_register.py:279 msgid "Total Tax" msgstr "" @@ -57205,7 +57232,7 @@ msgstr "" msgid "Total allocated percentage for sales team should be 100" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:194 +#: erpnext/selling/doctype/customer/customer.py:195 msgid "Total contribution percentage should be equal to 100" msgstr "" @@ -57361,7 +57388,7 @@ msgstr "" msgid "Transaction Dates" msgstr "" -#: erpnext/setup/doctype/company/company.py:1090 +#: erpnext/setup/doctype/company/company.py:1091 msgid "Transaction Deletion Document {0} has been triggered for company {1}" msgstr "" @@ -57453,7 +57480,7 @@ msgstr "" #. Label of the transaction_type (Data) field in DocType 'Bank Transaction' #. Label of the transaction_type (Select) field in DocType 'Bank Transaction #. Rule' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:106 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:107 #: erpnext/accounts/doctype/bank_statement_import_log_column_map/bank_statement_import_log_column_map.json #: erpnext/accounts/doctype/bank_transaction/bank_transaction.json #: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.json @@ -57522,7 +57549,7 @@ msgstr "" #. Group in Bank Account's connections #: erpnext/accounts/doctype/bank_account/bank_account.json -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1057 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1058 #: erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template_dashboard.py:12 #: erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template_dashboard.py:13 #: erpnext/manufacturing/doctype/job_card/job_card_dashboard.py:9 @@ -57565,7 +57592,7 @@ msgstr "" #: banking/src/components/features/ActionLog/ActionLogDialogBody.tsx:301 #: banking/src/components/features/BankReconciliation/MatchAndReconcile.tsx:515 #: banking/src/components/features/BankReconciliation/MatchAndReconcile.tsx:589 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:271 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:272 #: banking/src/components/features/BankReconciliation/TransferModal.tsx:17 #: banking/src/components/features/BankReconciliation/TransferModalContent.tsx:124 #: banking/src/components/features/BankReconciliation/TransferModalContent.tsx:361 @@ -57585,7 +57612,7 @@ msgstr "" msgid "Transfer Account" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:155 +#: erpnext/assets/doctype/asset/asset.js:160 msgid "Transfer Asset" msgstr "" @@ -57682,7 +57709,7 @@ msgstr "" msgid "Transit" msgstr "" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:606 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:611 msgid "Transit Entry" msgstr "" @@ -57820,7 +57847,7 @@ msgid "Try the {0} for a better experience." msgstr "" #: erpnext/accounts/report/financial_ratios/financial_ratios.js:55 -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:198 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:200 msgid "Turnover Ratios" msgstr "" @@ -57862,7 +57889,7 @@ msgstr "" msgid "Type of Transaction" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:194 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:195 msgid "Type of check" msgstr "" @@ -58170,7 +58197,7 @@ msgstr "" msgid "Unable to find score starting at {0}. You need to have standing scores covering 0 to 100" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1128 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1135 msgid "Unable to find the time slot in the next {0} days for the operation {1}. Please increase the 'Capacity Planning For (Days)' in the {2}." msgstr "" @@ -58276,7 +58303,7 @@ msgstr "" msgid "Unit Of Measure" msgstr "" -#: erpnext/controllers/accounts_controller.py:4101 +#: erpnext/controllers/accounts_controller.py:4121 msgid "Unit Price" msgstr "" @@ -58293,7 +58320,7 @@ msgstr "" msgid "Unit of Measure (UOM)" msgstr "" -#: erpnext/stock/doctype/item/item.py:435 +#: erpnext/stock/doctype/item/item.py:436 msgid "Unit of Measure {0} has been entered more than once in Conversion Factor Table" msgstr "" @@ -58571,7 +58598,7 @@ msgstr "" msgid "Update BOM cost automatically via scheduler, based on the latest Valuation Rate/Price List Rate/Last Purchase Rate of raw materials" msgstr "" -#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.js:31 +#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.js:32 msgid "Update Batch Qty" msgstr "" @@ -58653,7 +58680,7 @@ msgstr "" #. Invoice' #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json -#: erpnext/controllers/accounts_controller.py:197 +#: erpnext/controllers/accounts_controller.py:217 msgid "Update Outstanding for Self" msgstr "" @@ -58704,7 +58731,7 @@ msgstr "" msgid "Update latest price in all BOMs" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:471 +#: erpnext/assets/doctype/asset/asset.py:475 msgid "Update stock must be enabled for the purchase invoice {0}" msgstr "" @@ -58738,7 +58765,7 @@ msgstr "" msgid "Updating Costing and Billing fields against this Project..." msgstr "" -#: erpnext/stock/doctype/item/item.py:1491 +#: erpnext/stock/doctype/item/item.py:1511 msgid "Updating Variants..." msgstr "" @@ -58959,11 +58986,6 @@ msgstr "" msgid "Use prices from Default Price List as fallback" msgstr "" -#. Label of the used (Int) field in DocType 'Coupon Code' -#: erpnext/accounts/doctype/coupon_code/coupon_code.json -msgid "Used" -msgstr "" - #. Description of the 'Sales Order Date' (Date) field in DocType 'Sales Order #. Item' #: erpnext/selling/doctype/sales_order_item/sales_order_item.json @@ -59345,15 +59367,15 @@ msgstr "" msgid "Valuation Rate (In / Out)" msgstr "" -#: erpnext/stock/stock_ledger.py:2031 +#: erpnext/stock/stock_ledger.py:2037 msgid "Valuation Rate Missing" msgstr "" -#: erpnext/stock/stock_ledger.py:2009 +#: erpnext/stock/stock_ledger.py:2015 msgid "Valuation Rate for the Item {0}, is required to do accounting entries for {1} {2}." msgstr "" -#: erpnext/stock/doctype/item/item.py:296 +#: erpnext/stock/doctype/item/item.py:297 msgid "Valuation Rate is mandatory if Opening Stock entered" msgstr "" @@ -59381,7 +59403,7 @@ msgid "Valuation rate for the item as per Sales Invoice (Only for Internal Trans msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.py:2292 -#: erpnext/controllers/accounts_controller.py:3279 +#: erpnext/controllers/accounts_controller.py:3299 msgid "Valuation type charges can not be marked as Inclusive" msgstr "" @@ -59517,7 +59539,7 @@ msgstr "" msgid "Variant" msgstr "" -#: erpnext/stock/doctype/item/item.py:963 +#: erpnext/stock/doctype/item/item.py:964 msgid "Variant Attribute Error" msgstr "" @@ -59536,7 +59558,7 @@ msgstr "" msgid "Variant Based On" msgstr "" -#: erpnext/stock/doctype/item/item.py:991 +#: erpnext/stock/doctype/item/item.py:992 msgid "Variant Based On cannot be changed" msgstr "" @@ -59554,7 +59576,7 @@ msgstr "" msgid "Variant Item" msgstr "" -#: erpnext/stock/doctype/item/item.py:961 +#: erpnext/stock/doctype/item/item.py:962 msgid "Variant Items" msgstr "" @@ -59565,7 +59587,7 @@ msgstr "" msgid "Variant Of" msgstr "" -#: erpnext/stock/doctype/item/item.js:875 +#: erpnext/stock/doctype/item/item.js:963 msgid "Variant creation has been queued." msgstr "" @@ -59692,7 +59714,7 @@ msgstr "" msgid "View Balance Sheet" msgstr "" -#: erpnext/public/js/setup_wizard.js:47 +#: erpnext/public/js/setup_wizard.js:142 msgid "View Chart of Accounts" msgstr "" @@ -59855,8 +59877,8 @@ msgstr "" msgid "Volt-Ampere" msgstr "" -#: erpnext/accounts/report/purchase_register/purchase_register.py:163 -#: erpnext/accounts/report/sales_register/sales_register.py:179 +#: erpnext/accounts/report/purchase_register/purchase_register.py:179 +#: erpnext/accounts/report/sales_register/sales_register.py:193 msgid "Voucher" msgstr "" @@ -59962,12 +59984,12 @@ msgstr "" #: erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py:112 #: erpnext/stock/report/serial_no_ledger/serial_no_ledger.py:34 #: erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:154 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:165 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:176 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:74 msgid "Voucher No" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1419 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1469 msgid "Voucher No is mandatory" msgstr "" @@ -60014,8 +60036,8 @@ msgstr "" #: erpnext/accounts/report/general_ledger/general_ledger.py:760 #: erpnext/accounts/report/invalid_ledger_entries/invalid_ledger_entries.py:31 #: erpnext/accounts/report/payment_ledger/payment_ledger.py:165 -#: erpnext/accounts/report/purchase_register/purchase_register.py:158 -#: erpnext/accounts/report/sales_register/sales_register.py:174 +#: erpnext/accounts/report/purchase_register/purchase_register.py:174 +#: erpnext/accounts/report/sales_register/sales_register.py:188 #: erpnext/accounts/report/voucher_wise_balance/voucher_wise_balance.py:17 #: erpnext/public/js/utils/unreconcile.js:71 #: erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.json @@ -60037,7 +60059,7 @@ msgstr "" #: erpnext/stock/report/serial_no_ledger/serial_no_ledger.py:28 #: erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:152 #: erpnext/stock/report/stock_ledger/stock_ledger.py:402 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:159 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:170 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:68 msgid "Voucher Type" msgstr "" @@ -60223,7 +60245,7 @@ msgid "Warehouse not found against the account {0}" msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1263 -#: erpnext/stock/doctype/delivery_note/delivery_note.py:414 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:415 msgid "Warehouse required for stock Item {0}" msgstr "" @@ -60248,11 +60270,11 @@ msgstr "" msgid "Warehouse {0} does not exist" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:316 +#: erpnext/manufacturing/doctype/work_order/work_order.py:317 msgid "Warehouse {0} is not allowed for Sales Order {1}, it should be {2}" msgstr "" -#: erpnext/controllers/stock_controller.py:816 +#: erpnext/controllers/stock_controller.py:856 msgid "Warehouse {0} is not linked to any account, please mention the account in the warehouse record or set default inventory account in company {1}." msgstr "" @@ -60385,7 +60407,7 @@ msgstr "" msgid "Warning: Material Requested Qty is less than Minimum Order Qty" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1547 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1571 msgid "Warning: Quantity exceeds maximum producible quantity based on quantity of raw materials received through the Subcontracting Inward Order {0}." msgstr "" @@ -60479,7 +60501,7 @@ msgstr "" msgid "Wavelength In Megametres" msgstr "" -#: erpnext/controllers/accounts_controller.py:192 +#: erpnext/controllers/accounts_controller.py:212 msgid "We can see {0} is made against {1}. If you want {1}'s outstanding to be updated, uncheck the '{2}' checkbox." msgstr "" @@ -60634,6 +60656,14 @@ msgstr "" msgid "What do you need help with?" msgstr "" +#: erpnext/public/js/setup_wizard.js:69 +msgid "What do you use today?" +msgstr "" + +#: erpnext/public/js/setup_wizard.js:47 +msgid "What kind of work do you do?" +msgstr "" + #: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.js:82 msgid "What will be deleted:" msgstr "" @@ -60674,7 +60704,7 @@ msgstr "" msgid "When checked, the system will use the posting datetime of the document for naming the document instead of the creation datetime of the document." msgstr "" -#: erpnext/stock/doctype/item/item.js:1211 +#: erpnext/stock/doctype/item/item.js:1297 msgid "When creating an Item, entering a value for this field will automatically create an Item Price at the backend." msgstr "" @@ -60713,6 +60743,10 @@ msgstr "" msgid "While making Purchase Invoice from Purchase Order, use Exchange Rate on Invoice's transaction date rather than inheriting it from Purchase Order. Only applies for Purchase Invoice." msgstr "" +#: erpnext/public/js/setup_wizard.js:31 +msgid "Who are you setting this up for?" +msgstr "" + #. Option for the 'Marital Status' (Select) field in DocType 'Employee' #: erpnext/setup/doctype/employee/employee.json msgid "Widowed" @@ -60767,7 +60801,7 @@ msgstr "" #. Option for the 'Transaction Type' (Select) field in DocType 'Bank #. Transaction Rule' #: banking/src/components/features/BankReconciliation/BankTransactionList.tsx:88 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:145 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:146 #: banking/src/components/features/BankStatementImporter/CSV/StatementDetails.tsx:246 #: banking/src/components/features/BankStatementImporter/CSV/StatementDetails.tsx:313 #: banking/src/pages/BankStatementImporter.tsx:194 @@ -60844,7 +60878,7 @@ msgstr "" #: erpnext/assets/doctype/asset/asset_list.js:12 #: erpnext/manufacturing/doctype/job_card/job_card.json #: erpnext/manufacturing/doctype/job_card_operation/job_card_operation.json -#: erpnext/setup/doctype/company/company.py:385 +#: erpnext/setup/doctype/company/company.py:386 #: erpnext/support/doctype/warranty_claim/warranty_claim.json msgid "Work In Progress" msgstr "" @@ -60965,12 +60999,12 @@ msgstr "" msgid "Work Order cannot be created for following reason:
    {0}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1491 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1515 msgid "Work Order cannot be raised against a Item Template" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2694 -#: erpnext/manufacturing/doctype/work_order/work_order.py:2774 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2709 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2789 msgid "Work Order has been {0}" msgstr "" @@ -61016,7 +61050,7 @@ msgstr "" msgid "Work-in-Progress Warehouse" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:856 +#: erpnext/manufacturing/doctype/work_order/work_order.py:863 msgid "Work-in-Progress Warehouse is required before Submit" msgstr "" @@ -61161,7 +61195,7 @@ msgstr "" #: erpnext/accounts/doctype/pos_profile/pos_profile.json #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json -#: erpnext/setup/doctype/company/company.py:667 +#: erpnext/setup/doctype/company/company.py:668 msgid "Write Off" msgstr "" @@ -61314,11 +61348,11 @@ msgstr "" msgid "You are importing data for the code list:" msgstr "" -#: erpnext/controllers/accounts_controller.py:3898 +#: erpnext/controllers/accounts_controller.py:3918 msgid "You are not allowed to update as per the conditions set in {} Workflow." msgstr "" -#: erpnext/accounts/general_ledger.py:818 +#: erpnext/accounts/general_ledger.py:820 msgid "You are not authorized to add or update entries before {0}" msgstr "" @@ -61387,7 +61421,7 @@ msgstr "" msgid "You can set up the rule to split the transaction across multiple accounts." msgstr "" -#: erpnext/controllers/accounts_controller.py:213 +#: erpnext/controllers/accounts_controller.py:233 msgid "You can use {0} to reconcile against {1} later." msgstr "" @@ -61415,7 +61449,7 @@ msgstr "" msgid "You cannot create or cancel any accounting entries with in the closed Accounting Period {0}" msgstr "" -#: erpnext/accounts/general_ledger.py:849 +#: erpnext/accounts/general_ledger.py:851 msgid "You cannot create/amend any accounting entries till this date." msgstr "" @@ -61472,7 +61506,7 @@ msgstr "" msgid "You do not have permission to import bank transactions" msgstr "" -#: erpnext/controllers/accounts_controller.py:3876 +#: erpnext/controllers/accounts_controller.py:3896 msgid "You do not have permissions to {} items in a {}." msgstr "" @@ -61484,11 +61518,11 @@ msgstr "" msgid "You don't have enough points to redeem." msgstr "" -#: erpnext/controllers/accounts_controller.py:4444 +#: erpnext/controllers/accounts_controller.py:4464 msgid "You don't have permission to create a Company Address. Please contact your System Manager." msgstr "" -#: erpnext/controllers/accounts_controller.py:4424 +#: erpnext/controllers/accounts_controller.py:4444 msgid "You don't have permission to update Company details. Please contact your System Manager." msgstr "" @@ -61496,7 +61530,7 @@ msgstr "" msgid "You don't have permission to update Received Qty DocField for item {0}" msgstr "" -#: erpnext/controllers/accounts_controller.py:4418 +#: erpnext/controllers/accounts_controller.py:4438 msgid "You don't have permission to update this document. Please contact your System Manager." msgstr "" @@ -61532,7 +61566,7 @@ msgstr "" msgid "You have not performed any reconciliations in this session yet." msgstr "" -#: erpnext/stock/doctype/item/item.py:1167 +#: erpnext/stock/doctype/item/item.py:1187 msgid "You have to enable auto re-order in Stock Settings to maintain re-order levels." msgstr "" @@ -61548,7 +61582,7 @@ msgstr "" msgid "You need to cancel POS Closing Entry {} to be able to cancel this document." msgstr "" -#: erpnext/controllers/accounts_controller.py:3230 +#: erpnext/controllers/accounts_controller.py:3250 msgid "You selected the account group {1} as {2} Account in row {0}. Please select a single account." msgstr "" @@ -61630,7 +61664,7 @@ msgstr "" msgid "`Allow Negative rates for Items`" msgstr "" -#: erpnext/stock/stock_ledger.py:2023 +#: erpnext/stock/stock_ledger.py:2029 msgid "after" msgstr "" @@ -61650,7 +61684,7 @@ msgstr "" msgid "as a percentage of finished item quantity" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1589 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1639 msgid "as of {0}" msgstr "" @@ -61702,7 +61736,7 @@ msgstr "" msgid "e.g. \"Summer Holiday 2019 Offer 20\"" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:663 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:639 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1233 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:685 msgid "e.g. Bank Charges" @@ -61822,7 +61856,7 @@ msgstr "" msgid "per hour" msgstr "" -#: erpnext/stock/stock_ledger.py:2024 +#: erpnext/stock/stock_ledger.py:2030 msgid "performing either one below:" msgstr "" @@ -61966,7 +62000,7 @@ msgstr "" msgid "you must select Capital Work in Progress Account in accounts table" msgstr "" -#: erpnext/controllers/accounts_controller.py:1293 +#: erpnext/controllers/accounts_controller.py:1313 msgid "{0} '{1}' is disabled" msgstr "" @@ -61974,7 +62008,7 @@ msgstr "" msgid "{0} '{1}' not in Fiscal Year {2}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:742 +#: erpnext/manufacturing/doctype/work_order/work_order.py:749 msgid "{0} ({1}) cannot be greater than planned quantity ({2}) in Work Order {3}" msgstr "" @@ -61982,7 +62016,7 @@ msgstr "" msgid "{0} {1} has submitted Assets. Remove Item {2} from table to continue." msgstr "" -#: erpnext/controllers/accounts_controller.py:2390 +#: erpnext/controllers/accounts_controller.py:2410 msgid "{0} Account not found against Customer {1}." msgstr "" @@ -62022,11 +62056,11 @@ msgstr "" msgid "{0} Request for {1}" msgstr "" -#: erpnext/stock/doctype/item/item.py:374 +#: erpnext/stock/doctype/item/item.py:375 msgid "{0} Retain Sample is based on batch, please check Has Batch No to retain sample of item" msgstr "" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1051 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1052 msgid "{0} Transaction(s) Reconciled" msgstr "" @@ -62102,7 +62136,7 @@ msgstr "" msgid "{0} creation for the following records will be skipped." msgstr "" -#: erpnext/setup/doctype/company/company.py:292 +#: erpnext/setup/doctype/company/company.py:293 msgid "{0} currency must be same as company's default currency. Please select another account." msgstr "" @@ -62118,7 +62152,7 @@ msgstr "" msgid "{0} does not belong to Company {1}" msgstr "" -#: erpnext/controllers/accounts_controller.py:352 +#: erpnext/controllers/accounts_controller.py:372 msgid "{0} does not belong to the Company {1}." msgstr "" @@ -62127,7 +62161,7 @@ msgid "{0} entered twice in Item Tax" msgstr "" #: erpnext/setup/doctype/item_group/item_group.py:48 -#: erpnext/stock/doctype/item/item.py:505 +#: erpnext/stock/doctype/item/item.py:506 msgid "{0} entered twice {1} in Item Taxes" msgstr "" @@ -62152,7 +62186,7 @@ msgstr "" msgid "{0} hours" msgstr "" -#: erpnext/controllers/accounts_controller.py:2750 +#: erpnext/controllers/accounts_controller.py:2770 msgid "{0} in row {1}" msgstr "" @@ -62174,11 +62208,11 @@ msgstr "" msgid "{0} is already running for {1}" msgstr "" -#: erpnext/controllers/accounts_controller.py:174 +#: erpnext/controllers/accounts_controller.py:194 msgid "{0} is blocked so this transaction cannot proceed" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:505 +#: erpnext/assets/doctype/asset/asset.py:509 msgid "{0} is in Draft. Submit it before creating the Asset." msgstr "" @@ -62187,7 +62221,7 @@ msgid "{0} is mandatory for Item {1}" msgstr "" #: erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:100 -#: erpnext/accounts/general_ledger.py:873 +#: erpnext/accounts/general_ledger.py:875 msgid "{0} is mandatory for account {1}" msgstr "" @@ -62195,15 +62229,15 @@ msgstr "" msgid "{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}" msgstr "" -#: erpnext/controllers/accounts_controller.py:3187 +#: erpnext/controllers/accounts_controller.py:3207 msgid "{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}." msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1813 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1863 msgid "{0} is not a CSV file." msgstr "" -#: erpnext/selling/doctype/customer/customer.py:236 +#: erpnext/selling/doctype/customer/customer.py:237 msgid "{0} is not a company bank account" msgstr "" @@ -62295,7 +62329,7 @@ msgstr "" msgid "{0} payment entries can not be filtered by {1}" msgstr "" -#: erpnext/controllers/stock_controller.py:1779 +#: erpnext/controllers/stock_controller.py:1819 msgid "{0} qty of Item {1} is being received into Warehouse {2} with capacity {3}." msgstr "" @@ -62324,16 +62358,16 @@ msgstr "" msgid "{0} units of {1} are required in {2} with the inventory dimension: {3} on {4} {5} for {6} to complete the transaction." msgstr "" -#: erpnext/stock/stock_ledger.py:1676 erpnext/stock/stock_ledger.py:2172 -#: erpnext/stock/stock_ledger.py:2186 +#: erpnext/stock/stock_ledger.py:1682 erpnext/stock/stock_ledger.py:2197 +#: erpnext/stock/stock_ledger.py:2211 msgid "{0} units of {1} needed in {2} on {3} {4} for {5} to complete this transaction." msgstr "" -#: erpnext/stock/stock_ledger.py:2273 erpnext/stock/stock_ledger.py:2318 +#: erpnext/stock/stock_ledger.py:2298 erpnext/stock/stock_ledger.py:2343 msgid "{0} units of {1} needed in {2} on {3} {4} to complete this transaction." msgstr "" -#: erpnext/stock/stock_ledger.py:1670 +#: erpnext/stock/stock_ledger.py:1676 msgid "{0} units of {1} needed in {2} to complete this transaction." msgstr "" @@ -62345,7 +62379,7 @@ msgstr "" msgid "{0} valid serial nos for Item {1}" msgstr "" -#: erpnext/stock/doctype/item/item.js:880 +#: erpnext/stock/doctype/item/item.js:968 msgid "{0} variants created." msgstr "" @@ -62369,7 +62403,7 @@ msgstr "" msgid "{0} {1} Manually" msgstr "" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1055 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1056 msgid "{0} {1} Partially Reconciled" msgstr "" @@ -62510,7 +62544,7 @@ msgstr "" msgid "{0} {1}: Accounting Entry for {2} can only be made in currency: {3}" msgstr "" -#: erpnext/controllers/stock_controller.py:948 +#: erpnext/controllers/stock_controller.py:988 msgid "{0} {1}: Cost Center is mandatory for Item {2}" msgstr "" @@ -62542,11 +62576,11 @@ msgstr "" msgid "{0}%" msgstr "" -#: erpnext/controllers/website_list_for_contact.py:206 +#: erpnext/controllers/website_list_for_contact.py:207 msgid "{0}% Billed" msgstr "" -#: erpnext/controllers/website_list_for_contact.py:214 +#: erpnext/controllers/website_list_for_contact.py:215 msgid "{0}% Delivered" msgstr "" @@ -62584,7 +62618,15 @@ msgstr "" msgid "{0}: Virtual DocType (no database table)" msgstr "" -#: erpnext/controllers/accounts_controller.py:542 +#: erpnext/stock/doctype/item/item.js:884 +msgid "{0}: remove invalid value(s) {1}" +msgstr "" + +#: erpnext/stock/doctype/item/item.js:891 +msgid "{0}: select the typed value {1} from the list or clear it" +msgstr "" + +#: erpnext/controllers/accounts_controller.py:562 msgid "{0}: {1} does not belong to the Company: {2}" msgstr "" @@ -62592,7 +62634,7 @@ msgstr "" msgid "{0}: {1} does not exist" msgstr "" -#: erpnext/setup/doctype/company/company.py:279 +#: erpnext/setup/doctype/company/company.py:280 msgid "{0}: {1} is a group account." msgstr "" @@ -62612,11 +62654,11 @@ msgstr "" msgid "{field_label} is mandatory for sub-contracted {doctype}." msgstr "" -#: erpnext/controllers/stock_controller.py:2240 +#: erpnext/controllers/stock_controller.py:2283 msgid "{item_name}'s Sample Size ({sample_size}) cannot be greater than the Accepted Quantity ({accepted_quantity})" msgstr "" -#: erpnext/controllers/stock_controller.py:2005 +#: erpnext/controllers/stock_controller.py:2048 msgid "{ref_doctype} {ref_name} status is {status}." msgstr "" From 20df15b3ac7ac827cc6e80781715ce9d24f5a82f Mon Sep 17 00:00:00 2001 From: Dany Robert Date: Tue, 7 Jul 2026 19:44:35 +0530 Subject: [PATCH 43/91] fix: precision issue causing reconciliation error (#54043) * fix: precision issue causing reconciliation error * chore: code styling changes * test: precision causing reconciliation failure * fix: enhance payment reconciliation tests for floating-point precision * fix(test): incorrect assertion on status --------- Co-authored-by: ruthra kumar (cherry picked from commit be10c8ced9d1993dd660e5dfae681cfe22d7d1fd) --- .../payment_reconciliation.py | 11 ++- .../test_payment_reconciliation.py | 73 ++++++++++++++++++- 2 files changed, 81 insertions(+), 3 deletions(-) diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py index cbb579a2d09..1b641c1f59f 100644 --- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py +++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py @@ -796,10 +796,17 @@ class PaymentReconciliation(Document): def reconcile_dr_cr_note(dr_cr_notes, company, active_dimensions=None): + allocated_amount_precision = get_field_precision( + frappe.get_meta("Payment Reconciliation Allocation").get_field("allocated_amount") + ) for inv in dr_cr_notes: if ( - abs(frappe.db.get_value(inv.voucher_type, inv.voucher_no, "outstanding_amount")) - < inv.allocated_amount + flt( + abs(frappe.db.get_value(inv.voucher_type, inv.voucher_no, "outstanding_amount")) + - inv.allocated_amount, + allocated_amount_precision, + ) + < 0 ): frappe.throw( _("{0} has been modified after you pulled it. Please pull it again.").format(inv.voucher_type) diff --git a/erpnext/accounts/doctype/payment_reconciliation/test_payment_reconciliation.py b/erpnext/accounts/doctype/payment_reconciliation/test_payment_reconciliation.py index 18501c0fefd..f842cc879fa 100644 --- a/erpnext/accounts/doctype/payment_reconciliation/test_payment_reconciliation.py +++ b/erpnext/accounts/doctype/payment_reconciliation/test_payment_reconciliation.py @@ -51,6 +51,7 @@ class TestPaymentReconciliation(ERPNextTestSuite): sinv = create_sales_invoice( qty=qty, rate=rate, + posting_date=posting_date, company=self.company, customer=self.customer, item_code=self.item, @@ -2018,7 +2019,7 @@ class TestPaymentReconciliation(ERPNextTestSuite): pr.reconcile() si.reload() - self.assertEqual(si.status, "Partly Paid") + self.assertEqual(si.status, "Overdue") # check PR tool output post reconciliation self.assertEqual(len(pr.get("invoices")), 1) self.assertEqual(pr.get("invoices")[0].get("outstanding_amount"), 120) @@ -2414,6 +2415,76 @@ class TestPaymentReconciliation(ERPNextTestSuite): self.assertEqual(flt(pr.allocation[0].difference_amount), 5000.0) pr.reconcile() + def test_cr_note_split_across_invoices_floating_point_precision(self): + """Regression: when a credit note is split across multiple invoices, floating-point + arithmetic (150 - 8.45 - 90.72 = 50.83000000000001) must not cause reconcile() to fail. + + The test environment rounds INR totals to whole rupees (smallest_currency_fraction_value=0), + so the invoices are created with round-number totals (100, 200, 100) and then partially paid + down to the decimal outstanding amounts (8.45, 90.72, 72.57) via payment entries. + """ + from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry + + # Create invoices on different posting dates to control sort-order in Payment Reconciliation + # (invoices are sorted by posting_date ascending, so si_a is processed first). + # Processing order 8.45 → 90.72 → 72.57 produces the float chain: + # 150 - 8.45 = 141.55 → 141.55 - 90.72 = 50.83000000000001 + # The last allocation row will therefore carry allocated_amount = 50.83000000000001. + si_a = self.create_sales_invoice(qty=1, rate=100, posting_date=add_days(nowdate(), -2)) + si_b = self.create_sales_invoice(qty=1, rate=200, posting_date=add_days(nowdate(), -1)) + si_c = self.create_sales_invoice(qty=1, rate=100, posting_date=nowdate()) + + # Partially pay each invoice so the remaining outstanding is a clean decimal value. + # INR rounds the invoice total to a whole rupee, so we achieve decimal outstandings + # by subtracting a decimal-valued payment from the integer total: + # 100 - 91.55 = 8.45 + # 200 - 109.28 = 90.72 + # 100 - 27.43 = 72.57 + for si, partial_paid in ((si_a, 91.55), (si_b, 109.28), (si_c, 27.43)): + pe = get_payment_entry(si.doctype, si.name) + pe.paid_amount = partial_paid + pe.received_amount = partial_paid + pe.references[0].allocated_amount = partial_paid + pe.save().submit() + + cr_note = self.create_sales_invoice( + qty=-1, rate=150, posting_date=nowdate(), do_not_save=True, do_not_submit=True + ) + cr_note.is_return = 1 + cr_note = cr_note.save().submit() + + pr = self.create_payment_reconciliation() + # Widen date range so all three invoices (oldest is -2 days) are fetched + pr.from_invoice_date = add_days(nowdate(), -2) + pr.to_invoice_date = nowdate() + pr.from_payment_date = nowdate() + pr.to_payment_date = nowdate() + + pr.get_unreconciled_entries() + self.assertEqual(len(pr.invoices), 3) + self.assertEqual(len(pr.payments), 1) + + invoices = [x.as_dict() for x in pr.invoices] + payments = [x.as_dict() for x in pr.payments] + pr.allocate_entries(frappe._dict({"invoices": invoices, "payments": payments})) + + # Credit note (150) covers all of si_a (8.45) and si_b (90.72), then partially si_c + self.assertEqual(len(pr.allocation), 3) + last_row = pr.allocation[-1] + # Last allocated amount should be ~50.83 (possibly 50.83000000000001 due to float arithmetic) + self.assertAlmostEqual(flt(last_row.allocated_amount), 50.83, places=2) + + # reconcile() must not raise "has been modified after you pulled it" due to float imprecision + pr.reconcile() + + si_a.reload() + si_b.reload() + si_c.reload() + self.assertEqual(si_a.outstanding_amount, 0) + self.assertEqual(si_b.outstanding_amount, 0) + # si_c is only partially settled: 72.57 - 50.83 = 21.74 + self.assertAlmostEqual(si_c.outstanding_amount, 21.74, places=2) + def create_fiscal_year(company, year_start_date, year_end_date): fy_docname = frappe.db.exists( From 159a2538da556dd2699a3c3869622a48cbfe70df Mon Sep 17 00:00:00 2001 From: Shllokkk Date: Tue, 7 Jul 2026 13:50:06 +0530 Subject: [PATCH 44/91] fix: validate template and its variant in the same Pricing Rule (cherry picked from commit a88048b37875ea462aee6ee7c235610b96d582bd) --- .../doctype/pricing_rule/pricing_rule.py | 18 +++++++++++++ .../doctype/pricing_rule/test_pricing_rule.py | 25 +++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py index 810c50852c5..9137eecb2df 100644 --- a/erpnext/accounts/doctype/pricing_rule/pricing_rule.py +++ b/erpnext/accounts/doctype/pricing_rule/pricing_rule.py @@ -156,6 +156,24 @@ class PricingRule(Document): if len(values) != len(set(values)): frappe.throw(_("Duplicate {0} found in the table").format(self.apply_on)) + if self.apply_on == "Item Code": + self.validate_template_with_variant(values) + + def validate_template_with_variant(self, item_codes): + # throws if a template and its variant both exist in one rule + variants = frappe.get_all( + "Item", + filters={"name": ("in", item_codes), "variant_of": ("in", item_codes)}, + fields=["name", "variant_of"], + ) + if variants: + variant = variants[0] + frappe.throw( + _("Variant {0} and its template {1} cannot both be added to the same Pricing Rule").format( + frappe.bold(variant.name), frappe.bold(variant.variant_of) + ) + ) + def validate_mandatory(self): if self.has_priority and not self.priority: throw(_("Priority is mandatory"), frappe.MandatoryError, _("Please Set Priority")) diff --git a/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py b/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py index 3e5550611ac..7b0c5444d40 100644 --- a/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py +++ b/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.py @@ -333,6 +333,31 @@ class TestPricingRule(ERPNextTestSuite): details = get_item_details(args) self.assertEqual(details.get("discount_percentage"), 17.5) + def test_pricing_rule_with_template_and_its_variant(self): + if not frappe.db.exists("Item", "Test Variant PRT"): + variant = frappe.new_doc("Item") + variant.item_code = "Test Variant PRT" + variant.item_name = "Test Variant PRT" + variant.item_group = "_Test Item Group" + variant.is_stock_item = 1 + variant.variant_of = "_Test Variant Item" + variant.stock_uom = "_Test UOM" + variant.append("attributes", {"attribute": "Test Size", "attribute_value": "Medium"}) + variant.insert() + + rule = frappe.new_doc("Pricing Rule") + rule.title = "_Test Pricing Rule Template Variant" + rule.apply_on = "Item Code" + rule.currency = "USD" + rule.selling = 1 + rule.rate_or_discount = "Discount Percentage" + rule.discount_percentage = 10 + rule.company = "_Test Company" + rule.append("items", {"item_code": "_Test Variant Item"}) + rule.append("items", {"item_code": "Test Variant PRT"}) + + self.assertRaises(frappe.ValidationError, rule.insert) + def test_pricing_rule_for_stock_qty(self): test_record = { "doctype": "Pricing Rule", From 7ce1289c10e06095c968720dc62cd0786c21b601 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 8 Jul 2026 18:10:27 +0530 Subject: [PATCH 45/91] fix: added permission checks on various whitelisted functions (backport #56745) (#56946) Co-authored-by: Diptanil Saha --- .../doctype/bank_account/bank_account.py | 10 ++- .../doctype/payment_entry/payment_entry.py | 5 +- erpnext/accounts/party.py | 78 +++++++++++-------- erpnext/tests/utils.py | 1 + 4 files changed, 61 insertions(+), 33 deletions(-) diff --git a/erpnext/accounts/doctype/bank_account/bank_account.py b/erpnext/accounts/doctype/bank_account/bank_account.py index 0697a1a9c64..c58af6b88f3 100644 --- a/erpnext/accounts/doctype/bank_account/bank_account.py +++ b/erpnext/accounts/doctype/bank_account/bank_account.py @@ -107,7 +107,7 @@ def get_party_bank_account(party_type, party): ) -def get_default_company_bank_account(company, party_type, party): +def get_default_company_bank_account(company, party_type, party, ignore_permissions=True): default_company_bank_account = frappe.db.get_value(party_type, party, "default_bank_account") if default_company_bank_account: if company != frappe.get_cached_value("Bank Account", default_company_bank_account, "company"): @@ -118,6 +118,14 @@ def get_default_company_bank_account(company, party_type, party): "Bank Account", {"company": company, "is_company_account": 1, "is_default": 1} ) + if not ignore_permissions: + default_company_bank_account = ( + default_company_bank_account + if default_company_bank_account + and frappe.get_cached_doc("Bank Account", default_company_bank_account).has_permission("select") + else None + ) + return default_company_bank_account diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py index 4d218d272b3..9293e7fb0b8 100644 --- a/erpnext/accounts/doctype/payment_entry/payment_entry.py +++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py @@ -2712,6 +2712,9 @@ def get_party_details(company, party_type, party, date, cost_center=None): if not frappe.db.exists(party_type, party): frappe.throw(_("{0} {1} does not exist").format(_(party_type), party)) + ptype = "select" if frappe.only_has_select_perm(party_type) else "read" + frappe.has_permission(party_type, ptype, party, throw=True) + party_account = get_party_account(party_type, party, company) account_currency = get_account_currency(party_account) _party_name = "title" if party_type == "Shareholder" else party_type.lower() + "_name" @@ -2719,7 +2722,7 @@ def get_party_details(company, party_type, party, date, cost_center=None): if party_type in ["Customer", "Supplier"]: party_bank_account = get_party_bank_account(party_type, party) - bank_account = get_default_company_bank_account(company, party_type, party) + bank_account = get_default_company_bank_account(company, party_type, party, ignore_permissions=False) return { "party_account": party_account, diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py index 1c1b166c605..7b726604d8e 100644 --- a/erpnext/accounts/party.py +++ b/erpnext/accounts/party.py @@ -428,6 +428,17 @@ def get_party_account(party_type, party=None, company=None, include_advance=Fals Will first search in party (Customer / Supplier) record, if not found, will search in group (Customer Group / Supplier Group), finally will return default.""" + + def account_perm_check(account): + ptype = "select" if frappe.only_has_select_perm("Account") else "read" + if frappe.has_permission("Account", ptype, account): + return + + # Using custom message to prevent data leak in case of `apply_strict_permission` is enabled. + frappe.throw( + _("User don't have permissions to select/read this account."), exc=frappe.PermissionError + ) + if not party_type: frappe.throw(_("Party Type is mandatory")) if not company: @@ -438,46 +449,51 @@ def get_party_account(party_type, party=None, company=None, include_advance=Fals "default_receivable_account" if party_type == "Customer" else "default_payable_account" ) - return frappe.get_cached_value("Company", company, default_account_name) - - account = frappe.db.get_value( - "Party Account", {"parenttype": party_type, "parent": party, "company": company}, "account" - ) - - if not account and party_type in ["Customer", "Supplier"]: - party_group_doctype = "Customer Group" if party_type == "Customer" else "Supplier Group" - group = frappe.get_cached_value(party_type, party, scrub(party_group_doctype)) + account = frappe.get_cached_value("Company", company, default_account_name) + else: account = frappe.db.get_value( - "Party Account", - {"parenttype": party_group_doctype, "parent": group, "company": company}, - "account", + "Party Account", {"parenttype": party_type, "parent": party, "company": company}, "account" ) - if not account and party_type in ["Customer", "Supplier"]: - default_account_name = ( - "default_receivable_account" if party_type == "Customer" else "default_payable_account" - ) - account = frappe.get_cached_value("Company", company, default_account_name) + if not account and party_type in ["Customer", "Supplier"]: + party_group_doctype = "Customer Group" if party_type == "Customer" else "Supplier Group" + group = frappe.get_cached_value(party_type, party, scrub(party_group_doctype)) + account = frappe.db.get_value( + "Party Account", + {"parenttype": party_group_doctype, "parent": group, "company": company}, + "account", + ) - existing_gle_currency = get_party_gle_currency(party_type, party, company) - if existing_gle_currency: - if account: - account_currency = frappe.get_cached_value("Account", account, "account_currency") - if (account and account_currency != existing_gle_currency) or not account: - account = get_party_gle_account(party_type, party, company) + if not account and party_type in ["Customer", "Supplier"]: + default_account_name = ( + "default_receivable_account" if party_type == "Customer" else "default_payable_account" + ) + account = frappe.get_cached_value("Company", company, default_account_name) - # get default account on the basis of party type - if not account: - account_type = frappe.get_cached_value("Party Type", party_type, "account_type") - default_account_name = "default_" + account_type.lower() + "_account" - account = frappe.get_cached_value("Company", company, default_account_name) + existing_gle_currency = get_party_gle_currency(party_type, party, company) + if existing_gle_currency: + if account: + account_currency = frappe.get_cached_value("Account", account, "account_currency") + if (account and account_currency != existing_gle_currency) or not account: + account = get_party_gle_account(party_type, party, company) - if include_advance and party_type in ["Customer", "Supplier", "Student"]: + # get default account on the basis of party type + if not account: + account_type = frappe.get_cached_value("Party Type", party_type, "account_type") + default_account_name = "default_" + account_type.lower() + "_account" + account = frappe.get_cached_value("Company", company, default_account_name) + + if account: + account_perm_check(account) + + if include_advance and party and party_type in ["Customer", "Supplier", "Student"]: advance_account = get_party_advance_account(party_type, party, company) + if advance_account: + account_perm_check(advance_account) return [account, advance_account] - else: - return [account] + + return [account] return account diff --git a/erpnext/tests/utils.py b/erpnext/tests/utils.py index 99c55b6d7ba..a48f193c700 100644 --- a/erpnext/tests/utils.py +++ b/erpnext/tests/utils.py @@ -462,6 +462,7 @@ class BootStrapTestData: "new_password": "Eastern_43A1W", "roles": [ {"doctype": "Has Role", "parentfield": "roles", "role": "_Test Role"}, + {"doctype": "Has Role", "parentfield": "roles", "role": "Accounts User"}, {"doctype": "Has Role", "parentfield": "roles", "role": "System Manager"}, ], }, From 393b5d1f74980c0340e9dc323275e6f819a8e991 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Wed, 8 Jul 2026 17:29:33 +0200 Subject: [PATCH 46/91] feat(sla): filter service level agreement link by document type (backport #56954) (#56956) Co-authored-by: Raffael Meyer <14891507+barredterra@users.noreply.github.com> --- erpnext/patches.txt | 2 + ...ckfill_sla_link_filters_on_custom_field.py | 21 +++++ .../backfill_sla_link_filters_on_docfield.py | 20 +++++ .../service_level_agreement.py | 12 ++- .../test_service_level_agreement.py | 83 ++++++++++++++++--- 5 files changed, 124 insertions(+), 14 deletions(-) create mode 100644 erpnext/patches/v15_0/backfill_sla_link_filters_on_custom_field.py create mode 100644 erpnext/patches/v15_0/backfill_sla_link_filters_on_docfield.py diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 00f3ea2fb40..fcd35b19b60 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -486,3 +486,5 @@ erpnext.patches.v16_0.migrate_address_contact_custom_fields erpnext.patches.v16_0.drop_redundant_serial_no_index_from_sabb execute:frappe.db.set_single_value("Accounts Settings", "pcv_job_timeout", 3600) erpnext.patches.v16_0.remove_mandatory_from_inv_dimension_fields +erpnext.patches.v15_0.backfill_sla_link_filters_on_custom_field +erpnext.patches.v15_0.backfill_sla_link_filters_on_docfield diff --git a/erpnext/patches/v15_0/backfill_sla_link_filters_on_custom_field.py b/erpnext/patches/v15_0/backfill_sla_link_filters_on_custom_field.py new file mode 100644 index 00000000000..65996f258d8 --- /dev/null +++ b/erpnext/patches/v15_0/backfill_sla_link_filters_on_custom_field.py @@ -0,0 +1,21 @@ +import frappe + + +def execute(): + for custom_field in frappe.get_all( + "Custom Field", + filters={ + "fieldname": "service_level_agreement", + "fieldtype": "Link", + "options": "Service Level Agreement", + "link_filters": ("is", "not set"), + }, + fields=["name", "dt"], + ): + link_filters = frappe.as_json( + [["Service Level Agreement", "document_type", "=", custom_field.dt]], indent=None + ) + frappe.db.set_value( + "Custom Field", custom_field.name, "link_filters", link_filters, update_modified=False + ) + frappe.clear_cache(doctype=custom_field.dt) diff --git a/erpnext/patches/v15_0/backfill_sla_link_filters_on_docfield.py b/erpnext/patches/v15_0/backfill_sla_link_filters_on_docfield.py new file mode 100644 index 00000000000..22110afc9ff --- /dev/null +++ b/erpnext/patches/v15_0/backfill_sla_link_filters_on_docfield.py @@ -0,0 +1,20 @@ +import frappe + + +def execute(): + for docfield in frappe.get_all( + "DocField", + filters={ + "parenttype": "DocType", + "fieldname": "service_level_agreement", + "fieldtype": "Link", + "options": "Service Level Agreement", + "link_filters": ("is", "not set"), + }, + fields=["name", "parent"], + ): + link_filters = frappe.as_json( + [["Service Level Agreement", "document_type", "=", docfield.parent]], indent=None + ) + frappe.db.set_value("DocField", docfield.name, "link_filters", link_filters, update_modified=False) + frappe.clear_cache(doctype=docfield.parent) diff --git a/erpnext/support/doctype/service_level_agreement/service_level_agreement.py b/erpnext/support/doctype/service_level_agreement/service_level_agreement.py index b39f1ce34a9..5579e7cabef 100644 --- a/erpnext/support/doctype/service_level_agreement/service_level_agreement.py +++ b/erpnext/support/doctype/service_level_agreement/service_level_agreement.py @@ -232,7 +232,7 @@ class ServiceLevelAgreement(Document): if self.document_type == "Issue": return - service_level_agreement_fields = get_service_level_agreement_fields() + service_level_agreement_fields = get_service_level_agreement_fields(self.document_type) meta = frappe.get_meta(self.document_type, cached=False) if meta.custom: @@ -276,6 +276,7 @@ class ServiceLevelAgreement(Document): "hidden": field.get("hidden"), "description": field.get("description"), "default": field.get("default"), + "link_filters": field.get("link_filters"), } ).insert(ignore_permissions=True) else: @@ -302,6 +303,7 @@ class ServiceLevelAgreement(Document): "hidden": field.get("hidden"), "description": field.get("description"), "default": field.get("default"), + "link_filters": field.get("link_filters"), } ).insert(ignore_permissions=True) else: @@ -309,7 +311,7 @@ class ServiceLevelAgreement(Document): self.reset_field_properties(existing_field, "Custom Field", field) def reset_field_properties(self, field, field_dt, sla_field): - field = frappe.get_doc(field_dt, {"fieldname": field.fieldname}) + field = frappe.get_doc(field_dt, field.name) field.label = sla_field.get("label") field.fieldname = sla_field.get("fieldname") field.fieldtype = sla_field.get("fieldtype") @@ -320,6 +322,7 @@ class ServiceLevelAgreement(Document): field.hidden = sla_field.get("hidden") field.description = sla_field.get("description") field.default = sla_field.get("default") + field.link_filters = sla_field.get("link_filters") field.save(ignore_permissions=True) @@ -907,7 +910,7 @@ def record_assigned_users_on_failure(doc): doc.add_comment(comment_type="Assigned", text=message) -def get_service_level_agreement_fields(): +def get_service_level_agreement_fields(doctype: str): return [ { "collapsible": 1, @@ -920,6 +923,9 @@ def get_service_level_agreement_fields(): "fieldtype": "Link", "label": "Service Level Agreement", "options": "Service Level Agreement", + "link_filters": frappe.as_json( + [["Service Level Agreement", "document_type", "=", doctype]], indent=None + ), }, {"fieldname": "priority", "fieldtype": "Link", "label": "Priority", "options": "Issue Priority"}, {"fieldname": "response_by", "fieldtype": "Datetime", "label": "Response By", "read_only": 1}, diff --git a/erpnext/support/doctype/service_level_agreement/test_service_level_agreement.py b/erpnext/support/doctype/service_level_agreement/test_service_level_agreement.py index 0f6c1262b69..e00276dae30 100644 --- a/erpnext/support/doctype/service_level_agreement/test_service_level_agreement.py +++ b/erpnext/support/doctype/service_level_agreement/test_service_level_agreement.py @@ -1,7 +1,7 @@ # Copyright (c) 2018, Frappe Technologies Pvt. Ltd. and Contributors # See license.txt import datetime -import unittest +import json import frappe from frappe.utils import flt @@ -150,11 +150,14 @@ class TestServiceLevelAgreement(ERPNextTestSuite): self.assertEqual(lead_sla.name, default_sla.name) # check SLA custom fields created for leads - sla_fields = get_service_level_agreement_fields() + sla_fields = get_service_level_agreement_fields(doctype) for field in sla_fields: - self.assertTrue( - frappe.db.exists("Custom Field", {"dt": doctype, "fieldname": field.get("fieldname")}) + filters = {"dt": doctype, "fieldname": field.get("fieldname")} + self.assertTrue(frappe.db.exists("Custom Field", filters)) + self.assertEqual( + get_link_filters("Custom Field", filters), + json.loads(field["link_filters"]) if field.get("link_filters") else None, ) def test_docfield_creation_for_sla_on_custom_dt(self): @@ -174,13 +177,66 @@ class TestServiceLevelAgreement(ERPNextTestSuite): self.assertEqual(sla.name, default_sla.name) # check SLA docfields created - sla_fields = get_service_level_agreement_fields() + sla_fields = get_service_level_agreement_fields(doctype.name) for field in sla_fields: - self.assertTrue( - frappe.db.exists("DocField", {"fieldname": field.get("fieldname"), "parent": doctype.name}) + filters = {"fieldname": field.get("fieldname"), "parent": doctype.name} + self.assertTrue(frappe.db.exists("DocField", filters)) + self.assertEqual( + get_link_filters("DocField", filters), + json.loads(field["link_filters"]) if field.get("link_filters") else None, ) + def test_reset_field_properties_does_not_clobber_other_doctypes_field(self): + """Two doctypes each get their own "service_level_agreement" custom field + (same fieldname, different owning doctype). Updating the field on one of + them must not clobber the other's, even though both share the fieldname + (regression test for the fix in reset_field_properties, see PR #56954).""" + doctype_a = create_custom_doctype("Test SLA Dt A") + doctype_b = create_custom_doctype("Test SLA Dt B") + + for doctype in (doctype_a.name, doctype_b.name): + create_service_level_agreement( + default_service_level_agreement=1, + holiday_list="__Test Holiday List", + entity_type=None, + entity=None, + response_time=14400, + resolution_time=21600, + doctype=doctype, + ) + + def get_sla_field_link_filters(doctype): + return get_link_filters("DocField", {"parent": doctype, "fieldname": "service_level_agreement"}) + + self.assertEqual( + get_sla_field_link_filters(doctype_a.name), + [["Service Level Agreement", "document_type", "=", doctype_a.name]], + ) + + # The field on doctype_b already exists, so creating another, entity-specific + # SLA for doctype_b takes the "update existing field" branch (reset_field_properties) + # instead of creating a new field. + customer = create_customer() + create_service_level_agreement( + default_service_level_agreement=0, + holiday_list="__Test Holiday List", + entity_type="Customer", + entity=customer, + response_time=7200, + resolution_time=10800, + doctype=doctype_b.name, + ) + + self.assertEqual( + get_sla_field_link_filters(doctype_a.name), + [["Service Level Agreement", "document_type", "=", doctype_a.name]], + ) + self.assertEqual( + get_sla_field_link_filters(doctype_b.name), + [["Service Level Agreement", "document_type", "=", doctype_b.name]], + ) + def test_sla_application(self): # Default Service Level Agreement doctype = "Lead" @@ -333,6 +389,11 @@ class TestServiceLevelAgreement(ERPNextTestSuite): self.assertFalse(applied_sla) +def get_link_filters(field_doctype, filters): + value = frappe.db.get_value(field_doctype, filters, "link_filters") + return json.loads(value) if value else None + + def get_service_level_agreement( default_service_level_agreement=None, entity_type=None, entity=None, doctype="Issue" ): @@ -573,8 +634,8 @@ def make_holiday_list(): ).insert() -def create_custom_doctype(): - if not frappe.db.exists("DocType", "Test SLA on Custom Dt"): +def create_custom_doctype(name="Test SLA on Custom Dt"): + if not frappe.db.exists("DocType", name): doc = frappe.get_doc( { "doctype": "DocType", @@ -597,13 +658,13 @@ def create_custom_doctype(): }, ], "permissions": [{"role": "System Manager", "read": 1, "write": 1}], - "name": "Test SLA on Custom Dt", + "name": name, } ) doc.insert() return doc else: - return frappe.get_doc("DocType", "Test SLA on Custom Dt") + return frappe.get_doc("DocType", name) def make_lead(creation=None, index=0, company=None): From 14efd14384832fd9f5b074ffe1a7734cdbb559be Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 9 Jul 2026 09:32:48 +0000 Subject: [PATCH 47/91] fix(patch): moved create_company_custom_fields from `pre_model_sync` to `post_model_sync` (backport #56962) (#56965) Co-authored-by: Diptanil Saha --- erpnext/patches.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/patches.txt b/erpnext/patches.txt index fcd35b19b60..ed7d6f5d67b 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -260,7 +260,6 @@ execute:frappe.rename_doc("Report", "TDS Payable Monthly", "Tax Withholding Deta erpnext.patches.v14_0.update_proprietorship_to_individual erpnext.patches.v15_0.rename_subcontracting_fields erpnext.patches.v15_0.unset_incorrect_additional_discount_percentage -erpnext.patches.v16_0.create_company_custom_fields [post_model_sync] erpnext.patches.v15_0.rename_gross_purchase_amount_to_net_purchase_amount @@ -439,6 +438,7 @@ erpnext.patches.v16_0.set_reporting_currency erpnext.patches.v16_0.set_posting_datetime_for_sabb_and_drop_indexes erpnext.patches.v16_0.update_serial_no_reference_name erpnext.patches.v16_0.update_account_categories_for_existing_accounts +erpnext.patches.v16_0.create_company_custom_fields erpnext.patches.v16_0.rename_subcontracted_quantity erpnext.patches.v16_0.add_new_stock_entry_types erpnext.patches.v15_0.set_asset_status_if_not_already_set From dfe4d5ab73b2e5e896d58daee3253e35632a76a5 Mon Sep 17 00:00:00 2001 From: diptanilsaha Date: Wed, 1 Jul 2026 02:12:21 +0530 Subject: [PATCH 48/91] fix(crm_settings): skip allowed users check when frappe crm is installed locally (cherry picked from commit 41badb3d740cd9ef5192a9756022afe6d0e72750) --- .../crm/doctype/crm_settings/crm_settings.js | 33 +++++++++++++++++-- .../doctype/crm_settings/crm_settings.json | 4 +-- .../crm/doctype/crm_settings/crm_settings.py | 7 +++- erpnext/crm/frappe_crm_api.py | 12 ++++++- 4 files changed, 50 insertions(+), 6 deletions(-) diff --git a/erpnext/crm/doctype/crm_settings/crm_settings.js b/erpnext/crm/doctype/crm_settings/crm_settings.js index 0fb695a3da4..ef71437be49 100644 --- a/erpnext/crm/doctype/crm_settings/crm_settings.js +++ b/erpnext/crm/doctype/crm_settings/crm_settings.js @@ -2,6 +2,35 @@ // For license information, please see license.txt frappe.ui.form.on("CRM Settings", { - // refresh: function(frm) { - // } + refresh: function (frm) { + const flag = frm.events.calculate_visiblity_flag(frm); + + frm.set_df_property("allowed_users", "hidden", !flag); + frm.set_df_property("allowed_users", "reqd", flag); + }, + + enable_frappe_crm_data_synchronization: function (frm) { + const flag = frm.events.calculate_visiblity_flag(frm); + + if (flag) { + frappe.show_alert( + __("Allowed Users is required for data synchronization from remote Frappe CRM site.") + ); + } + + /* + make allowed_users field visible and mandatory if enable_frappe_crm_data_synchronization + is set and crm app is not installed. + */ + + frm.set_df_property("allowed_users", "hidden", !flag); + frm.set_df_property("allowed_users", "reqd", flag); + }, + + calculate_visiblity_flag: function (frm) { + const crm_sync_enabled = frm.doc.enable_frappe_crm_data_synchronization; + const is_crm_installed = cint(frappe.utils.get_installed_apps().includes("crm")); + + return crm_sync_enabled && !is_crm_installed; + }, }); diff --git a/erpnext/crm/doctype/crm_settings/crm_settings.json b/erpnext/crm/doctype/crm_settings/crm_settings.json index 236a2d8ef76..3fbd1ea208c 100644 --- a/erpnext/crm/doctype/crm_settings/crm_settings.json +++ b/erpnext/crm/doctype/crm_settings/crm_settings.json @@ -120,9 +120,9 @@ "fieldtype": "Column Break" }, { - "depends_on": "eval:doc.enable_frappe_crm_data_synchronization === 1;", "fieldname": "allowed_users", "fieldtype": "Table MultiSelect", + "hidden": 1, "label": "Allowed Users", "options": "Frappe CRM Allowed User", "permlevel": 1 @@ -140,7 +140,7 @@ "index_web_pages_for_search": 1, "issingle": 1, "links": [], - "modified": "2026-06-22 01:26:13.474915", + "modified": "2026-07-01 01:09:16.461470", "modified_by": "Administrator", "module": "CRM", "name": "CRM Settings", diff --git a/erpnext/crm/doctype/crm_settings/crm_settings.py b/erpnext/crm/doctype/crm_settings/crm_settings.py index 7ca341adb77..379c55ae5b3 100644 --- a/erpnext/crm/doctype/crm_settings/crm_settings.py +++ b/erpnext/crm/doctype/crm_settings/crm_settings.py @@ -6,6 +6,8 @@ from frappe import _ from frappe.custom.doctype.custom_field.custom_field import create_custom_fields from frappe.model.document import Document +from erpnext.crm.frappe_crm_api import is_crm_installed + class CRMSettings(Document): # begin: auto-generated types @@ -46,13 +48,16 @@ class CRMSettings(Document): ) def validate_allowed_users(self): - if self.enable_frappe_crm_data_synchronization and not self.allowed_users: + if self.enable_frappe_crm_data_synchronization and not (is_crm_installed() or self.allowed_users): frappe.throw( _( "Please add atleast one user on Allowed Users to allow Data Synchronization from Frappe CRM site." ) ) + if self.enable_frappe_crm_data_synchronization and is_crm_installed() and self.allowed_users: + frappe.throw(_("Allowed Users is not required as Frappe CRM is already installed on the site.")) + def before_save(self): self.clear_allowed_users() diff --git a/erpnext/crm/frappe_crm_api.py b/erpnext/crm/frappe_crm_api.py index 5db9b7dc652..ba2d7331a3d 100644 --- a/erpnext/crm/frappe_crm_api.py +++ b/erpnext/crm/frappe_crm_api.py @@ -150,7 +150,9 @@ def create_customer(customer_data=None): for field in CUSTOMER_ALLOWED_FIELDS: if customer_data.get(field) is not None: customer.set(field, customer_data.get(field)) - customer.insert(ignore_permissions=True) + + # If CRM is installed on the site, User Permission cannot be ignored while saving Customer Records. + customer.insert(ignore_permissions=not is_crm_installed()) customer_name = customer.name contacts = json.loads(customer_data.get("contacts")) @@ -169,6 +171,10 @@ def validate_frappe_crm_sync(): _("Frappe CRM data synchronization is not enabled on ERPNext. Contact System Manager of ERPNext.") ) + # Skip allowed_users validation if CRM is installed on the site. + if is_crm_installed(): + return + allowed_users = [d.user for d in CRMSettings.allowed_users] if frappe.session.user not in allowed_users: @@ -178,3 +184,7 @@ def validate_frappe_crm_sync(): ), exc=frappe.PermissionError, ) + + +def is_crm_installed(): + return "crm" in frappe.get_installed_apps() From cb2a930a327d70be6a5d00fc5b6c541dcd1268de Mon Sep 17 00:00:00 2001 From: diptanilsaha Date: Wed, 1 Jul 2026 03:52:08 +0530 Subject: [PATCH 49/91] feat(crm_settings): auto-update crm sync settings on frappe crm install and uninstall (cherry picked from commit c86aa2d6fe96b7087bb78d201131f2933201e7d4) --- erpnext/crm/frappe_crm_api.py | 23 +++++++++++++++++++++++ erpnext/hooks.py | 3 +++ erpnext/setup/install.py | 16 ++++++++++++++++ 3 files changed, 42 insertions(+) diff --git a/erpnext/crm/frappe_crm_api.py b/erpnext/crm/frappe_crm_api.py index ba2d7331a3d..5b52b83040a 100644 --- a/erpnext/crm/frappe_crm_api.py +++ b/erpnext/crm/frappe_crm_api.py @@ -1,5 +1,6 @@ import json +import click import frappe from frappe import _ @@ -188,3 +189,25 @@ def validate_frappe_crm_sync(): def is_crm_installed(): return "crm" in frappe.get_installed_apps() + + +def remove_allowed_users_on_crm_install(): + CRMSettings = frappe.get_single("CRM Settings") + + if not CRMSettings.enable_frappe_crm_data_synchronization: + return + + CRMSettings.allowed_users = [] + CRMSettings.save() + click.secho("Removed Allowed Users from CRM Settings.") + + +def disable_frappe_crm_data_synchronization_on_crm_uninstall(): + CRMSettings = frappe.get_single("CRM Settings") + + if not CRMSettings.enable_frappe_crm_data_synchronization: + return + + CRMSettings.enable_frappe_crm_data_synchronization = 0 + CRMSettings.save() + click.secho("Enable Frappe CRM Data Synchronization on CRM Settings has been disabled.") diff --git a/erpnext/hooks.py b/erpnext/hooks.py index 5df9ad433ac..65462439c34 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -65,6 +65,9 @@ setup_wizard_stages = "erpnext.setup.setup_wizard.setup_wizard.get_setup_stages" after_install = "erpnext.setup.install.after_install" +after_app_install = "erpnext.setup.install.after_app_install" +after_app_uninstall = "erpnext.setup.install.after_app_uninstall" + boot_session = "erpnext.startup.boot.boot_session" notification_config = "erpnext.startup.notifications.get_notification_config" get_help_messages = "erpnext.utilities.activation.get_help_messages" diff --git a/erpnext/setup/install.py b/erpnext/setup/install.py index 08ce8d98a28..ca9982f7618 100644 --- a/erpnext/setup/install.py +++ b/erpnext/setup/install.py @@ -432,3 +432,19 @@ DEFAULT_ROLE_PROFILES = { "Purchase Manager", ], } + + +def after_app_install(app_name=None): + if app_name == "crm": + from erpnext.crm.frappe_crm_api import remove_allowed_users_on_crm_install + + remove_allowed_users_on_crm_install() + + +def after_app_uninstall(app_name=None): + if app_name == "crm": + from erpnext.crm.frappe_crm_api import disable_frappe_crm_data_synchronization_on_crm_uninstall + + disable_frappe_crm_data_synchronization_on_crm_uninstall() + + frappe.db.commit() # nosemgrep From eac3afcd8801be02830d54d2524ffa9eb7706ff8 Mon Sep 17 00:00:00 2001 From: diptanilsaha Date: Thu, 9 Jul 2026 12:23:19 +0530 Subject: [PATCH 50/91] fix(`frappe_crm_api`): handle failure for `after_app_install` and `after_app_uninstall` (cherry picked from commit 2de423e225e0331eed2a60a4ad2f34b4de1283e8) --- erpnext/crm/frappe_crm_api.py | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/erpnext/crm/frappe_crm_api.py b/erpnext/crm/frappe_crm_api.py index 5b52b83040a..ddd974663dc 100644 --- a/erpnext/crm/frappe_crm_api.py +++ b/erpnext/crm/frappe_crm_api.py @@ -192,22 +192,28 @@ def is_crm_installed(): def remove_allowed_users_on_crm_install(): - CRMSettings = frappe.get_single("CRM Settings") + try: + CRMSettings = frappe.get_single("CRM Settings") - if not CRMSettings.enable_frappe_crm_data_synchronization: - return + if not CRMSettings.enable_frappe_crm_data_synchronization: + return - CRMSettings.allowed_users = [] - CRMSettings.save() - click.secho("Removed Allowed Users from CRM Settings.") + CRMSettings.allowed_users = [] + CRMSettings.save() + click.secho("Removed 'Allowed Users' from CRM Settings.") + except Exception: + click.secho("'Allowed Users' from CRM Settings couldn't be cleared.") def disable_frappe_crm_data_synchronization_on_crm_uninstall(): - CRMSettings = frappe.get_single("CRM Settings") + try: + CRMSettings = frappe.get_single("CRM Settings") - if not CRMSettings.enable_frappe_crm_data_synchronization: - return + if not CRMSettings.enable_frappe_crm_data_synchronization: + return - CRMSettings.enable_frappe_crm_data_synchronization = 0 - CRMSettings.save() - click.secho("Enable Frappe CRM Data Synchronization on CRM Settings has been disabled.") + CRMSettings.enable_frappe_crm_data_synchronization = 0 + CRMSettings.save() + click.secho("'Enable Frappe CRM Data Synchronization' on CRM Settings has been disabled.") + except Exception: + click.secho("'Enable Frappe CRM Data Synchronization' on CRM Settings could not be disabled.") From eb76872da9591424e0fe2d49d09976f29697adf0 Mon Sep 17 00:00:00 2001 From: diptanilsaha Date: Thu, 9 Jul 2026 12:24:40 +0530 Subject: [PATCH 51/91] chore: patch to clear out allowed users on `crm_settings` if frappe crm is installed on the site (cherry picked from commit 0f987d7135979f8671bd9490921b766a332ef333) --- erpnext/patches.txt | 1 + ...crm_settings_handle_allowed_users_for_frappe_crm.py | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 erpnext/patches/v16_0/crm_settings_handle_allowed_users_for_frappe_crm.py diff --git a/erpnext/patches.txt b/erpnext/patches.txt index ed7d6f5d67b..0adaca93b6f 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -488,3 +488,4 @@ execute:frappe.db.set_single_value("Accounts Settings", "pcv_job_timeout", 3600) erpnext.patches.v16_0.remove_mandatory_from_inv_dimension_fields erpnext.patches.v15_0.backfill_sla_link_filters_on_custom_field erpnext.patches.v15_0.backfill_sla_link_filters_on_docfield +erpnext.patches.v16_0.crm_settings_handle_allowed_users_for_frappe_crm \ No newline at end of file diff --git a/erpnext/patches/v16_0/crm_settings_handle_allowed_users_for_frappe_crm.py b/erpnext/patches/v16_0/crm_settings_handle_allowed_users_for_frappe_crm.py new file mode 100644 index 00000000000..166cd5c66f8 --- /dev/null +++ b/erpnext/patches/v16_0/crm_settings_handle_allowed_users_for_frappe_crm.py @@ -0,0 +1,10 @@ +import frappe + + +def execute(): + from erpnext.crm.frappe_crm_api import is_crm_installed, remove_allowed_users_on_crm_install + + if not is_crm_installed(): + return + + remove_allowed_users_on_crm_install() From af495ed25301b4ab74b00cb4443be4d2240181b9 Mon Sep 17 00:00:00 2001 From: Sudharsanan11 Date: Tue, 7 Jul 2026 13:17:33 +0530 Subject: [PATCH 52/91] feat(stock): support partial transfer from pick list Creating a Stock Entry from a Pick List blocked any further entry (stock_entry_exists) and flipped the pick list to Completed as soon as one entry existed, so picked stock could not be transferred in parts. Track transferred_qty per Pick List Item (summed from submitted Stock Entry rows via a new pick_list_item link, mirroring delivered_qty), add a Partially Transferred status, and map each new Stock Entry from the remaining qty so transfers can continue until fully transferred. --- erpnext/controllers/status_updater.py | 3 +- .../stock/doctype/pick_list/pick_list.json | 4 +- erpnext/stock/doctype/pick_list/pick_list.py | 60 ++++++++++++++++--- .../stock/doctype/pick_list/pick_list_list.js | 1 + .../pick_list_item/pick_list_item.json | 13 +++- .../doctype/pick_list_item/pick_list_item.py | 1 + .../stock/doctype/stock_entry/stock_entry.py | 13 ++++ .../stock_entry_detail.json | 13 +++- .../stock_entry_detail/stock_entry_detail.py | 1 + 9 files changed, 96 insertions(+), 13 deletions(-) diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py index e0135a8775c..b9d56c9d92d 100644 --- a/erpnext/controllers/status_updater.py +++ b/erpnext/controllers/status_updater.py @@ -166,7 +166,8 @@ status_map = { "Pick List": [ ["Draft", None], ["Open", "eval:self.docstatus == 1"], - ["Completed", "stock_entry_exists"], + ["Completed", "is_fully_transferred"], + ["Partially Transferred", "is_partially_transferred"], [ "Partly Delivered", "eval:self.purpose == 'Delivery' and self.delivery_status == 'Partly Delivered'", diff --git a/erpnext/stock/doctype/pick_list/pick_list.json b/erpnext/stock/doctype/pick_list/pick_list.json index 9ee1b7a1922..6b37e8f830e 100644 --- a/erpnext/stock/doctype/pick_list/pick_list.json +++ b/erpnext/stock/doctype/pick_list/pick_list.json @@ -190,7 +190,7 @@ "in_standard_filter": 1, "label": "Status", "no_copy": 1, - "options": "Draft\nOpen\nPartly Delivered\nCompleted\nCancelled", + "options": "Draft\nOpen\nPartly Delivered\nPartially Transferred\nCompleted\nCancelled", "print_hide": 1, "read_only": 1, "report_hide": 1, @@ -278,7 +278,7 @@ ], "is_submittable": 1, "links": [], - "modified": "2026-02-06 18:14:18.361039", + "modified": "2026-07-06 18:17:18.000000", "modified_by": "Administrator", "module": "Stock", "name": "Pick List", diff --git a/erpnext/stock/doctype/pick_list/pick_list.py b/erpnext/stock/doctype/pick_list/pick_list.py index e3a87255020..cc75ef28ae2 100644 --- a/erpnext/stock/doctype/pick_list/pick_list.py +++ b/erpnext/stock/doctype/pick_list/pick_list.py @@ -73,7 +73,9 @@ class PickList(TransactionBase): purpose: DF.Literal["Material Transfer for Manufacture", "Material Transfer", "Delivery"] scan_barcode: DF.Data | None scan_mode: DF.Check - status: DF.Literal["Draft", "Open", "Partly Delivered", "Completed", "Cancelled"] + status: DF.Literal[ + "Draft", "Open", "Partly Delivered", "Partially Transferred", "Completed", "Cancelled" + ] work_order: DF.Link | None # end: auto-generated types @@ -419,6 +421,34 @@ class PickList(TransactionBase): return stock_entry_exists(self.name) + def get_transfer_status(self): + """Return the pick list's transfer progress based on how much of the picked qty has been + moved into submitted Stock Entries (tracked on Pick List Item.transferred_qty). + + Only applies to purposes that move stock via Stock Entry; the Delivery purpose is tracked + via delivery_status instead. Returns "Completed", "Partially Transferred" or None.""" + if self.purpose == "Delivery": + return None + + total_picked = sum(flt(row.picked_qty) for row in self.locations) + if not total_picked: + return None + + total_transferred = sum(flt(row.transferred_qty) for row in self.locations) + if total_transferred <= 0: + return None + + if total_transferred >= total_picked: + return "Completed" + + return "Partially Transferred" + + def is_fully_transferred(self): + return self.get_transfer_status() == "Completed" + + def is_partially_transferred(self): + return self.get_transfer_status() == "Partially Transferred" + def update_reference_qty(self): packed_items = [] so_items = [] @@ -1544,13 +1574,10 @@ def add_product_bundles_to_target(pick_list, target_doc, item_mapper, sales_orde @frappe.whitelist() -def create_stock_entry(pick_list): - pick_list = frappe.get_doc(json.loads(pick_list)) +def create_stock_entry(pick_list: str | dict): + pick_list = frappe.get_doc(frappe.parse_json(pick_list)) validate_item_locations(pick_list) - if stock_entry_exists(pick_list.get("name")): - return frappe.msgprint(_("Stock Entry has been already created against this Pick List")) - stock_entry = frappe.new_doc("Stock Entry") stock_entry.pick_list = pick_list.get("name") stock_entry.purpose = pick_list.get("purpose") @@ -1564,6 +1591,9 @@ def create_stock_entry(pick_list): else: stock_entry = update_stock_entry_items_with_no_reference(pick_list, stock_entry) + if not stock_entry.get("items"): + return frappe.msgprint(_("All picked items have already been transferred against this Pick List")) + stock_entry.set_missing_values() return stock_entry.as_dict() @@ -1673,6 +1703,8 @@ def update_stock_entry_based_on_work_order(pick_list, stock_entry): stock_entry.project = work_order.project for location in pick_list.locations: + if get_pending_transfer_stock_qty(location) <= 0: + continue item = frappe._dict() update_common_item_properties(item, location) item.t_warehouse = wip_warehouse @@ -1684,6 +1716,8 @@ def update_stock_entry_based_on_work_order(pick_list, stock_entry): def update_stock_entry_based_on_material_request(pick_list, stock_entry): for location in pick_list.locations: + if get_pending_transfer_stock_qty(location) <= 0: + continue target_warehouse = None if location.material_request_item: target_warehouse = frappe.get_value( @@ -1699,6 +1733,8 @@ def update_stock_entry_based_on_material_request(pick_list, stock_entry): def update_stock_entry_items_with_no_reference(pick_list, stock_entry): for location in pick_list.locations: + if get_pending_transfer_stock_qty(location) <= 0: + continue item = frappe._dict() update_common_item_properties(item, location) @@ -1707,11 +1743,18 @@ def update_stock_entry_items_with_no_reference(pick_list, stock_entry): return stock_entry +def get_pending_transfer_stock_qty(location): + """Stock qty of this pick list row still to be moved into a Stock Entry.""" + return flt(location.picked_qty) - flt(location.transferred_qty) + + def update_common_item_properties(item, location): + pending_stock_qty = get_pending_transfer_stock_qty(location) item.item_code = location.item_code + item.item_name = location.item_name item.s_warehouse = location.warehouse - item.transfer_qty = location.picked_qty - item.qty = flt(location.picked_qty / (location.conversion_factor or 1), location.precision("qty")) + item.transfer_qty = pending_stock_qty + item.qty = flt(pending_stock_qty / (location.conversion_factor or 1), location.precision("qty")) item.uom = location.uom item.conversion_factor = location.conversion_factor item.stock_uom = location.stock_uom @@ -1719,6 +1762,7 @@ def update_common_item_properties(item, location): item.serial_no = location.serial_no item.batch_no = location.batch_no item.material_request_item = location.material_request_item + item.pick_list_item = location.name def get_rejected_warehouses(): diff --git a/erpnext/stock/doctype/pick_list/pick_list_list.js b/erpnext/stock/doctype/pick_list/pick_list_list.js index a675c95f973..5bc4f2f3eef 100644 --- a/erpnext/stock/doctype/pick_list/pick_list_list.js +++ b/erpnext/stock/doctype/pick_list/pick_list_list.js @@ -7,6 +7,7 @@ frappe.listview_settings["Pick List"] = { Draft: "red", Open: "orange", "Partly Delivered": "orange", + "Partially Transferred": "yellow", Completed: "green", Cancelled: "red", }; diff --git a/erpnext/stock/doctype/pick_list_item/pick_list_item.json b/erpnext/stock/doctype/pick_list_item/pick_list_item.json index 01630278168..4ee5c820ab7 100644 --- a/erpnext/stock/doctype/pick_list_item/pick_list_item.json +++ b/erpnext/stock/doctype/pick_list_item/pick_list_item.json @@ -22,6 +22,7 @@ "conversion_factor", "stock_uom", "delivered_qty", + "transferred_qty", "available_quantity_section", "actual_qty", "column_break_kyek", @@ -255,6 +256,16 @@ "read_only": 1, "report_hide": 1 }, + { + "default": "0", + "fieldname": "transferred_qty", + "fieldtype": "Float", + "label": "Transferred Qty (in Stock UOM)", + "no_copy": 1, + "print_hide": 1, + "read_only": 1, + "report_hide": 1 + }, { "fieldname": "available_quantity_section", "fieldtype": "Section Break", @@ -285,7 +296,7 @@ ], "istable": 1, "links": [], - "modified": "2026-03-17 16:25:10.358013", + "modified": "2026-07-06 18:17:18.000000", "modified_by": "Administrator", "module": "Stock", "name": "Pick List Item", diff --git a/erpnext/stock/doctype/pick_list_item/pick_list_item.py b/erpnext/stock/doctype/pick_list_item/pick_list_item.py index bdba97f4056..97e6525c97b 100644 --- a/erpnext/stock/doctype/pick_list_item/pick_list_item.py +++ b/erpnext/stock/doctype/pick_list_item/pick_list_item.py @@ -39,6 +39,7 @@ class PickListItem(Document): stock_qty: DF.Float stock_reserved_qty: DF.Float stock_uom: DF.Link | None + transferred_qty: DF.Float uom: DF.Link | None use_serial_batch_fields: DF.Check warehouse: DF.Link | None diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py index d9856ca5055..bc2d255a041 100644 --- a/erpnext/stock/doctype/stock_entry/stock_entry.py +++ b/erpnext/stock/doctype/stock_entry/stock_entry.py @@ -178,6 +178,15 @@ class StockEntry(StockController, SubcontractingInwardController): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) + self.status_updater = [ + { + "source_dt": "Stock Entry Detail", + "target_dt": "Pick List Item", + "join_field": "pick_list_item", + "target_field": "transferred_qty", + "source_field": "transfer_qty", + } + ] if self.purchase_order: self.subcontract_data = frappe._dict( { @@ -571,6 +580,7 @@ class StockEntry(StockController, SubcontractingInwardController): self.validate_closed_subcontracting_order() self.update_subcontract_order_supplied_items() self.update_subcontracting_order_status() + self.update_pick_list_status() self.cancel_stock_reserve_for_wip_and_fg() if self.work_order and self.purpose == "Material Consumption for Manufacture": @@ -4054,6 +4064,9 @@ class StockEntry(StockController, SubcontractingInwardController): def update_pick_list_status(self): from erpnext.stock.doctype.pick_list.pick_list import update_pick_list_status + if self.pick_list: + self.update_qty() + update_pick_list_status(self.pick_list) def set_missing_values(self): diff --git a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json b/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json index ce2bf227106..ad941013153 100644 --- a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json +++ b/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json @@ -72,6 +72,7 @@ "col_break6", "material_request", "material_request_item", + "pick_list_item", "original_item", "reference_section", "against_stock_entry", @@ -423,6 +424,16 @@ "print_hide": 1, "read_only": 1 }, + { + "fieldname": "pick_list_item", + "fieldtype": "Link", + "hidden": 1, + "label": "Pick List Item", + "no_copy": 1, + "options": "Pick List Item", + "print_hide": 1, + "read_only": 1 + }, { "fieldname": "original_item", "fieldtype": "Link", @@ -678,7 +689,7 @@ "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2026-07-03 12:11:53.714931", + "modified": "2026-07-06 18:17:18.000000", "modified_by": "Administrator", "module": "Stock", "name": "Stock Entry Detail", diff --git a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.py b/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.py index 0c1a21fefce..62e6d70b6eb 100644 --- a/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.py +++ b/erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.py @@ -47,6 +47,7 @@ class StockEntryDetail(Document): parent: DF.Data parentfield: DF.Data parenttype: DF.Data + pick_list_item: DF.Link | None po_detail: DF.Data | None project: DF.Link | None putaway_rule: DF.Link | None From 6ecbe6fd4b5a1a40eb640492e9aaf565ad4e3780 Mon Sep 17 00:00:00 2001 From: Sudharsanan11 Date: Tue, 7 Jul 2026 13:17:33 +0530 Subject: [PATCH 53/91] test(stock): add test for partial transfer status from pick list --- .../stock/doctype/pick_list/test_pick_list.py | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/erpnext/stock/doctype/pick_list/test_pick_list.py b/erpnext/stock/doctype/pick_list/test_pick_list.py index ad6081dbb6b..5819f75df43 100644 --- a/erpnext/stock/doctype/pick_list/test_pick_list.py +++ b/erpnext/stock/doctype/pick_list/test_pick_list.py @@ -13,6 +13,7 @@ from erpnext.stock.doctype.pick_list.pick_list import ( create_delivery, create_delivery_note, create_dn_for_pick_lists, + create_stock_entry, ) from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import make_purchase_receipt from erpnext.stock.doctype.serial_and_batch_bundle.test_serial_and_batch_bundle import ( @@ -1221,6 +1222,64 @@ class TestPickList(ERPNextTestSuite): pl.reload() self.assertEqual(pl.status, "Cancelled") + def test_pick_list_partial_transfer_status(self): + """Partial Stock Entries from a Pick List should track transferred_qty and drive the + Partially Transferred / Completed status, and allow further transfers for the remainder.""" + from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse + + item = make_item(properties={"is_stock_item": 1}).name + source_warehouse = "_Test Warehouse - _TC" + target_warehouse = create_warehouse("_Test Transfer Target Warehouse") + make_stock_entry(item=item, to_warehouse=source_warehouse, qty=10) + + pick_list = frappe.get_doc( + { + "doctype": "Pick List", + "company": "_Test Company", + "purpose": "Material Transfer", + "pick_manually": 1, + "locations": [ + { + "item_code": item, + "qty": 10, + "stock_qty": 10, + "conversion_factor": 1, + "warehouse": source_warehouse, + "picked_qty": 10, + } + ], + } + ) + pick_list.submit() + self.assertEqual(pick_list.status, "Open") + + # Transfer 4 of the 10 picked units. + se1 = frappe.get_doc(create_stock_entry(pick_list.as_dict())) + self.assertEqual(se1.items[0].qty, 10) + se1.items[0].qty = 4 + se1.items[0].t_warehouse = target_warehouse + se1.submit() + + pick_list.reload() + self.assertEqual(pick_list.locations[0].transferred_qty, 4) + self.assertEqual(pick_list.status, "Partially Transferred") + + # The next Stock Entry should only offer the remaining 6 units. + se2 = frappe.get_doc(create_stock_entry(pick_list.as_dict())) + self.assertEqual(se2.items[0].qty, 6) + se2.items[0].t_warehouse = target_warehouse + se2.submit() + + pick_list.reload() + self.assertEqual(pick_list.locations[0].transferred_qty, 10) + self.assertEqual(pick_list.status, "Completed") + + # Cancelling the last entry rolls transferred_qty and status back. + se2.cancel() + pick_list.reload() + self.assertEqual(pick_list.locations[0].transferred_qty, 4) + self.assertEqual(pick_list.status, "Partially Transferred") + def test_pick_list_validation(self): warehouse = "_Test Warehouse - _TC" item = make_item("Test Non Serialized Pick List Item", properties={"is_stock_item": 1}).name From 903d78cc433a7bae91d3a05b870d5ae7328d53f7 Mon Sep 17 00:00:00 2001 From: Sudharsanan11 Date: Tue, 7 Jul 2026 13:17:33 +0530 Subject: [PATCH 54/91] fix(stock): backfill transferred qty for existing pick lists Pick Lists transferred before this feature have transferred_qty = 0 and their Stock Entry rows carry no pick_list_item link, so the new is_fully_transferred check would never fire and, with the old duplicate-entry guard removed, they could be transferred again. Set transferred_qty = picked_qty for non-Delivery submitted pick lists that already have a linked Stock Entry so they stay completed and locked. --- erpnext/patches.txt | 3 +- .../backfill_pick_list_transferred_qty.py | 58 +++++++++++++++++++ 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 erpnext/patches/v16_0/backfill_pick_list_transferred_qty.py diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 0adaca93b6f..5be00ca8afc 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -488,4 +488,5 @@ execute:frappe.db.set_single_value("Accounts Settings", "pcv_job_timeout", 3600) erpnext.patches.v16_0.remove_mandatory_from_inv_dimension_fields erpnext.patches.v15_0.backfill_sla_link_filters_on_custom_field erpnext.patches.v15_0.backfill_sla_link_filters_on_docfield -erpnext.patches.v16_0.crm_settings_handle_allowed_users_for_frappe_crm \ No newline at end of file +erpnext.patches.v16_0.crm_settings_handle_allowed_users_for_frappe_crm +erpnext.patches.v16_0.backfill_pick_list_transferred_qty diff --git a/erpnext/patches/v16_0/backfill_pick_list_transferred_qty.py b/erpnext/patches/v16_0/backfill_pick_list_transferred_qty.py new file mode 100644 index 00000000000..6d3155c4c1a --- /dev/null +++ b/erpnext/patches/v16_0/backfill_pick_list_transferred_qty.py @@ -0,0 +1,58 @@ +import frappe +from frappe.query_builder.functions import Sum +from frappe.utils import flt + + +def execute(): + StockEntry = frappe.qb.DocType("Stock Entry") + StockEntryDetail = frappe.qb.DocType("Stock Entry Detail") + + pick_lists = ( + frappe.qb.from_(StockEntry) + .select(StockEntry.pick_list) + .distinct() + .where((StockEntry.pick_list.isnotnull()) & (StockEntry.docstatus == 1)) + ).run(pluck=True) + + if not pick_lists: + return + + rows = ( + frappe.qb.from_(StockEntryDetail) + .join(StockEntry) + .on(StockEntryDetail.parent == StockEntry.name) + .select( + StockEntry.pick_list, + StockEntryDetail.item_code, + StockEntryDetail.s_warehouse, + Sum(StockEntryDetail.transfer_qty).as_("qty"), + ) + .where((StockEntry.pick_list.isin(pick_lists)) & (StockEntry.docstatus == 1)) + .groupby(StockEntry.pick_list, StockEntryDetail.item_code, StockEntryDetail.s_warehouse) + ).run(as_dict=True) + + transferred = {(r.pick_list, r.item_code, r.s_warehouse): flt(r.qty) for r in rows} + + items = frappe.get_all( + "Pick List Item", + filters={"parent": ("in", pick_lists), "picked_qty": (">", 0)}, + fields=["name", "parent", "item_code", "warehouse", "picked_qty"], + order_by="idx", + ) + + updates = {} + for row in items: + key = (row.parent, row.item_code, row.warehouse) + available = transferred.get(key, 0) + if available <= 0: + continue + qty = min(flt(row.picked_qty), available) + transferred[key] = available - qty + updates[row.name] = {"transferred_qty": qty} + + if not updates: + return + + frappe.db.auto_commit_on_many_writes = True + frappe.db.bulk_update("Pick List Item", updates) + frappe.db.auto_commit_on_many_writes = False From 144f92d58e15c6aab4aefefbaf2cfd9b016d523c Mon Sep 17 00:00:00 2001 From: Pandiyan P Date: Thu, 9 Jul 2026 19:43:01 +0530 Subject: [PATCH 55/91] feat(manufacturing): create material request for raw materials from work order (#56980) * feat(manufacturing): create material request for raw materials from work order * test(manufacturing): cover work order material request flow --- .../doctype/work_order/test_work_order.py | 60 ++++++++++++ .../doctype/work_order/work_order.js | 11 +++ .../doctype/work_order/work_order.py | 91 ++++++++++++++++++- .../material_request/material_request.py | 17 +++- 4 files changed, 177 insertions(+), 2 deletions(-) diff --git a/erpnext/manufacturing/doctype/work_order/test_work_order.py b/erpnext/manufacturing/doctype/work_order/test_work_order.py index 57d44084fd0..afa997efef5 100644 --- a/erpnext/manufacturing/doctype/work_order/test_work_order.py +++ b/erpnext/manufacturing/doctype/work_order/test_work_order.py @@ -18,6 +18,7 @@ from erpnext.manufacturing.doctype.work_order.work_order import ( StockOverProductionError, close_work_order, make_job_card, + make_material_request, make_stock_entry, make_stock_return_entry, stop_unstop, @@ -1547,6 +1548,65 @@ class TestWorkOrder(ERPNextTestSuite): work_order.reload() self.assertEqual(work_order.material_transferred_for_manufacturing, 2.0) + def test_work_order_material_request_and_bom_details(self): + from erpnext.stock.doctype.material_request.material_request import ( + make_stock_entry as mr_to_stock_entry, + ) + + work_order = make_wo_order_test_record( + planned_start_date=now(), qty=2, source_warehouse="Stores - _TC" + ) + + mr = make_material_request(work_order.name) + mr.schedule_date = today() + for item in mr.items: + item.schedule_date = today() + mr.submit() + self.assertEqual(mr.work_order, work_order.name) + + ste = mr_to_stock_entry(mr.name) + self.assertEqual(ste.purpose, "Material Transfer for Manufacture") + self.assertEqual(ste.work_order, work_order.name) + self.assertEqual(ste.from_bom, 1.0) + self.assertEqual(ste.bom_no, work_order.bom_no) + self.assertEqual(ste.fg_completed_qty, 0.0) + + def test_status_in_process_when_only_one_required_item_transferred_via_material_request(self): + """Same bottleneck scenario as the Pick List flow, but the intermediate document is a + Material Request created directly from the Work Order: min-fraction keeps + material_transferred_for_manufacturing at 0, but the work order must still move to + In Process because material is already in WIP. + """ + from erpnext.stock.doctype.material_request.material_request import ( + make_stock_entry as mr_to_stock_entry, + ) + + work_order = make_wo_order_test_record( + planned_start_date=now(), qty=2, source_warehouse="Stores - _TC" + ) + test_stock_entry.make_stock_entry( + item_code="_Test Item", target="Stores - _TC", qty=10, basic_rate=5000.0 + ) + test_stock_entry.make_stock_entry( + item_code="_Test Item Home Desktop 100", target="Stores - _TC", qty=10, basic_rate=1000.0 + ) + + mr = make_material_request(work_order.name) + mr.schedule_date = today() + # request only _Test Item; the other required item is left off this material request + mr.items = [item for item in mr.items if item.item_code == "_Test Item"] + for item in mr.items: + item.schedule_date = today() + mr.submit() + + stock_entry = frappe.get_doc(mr_to_stock_entry(mr.name)) + self.assertEqual(stock_entry.fg_completed_qty, 0.0) + stock_entry.submit() + + work_order.reload() + self.assertEqual(work_order.material_transferred_for_manufacturing, 0.0) + self.assertEqual(work_order.status, "In Process") + def test_backflushed_batch_raw_materials_based_on_transferred(self): frappe.db.set_single_value( "Manufacturing Settings", diff --git a/erpnext/manufacturing/doctype/work_order/work_order.js b/erpnext/manufacturing/doctype/work_order/work_order.js index ef2365ea4fd..04f259f1508 100644 --- a/erpnext/manufacturing/doctype/work_order/work_order.js +++ b/erpnext/manufacturing/doctype/work_order/work_order.js @@ -813,6 +813,10 @@ erpnext.work_order = { erpnext.work_order.create_pick_list(frm); }); + frm.add_custom_button(__("Material Request"), function () { + erpnext.work_order.make_material_request(frm); + }); + var start_btn = frm.add_custom_button(__("Start"), function () { erpnext.work_order.make_se(frm, "Material Transfer for Manufacture"); }); @@ -1151,6 +1155,13 @@ erpnext.work_order = { } }, + make_material_request: function (frm) { + frappe.model.open_mapped_doc({ + method: "erpnext.manufacturing.doctype.work_order.work_order.make_material_request", + frm, + }); + }, + create_pick_list: function (frm, purpose = "Material Transfer for Manufacture") { const max = this.get_max_transferable_qty(frm, purpose); diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py index 5de2594b146..3f470ccd216 100644 --- a/erpnext/manufacturing/doctype/work_order/work_order.py +++ b/erpnext/manufacturing/doctype/work_order/work_order.py @@ -677,7 +677,11 @@ class WorkOrder(Document): elif self.docstatus == 1: if status not in ["Closed", "Stopped"]: status = "Not Started" - if flt(self.material_transferred_for_manufacturing) > 0 or self.skip_transfer: + if ( + flt(self.material_transferred_for_manufacturing) > 0 + or self.skip_transfer + or self._has_transferred_material() + ): status = "In Process" precision = frappe.get_precision("Work Order", "produced_qty") @@ -711,6 +715,57 @@ class WorkOrder(Document): return status + def _has_transferred_material(self): + """True if any raw material transferred against this work order via a pick list or a + material request is still, net of returns, in WIP (these leave + material_transferred_for_manufacturing at 0 via the min-fraction rule).""" + ste = frappe.qb.DocType("Stock Entry") + ste_child = frappe.qb.DocType("Stock Entry Detail") + mr_ste = frappe.qb.DocType("Stock Entry") + mr_child = frappe.qb.DocType("Stock Entry Detail") + # Stock Entry only carries `material_request` at the child-row level, so a Stock + # Entry is "MR-sourced" if *any* of its rows link back to a Material Request against + # this work order; the join to mr_ste keeps this scoped to this work order's entries + # instead of scanning every Material-Request-linked row in the system. + mr_sourced_stock_entries = ( + frappe.qb.from_(mr_child) + .inner_join(mr_ste) + .on(mr_ste.name == mr_child.parent) + .select(mr_child.parent) + .where( + (mr_child.material_request.isnotnull()) + & (mr_ste.work_order == self.name) + & (mr_ste.docstatus == 1) + & (mr_ste.purpose == "Material Transfer for Manufacture") + ) + ) + common_filters = ( + (ste.work_order == self.name) + & (ste.docstatus == 1) + & (ste.purpose == "Material Transfer for Manufacture") + ) + transferred_qty = ( + frappe.qb.from_(ste) + .inner_join(ste_child) + .on(ste_child.parent == ste.name) + .select(Sum(ste_child.transfer_qty)) + .where( + common_filters + & (ste.is_return == 0) + & (ste.pick_list.isnotnull() | ste.name.isin(mr_sourced_stock_entries)) + ) + ).run()[0][0] + # Returns don't carry their own pick_list/material_request reference, so net every + # return against this work order to correctly clear WIP after a full return. + returned_qty = ( + frappe.qb.from_(ste) + .inner_join(ste_child) + .on(ste_child.parent == ste.name) + .select(Sum(ste_child.transfer_qty)) + .where(common_filters & (ste.is_return == 1)) + ).run()[0][0] + return flt(transferred_qty) - flt(returned_qty) > 0 + def update_work_order_qty(self): """Update **Manufactured Qty** and **Material Transferred for Qty** in Work Order based on Stock Entry""" @@ -3014,6 +3069,40 @@ def get_reserved_qty_for_production( return query.run()[0][0] or 0.0 +@frappe.whitelist() +def make_material_request(source_name: str, target_doc: str | dict | None = None): + frappe.has_permission("Material Request", "create", throw=True) + + doc = get_mapped_doc("Work Order", source_name, _material_request_mapping(), target_doc) + doc.material_request_type = "Material Transfer" + return doc + + +def _material_request_mapping(): + return { + "Work Order": { + "doctype": "Material Request", + "validation": {"docstatus": ["=", 1]}, + "field_map": {"name": "work_order"}, + }, + "Work Order Item": { + "doctype": "Material Request Item", + "field_map": [ + ("stock_uom", "uom"), + ("source_warehouse", "from_warehouse"), + ], + "postprocess": _set_material_request_item, + "condition": lambda doc: abs(doc.transferred_qty) < abs(doc.required_qty), + }, + } + + +def _set_material_request_item(source, target, source_parent): + target.warehouse = source_parent.wip_warehouse + target.qty = flt(source.required_qty) - flt(source.transferred_qty) + target.schedule_date = nowdate() + + @frappe.whitelist() def make_stock_return_entry(work_order): from erpnext.stock.doctype.stock_entry.stock_entry import get_available_materials diff --git a/erpnext/stock/doctype/material_request/material_request.py b/erpnext/stock/doctype/material_request/material_request.py index f9cd772bb14..5ed37f34203 100644 --- a/erpnext/stock/doctype/material_request/material_request.py +++ b/erpnext/stock/doctype/material_request/material_request.py @@ -717,7 +717,7 @@ def make_supplier_quotation(source_name, target_doc=None): @frappe.whitelist() -def make_stock_entry(source_name, target_doc=None): +def make_stock_entry(source_name: str, target_doc: str | dict | None = None): def update_item(obj, target, source_parent): qty = ( flt(flt(obj.stock_qty) - flt(obj.ordered_qty)) / target.conversion_factor @@ -753,6 +753,9 @@ def make_stock_entry(source_name, target_doc=None): if source.job_card: target.purpose = "Material Transfer for Manufacture" + if source.work_order: + target.purpose = "Material Transfer for Manufacture" + if source.material_request_type == "Customer Provided": target.purpose = "Material Receipt" @@ -772,6 +775,18 @@ def make_stock_entry(source_name, target_doc=None): target.fg_completed_qty = job_card_details[0].for_quantity target.from_bom = 1 + if source.work_order: + work_order_details = frappe.db.get_value( + "Work Order", source.work_order, ["bom_no", "use_multi_level_bom"], as_dict=True + ) + + if work_order_details: + target.bom_no = work_order_details.bom_no + target.use_multi_level_bom = work_order_details.use_multi_level_bom + target.from_bom = 1 + # not fg-qty-driven, mirrors the Pick List -> Stock Entry transfer for this Work Order + target.fg_completed_qty = 0 + doclist = get_mapped_doc( "Material Request", source_name, From 97cd1e714461e806776be4f063dd5ce230ac5346 Mon Sep 17 00:00:00 2001 From: pandiyan Date: Mon, 6 Jul 2026 14:15:29 +0530 Subject: [PATCH 56/91] fix: rename variant item_code/item_name when attribute abbreviation changes Item Attribute abbreviations only got baked into a variant's item_code and item_name at creation time (make_variant_item_code returns early once item_code is set). Renaming an abbreviation afterwards left every existing variant stuck with the stale code, silently out of sync with its own attribute. Detect abbreviation renames on Item Attribute save, find every variant using the affected value, and rebuild+rename its item_code via frappe.rename_doc so linked records follow along. item_name is rebuilt in lockstep from the template's item_name, even if it had since been customized, since both fields are meant to be derived from the same abbreviation. (cherry picked from commit c0cfe5f363fa04da18c5efcbe57d7c4e50a5a9a5) --- erpnext/controllers/item_variant.py | 62 +++++++++++++++++++ .../doctype/item_attribute/item_attribute.py | 2 + 2 files changed, 64 insertions(+) diff --git a/erpnext/controllers/item_variant.py b/erpnext/controllers/item_variant.py index f05340d0a08..1a3ed7380d3 100644 --- a/erpnext/controllers/item_variant.py +++ b/erpnext/controllers/item_variant.py @@ -177,6 +177,68 @@ def update_variant_attribute_values(item_attribute): frappe.flags.attribute_values = None +def get_attribute_abbr_renames(item_attribute): + """Return the set of (current) attribute values whose abbreviation was renamed.""" + if item_attribute.numeric_values: + return set() + + db_value = item_attribute.get_doc_before_save() + if not db_value: + return set() + + old_abbrs = {d.name: d.abbr for d in db_value.item_attribute_values} + changed_values = set() + + for row in item_attribute.item_attribute_values: + if row.name in old_abbrs and old_abbrs[row.name] != row.abbr: + changed_values.add(row.attribute_value) + + return changed_values + + +def update_variant_item_codes_for_abbr_renames(item_attribute): + """Rebuild item_code/item_name of variant Items affected by a renamed Item Attribute abbreviation.""" + changed_values = get_attribute_abbr_renames(item_attribute) + if not changed_values: + return + + item_variant_table = frappe.qb.DocType("Item Variant Attribute") + variant_names = ( + frappe.qb.from_(item_variant_table) + .select(item_variant_table.parent) + .where(item_variant_table.attribute == item_attribute.name) + .where(item_variant_table.attribute_value.isin(list(changed_values))) + .distinct() + .run(pluck=True) + ) + + for variant_name in variant_names: + rename_variant_item_code(variant_name) + + +def rename_variant_item_code(variant_name): + """Recompute a variant's item_code/item_name from its template and current attribute abbreviations, + renaming the Item if it has changed.""" + variant = frappe.get_doc("Item", variant_name) + if not variant.variant_of: + return + + template = frappe.get_cached_doc("Item", variant.variant_of) + + new_code = frappe._dict({"item_code": None, "item_name": None, "attributes": variant.attributes}) + make_variant_item_code(template.item_code, template.item_name, new_code) + + if not new_code.item_code or new_code.item_code == variant.item_code: + return + + frappe.rename_doc("Item", variant.item_code, new_code.item_code) + + # Keep item_name in lockstep with item_code: both are derived from the same abbreviation, so + # item_name is always rebuilt here too, even if it had since been customized away from that pattern. + if new_code.item_name and new_code.item_name != variant.item_name: + frappe.db.set_value("Item", new_code.item_code, "item_name", new_code.item_name) + + def validate_item_attribute_value(attributes_list, attribute, attribute_value, item, from_variant=True): allow_rename_attribute_value = frappe.db.get_single_value( "Item Variant Settings", "allow_rename_attribute_value" diff --git a/erpnext/stock/doctype/item_attribute/item_attribute.py b/erpnext/stock/doctype/item_attribute/item_attribute.py index 2e50479b409..bf5c0fb7901 100644 --- a/erpnext/stock/doctype/item_attribute/item_attribute.py +++ b/erpnext/stock/doctype/item_attribute/item_attribute.py @@ -10,6 +10,7 @@ from frappe.utils import flt from erpnext.controllers.item_variant import ( InvalidItemAttributeValueError, update_variant_attribute_values, + update_variant_item_codes_for_abbr_renames, validate_is_incremental, validate_item_attribute_value, ) @@ -46,6 +47,7 @@ class ItemAttribute(Document): def on_update(self): update_variant_attribute_values(self) + update_variant_item_codes_for_abbr_renames(self) self.validate_exising_items() self.set_enabled_disabled_in_items() From 719439f69466b5ee0620e60f8bdba2f66c05a3c4 Mon Sep 17 00:00:00 2001 From: pandiyan Date: Mon, 6 Jul 2026 14:15:40 +0530 Subject: [PATCH 57/91] test: cover variant item_code/item_name rename on abbreviation change Add regression coverage for the new abbreviation-rename propagation: a simple item_code rename, item_name derived from a template whose item_name differs from its item_code, and a manually customized item_name getting rebuilt rather than left stale. (cherry picked from commit e718a70b2603a19fc6c9f2213be34f313ef68be2) --- erpnext/stock/doctype/item/test_item.py | 94 +++++++++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/erpnext/stock/doctype/item/test_item.py b/erpnext/stock/doctype/item/test_item.py index 0a08a562ecd..7c36d60a6ad 100644 --- a/erpnext/stock/doctype/item/test_item.py +++ b/erpnext/stock/doctype/item/test_item.py @@ -493,6 +493,100 @@ class TestItem(ERPNextTestSuite): "Large", ) + def test_rename_attribute_abbr_updates_variant_item_code(self): + frappe.delete_doc_if_exists("Item", "_Test Variant Item-L", force=1) + frappe.delete_doc_if_exists("Item", "_Test Variant Item-LRG", force=1) + + variant = create_variant("_Test Variant Item", {"Test Size": "Large"}) + variant.save() + + attribute = frappe.get_doc("Item Attribute", "Test Size") + for row in attribute.item_attribute_values: + if row.attribute_value == "Large": + row.abbr = "LRG" + break + + def restore_test_size_abbr(): + doc = frappe.get_doc("Item Attribute", "Test Size") + for row in doc.item_attribute_values: + if row.attribute_value == "Large": + row.abbr = "L" + break + frappe.flags.attribute_values = None + doc.save() + + self.addCleanup(restore_test_size_abbr) + self.addCleanup(lambda: frappe.delete_doc_if_exists("Item", "_Test Variant Item-LRG", force=1)) + + frappe.flags.attribute_values = None + attribute.save() + + self.assertFalse(frappe.db.exists("Item", "_Test Variant Item-L")) + self.assertTrue(frappe.db.exists("Item", "_Test Variant Item-LRG")) + self.assertEqual( + frappe.db.get_value("Item", "_Test Variant Item-LRG", "item_name"), + "_Test Variant Item-LRG", + ) + + def test_rename_attribute_abbr_updates_variant_item_name_from_template_name(self): + # item_name can be derived from the template's item_name, which may differ from its + # item_code (e.g. a friendly display name vs. a SKU-style code). The variant's item_name + # must follow the abbreviation rename the same way item_code does. + frappe.delete_doc_if_exists("Item", "_Test Variant Item Diff-L", force=1) + frappe.delete_doc_if_exists("Item", "_Test Variant Item Diff-LRG", force=1) + frappe.delete_doc_if_exists("Item", "_Test Variant Item Diff", force=1) + + template = frappe.get_doc("Item", "_Test Variant Item").as_dict() + template = frappe.get_doc( + { + "doctype": "Item", + "item_code": "_Test Variant Item Diff", + "item_name": "Test Variant Friendly Name", + "item_group": template.item_group, + "stock_uom": template.stock_uom, + "has_variants": 1, + "attributes": [{"attribute": "Test Size"}], + } + ) + template.insert() + self.addCleanup(lambda: frappe.delete_doc_if_exists("Item", "_Test Variant Item Diff", force=1)) + + variant = create_variant("_Test Variant Item Diff", {"Test Size": "Large"}) + variant.save() + self.assertEqual(variant.item_code, "_Test Variant Item Diff-L") + self.assertEqual(variant.item_name, "Test Variant Friendly Name-L") + + # even a manually customized item_name (unrelated to the auto-generated pattern) must be + # rebuilt on abbreviation rename, since item_code and item_name are meant to stay in lockstep. + frappe.db.set_value("Item", variant.name, "item_name", "Custom Friendly Large Shirt Name") + + attribute = frappe.get_doc("Item Attribute", "Test Size") + for row in attribute.item_attribute_values: + if row.attribute_value == "Large": + row.abbr = "LRG" + break + + def restore_test_size_abbr(): + doc = frappe.get_doc("Item Attribute", "Test Size") + for row in doc.item_attribute_values: + if row.attribute_value == "Large": + row.abbr = "L" + break + frappe.flags.attribute_values = None + doc.save() + + self.addCleanup(restore_test_size_abbr) + self.addCleanup(lambda: frappe.delete_doc_if_exists("Item", "_Test Variant Item Diff-LRG", force=1)) + + frappe.flags.attribute_values = None + attribute.save() + + self.assertFalse(frappe.db.exists("Item", "_Test Variant Item Diff-L")) + self.assertEqual( + frappe.db.get_value("Item", "_Test Variant Item Diff-LRG", "item_name"), + "Test Variant Friendly Name-LRG", + ) + def test_make_item_variant(self): frappe.delete_doc_if_exists("Item", "_Test Variant Item-L", force=1) From 697e2c0b66dd36638969e573d05e8bf2750ec211 Mon Sep 17 00:00:00 2001 From: pandiyan Date: Tue, 7 Jul 2026 12:28:21 +0530 Subject: [PATCH 58/91] perf: batch bin lookups in delivery note stock update update_current_stock() in delivery_note.py used to call frappe.db.get_value("Bin", ...) separately for every row in items and every row in packed_items - so a delivery note with 200 items and 200 packed items made 400 separate database calls on every save. now it groups item codes by warehouse and fetches bin data with one query per distinct warehouse, then assigns actual_qty/projected_qty to each row from that result - same values as before, far fewer database calls, and no cross-product over-fetch across warehouses. (cherry picked from commit 5da878d25f21c4e9d240d511cd9ca178ff67c45e) --- .../doctype/delivery_note/delivery_note.py | 42 ++++++++++++------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py index c9c319d9d1a..440eda9d972 100644 --- a/erpnext/stock/doctype/delivery_note/delivery_note.py +++ b/erpnext/stock/doctype/delivery_note/delivery_note.py @@ -415,22 +415,34 @@ class DeliveryNote(SellingController): frappe.throw(_("Warehouse required for stock Item {0}").format(d["item_code"])) def update_current_stock(self): - if self.get("_action") and self._action != "update_after_submit": - for d in self.get("items"): - d.actual_qty = frappe.db.get_value( - "Bin", {"item_code": d.item_code, "warehouse": d.warehouse}, "actual_qty" - ) + if not (self.get("_action") and self._action != "update_after_submit"): + return - for d in self.get("packed_items"): - bin_qty = frappe.db.get_value( - "Bin", - {"item_code": d.item_code, "warehouse": d.warehouse}, - ["actual_qty", "projected_qty"], - as_dict=True, - ) - if bin_qty: - d.actual_qty = flt(bin_qty.actual_qty) - d.projected_qty = flt(bin_qty.projected_qty) + warehouse_item_codes = {} + for d in self.get("items") + self.get("packed_items"): + warehouse_item_codes.setdefault(d.warehouse, set()).add(d.item_code) + + if not warehouse_item_codes: + return + + bin_map = {} + for warehouse, item_codes in warehouse_item_codes.items(): + for b in frappe.get_all( + "Bin", + filters={"item_code": ["in", item_codes], "warehouse": warehouse}, + fields=["item_code", "actual_qty", "projected_qty"], + ): + bin_map[(b.item_code, warehouse)] = b + + for d in self.get("items"): + bin_data = bin_map.get((d.item_code, d.warehouse)) + d.actual_qty = bin_data.actual_qty if bin_data else None + + for d in self.get("packed_items"): + bin_data = bin_map.get((d.item_code, d.warehouse)) + if bin_data: + d.actual_qty = flt(bin_data.actual_qty) + d.projected_qty = flt(bin_data.projected_qty) def on_submit(self): self.validate_packed_qty() From 745baad0d1ad861e3be119c17db2dd1346ae29ea Mon Sep 17 00:00:00 2001 From: pandiyan Date: Tue, 7 Jul 2026 16:11:55 +0530 Subject: [PATCH 59/91] fix: validate planned end date is not before planned start date in work order (cherry picked from commit 2ec780cb353b74de25802b9062dca8c8c6956edd) --- erpnext/manufacturing/doctype/work_order/work_order.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/erpnext/manufacturing/doctype/work_order/work_order.py b/erpnext/manufacturing/doctype/work_order/work_order.py index 3f470ccd216..2454341dc39 100644 --- a/erpnext/manufacturing/doctype/work_order/work_order.py +++ b/erpnext/manufacturing/doctype/work_order/work_order.py @@ -295,6 +295,10 @@ class WorkOrder(Document): self.validate_subcontracting_inward_order() def validate_dates(self): + if self.planned_start_date and self.planned_end_date: + if get_datetime(self.planned_end_date) < get_datetime(self.planned_start_date): + frappe.throw(_("Planned End Date cannot be before Planned Start Date")) + if self.actual_start_date and self.actual_end_date: if self.actual_end_date < self.actual_start_date: frappe.throw(_("Actual End Date cannot be before Actual Start Date")) From b2e6a39743773b7a244ac8b2bd497e2369a2afde Mon Sep 17 00:00:00 2001 From: Mohd Haris Date: Thu, 9 Jul 2026 18:01:17 +0530 Subject: [PATCH 60/91] fix: update BOM operations when routing is changed The routing field handler only fetched operations from the routing when the operations table was empty. When a new BOM version is created (via "New Version"), operations are copied from the source BOM, so selecting a different routing left the old operations in place - both in the form and after saving. Drop the `!frm.doc.operations.length` guard from the routing handler so that (re)selecting a routing always refetches the operations from that routing via the existing get_routing method, which clears and repopulates the operations table. Co-Authored-By: Claude Opus 4.8 (cherry picked from commit 758a837de4b7e40653e33fdf8110b988e71187c3) --- erpnext/manufacturing/doctype/bom/bom.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/erpnext/manufacturing/doctype/bom/bom.js b/erpnext/manufacturing/doctype/bom/bom.js index 9fbe4f1174c..7a002da2fac 100644 --- a/erpnext/manufacturing/doctype/bom/bom.js +++ b/erpnext/manufacturing/doctype/bom/bom.js @@ -586,7 +586,11 @@ frappe.ui.form.on("BOM", { }, routing(frm) { - if (frm.doc.routing && frm.doc.with_operations && !frm.doc.operations.length) { + // Refetch operations whenever the routing is (re)selected, so that + // changing the routing - e.g. on a new BOM version copied from another + // BOM - replaces the operations with those of the newly selected routing + // instead of keeping the old ones. + if (frm.doc.routing && frm.doc.with_operations) { frappe.call({ doc: frm.doc, method: "get_routing", From bebe0116369a9a98aae15aba8b294bd2f6a1108c Mon Sep 17 00:00:00 2001 From: Mohsin Akhtar <167299936+akhtarmohsin@users.noreply.github.com> Date: Sun, 21 Jun 2026 16:10:43 +0530 Subject: [PATCH 61/91] fix: show only template items in Variant Of filter (cherry picked from commit 243312985030dc515e6fedf7b253af08f3c55b06) --- erpnext/stock/doctype/item/item.json | 1 + 1 file changed, 1 insertion(+) diff --git a/erpnext/stock/doctype/item/item.json b/erpnext/stock/doctype/item/item.json index bb0724b3f56..6b57192a099 100644 --- a/erpnext/stock/doctype/item/item.json +++ b/erpnext/stock/doctype/item/item.json @@ -170,6 +170,7 @@ "ignore_user_permissions": 1, "in_standard_filter": 1, "label": "Variant Of", + "link_filters": "[[\"Item\",\"has_variants\",\"=\",1]]", "options": "Item", "read_only": 1, "search_index": 1, From f602ee0e734c53ef4a6e48d68303e13c2cf7bf37 Mon Sep 17 00:00:00 2001 From: Mohsin Akhtar <167299936+akhtarmohsin@users.noreply.github.com> Date: Sun, 5 Jul 2026 23:26:06 +0530 Subject: [PATCH 62/91] fix: update modified timestamp in item.json (cherry picked from commit 54da9fc27a4df6a0511fa52cc908cd818a4a4958) --- erpnext/stock/doctype/item/item.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/stock/doctype/item/item.json b/erpnext/stock/doctype/item/item.json index 6b57192a099..c075dd43310 100644 --- a/erpnext/stock/doctype/item/item.json +++ b/erpnext/stock/doctype/item/item.json @@ -1093,7 +1093,7 @@ "image_field": "image", "links": [], "make_attachments_public": 1, - "modified": "2026-05-27 10:18:46.862670", + "modified": "2026-07-05 23:24:45.734144", "modified_by": "Administrator", "module": "Stock", "name": "Item", From dd264506db4ab5f98f51864e6a23dd1c81963ec6 Mon Sep 17 00:00:00 2001 From: Sudharsanan11 Date: Fri, 3 Jul 2026 12:27:46 +0530 Subject: [PATCH 63/91] test(manufacturing): add test to validate the work order status on partial pick-list transfer Cover the pick-list flow where a stock entry moves only one of the work order's required items: material_transferred_for_manufacturing stays 0 (min fraction) while the status must move to "in process". --- .../doctype/work_order/test_work_order.py | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/erpnext/manufacturing/doctype/work_order/test_work_order.py b/erpnext/manufacturing/doctype/work_order/test_work_order.py index afa997efef5..b447cbde6b6 100644 --- a/erpnext/manufacturing/doctype/work_order/test_work_order.py +++ b/erpnext/manufacturing/doctype/work_order/test_work_order.py @@ -1607,6 +1607,38 @@ class TestWorkOrder(ERPNextTestSuite): self.assertEqual(work_order.material_transferred_for_manufacturing, 0.0) self.assertEqual(work_order.status, "In Process") + def test_status_in_process_when_only_one_required_item_transferred_via_pick_list(self): + """Stock Entry created from a Pick List that picked only one of the required items: + min-fraction keeps material_transferred_for_manufacturing at 0, but the work order must + still move to In Process because material is already in WIP.""" + from erpnext.manufacturing.doctype.work_order.work_order import create_pick_list + from erpnext.stock.doctype.pick_list.pick_list import create_stock_entry + + work_order = make_wo_order_test_record( + planned_start_date=now(), qty=2, source_warehouse="Stores - _TC" + ) + test_stock_entry.make_stock_entry( + item_code="_Test Item", target="Stores - _TC", qty=10, basic_rate=5000.0 + ) + test_stock_entry.make_stock_entry( + item_code="_Test Item Home Desktop 100", target="Stores - _TC", qty=10, basic_rate=1000.0 + ) + + pick_list = create_pick_list(work_order.name, for_qty=work_order.qty) + # pick only _Test Item; the other required item is left out of this pick list + pick_list.pick_manually = 1 + pick_list.locations = [loc for loc in pick_list.locations if loc.item_code == "_Test Item"] + pick_list.save() + pick_list.submit() + + stock_entry = frappe.get_doc(create_stock_entry(frappe.as_json(pick_list.as_dict()))) + self.assertEqual(stock_entry.fg_completed_qty, 0.0) + stock_entry.submit() + + work_order.reload() + self.assertEqual(work_order.material_transferred_for_manufacturing, 0.0) + self.assertEqual(work_order.status, "In Process") + def test_backflushed_batch_raw_materials_based_on_transferred(self): frappe.db.set_single_value( "Manufacturing Settings", From 2264e25cc676e18e48c88d44da3bfe2dbb630e45 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 10 Jul 2026 04:24:03 +0000 Subject: [PATCH 64/91] fix: replay immutable SLE qty for serial/batch bundle valuation (backport #56814) (#56835) fix: replay immutable SLE qty for serial/batch bundle valuation (#56814) (cherry picked from commit ecc8ec672bab513619ae35cdb7dde49b264cc722) Co-authored-by: rohitwaghchaure --- erpnext/stock/stock_ledger.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py index 749a329f6bb..7f6cc176373 100644 --- a/erpnext/stock/stock_ledger.py +++ b/erpnext/stock/stock_ledger.py @@ -1093,7 +1093,11 @@ class update_entries_after: self.wh_data.stock_queue = json.loads(stock_queue[0]) if stock_queue else [] self.wh_data.stock_value = round_off_if_near_zero(self.wh_data.stock_value + doc.total_amount) - self.wh_data.qty_after_transaction += flt(doc.total_qty, self.flt_precision) + # Replay the immutable qty recorded on the SLE at submission, not the bundle's recomputed + # total_qty. A valuation repost must never rewrite physical quantities; if the bundle's child + # rows were edited after submission, doc.total_qty would silently corrupt qty_after_transaction + # (and every downstream balance). sle.actual_qty is the frozen movement for this entry. + self.wh_data.qty_after_transaction += flt(sle.actual_qty, self.flt_precision) if flt(self.wh_data.qty_after_transaction, self.flt_precision): self.wh_data.valuation_rate = flt(self.wh_data.stock_value, self.flt_precision) / flt( self.wh_data.qty_after_transaction, self.flt_precision From 7e46be2a33266f149a331e39ff4e40fd1fd0ade7 Mon Sep 17 00:00:00 2001 From: Pandiyan P Date: Fri, 10 Jul 2026 11:37:50 +0530 Subject: [PATCH 65/91] fix(stock): pick list serial batch posting date (#57015) * fix(stock): fall back to current date/time for serial and batch bundle posting datetime Pick List has no posting_date/posting_time fields, so creating or updating a Serial and Batch Bundle from a Pick List row crashed with "TypeError: combine() argument 1 must be datetime.date, not None". Fall back to today/now when the parent voucher doesn't carry its own posting date. Fixes #56951 * fix(stock): accept a plain dict for add_serial_batch_ledgers' doc and child_row The whitelisted add_serial_batch_ledgers only converted child_row into an attribute-accessible frappe._dict when it arrived as a JSON string, and doc's type hint only allowed Document | str. Frappe's JSON API delivers both as plain dicts (see frappe.app.make_form_dict, which parses the request body with orjson and only wraps the top-level dict, not nested values), so every real request was rejected before the handler body ever ran: first with a FrappeTypeError on doc, and once that's fixed, with an AttributeError on child_row.serial_and_batch_bundle. parse_json already wraps a plain dict in frappe._dict (and leaves a real Document instance untouched), so routing child_row through it unconditionally fixes both. --- .../serial_and_batch_bundle.py | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py index 3de5c7417a7..db902d1b3f0 100644 --- a/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py +++ b/erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py @@ -27,6 +27,7 @@ from frappe.utils import ( ) from frappe.utils.csvutils import build_csv_response +from erpnext.stock.doctype.purchase_receipt_item.purchase_receipt_item import PurchaseReceiptItem from erpnext.stock.serial_batch_bundle import ( BatchNoValuation, SerialNoValuation, @@ -2152,9 +2153,14 @@ def get_reference_serial_and_batch_bundle(child_row): @frappe.whitelist() -def add_serial_batch_ledgers(entries, child_row, doc, warehouse, do_not_save=False) -> object: - if isinstance(child_row, str): - child_row = frappe._dict(parse_json(child_row)) +def add_serial_batch_ledgers( + entries: list | str, + child_row: PurchaseReceiptItem | dict | str, + doc: Document | dict | str, + warehouse: str | None = None, + do_not_save: bool = False, +): + child_row = parse_json(child_row) if isinstance(entries, str): entries = parse_json(entries) @@ -2186,7 +2192,9 @@ def create_serial_batch_no_ledgers( if parent_doc.get("doctype") == "Stock Entry": warehouse = warehouse or child_row.s_warehouse or child_row.t_warehouse - posting_datetime = combine_datetime(parent_doc.get("posting_date"), parent_doc.get("posting_time")) + posting_datetime = combine_datetime( + parent_doc.get("posting_date") or today(), parent_doc.get("posting_time") or nowtime() + ) doc = frappe.get_doc( { @@ -2303,7 +2311,9 @@ def update_serial_batch_no_ledgers(bundle, entries, child_row, parent_doc, wareh ) doc.voucher_detail_no = child_row.name - doc.posting_datetime = combine_datetime(parent_doc.get("posting_date"), parent_doc.get("posting_time")) + doc.posting_datetime = combine_datetime( + parent_doc.get("posting_date") or today(), parent_doc.get("posting_time") or nowtime() + ) doc.warehouse = warehouse or doc.warehouse doc.set("entries", []) From e1e6176ddccc72caac37fc3f5a0ed646bb09e576 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 10 Jul 2026 06:13:01 +0000 Subject: [PATCH 66/91] fix: for purchases do voucher based reposting (backport #56601) (#56608) * fix: for purchases do voucher based reposting (#56601) (cherry picked from commit 5523c15ab8bfc54d92832f93b191fd69680297a9) * chore: fix type hints --------- Co-authored-by: rohitwaghchaure --- .../stock_and_account_value_comparison.py | 46 ++++++++++++++- ...test_stock_and_account_value_comparison.py | 57 +++++++++++++++++++ 2 files changed, 101 insertions(+), 2 deletions(-) create mode 100644 erpnext/stock/report/stock_and_account_value_comparison/test_stock_and_account_value_comparison.py diff --git a/erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py b/erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py index 8afe1d72e27..0e23561fca1 100644 --- a/erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py +++ b/erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py @@ -174,14 +174,20 @@ def get_columns(filters): @frappe.whitelist() -def create_reposting_entries(rows, company): +def create_reposting_entries(rows: str | list, company: str): if isinstance(rows, str): rows = parse_json(rows) entries = [] item_wh = frappe._dict() - vouchers = [row.get("voucher_no") for row in rows] + vouchers = [ + row.get("voucher_no") + for row in rows + if row.get("voucher_type") not in ["Purchase Receipt", "Purchase Invoice"] + ] + repost_based_on_transaction(rows, company, entries) + sles = get_stock_ledgers(vouchers) for sle in sles: key = (sle.item_code, sle.warehouse) @@ -214,3 +220,39 @@ def create_reposting_entries(rows, company): if entries: entries = ", ".join(entries) frappe.msgprint(_("Reposting entries created: {0}").format(entries)) + + +def repost_based_on_transaction(rows, company=None, entries=None): + if entries is None: + entries = [] + + duplicate_vouchers = set() + for row in rows: + if ( + row.get("voucher_type") == "Purchase Invoice" + and frappe.get_cached_value("Purchase Invoice", row.get("voucher_no"), "update_stock") == 0 + ): + continue + + if row.get("voucher_type") in ["Purchase Receipt", "Purchase Invoice"]: + voucher_key = (row.get("voucher_type"), row.get("voucher_no")) + if voucher_key in duplicate_vouchers: + continue + + duplicate_vouchers.add(voucher_key) + doc = frappe.get_doc( + { + "doctype": "Repost Item Valuation", + "based_on": "Transaction", + "status": "Queued", + "voucher_type": row.get("voucher_type"), + "voucher_no": row.get("voucher_no"), + "posting_date": row.get("posting_date"), + "posting_time": row.get("posting_time"), + "company": company, + "allow_nagative_stock": 1, + "recalculate_valuation_rate": 1, + } + ).submit() + + entries.append(get_link_to_form("Repost Item Valuation", doc.name)) diff --git a/erpnext/stock/report/stock_and_account_value_comparison/test_stock_and_account_value_comparison.py b/erpnext/stock/report/stock_and_account_value_comparison/test_stock_and_account_value_comparison.py new file mode 100644 index 00000000000..0795bc6ad79 --- /dev/null +++ b/erpnext/stock/report/stock_and_account_value_comparison/test_stock_and_account_value_comparison.py @@ -0,0 +1,57 @@ +# Copyright (c) 2026, Frappe Technologies Pvt. Ltd. and contributors +# For license information, please see license.txt + +import frappe +from frappe.utils import today + +from erpnext.stock.doctype.item.test_item import make_item +from erpnext.stock.doctype.purchase_receipt.test_purchase_receipt import make_purchase_receipt +from erpnext.stock.report.stock_and_account_value_comparison.stock_and_account_value_comparison import ( + create_reposting_entries, + execute, +) +from erpnext.tests.utils import ERPNextTestSuite + +PI_COMPANY = "_Test Company with perpetual inventory" +PI_STORES = "Stores - TCP1" + + +class TestStockAndAccountValueComparison(ERPNextTestSuite): + def test_purchase_voucher_reposted_transaction_based(self): + # A Purchase Receipt whose GL entries are missing must surface in the report and, when reposted + # from it, be reposted Transaction-based (so its own GL is regenerated) rather than the slower + # Item-and-Warehouse based reposting. + item = make_item(properties={"is_stock_item": 1, "valuation_method": "FIFO"}).name + + pr = make_purchase_receipt(item_code=item, company=PI_COMPANY, warehouse=PI_STORES, qty=5, rate=100) + + # Simulate the out-of-sync state: stock ledger exists but the accounting ledger does not. + frappe.db.delete("GL Entry", {"voucher_type": "Purchase Receipt", "voucher_no": pr.name}) + + # The receipt now shows up in the comparison report (stock value 500 vs account value 0). + filters = frappe._dict(company=PI_COMPANY, as_on_date=today()) + _columns, data = execute(filters) + + row = next((d for d in data if d.get("voucher_no") == pr.name), None) + self.assertIsNotNone(row, "Out-of-sync Purchase Receipt should appear in the report") + self.assertEqual(row.get("voucher_type"), "Purchase Receipt") + + # Repost from the report. + create_reposting_entries([row], PI_COMPANY) + + # A Transaction-based Repost Item Valuation must have been created for this voucher... + transaction_rivs = frappe.get_all( + "Repost Item Valuation", + filters={"voucher_no": pr.name, "voucher_type": "Purchase Receipt"}, + fields=["name", "based_on"], + ) + + self.assertTrue(transaction_rivs, "Expected a Repost Item Valuation for the Purchase Receipt") + self.assertTrue(all(riv.based_on == "Transaction" for riv in transaction_rivs)) + + # ...and no Item-and-Warehouse based reposting should have been created for this item. + item_wh_rivs = frappe.get_all( + "Repost Item Valuation", + filters={"based_on": "Item and Warehouse", "item_code": item}, + ) + self.assertFalse(item_wh_rivs, "Purchase vouchers must not be reposted Item-and-Warehouse based") From 39b5e12305fe97629ae389d127a726352b6432a9 Mon Sep 17 00:00:00 2001 From: pandiyan Date: Fri, 10 Jul 2026 11:48:04 +0530 Subject: [PATCH 67/91] perf: avoid per-row Warehouse doc fetches in auto reorder job get_item_warehouse_projected_qty() called frappe.get_doc("Warehouse", ...) inside the per-bin loop to walk up the warehouse hierarchy, re-fetching the same parent warehouses over and over on sites with nested warehouses. Preload the warehouse-to-parent mapping with a single query and walk it in-memory instead, cutting the DB round-trips from O(bins * hierarchy depth) to one query. (cherry picked from commit 6beb3d2509b7370e2cadc037dfc85a68490b6684) --- erpnext/stock/reorder_item.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/erpnext/stock/reorder_item.py b/erpnext/stock/reorder_item.py index 3b99992df9c..a92b41d52fb 100644 --- a/erpnext/stock/reorder_item.py +++ b/erpnext/stock/reorder_item.py @@ -190,6 +190,10 @@ def get_item_warehouse_projected_qty(items_to_consider): item_warehouse_projected_qty = {} items_to_consider = list(items_to_consider.keys()) + warehouse_parent_map = frappe._dict( + frappe.get_all("Warehouse", fields=["name", "parent_warehouse"], as_list=True) + ) + for item_code, warehouse, projected_qty in frappe.db.sql( """select item_code, warehouse, projected_qty from tabBin where item_code in ({}) @@ -204,16 +208,14 @@ def get_item_warehouse_projected_qty(items_to_consider): if warehouse not in item_warehouse_projected_qty.get(item_code): item_warehouse_projected_qty[item_code][warehouse] = flt(projected_qty) - warehouse_doc = frappe.get_doc("Warehouse", warehouse) + parent_warehouse = warehouse_parent_map.get(warehouse) - while warehouse_doc.parent_warehouse: - if not item_warehouse_projected_qty.get(item_code, {}).get(warehouse_doc.parent_warehouse): - item_warehouse_projected_qty.setdefault(item_code, {})[warehouse_doc.parent_warehouse] = flt( - projected_qty - ) + while parent_warehouse: + if not item_warehouse_projected_qty.get(item_code, {}).get(parent_warehouse): + item_warehouse_projected_qty.setdefault(item_code, {})[parent_warehouse] = flt(projected_qty) else: - item_warehouse_projected_qty[item_code][warehouse_doc.parent_warehouse] += flt(projected_qty) - warehouse_doc = frappe.get_doc("Warehouse", warehouse_doc.parent_warehouse) + item_warehouse_projected_qty[item_code][parent_warehouse] += flt(projected_qty) + parent_warehouse = warehouse_parent_map.get(parent_warehouse) return item_warehouse_projected_qty From 277c651a9f20dadc9559a3e6e58504833857049e Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Thu, 2 Jul 2026 15:08:04 +0530 Subject: [PATCH 68/91] refactor: add payment ledger to ignore link (cherry picked from commit 6a4c5b60626ef78ab89d81a10ab2a8f460529c05) --- .../exchange_rate_revaluation/exchange_rate_revaluation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py index f17d34eac47..468b0a42c06 100644 --- a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py +++ b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py @@ -90,7 +90,7 @@ class ExchangeRateRevaluation(Document): ) def on_cancel(self): - self.ignore_linked_doctypes = "GL Entry" + self.ignore_linked_doctypes = ["GL Entry", "Payment Ledger Entry"] @frappe.whitelist() def check_journal_entry_condition(self): From 051757760fec66a1bf64b2e2ab321f9bdcb60346 Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Thu, 2 Jul 2026 17:52:03 +0530 Subject: [PATCH 69/91] refactor: reversal capability on exchange rate revaluation (cherry picked from commit a0b14c0607e466be920edbfa8987ec1d9d051161) # Conflicts: # erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py --- .../exchange_rate_revaluation.js | 34 ++++++-- .../exchange_rate_revaluation.py | 81 ++++++++++++++++--- .../test_exchange_rate_revaluation.py | 4 +- .../journal_entry/journal_entry_list.js | 5 +- 4 files changed, 104 insertions(+), 20 deletions(-) diff --git a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js index 5efd3239341..8c6ce039c1d 100644 --- a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js +++ b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.js @@ -22,17 +22,27 @@ frappe.ui.form.on("Exchange Rate Revaluation", { refresh: function (frm) { if (frm.doc.docstatus == 1) { frappe.call({ - method: "check_journal_entry_condition", + method: "check_journal_and_reversal", doc: frm.doc, callback: function (r) { if (r.message) { - frm.add_custom_button( - __("Journal Entries"), - function () { - return frm.events.make_jv(frm); - }, - __("Create") - ); + if (!r.message.journals_posted) { + frm.add_custom_button( + __("Journal Entries"), + function () { + return frm.events.make_jv(frm); + }, + __("Create") + ); + } else if (!r.message.reversals_posted) { + frm.add_custom_button( + __("Reversal Journal Entries"), + function () { + return frm.events.make_reverse_journal(frm); + }, + __("Create") + ); + } } }, }); @@ -100,6 +110,14 @@ frappe.ui.form.on("Exchange Rate Revaluation", { }, }); }, + make_reverse_journal: function (frm) { + frappe.call({ + method: "make_reverse_journal", + doc: frm.doc, + freeze: true, + freeze_message: __("Reversing Journals..."), + }); + }, }); frappe.ui.form.on("Exchange Rate Revaluation Account", { diff --git a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py index 468b0a42c06..3fa9d9a1983 100644 --- a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py +++ b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py @@ -7,8 +7,13 @@ from frappe import _, qb from frappe.model.document import Document from frappe.model.meta import get_field_precision from frappe.query_builder import Criterion, Order +<<<<<<< HEAD from frappe.query_builder.functions import NullIf, Sum from frappe.utils import flt, get_link_to_form +======= +from frappe.query_builder.functions import Max, NullIf, Sum +from frappe.utils import flt, get_link_to_form, nowdate +>>>>>>> a0b14c0607 (refactor: reversal capability on exchange rate revaluation) import erpnext from erpnext.accounts.doctype.journal_entry.journal_entry import get_balance_on @@ -93,22 +98,28 @@ class ExchangeRateRevaluation(Document): self.ignore_linked_doctypes = ["GL Entry", "Payment Ledger Entry"] @frappe.whitelist() - def check_journal_entry_condition(self): + def check_journal_and_reversal(self): exchange_gain_loss_account = self.get_for_unrealized_gain_loss_account() + journals_posted = False + reversals_posted = False + + je = qb.DocType("Journal Entry") jea = qb.DocType("Journal Entry Account") journals = ( - qb.from_(jea) - .select(jea.parent) + qb.from_(je) + .join(jea) + .on(je.name == jea.parent) + .select(je.name) .distinct() .where( (jea.reference_type == "Exchange Rate Revaluation") & (jea.reference_name == self.name) & (jea.docstatus == 1) + & (je.reversal_of.isnull()) # omit journals that have reversals ) - .run() + .run(pluck="name") ) - if journals: gle = qb.DocType("GL Entry") total_amt = ( @@ -123,12 +134,31 @@ class ExchangeRateRevaluation(Document): .run() ) - if total_amt and total_amt[0][0] != self.total_gain_loss: - return True + if total_amt and total_amt[0][0] == self.total_gain_loss: + journals_posted = True else: - return False + journals_posted = False - return True + # reverse journals + reverse_journals = ( + qb.from_(je) + .join(jea) + .on(je.name == jea.parent) + .select(je.name) + .where( + (jea.reference_type == "Exchange Rate Revaluation") + & (jea.reference_name == self.name) + & (jea.docstatus == 1) + & (je.reversal_of.notnull()) + ) + .run(pluck="name") + ) + if reverse_journals: + reversals_posted = True + else: + reversals_posted = False + + return {"journals_posted": journals_posted, "reversals_posted": reversals_posted} def fetch_and_calculate_accounts_data(self): accounts = self.get_accounts_data() @@ -342,6 +372,7 @@ class ExchangeRateRevaluation(Document): @frappe.whitelist() def make_jv_entries(self): + frappe.has_permission("Journal Entry", "write", throw=True) zero_balance_jv = self.make_jv_for_zero_balance() if zero_balance_jv: frappe.msgprint( @@ -568,6 +599,38 @@ class ExchangeRateRevaluation(Document): journal_entry.save() return journal_entry + @frappe.whitelist() + def make_reverse_journal(self): + frappe.has_permission("Journal Entry", "write", throw=True) + je = qb.DocType("Journal Entry") + jea = qb.DocType("Journal Entry Account") + journals = ( + qb.from_(je) + .join(jea) + .on(je.name == jea.parent) + .select(je.name) + .distinct() + .where( + (jea.reference_type == "Exchange Rate Revaluation") + & (jea.reference_name == self.name) + & (jea.docstatus == 1) + & (je.reversal_of.isnull()) # omit journals that have reversals + ) + .run(pluck="name") + ) + if journals: + from erpnext.accounts.doctype.journal_entry.mapper import make_reverse_journal_entry + + for x in journals: + reversal = make_reverse_journal_entry(x) + reversal.posting_date = nowdate() + reversal.submit() + frappe.msgprint( + _("Revaluation journal for {0} has been created: {1}").format( + frappe.bold(x), get_link_to_form("Journal Entry", reversal.name) + ) + ) + def calculate_exchange_rate_using_last_gle(company, account, party_type, party): """ diff --git a/erpnext/accounts/doctype/exchange_rate_revaluation/test_exchange_rate_revaluation.py b/erpnext/accounts/doctype/exchange_rate_revaluation/test_exchange_rate_revaluation.py index 77c8d8ec845..5808aca6e37 100644 --- a/erpnext/accounts/doctype/exchange_rate_revaluation/test_exchange_rate_revaluation.py +++ b/erpnext/accounts/doctype/exchange_rate_revaluation/test_exchange_rate_revaluation.py @@ -132,7 +132,7 @@ class TestExchangeRateRevaluation(ERPNextTestSuite, AccountsTestMixin): err = err.save().submit() # Create JV for ERR - self.assertTrue(err.check_journal_entry_condition()) + self.assertTrue(err.check_journal_and_reversal()) err_journals = err.make_jv_entries() je = frappe.get_doc("Journal Entry", err_journals.get("zero_balance_jv")) je = je.submit() @@ -221,7 +221,7 @@ class TestExchangeRateRevaluation(ERPNextTestSuite, AccountsTestMixin): err = err.save().submit() # Create JV for ERR - self.assertTrue(err.check_journal_entry_condition()) + self.assertTrue(err.check_journal_and_reversal()) err_journals = err.make_jv_entries() je = frappe.get_doc("Journal Entry", err_journals.get("zero_balance_jv")) je = je.submit() diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry_list.js b/erpnext/accounts/doctype/journal_entry/journal_entry_list.js index 6ea0df946f2..1738beb3630 100644 --- a/erpnext/accounts/doctype/journal_entry/journal_entry_list.js +++ b/erpnext/accounts/doctype/journal_entry/journal_entry_list.js @@ -1,7 +1,10 @@ frappe.listview_settings["Journal Entry"] = { - add_fields: ["voucher_type", "posting_date", "total_debit", "company", "remark"], + add_fields: ["voucher_type", "posting_date", "total_debit", "company", "remark", "reversal_of"], get_indicator: function (doc) { if (doc.docstatus === 1) { + if (doc.reversal_of && doc.voucher_type == "Exchange Rate Revaluation") { + return [__("Reversal Of Exchange Rate Revaluation"), "blue"]; + } return [__(doc.voucher_type), "blue", `voucher_type,=,${doc.voucher_type}`]; } }, From 63e51171822bb6ed73a658dfe9df9086d4c27580 Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Thu, 9 Jul 2026 13:09:29 +0530 Subject: [PATCH 70/91] refactor: handle reverse ERR journals in AR / AP report (cherry picked from commit 68382420637e4492be2bb52c156cd1222b34fa80) --- .../report/accounts_receivable/accounts_receivable.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py index 408f0262694..d1132f8594f 100644 --- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.py +++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.py @@ -265,10 +265,12 @@ class ReceivablePayableReport: # Build and use a separate row for Employee Advances. # This allows Payments or Journals made against Emp Advance to be processed. - if ( - not row - and ple.against_voucher_type == "Employee Advance" - and self.filters.handle_employee_advances + if not row and ( + (ple.against_voucher_type == "Employee Advance" and self.filters.handle_employee_advances) + or ( + ple.against_voucher_type == "Exchange Rate Revaluation" + and self.filters.for_revaluation_journals + ) ): _d = self.build_voucher_dict(ple) _d.voucher_type = ple.against_voucher_type From 4711a28dd0b00e244d6f57e536f6ee2c1b47d278 Mon Sep 17 00:00:00 2001 From: ruthra kumar Date: Fri, 10 Jul 2026 10:55:39 +0530 Subject: [PATCH 71/91] refactor(test): for reverse journals as well (cherry picked from commit 65775e59a1bc5fcb114db57a278bd8cc86c071c5) # Conflicts: # erpnext/accounts/doctype/exchange_rate_revaluation/test_exchange_rate_revaluation.py --- .../test_exchange_rate_revaluation.py | 151 +++++++++++++++++- 1 file changed, 149 insertions(+), 2 deletions(-) diff --git a/erpnext/accounts/doctype/exchange_rate_revaluation/test_exchange_rate_revaluation.py b/erpnext/accounts/doctype/exchange_rate_revaluation/test_exchange_rate_revaluation.py index 5808aca6e37..1b8f2ba3bfa 100644 --- a/erpnext/accounts/doctype/exchange_rate_revaluation/test_exchange_rate_revaluation.py +++ b/erpnext/accounts/doctype/exchange_rate_revaluation/test_exchange_rate_revaluation.py @@ -132,7 +132,8 @@ class TestExchangeRateRevaluation(ERPNextTestSuite, AccountsTestMixin): err = err.save().submit() # Create JV for ERR - self.assertTrue(err.check_journal_and_reversal()) + ret = err.check_journal_and_reversal() + self.assertFalse(ret.get("journals_posted")) err_journals = err.make_jv_entries() je = frappe.get_doc("Journal Entry", err_journals.get("zero_balance_jv")) je = je.submit() @@ -221,7 +222,8 @@ class TestExchangeRateRevaluation(ERPNextTestSuite, AccountsTestMixin): err = err.save().submit() # Create JV for ERR - self.assertTrue(err.check_journal_and_reversal()) + ret = err.check_journal_and_reversal() + self.assertFalse(ret.get("journals_posted")) err_journals = err.make_jv_entries() je = frappe.get_doc("Journal Entry", err_journals.get("zero_balance_jv")) je = je.submit() @@ -298,3 +300,148 @@ class TestExchangeRateRevaluation(ERPNextTestSuite, AccountsTestMixin): for key, _val in expected_data.items(): self.assertEqual(expected_data.get(key), account_details.get(key)) +<<<<<<< HEAD +======= + + @ERPNextTestSuite.change_settings( + "Accounts Settings", + {"allow_multi_currency_invoices_against_single_party_account": 1, "allow_stale": 0}, + ) + def test_05_revaluation_journal_reversal(self): + """ + Test reversing of revaluation journals + """ + si = create_sales_invoice( + item=self.item, + company=self.company, + customer=self.customer, + debit_to=self.debtors_usd, + posting_date=today(), + parent_cost_center=self.cost_center, + cost_center=self.cost_center, + rate=100, + price_list_rate=100, + do_not_submit=1, + ) + si.currency = "USD" + si.conversion_rate = 80 + si.save().submit() + + err = frappe.new_doc("Exchange Rate Revaluation") + err.company = self.company + err.posting_date = today() + err.fetch_and_calculate_accounts_data() + self.assertEqual(len(err.accounts), 1) + err.save().submit() + + gain_loss_account = err.get_for_unrealized_gain_loss_account() + usd_account = err.accounts[0].account + old_balance = err.accounts[0].balance_in_base_currency + new_balance = err.accounts[0].new_balance_in_base_currency + total_gain_loss = err.total_gain_loss + + # Create JV for ERR + ret = err.check_journal_and_reversal() + self.assertFalse(ret.get("journals_posted")) + err_journals = err.make_jv_entries() + je = frappe.get_doc("Journal Entry", err_journals.get("revaluation_jv")) + je = je.submit() + + je.reload() + self.assertEqual(je.voucher_type, "Exchange Rate Revaluation") + self.assertEqual(len(je.accounts), 3) + expected = [ + (usd_account, new_balance, 0.0, 100.0, 0.0), + (usd_account, 0.0, old_balance, 0.0, 100.0), + (gain_loss_account, 0.0, total_gain_loss, 0.0, total_gain_loss), + ] + actual = [] + for acc in je.accounts: + actual.append( + ( + acc.account, + acc.debit, + acc.credit, + acc.debit_in_account_currency, + acc.credit_in_account_currency, + ) + ) + self.assertEqual(expected, actual) + + # Assert reversals are not posted + ret = err.check_journal_and_reversal() + self.assertTrue(ret.get("journals_posted")) + self.assertFalse(ret.get("reversals_posted")) + + err.make_reverse_journal() + ret = err.check_journal_and_reversal() + self.assertTrue(ret.get("journals_posted")) + self.assertTrue(ret.get("reversals_posted")) + + reverse_jv = frappe.db.get_all( + "Journal Entry", filters={"reversal_of": err_journals.get("revaluation_jv")}, pluck="name" + ) + self.assertIsNotNone(reverse_jv) + + +class TestExchangeRateRevaluationValidation(ERPNextTestSuite): + """Validation and gain/loss calculation paths, exercised on the document directly + so they don't need the multi-currency GL setup the integration tests above build.""" + + def setUp(self): + frappe.set_user("Administrator") + self.company = "_Test Company" + + def _revaluation_with_rows(self, rows, rounding_loss_allowance=0.05): + doc = frappe.new_doc("Exchange Rate Revaluation") + doc.company = self.company + doc.posting_date = today() + doc.rounding_loss_allowance = rounding_loss_allowance + for row in rows: + doc.append("accounts", row) + return doc + + def test_rounding_loss_allowance_must_be_between_0_and_1(self): + for bad in (-0.1, 1, 1.5): + doc = self._revaluation_with_rows([], rounding_loss_allowance=bad) + self.assertRaises(frappe.ValidationError, doc.validate) + # values inside [0, 1) are accepted, at the lower bound and mid-range + for good in (0.0, 0.5): + self._revaluation_with_rows([], rounding_loss_allowance=good).validate() + + def test_gain_loss_computed_and_split_by_zero_balance(self): + doc = self._revaluation_with_rows( + [ + # open (unbooked) row: base balance moved 1000 -> 1100, a 100 gain + {"zero_balance": 0, "balance_in_base_currency": 1000, "new_balance_in_base_currency": 1100}, + # already-settled (zero_balance) row carries a booked loss of 40 + {"zero_balance": 1, "gain_loss": -40}, + ] + ) + doc.validate() + + # gain_loss is derived only for open rows; the zero-balance row keeps its value + self.assertEqual(doc.accounts[0].gain_loss, 100) + self.assertEqual(doc.gain_loss_unbooked, 100) + self.assertEqual(doc.gain_loss_booked, -40) + self.assertEqual(doc.total_gain_loss, 60) + + def test_before_submit_drops_rows_without_gain_loss(self): + doc = self._revaluation_with_rows( + [ + {"zero_balance": 0, "balance_in_base_currency": 1000, "new_balance_in_base_currency": 1100}, + {"zero_balance": 0, "balance_in_base_currency": 500, "new_balance_in_base_currency": 500}, + ] + ) + doc.validate() # second row nets to a 0 gain_loss + doc.remove_accounts_without_gain_loss() + self.assertEqual(len(doc.accounts), 1) + self.assertEqual(doc.accounts[0].gain_loss, 100) + + def test_before_submit_requires_at_least_one_gain_loss_row(self): + doc = self._revaluation_with_rows( + [{"zero_balance": 0, "balance_in_base_currency": 500, "new_balance_in_base_currency": 500}] + ) + doc.validate() + self.assertRaises(frappe.ValidationError, doc.remove_accounts_without_gain_loss) +>>>>>>> 65775e59a1 (refactor(test): for reverse journals as well) From 20255a8a7fc59ff532698b833ed365fe4cc116f2 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 10 Jul 2026 06:38:02 +0000 Subject: [PATCH 72/91] fix: partial delivery note against pick list (backport #56985) (#57006) * fix: partial delivery note against pick list (#56985) (cherry picked from commit 53af4d53ef1e3013bc2aa5453e7fd346cf3fa712) # Conflicts: # erpnext/stock/doctype/pick_list/test_pick_list.py * chore: fix conflicts Refactor tests for pick list to improve clarity and organization. --------- Co-authored-by: rohitwaghchaure --- erpnext/stock/doctype/pick_list/pick_list.py | 3 ++ .../stock/doctype/pick_list/test_pick_list.py | 39 +++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/erpnext/stock/doctype/pick_list/pick_list.py b/erpnext/stock/doctype/pick_list/pick_list.py index cc75ef28ae2..4cbef22c241 100644 --- a/erpnext/stock/doctype/pick_list/pick_list.py +++ b/erpnext/stock/doctype/pick_list/pick_list.py @@ -1511,6 +1511,9 @@ def map_pl_locations(pick_list, item_mapper, target_doc, sales_order=None): if location.sales_order != sales_order or location.product_bundle_item: continue + if flt(location.picked_qty) - flt(location.delivered_qty) <= 0: + continue + if location.sales_order_item: sales_order_item = frappe.get_doc("Sales Order Item", location.sales_order_item) else: diff --git a/erpnext/stock/doctype/pick_list/test_pick_list.py b/erpnext/stock/doctype/pick_list/test_pick_list.py index 5819f75df43..e551b246ca7 100644 --- a/erpnext/stock/doctype/pick_list/test_pick_list.py +++ b/erpnext/stock/doctype/pick_list/test_pick_list.py @@ -1280,6 +1280,45 @@ class TestPickList(ERPNextTestSuite): self.assertEqual(pick_list.locations[0].transferred_qty, 4) self.assertEqual(pick_list.status, "Partially Transferred") + def test_create_second_delivery_note_with_fully_delivered_location(self): + # When one pick list item is fully delivered by the first Delivery Note + # and another item is still pending, creating a second Delivery Note from + # the Pick List must not create a zero-qty row for the delivered item. + warehouse = "_Test Warehouse - _TC" + item_a = make_item(properties={"is_stock_item": 1}).name + item_b = make_item(properties={"is_stock_item": 1}).name + make_stock_entry(item=item_a, to_warehouse=warehouse, qty=20) + make_stock_entry(item=item_b, to_warehouse=warehouse, qty=20) + + so = make_sales_order( + item_list=[ + {"item_code": item_a, "warehouse": warehouse, "qty": 10, "rate": 100}, + {"item_code": item_b, "warehouse": warehouse, "qty": 5, "rate": 100}, + ] + ) + + pl = create_pick_list(so.name) + pl.save().submit() + + # First Delivery Note: fully deliver item_a, drop item_b. + dn1 = create_delivery_note(pl.name) + for row in list(dn1.items): + if row.item_code == item_b: + dn1.remove(row) + dn1.save().submit() + + pl.reload() + delivered = {loc.item_code: loc.delivered_qty for loc in pl.locations} + self.assertEqual(delivered[item_a], 10) + self.assertEqual(delivered[item_b], 0) + + # Second Delivery Note for the remaining item must succeed and must not + # include a zero-qty row for the already delivered item_a. + dn2 = create_delivery_note(pl.name) + self.assertEqual(len(dn2.items), 1) + self.assertEqual(dn2.items[0].item_code, item_b) + self.assertEqual(dn2.items[0].qty, 5) + def test_pick_list_validation(self): warehouse = "_Test Warehouse - _TC" item = make_item("Test Non Serialized Pick List Item", properties={"is_stock_item": 1}).name From b8199d88b6e949a9051117425579111e55dfa1c1 Mon Sep 17 00:00:00 2001 From: pandiyan Date: Fri, 10 Jul 2026 12:16:45 +0530 Subject: [PATCH 73/91] fix: make trend report based-on and group-by column labels translatable based_wise_columns_query() and group_wise_column() built column labels as raw strings, so headers like Item, Item Name, Customer, Supplier, and Territory never went through the _() translation function and stayed in English regardless of the user's language, while period and total columns translated fine. Build these as column dicts with an explicit _()-wrapped label instead, so they're translated the same way as the rest of the report. (cherry picked from commit 015fa68fc04ff198d63cf549b6cd2be316d23134) --- erpnext/controllers/trends.py | 143 +++++++++++++++++++++++++++++----- 1 file changed, 125 insertions(+), 18 deletions(-) diff --git a/erpnext/controllers/trends.py b/erpnext/controllers/trends.py index f8e152f5299..28ff84c83fd 100644 --- a/erpnext/controllers/trends.py +++ b/erpnext/controllers/trends.py @@ -361,13 +361,24 @@ def based_wise_columns_query(based_on, trans): # based_on_cols, based_on_select, based_on_group_by, addl_tables if based_on == "Item": - based_on_details["based_on_cols"] = ["Item:Link/Item:120", "Item Name:Data:120"] + based_on_details["based_on_cols"] = [ + {"label": _("Item"), "fieldtype": "Link", "options": "Item", "width": 120, "fieldname": "item"}, + {"label": _("Item Name"), "fieldtype": "Data", "width": 120, "fieldname": "item_name"}, + ] based_on_details["based_on_select"] = "t2.item_code, t2.item_name," based_on_details["based_on_group_by"] = "t2.item_code" based_on_details["addl_tables"] = "" elif based_on == "Item Group": - based_on_details["based_on_cols"] = ["Item Group:Link/Item Group:120"] + based_on_details["based_on_cols"] = [ + { + "label": _("Item Group"), + "fieldtype": "Link", + "options": "Item Group", + "width": 120, + "fieldname": "item_group", + } + ] based_on_details["based_on_select"] = "t2.item_group," based_on_details["based_on_group_by"] = "t2.item_group" based_on_details["addl_tables"] = "" @@ -375,32 +386,80 @@ def based_wise_columns_query(based_on, trans): elif based_on == "Customer": if trans == "Quotation": based_on_details["based_on_cols"] = [ - "Party:Link/Customer:120", - "Party Name:Data:120", - "Territory:Link/Territory:120", + { + "label": _("Party"), + "fieldtype": "Link", + "options": "Customer", + "width": 120, + "fieldname": "party", + }, + {"label": _("Party Name"), "fieldtype": "Data", "width": 120, "fieldname": "party_name"}, + { + "label": _("Territory"), + "fieldtype": "Link", + "options": "Territory", + "width": 120, + "fieldname": "territory", + }, ] based_on_details["based_on_select"] = "t1.party_name, t1.customer_name, t1.territory," else: based_on_details["based_on_cols"] = [ - "Customer:Link/Customer:120", - "Customer Name:Data:120", - "Territory:Link/Territory:120", + { + "label": _("Customer"), + "fieldtype": "Link", + "options": "Customer", + "width": 120, + "fieldname": "customer", + }, + { + "label": _("Customer Name"), + "fieldtype": "Data", + "width": 120, + "fieldname": "customer_name", + }, + { + "label": _("Territory"), + "fieldtype": "Link", + "options": "Territory", + "width": 120, + "fieldname": "territory", + }, ] based_on_details["based_on_select"] = "t1.customer, t1.customer_name, t1.territory," based_on_details["based_on_group_by"] = "t1.party_name" if trans == "Quotation" else "t1.customer" based_on_details["addl_tables"] = "" elif based_on == "Customer Group": - based_on_details["based_on_cols"] = ["Customer Group:Link/Customer Group"] + based_on_details["based_on_cols"] = [ + { + "label": _("Customer Group"), + "fieldtype": "Link", + "options": "Customer Group", + "fieldname": "customer_group", + } + ] based_on_details["based_on_select"] = "t1.customer_group," based_on_details["based_on_group_by"] = "t1.customer_group" based_on_details["addl_tables"] = "" elif based_on == "Supplier": based_on_details["based_on_cols"] = [ - "Supplier:Link/Supplier:120", - "Supplier Name:Data:120", - "Supplier Group:Link/Supplier Group:140", + { + "label": _("Supplier"), + "fieldtype": "Link", + "options": "Supplier", + "width": 120, + "fieldname": "supplier", + }, + {"label": _("Supplier Name"), "fieldtype": "Data", "width": 120, "fieldname": "supplier_name"}, + { + "label": _("Supplier Group"), + "fieldtype": "Link", + "options": "Supplier Group", + "width": 140, + "fieldname": "supplier_group", + }, ] based_on_details["based_on_select"] = "t1.supplier, t1.supplier_name, t3.supplier_group," based_on_details["based_on_group_by"] = "t1.supplier" @@ -408,26 +467,58 @@ def based_wise_columns_query(based_on, trans): based_on_details["addl_tables_relational_cond"] = " and t1.supplier = t3.name" elif based_on == "Supplier Group": - based_on_details["based_on_cols"] = ["Supplier Group:Link/Supplier Group:140"] + based_on_details["based_on_cols"] = [ + { + "label": _("Supplier Group"), + "fieldtype": "Link", + "options": "Supplier Group", + "width": 140, + "fieldname": "supplier_group", + } + ] based_on_details["based_on_select"] = "t3.supplier_group," based_on_details["based_on_group_by"] = "t3.supplier_group" based_on_details["addl_tables"] = ",`tabSupplier` t3" based_on_details["addl_tables_relational_cond"] = " and t1.supplier = t3.name" elif based_on == "Territory": - based_on_details["based_on_cols"] = ["Territory:Link/Territory:120"] + based_on_details["based_on_cols"] = [ + { + "label": _("Territory"), + "fieldtype": "Link", + "options": "Territory", + "width": 120, + "fieldname": "territory", + } + ] based_on_details["based_on_select"] = "t1.territory," based_on_details["based_on_group_by"] = "t1.territory" based_on_details["addl_tables"] = "" elif based_on == "Project": if trans in ["Sales Invoice", "Delivery Note", "Sales Order"]: - based_on_details["based_on_cols"] = ["Project:Link/Project:120"] + based_on_details["based_on_cols"] = [ + { + "label": _("Project"), + "fieldtype": "Link", + "options": "Project", + "width": 120, + "fieldname": "project", + } + ] based_on_details["based_on_select"] = "t1.project," based_on_details["based_on_group_by"] = "t1.project" based_on_details["addl_tables"] = "" elif trans in ["Purchase Order", "Purchase Invoice", "Purchase Receipt"]: - based_on_details["based_on_cols"] = ["Project:Link/Project:120"] + based_on_details["based_on_cols"] = [ + { + "label": _("Project"), + "fieldtype": "Link", + "options": "Project", + "width": 120, + "fieldname": "project", + } + ] based_on_details["based_on_select"] = "t2.project," based_on_details["based_on_group_by"] = "t2.project" based_on_details["addl_tables"] = "" @@ -435,7 +526,15 @@ def based_wise_columns_query(based_on, trans): frappe.throw(_("Project-wise data is not available for Quotation")) based_on_details["based_on_select"] += "t4.default_currency as currency," - based_on_details["based_on_cols"].append("Currency:Link/Currency:120") + based_on_details["based_on_cols"].append( + { + "label": _("Currency"), + "fieldtype": "Link", + "options": "Currency", + "width": 120, + "fieldname": "currency", + } + ) based_on_details["addl_tables"] += ", `tabCompany` t4" based_on_details["addl_tables_relational_cond"] = ( based_on_details.get("addl_tables_relational_cond", "") + " and t1.company = t4.name" @@ -446,6 +545,14 @@ def based_wise_columns_query(based_on, trans): def group_wise_column(group_by): if group_by: - return [group_by + ":Link/" + group_by + ":120"] + return [ + { + "label": _(group_by), + "fieldtype": "Link", + "options": group_by, + "width": 120, + "fieldname": frappe.scrub(group_by), + } + ] else: return [] From bdba4c8091aba098272ce50a03e211c2adea05ea Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 10 Jul 2026 15:36:34 +0530 Subject: [PATCH 74/91] fix: display outstanding amount using company default currency (backport #56785) (#57009) Co-authored-by: Vishnu Priya Baskaran <145791817+ervishnucs@users.noreply.github.com> Co-authored-by: S Sakthivel Murugan --- .../opening_invoice_creation_tool_item.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/erpnext/accounts/doctype/opening_invoice_creation_tool_item/opening_invoice_creation_tool_item.json b/erpnext/accounts/doctype/opening_invoice_creation_tool_item/opening_invoice_creation_tool_item.json index 6448d725de9..7389d0687b6 100644 --- a/erpnext/accounts/doctype/opening_invoice_creation_tool_item/opening_invoice_creation_tool_item.json +++ b/erpnext/accounts/doctype/opening_invoice_creation_tool_item/opening_invoice_creation_tool_item.json @@ -82,6 +82,7 @@ "fieldtype": "Currency", "in_list_view": 1, "label": "Outstanding Amount", + "options": "Company:company:default_currency", "reqd": 1 }, { @@ -136,7 +137,7 @@ ], "istable": 1, "links": [], - "modified": "2026-04-29 17:08:15.617047", + "modified": "2026-07-02 15:17:11.938499", "modified_by": "Administrator", "module": "Accounts", "name": "Opening Invoice Creation Tool Item", From 67c85ef0af6ab53242450240415a25f37abd308a Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Fri, 10 Jul 2026 11:43:01 +0000 Subject: [PATCH 75/91] fix: fetch payment entry reference amounts from invoice (backport #56928) (#57042) Co-authored-by: Vishnu Priya Baskaran <145791817+ervishnucs@users.noreply.github.com> --- .../doctype/payment_request/payment_request.py | 1 + .../payment_request/test_payment_request.py | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/erpnext/accounts/doctype/payment_request/payment_request.py b/erpnext/accounts/doctype/payment_request/payment_request.py index e0a88f30ce2..4e12deb5097 100644 --- a/erpnext/accounts/doctype/payment_request/payment_request.py +++ b/erpnext/accounts/doctype/payment_request/payment_request.py @@ -379,6 +379,7 @@ class PaymentRequest(Document): bank_amount=bank_amount, created_from_payment_request=True, ) + payment_entry.set_missing_ref_details(force=True) payment_entry.update( { diff --git a/erpnext/accounts/doctype/payment_request/test_payment_request.py b/erpnext/accounts/doctype/payment_request/test_payment_request.py index c2eef5412e5..47b8043c78c 100644 --- a/erpnext/accounts/doctype/payment_request/test_payment_request.py +++ b/erpnext/accounts/doctype/payment_request/test_payment_request.py @@ -775,6 +775,22 @@ class TestPaymentRequest(ERPNextTestSuite): pi.load_from_db() self.assertEqual(pr_2.grand_total, pi.outstanding_amount) + def test_payment_entry_reference_details_fetched_from_invoice(self): + pi = make_purchase_invoice(currency="INR", qty=1, rate=94500) + pi.submit() + + pr = make_payment_request(dt="Purchase Invoice", dn=pi.name, mute_email=1, submit_doc=0, return_doc=1) + pr.grand_total = 94000 + pr.submit() + + pe = pr.create_payment_entry(submit=False) + + self.assertEqual(pe.references[0].reference_name, pi.name) + self.assertEqual(pe.references[0].total_amount, pi.grand_total) + self.assertEqual(pe.references[0].outstanding_amount, pi.outstanding_amount) + self.assertEqual(pe.references[0].allocated_amount, 94000) + self.assertEqual(pe.paid_amount, 94000) + def test_consider_journal_entry_and_return_invoice(self): from erpnext.accounts.doctype.journal_entry.test_journal_entry import make_journal_entry From 755b9ccbc3cf9f50fd4d1c2488163ce4e167abd0 Mon Sep 17 00:00:00 2001 From: Mihir Kandoi Date: Fri, 10 Jul 2026 17:46:57 +0530 Subject: [PATCH 76/91] fix(stock): link job card in stock entry created from pick list (backport #57031) A Stock Entry created from a Pick List against a job card's Material Request never set job_card, job_card_item, fg_completed_qty or the 'Material Transfer for Manufacture' purpose, so the Job Card did not recognize the transfer and blocked submission. The WIP warehouse was also not populated. Route such pick lists through a job-card-aware branch mirroring the direct Material Request -> Stock Entry mapper, and set the purpose to 'Material Transfer for Manufacture' in the work order branch so the WO -> MR -> Pick List flow updates the work order too. --- .../doctype/job_card/test_job_card.py | 42 +++++++++++++ erpnext/stock/doctype/pick_list/pick_list.py | 59 ++++++++++++++++++- 2 files changed, 99 insertions(+), 2 deletions(-) diff --git a/erpnext/manufacturing/doctype/job_card/test_job_card.py b/erpnext/manufacturing/doctype/job_card/test_job_card.py index 3f75c24a4bb..8551d5e04ff 100644 --- a/erpnext/manufacturing/doctype/job_card/test_job_card.py +++ b/erpnext/manufacturing/doctype/job_card/test_job_card.py @@ -662,6 +662,48 @@ class TestJobCard(ERPNextTestSuite): self.assertEqual(ste.from_bom, 1.0) self.assertEqual(ste.bom_no, work_order.bom_no) + def test_job_card_material_transfer_via_pick_list(self): + from erpnext.stock.doctype.material_request.material_request import create_pick_list + from erpnext.stock.doctype.pick_list.pick_list import ( + create_stock_entry as create_stock_entry_from_pick_list, + ) + + create_bom_with_multiple_operations() + work_order = make_wo_with_transfer_against_jc() + + for item in work_order.required_items: + make_stock_entry( + item_code=item.item_code, + target=item.source_warehouse, + qty=item.required_qty * 2, + basic_rate=100, + ) + + job_card_name = frappe.db.get_value("Job Card", {"work_order": work_order.name}, "name") + job_card = frappe.get_doc("Job Card", job_card_name) + + mr = make_material_request(job_card_name) + mr.schedule_date = today() + mr.submit() + + pick_list = create_pick_list(mr.name) + pick_list.submit() + + ste = frappe.get_doc(create_stock_entry_from_pick_list(pick_list.as_dict())) + self.assertEqual(ste.purpose, "Material Transfer for Manufacture") + self.assertEqual(ste.job_card, job_card_name) + self.assertEqual(ste.work_order, work_order.name) + self.assertEqual(ste.fg_completed_qty, job_card.for_quantity) + for row in ste.items: + self.assertEqual(row.t_warehouse, job_card.wip_warehouse) + self.assertTrue(row.job_card_item) + + ste.insert() + ste.submit() + + job_card.reload() + self.assertEqual(job_card.transferred_qty, job_card.for_quantity) + def test_job_card_proccess_qty_and_completed_qty(self): from erpnext.manufacturing.doctype.routing.test_routing import ( create_routing, diff --git a/erpnext/stock/doctype/pick_list/pick_list.py b/erpnext/stock/doctype/pick_list/pick_list.py index 4cbef22c241..8b7c6bdf320 100644 --- a/erpnext/stock/doctype/pick_list/pick_list.py +++ b/erpnext/stock/doctype/pick_list/pick_list.py @@ -1585,15 +1585,22 @@ def create_stock_entry(pick_list: str | dict): stock_entry.pick_list = pick_list.get("name") stock_entry.purpose = pick_list.get("purpose") stock_entry.company = pick_list.get("company") - stock_entry.set_stock_entry_type() - if pick_list.get("work_order"): + job_card = pick_list.get("material_request") and frappe.db.get_value( + "Material Request", pick_list.get("material_request"), "job_card" + ) + + if job_card: + stock_entry = update_stock_entry_based_on_job_card(pick_list, stock_entry, job_card) + elif pick_list.get("work_order"): stock_entry = update_stock_entry_based_on_work_order(pick_list, stock_entry) elif pick_list.get("material_request"): stock_entry = update_stock_entry_based_on_material_request(pick_list, stock_entry) else: stock_entry = update_stock_entry_items_with_no_reference(pick_list, stock_entry) + stock_entry.set_stock_entry_type() + if not stock_entry.get("items"): return frappe.msgprint(_("All picked items have already been transferred against this Pick List")) @@ -1684,9 +1691,57 @@ def stock_entry_exists(pick_list_name): return frappe.db.exists("Stock Entry", {"pick_list": pick_list_name}) +def update_stock_entry_based_on_job_card(pick_list, stock_entry, job_card): + job_card = frappe.db.get_value( + "Job Card", + job_card, + ["name", "work_order", "bom_no", "semi_fg_bom", "for_quantity", "transferred_qty", "wip_warehouse"], + as_dict=True, + ) + + stock_entry.purpose = "Material Transfer for Manufacture" + stock_entry.job_card = job_card.name + stock_entry.work_order = job_card.work_order + stock_entry.from_bom = 1 + stock_entry.bom_no = job_card.semi_fg_bom or job_card.bom_no + stock_entry.fg_completed_qty = max(flt(job_card.for_quantity) - flt(job_card.transferred_qty), 0) + stock_entry.to_warehouse = job_card.wip_warehouse + + job_card_items = get_job_card_items_by_material_request_item(pick_list) + + for location in pick_list.locations: + if get_pending_transfer_stock_qty(location) <= 0: + continue + item = frappe._dict() + update_common_item_properties(item, location) + item.t_warehouse = job_card.wip_warehouse + item.job_card_item = job_card_items.get(location.material_request_item) + stock_entry.append("items", item) + + return stock_entry + + +def get_job_card_items_by_material_request_item(pick_list): + material_request_items = [ + location.material_request_item for location in pick_list.locations if location.material_request_item + ] + if not material_request_items: + return {} + + return dict( + frappe.get_all( + "Material Request Item", + filters={"name": ["in", material_request_items]}, + fields=["name", "job_card_item"], + as_list=True, + ) + ) + + def update_stock_entry_based_on_work_order(pick_list, stock_entry): work_order = frappe.get_doc("Work Order", pick_list.get("work_order")) + stock_entry.purpose = "Material Transfer for Manufacture" stock_entry.work_order = work_order.name stock_entry.company = work_order.company stock_entry.from_bom = 1 From 8eb92b8b182399466332a6d474195ef52f9691c7 Mon Sep 17 00:00:00 2001 From: Vishnu Priya Baskaran <145791817+ervishnucs@users.noreply.github.com> Date: Sat, 11 Jul 2026 15:04:44 +0530 Subject: [PATCH 77/91] =?UTF-8?q?fix(payment=20reconciliation):=20honour?= =?UTF-8?q?=20user=20permissions=20on=20accounting=20di=E2=80=A6=20(#56560?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../payment_reconciliation.py | 50 ++++++++-- .../test_payment_reconciliation.py | 97 ++++++++++++++++++- erpnext/controllers/accounts_controller.py | 14 ++- 3 files changed, 152 insertions(+), 9 deletions(-) diff --git a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py index 1b641c1f59f..946a12d9dc9 100644 --- a/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py +++ b/erpnext/accounts/doctype/payment_reconciliation/payment_reconciliation.py @@ -6,8 +6,10 @@ import frappe from frappe import _, msgprint, qb from frappe.model.document import Document from frappe.model.meta import get_field_precision +from frappe.permissions import get_allowed_docs_for_doctype, get_user_permissions from frappe.query_builder import Case, Criterion from frappe.query_builder.custom import ConstantColumn +from frappe.query_builder.functions import IfNull from frappe.utils import flt, fmt_money, get_link_to_form, getdate, nowdate, today import erpnext @@ -74,6 +76,10 @@ class PaymentReconciliation(Document): self.ple_posting_date_filter = [] self.dimensions = get_dimensions(with_cost_center_and_project=True)[0] + @property + def user_permissions(self): + return get_user_permissions(frappe.session.user) + def load_from_db(self): # 'modified' attribute is required for `run_doc_method` to work properly. doc_dict = frappe._dict( @@ -153,6 +159,22 @@ class PaymentReconciliation(Document): self.add_payment_entries(non_reconciled_payments) + def get_permitted_dimension_values(self, document_type, reference_doctype): + return get_allowed_docs_for_doctype(self.user_permissions.get(document_type, []), reference_doctype) + + def validate_permitted_dimension_value(self, document_type, value, allowed): + if value and allowed and value not in allowed: + frappe.throw( + _("You do not have enough permission to access {0}: {1}").format(_(document_type), value), + frappe.PermissionError, + ) + + def get_user_permission_dimension_condition(self, field, allowed): + value_condition = field.isin(allowed) + if frappe.get_system_settings("apply_strict_user_permissions"): + return value_condition + return (IfNull(field, "") == "") | value_condition + def get_payment_entries(self): party_account = [self.receivable_payable_account] @@ -176,8 +198,13 @@ class PaymentReconciliation(Document): dimensions = {} for x in self.dimensions: dimension = x.fieldname - if self.get(dimension): - dimensions.update({dimension: self.get(dimension)}) + allowed = self.get_permitted_dimension_values(x.document_type, "Payment Entry") + if value := self.get(dimension): + self.validate_permitted_dimension_value(x.document_type, value, allowed) + dimensions[dimension] = value + elif allowed: + dimensions[dimension] = allowed + condition.update({"accounting_dimensions": dimensions}) payment_entries = get_advance_payment_entries_for_regional( @@ -201,8 +228,12 @@ class PaymentReconciliation(Document): # Dimension filters for x in self.dimensions: dimension = x.fieldname - if self.get(dimension): - conditions.append(jea[dimension] == self.get(dimension)) + allowed = self.get_permitted_dimension_values(x.document_type, "Journal Entry Account") + if value := self.get(dimension): + self.validate_permitted_dimension_value(x.document_type, value, allowed) + conditions.append(jea[dimension] == value) + elif allowed: + conditions.append(self.get_user_permission_dimension_condition(jea[dimension], allowed)) if self.payment_name: conditions.append(je.name.like(f"%%{self.payment_name}%%")) @@ -746,8 +777,15 @@ class PaymentReconciliation(Document): ple = qb.DocType("Payment Ledger Entry") for x in self.dimensions: dimension = x.fieldname - if self.get(dimension) and frappe.db.has_column("Payment Ledger Entry", dimension): - self.accounting_dimension_filter_conditions.append(ple[dimension] == self.get(dimension)) + if frappe.db.has_column("Payment Ledger Entry", dimension): + allowed = self.get_permitted_dimension_values(x.document_type, "Payment Ledger Entry") + if value := self.get(dimension): + self.validate_permitted_dimension_value(x.document_type, value, allowed) + self.accounting_dimension_filter_conditions.append(ple[dimension] == value) + elif allowed: + self.accounting_dimension_filter_conditions.append( + self.get_user_permission_dimension_condition(ple[dimension], allowed) + ) def build_qb_filter_conditions(self, get_invoices=False, get_return_invoices=False): self.common_filter_conditions.clear() diff --git a/erpnext/accounts/doctype/payment_reconciliation/test_payment_reconciliation.py b/erpnext/accounts/doctype/payment_reconciliation/test_payment_reconciliation.py index f842cc879fa..42eed6219c2 100644 --- a/erpnext/accounts/doctype/payment_reconciliation/test_payment_reconciliation.py +++ b/erpnext/accounts/doctype/payment_reconciliation/test_payment_reconciliation.py @@ -4,7 +4,7 @@ import frappe from frappe import qb -from frappe.utils import add_days, add_years, flt, getdate, nowdate, today +from frappe.utils import add_days, add_years, cint, flt, getdate, nowdate, today from frappe.utils.data import getdate as convert_to_date from erpnext import get_default_cost_center @@ -1106,6 +1106,101 @@ class TestPaymentReconciliation(ERPNextTestSuite): payment_vouchers = [x.get("reference_name") for x in pr.get("payments")] self.assertCountEqual(payment_vouchers, [je2.name, pe2.name]) + def test_user_permission_on_accounting_dimension_filters_vouchers(self): + test_user = "test@example.com" + permitted_ccs = ["_Test Cost Center - _TC", "_Test Cost Center 2 - _TC"] + restricted_cc = "_Test Write Off Cost Center - _TC" + existing_apply_strict_user_permissions = cint( + frappe.db.get_single_value("System Settings", "apply_strict_user_permissions") + ) + self.addCleanup( + frappe.db.set_single_value, + "System Settings", + "apply_strict_user_permissions", + existing_apply_strict_user_permissions, + ) + transaction_date = nowdate() + rate = 100 + + def make_invoice(cost_center): + si = self.create_sales_invoice( + qty=1, rate=rate, posting_date=transaction_date, do_not_submit=True + ) + si.cost_center = cost_center + for row in si.items: + row.cost_center = cost_center + return si.submit() + + def make_payment(cost_center): + pe = self.create_payment_entry(posting_date=transaction_date, amount=rate) + pe.cost_center = cost_center + return pe.save().submit() + + def make_journal(cost_center): + je = self.create_journal_entry( + self.bank, self.debit_to, 100, transaction_date, cost_center=cost_center + ) + je.accounts[1].party_type = "Customer" + je.accounts[1].party = self.customer + return je.save().submit() + + # Vouchers tagged with the two permitted cost centers + si_allowed = make_invoice(permitted_ccs[0]) + pe_allowed = make_payment(permitted_ccs[1]) + je_allowed = make_journal(permitted_ccs[0]) + + # Vouchers tagged with the restricted cost center + si_restricted = make_invoice(restricted_cc) + pe_restricted = make_payment(restricted_cc) + je_restricted = make_journal(restricted_cc) + + # Payment entry with a BLANK cost center + pe_blank = make_payment(None) + + for cc in permitted_ccs: + frappe.permissions.add_user_permission("Cost Center", cc, test_user) + + # Without strict user permissions + frappe.db.set_single_value("System Settings", "apply_strict_user_permissions", 0) + with self.set_user(test_user): + pr = self.create_payment_reconciliation() + pr.get_unreconciled_entries() + + invoice_numbers = [x.get("invoice_number") for x in pr.get("invoices")] + payment_vouchers = [x.get("reference_name") for x in pr.get("payments")] + self.assertIn(si_allowed.name, invoice_numbers) + self.assertIn(pe_allowed.name, payment_vouchers) + self.assertIn(je_allowed.name, payment_vouchers) + self.assertIn(pe_blank.name, payment_vouchers) + self.assertNotIn(si_restricted.name, invoice_numbers) + self.assertNotIn(pe_restricted.name, payment_vouchers) + self.assertNotIn(je_restricted.name, payment_vouchers) + + # With strict user permissions + frappe.db.set_single_value("System Settings", "apply_strict_user_permissions", 1) + with self.set_user(test_user): + pr = self.create_payment_reconciliation() + pr.get_unreconciled_entries() + + invoice_numbers = [x.get("invoice_number") for x in pr.get("invoices")] + payment_vouchers = [x.get("reference_name") for x in pr.get("payments")] + self.assertIn(si_allowed.name, invoice_numbers) + self.assertIn(pe_allowed.name, payment_vouchers) + self.assertIn(je_allowed.name, payment_vouchers) + self.assertNotIn(pe_blank.name, payment_vouchers) + self.assertNotIn(si_restricted.name, invoice_numbers) + self.assertNotIn(pe_restricted.name, payment_vouchers) + self.assertNotIn(je_restricted.name, payment_vouchers) + + # with restricted dimension as a filter + with self.set_user(test_user): + pr = self.create_payment_reconciliation() + pr.cost_center = restricted_cc + self.assertRaises(frappe.PermissionError, pr.get_unreconciled_entries) + + for cc in permitted_ccs: + frappe.permissions.remove_user_permission("Cost Center", cc, test_user) + @ERPNextTestSuite.change_settings( "Accounts Settings", { diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index 3e0b439d167..e6744aa64a8 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -11,7 +11,7 @@ from frappe.contacts.doctype.address.address import get_address_display from frappe.model.workflow import get_workflow_name from frappe.query_builder import Criterion, DocType from frappe.query_builder.custom import ConstantColumn -from frappe.query_builder.functions import Abs, Sum +from frappe.query_builder.functions import Abs, IfNull, Sum from frappe.utils import ( add_days, add_months, @@ -3511,8 +3511,18 @@ def get_common_query( common_filter_conditions.append(payment_entry.cost_center == condition["cost_center"]) if condition.get("accounting_dimensions"): + apply_strict_user_permissions = frappe.get_system_settings("apply_strict_user_permissions") for field, val in condition.get("accounting_dimensions").items(): - common_filter_conditions.append(payment_entry[field] == val) + if isinstance(val, list | tuple | set): + value_condition = payment_entry[field].isin(val) + if apply_strict_user_permissions: + common_filter_conditions.append(value_condition) + else: + common_filter_conditions.append( + (IfNull(payment_entry[field], "") == "") | value_condition + ) + else: + common_filter_conditions.append(payment_entry[field] == val) if condition.get("minimum_payment_amount"): common_filter_conditions.append( From 240fb2c4b8200ab8bee7b0c112c0d36185e41a1e Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sat, 11 Jul 2026 15:26:36 +0530 Subject: [PATCH 78/91] fix: map stock_qty in apply_price_list_on_item (backport #56869) (#57052) Co-authored-by: Vishnu Priya Baskaran <145791817+ervishnucs@users.noreply.github.com> --- erpnext/stock/get_item_details.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py index f6bdd1fc67e..05c61bbb4d5 100644 --- a/erpnext/stock/get_item_details.py +++ b/erpnext/stock/get_item_details.py @@ -1615,6 +1615,12 @@ def apply_price_list(ctx, as_doc=False, doc=None): def apply_price_list_on_item(ctx, doc=None): item_doc = frappe.get_cached_doc("Item", ctx.item_code) item_details = get_price_list_rate(ctx, item_doc) + + ctx.conversion_factor = flt(ctx.conversion_factor) or get_conversion_factor(ctx.item_code, ctx.uom).get( + "conversion_factor", 1 + ) + ctx.stock_qty = flt(ctx.qty) * flt(ctx.conversion_factor) + item_details.update(get_pricing_rule_for_item(ctx, doc=doc)) return item_details From 24f0989ac1f6d3054643d6377e8c126ee8ca0cf7 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sat, 11 Jul 2026 15:28:23 +0530 Subject: [PATCH 79/91] fix: correct filter handling in Sales Person-wise Transaction Summary + tests (backport #56783) (#56908) Co-authored-by: Nabin Hait --- .../sales_person_wise_transaction_summary.py | 67 +++++++++--------- ...t_sales_person_wise_transaction_summary.py | 69 +++++++++++++++++++ 2 files changed, 100 insertions(+), 36 deletions(-) create mode 100644 erpnext/selling/report/sales_person_wise_transaction_summary/test_sales_person_wise_transaction_summary.py diff --git a/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py b/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py index 23ed83cca84..bc3bce3da4a 100644 --- a/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py +++ b/erpnext/selling/report/sales_person_wise_transaction_summary/sales_person_wise_transaction_summary.py @@ -183,8 +183,22 @@ def get_entries(filters): .as_("contribution_amt") ) + # Only pass valid document-field filters to get_query; report-specific keys such as + # doc_type / sales_person / item_group are handled separately below. + doc_filters = {"docstatus": 1} + for field in ["company", "customer", "territory"]: + if filters.get(field): + doc_filters[field] = filters.get(field) + + if filters.get("from_date") and filters.get("to_date"): + doc_filters[date_field] = ["between", [filters.get("from_date"), filters.get("to_date")]] + elif filters.get("from_date"): + doc_filters[date_field] = [">=", filters.get("from_date")] + elif filters.get("to_date"): + doc_filters[date_field] = ["<=", filters.get("to_date")] + query = ( - frappe.get_query(dt, filters=filters, ignore_permissions=False) + frappe.get_query(dt, filters=doc_filters, ignore_permissions=False) .join(dt_item) .on(dt.name == dt_item.parent) .join(st) @@ -203,48 +217,29 @@ def get_entries(filters): contribution_amt_case, ) .where(st.parenttype == doc_type) - .where(dt.docstatus == 1) ) + if filters.get("sales_person"): + lft, rgt = frappe.db.get_value("Sales Person", filters.get("sales_person"), ["lft", "rgt"]) + sp = frappe.qb.DocType("Sales Person") + query = query.where( + st.sales_person.isin(frappe.qb.from_(sp).select(sp.name).where((sp.lft >= lft) & (sp.rgt <= rgt))) + ) + + # only resolve items when an item_group/brand filter is set; otherwise get_items + # would return every item in the system and add a huge IN() clause on each run + if filters.get("item_group") or filters.get("brand"): + items = get_items(filters) + if not items: + # the item_group/brand filter matched nothing -> no rows + return [] + query = query.where(dt_item.item_code.isin([d[0] for d in items])) + query = query.orderby(st.sales_person).orderby(dt.name, order=frappe.qb.desc) return query.run(as_dict=True) -def get_conditions(filters, date_field): - conditions = [""] - values = [] - - for field in ["company", "customer", "territory"]: - if filters.get(field): - conditions.append(f"dt.{field}=%s") - values.append(filters[field]) - - if filters.get("sales_person"): - lft, rgt = frappe.get_value("Sales Person", filters.get("sales_person"), ["lft", "rgt"]) - conditions.append( - f"exists(select name from `tabSales Person` where lft >= {lft} and rgt <= {rgt} and name=st.sales_person)" - ) - - if filters.get("from_date"): - conditions.append(f"dt.{date_field}>=%s") - values.append(filters["from_date"]) - - if filters.get("to_date"): - conditions.append(f"dt.{date_field}<=%s") - values.append(filters["to_date"]) - - items = get_items(filters) - if items: - conditions.append("dt_item.item_code in (%s)" % ", ".join(["%s"] * len(items))) - values += items - else: - # return empty result, if no items are fetched after filtering on 'item group' and 'brand' - conditions.append("dt_item.item_code = Null") - - return " and ".join(conditions), values - - def get_items(filters): item = qb.DocType("Item") diff --git a/erpnext/selling/report/sales_person_wise_transaction_summary/test_sales_person_wise_transaction_summary.py b/erpnext/selling/report/sales_person_wise_transaction_summary/test_sales_person_wise_transaction_summary.py new file mode 100644 index 00000000000..2dbe8fee822 --- /dev/null +++ b/erpnext/selling/report/sales_person_wise_transaction_summary/test_sales_person_wise_transaction_summary.py @@ -0,0 +1,69 @@ +# Copyright (c) 2026, Frappe Technologies Pvt. Ltd. and Contributors +# See license.txt + +import frappe + +from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice +from erpnext.selling.report.sales_person_wise_transaction_summary.sales_person_wise_transaction_summary import ( + execute, +) +from erpnext.tests.utils import ERPNextTestSuite + + +class TestSalesPersonWiseTransactionSummary(ERPNextTestSuite): + """Item-level summary joining a sales document with its Sales Team rows, showing + each sales person's contributed qty and amount per item line.""" + + def setUp(self): + self.sales_person = "_Test Sales Person" + + def make_invoice_with_commission(self, qty=5, rate=200, percentage=100): + si = create_sales_invoice( + item="_Test Item", qty=qty, rate=rate, do_not_save=True, posting_date="2026-06-01" + ) + si.append("sales_team", {"sales_person": self.sales_person, "allocated_percentage": percentage}) + si.insert() + si.submit() + return si + + def run_report(self, **extra): + filters = frappe._dict( + {"company": "_Test Company", "doc_type": "Sales Invoice", "sales_person": self.sales_person} + ) + filters.update(extra) + return execute(filters)[1] + + def test_doc_type_is_mandatory(self): + self.assertRaises(frappe.ValidationError, execute, frappe._dict({"company": "_Test Company"})) + + def test_invalid_doc_type_throws(self): + self.assertRaises( + frappe.ValidationError, + execute, + frappe._dict({"company": "_Test Company", "doc_type": "Purchase Invoice"}), + ) + + def test_item_line_contribution(self): + si = self.make_invoice_with_commission(qty=5, rate=200, percentage=100) + item = si.items[0] + + rows = self.run_report() + row = next((r for r in rows if r[0] == si.name and r[5] == "_Test Item"), None) + self.assertIsNotNone(row, "Invoice item line missing from report") + + # row: name, customer, territory, warehouse, posting_date, item_code, item_group, + # brand, stock_qty, base_net_amount, sales_person, allocated_percentage, + # contributed_qty, contribution_amt, currency + self.assertEqual(row[1], si.customer) + self.assertEqual(row[8], item.stock_qty) + self.assertEqual(row[9], item.base_net_amount) + self.assertEqual(row[10], self.sales_person) + self.assertEqual(row[11], 100) + self.assertEqual(row[12], item.stock_qty * 100 / 100) # contributed qty + self.assertEqual(row[13], item.base_net_amount * 100 / 100) # contribution amount + + def test_appends_total_row(self): + self.make_invoice_with_commission() + rows = self.run_report() + self.assertTrue(rows) + self.assertEqual(rows[-1], [""] * len(rows[0])) From e6a6c13355652e3fe379d36cb15d76b8dc82fd85 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sat, 11 Jul 2026 10:41:49 +0000 Subject: [PATCH 80/91] =?UTF-8?q?fix(financial=5Fstatement):=20render=20co?= =?UTF-8?q?lumnar=20financial=20statements=20instea=E2=80=A6=20(backport?= =?UTF-8?q?=20#56921)=20(#57053)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Vishnu Priya Baskaran <145791817+ervishnucs@users.noreply.github.com> --- erpnext/public/js/financial_statements.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erpnext/public/js/financial_statements.js b/erpnext/public/js/financial_statements.js index 58a8803eca0..87a1dd5c766 100644 --- a/erpnext/public/js/financial_statements.js +++ b/erpnext/public/js/financial_statements.js @@ -28,8 +28,8 @@ erpnext.financial_statements = { }, is_blank_row: function (data) { + if (!data || data.segment_values) return false; return ( - data && !data.account && !data.accounts && !data.child_accounts && From 835e32cec77b101bf0515a349677185f8812a3bc Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sat, 11 Jul 2026 18:18:17 +0530 Subject: [PATCH 81/91] fix(banking): allow negative balance in bank statement import (backport #56959) (#57054) fix(banking): allow negative balance in bank statement import (#56959) (cherry picked from commit d449ad3b3f9d451fd115a94e781e4c9cc269f289) Co-authored-by: Nikhil Kothari --- .../bank_statement_import_log/bank_statement_import_log.json | 3 +-- .../bank_statement_import_log/bank_statement_import_log.py | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.json b/erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.json index c34b21f7a91..d7b68b42860 100644 --- a/erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.json +++ b/erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.json @@ -54,7 +54,6 @@ "fieldtype": "Currency", "in_list_view": 1, "label": "Closing Balance", - "non_negative": 1, "options": "currency" }, { @@ -191,7 +190,7 @@ "grid_page_length": 50, "index_web_pages_for_search": 1, "links": [], - "modified": "2026-05-08 17:55:25.615942", + "modified": "2026-07-09 17:55:25.615942", "modified_by": "Administrator", "module": "Accounts", "name": "Bank Statement Import Log", diff --git a/erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py b/erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py index c4ac1deef69..2298330aa17 100644 --- a/erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py +++ b/erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py @@ -557,7 +557,7 @@ class BankStatementImportLog(Document): docname=self.name, ) - if self.closing_balance and self.closing_balance > 0 and self.end_date: + if self.closing_balance is not None and self.end_date: set_closing_balance_as_per_statement( self.bank_account, frappe.utils.getdate(self.end_date), self.closing_balance ) From e2fd061b3db4eb4ce08c8c3b222f01d29ec478ea Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sat, 11 Jul 2026 18:45:35 +0530 Subject: [PATCH 82/91] fix: update events order by date asc (backport #56963) (#57056) Co-authored-by: Pandiyan P Co-authored-by: nareshkannasln --- erpnext/crm/utils.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/erpnext/crm/utils.py b/erpnext/crm/utils.py index e68bfd8430e..a2204ab316f 100644 --- a/erpnext/crm/utils.py +++ b/erpnext/crm/utils.py @@ -189,6 +189,7 @@ def get_filtered_todos(ref_doctype, ref_docname, status: str | tuple[str, str]): "allocated_to", "date", ], + order_by="date asc", ) @@ -218,6 +219,7 @@ def get_filtered_events(ref_doctype, ref_docname, open: bool): & (event_link.reference_docname == ref_docname) & (event_status_filter) ) + .orderby(event.starts_on) ) data = query.run(as_dict=True) From 62fed1d56286e628a005c477e9419a9490ccaac3 Mon Sep 17 00:00:00 2001 From: Mohammad Umair Sayed Date: Sat, 11 Jul 2026 23:11:20 +0530 Subject: [PATCH 83/91] feat: explain FIFO allocation of fixed Discount Amount on Sales Order (#56436) Co-authored-by: Claude Opus 4.8 Co-authored-by: Diptanil Saha --- erpnext/selling/doctype/sales_order/sales_order.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/erpnext/selling/doctype/sales_order/sales_order.json b/erpnext/selling/doctype/sales_order/sales_order.json index 739b91f18b1..893485a7369 100644 --- a/erpnext/selling/doctype/sales_order/sales_order.json +++ b/erpnext/selling/doctype/sales_order/sales_order.json @@ -893,13 +893,15 @@ "print_hide": 1 }, { + "description": "Applying a Discount Amount? When this Sales Order is partially fulfilled through multiple Delivery Notes and Sales Invoices, the Discount Amount is allocated on a FIFO basis. The earlier transactions receive a larger share of the discount. To spread the discount proportionally across item prices, use Additional Discount Percentage instead.", "fieldname": "discount_amount", "fieldtype": "Currency", "hide_days": 1, "hide_seconds": 1, "label": "Additional Discount Amount", "options": "currency", - "print_hide": 1 + "print_hide": 1, + "show_description_on_click": 1 }, { "fieldname": "base_grand_total", @@ -1760,7 +1762,7 @@ "idx": 105, "is_submittable": 1, "links": [], - "modified": "2026-05-28 11:41:11.823034", + "modified": "2026-06-24 12:00:00.000000", "modified_by": "Administrator", "module": "Selling", "name": "Sales Order", From edfbc71135aad024072bbfdf84eef32a88d56a3a Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Sat, 11 Jul 2026 17:52:48 +0000 Subject: [PATCH 84/91] fix: remove incorrect Payable account_type from Customer Deposits in Philippines CoA (backport #57018) (#57061) Co-authored-by: Raghav Ruia <168326921+raghavisruia@users.noreply.github.com> --- .../account/chart_of_accounts/verified/philippines.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/verified/philippines.json b/erpnext/accounts/doctype/account/chart_of_accounts/verified/philippines.json index 30a3baf83e2..38ee277c5d6 100644 --- a/erpnext/accounts/doctype/account/chart_of_accounts/verified/philippines.json +++ b/erpnext/accounts/doctype/account/chart_of_accounts/verified/philippines.json @@ -406,8 +406,7 @@ "Customer Deposits": { "account_number": "2500", "is_group": 0, - "root_type": "Liability", - "account_type": "Payable" + "root_type": "Liability" } }, "Non Current Liabilities": { From 2e892be1c1ff1f5fe78f90ef22309d6068ec6e9b Mon Sep 17 00:00:00 2001 From: MochaMind Date: Sun, 12 Jul 2026 13:12:57 +0530 Subject: [PATCH 85/91] chore: sync translations to version-16-hotfix (#56911) --- erpnext/locale/af.po | 1907 ++-- erpnext/locale/ar.po | 1911 ++-- erpnext/locale/bg.po | 1907 ++-- erpnext/locale/bs.po | 2059 ++-- erpnext/locale/cs.po | 1907 ++-- erpnext/locale/da.po | 1907 ++-- erpnext/locale/de.po | 1913 ++-- erpnext/locale/eo.po | 2039 ++-- erpnext/locale/es.po | 1911 ++-- erpnext/locale/fa.po | 1935 ++-- erpnext/locale/fi.po | 1907 ++-- erpnext/locale/fr.po | 1913 ++-- erpnext/locale/hi.po | 1915 ++-- erpnext/locale/hr.po | 2055 ++-- erpnext/locale/hu.po | 1911 ++-- erpnext/locale/id.po | 1913 ++-- erpnext/locale/it.po | 1913 ++-- erpnext/locale/ko.po | 1907 ++-- erpnext/locale/my.po | 1907 ++-- erpnext/locale/nb.po | 1907 ++-- erpnext/locale/nl.po | 1911 ++-- erpnext/locale/pl.po | 1911 ++-- erpnext/locale/pt.po | 1913 ++-- erpnext/locale/pt_BR.po | 1907 ++-- erpnext/locale/ru.po | 1913 ++-- erpnext/locale/sl.po | 1907 ++-- erpnext/locale/sr.po | 1913 ++-- erpnext/locale/sr_CS.po | 1913 ++-- erpnext/locale/sv.po | 2171 ++-- erpnext/locale/ta.po | 1907 ++-- erpnext/locale/th.po | 1913 ++-- erpnext/locale/tr.po | 1911 ++-- erpnext/locale/uz.po | 20399 +++++++++++++++++++------------------- erpnext/locale/vi.po | 1913 ++-- erpnext/locale/zh.po | 1913 ++-- erpnext/locale/zh_TW.po | 1907 ++-- 36 files changed, 44815 insertions(+), 43151 deletions(-) diff --git a/erpnext/locale/af.po b/erpnext/locale/af.po index 6625cbfb7d2..8a88d88a4ab 100644 --- a/erpnext/locale/af.po +++ b/erpnext/locale/af.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: ERPNext VERSION\n" "Report-Msgid-Bugs-To: info@erpnext.com\n" -"POT-Creation-Date: 2026-06-28 10:20+0000\n" +"POT-Creation-Date: 2026-07-05 10:19+0000\n" "PO-Revision-Date: 2024-01-10 16:34+0553\n" "Last-Translator: info@erpnext.com\n" "Language-Team: info@erpnext.com\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.16.0\n" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1591 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1641 msgid "" "\n" "\t\t\tThe Batch {0} of an item {1} has negative stock in the warehouse {2}{3}.\n" @@ -94,15 +94,15 @@ msgstr "" msgid " Summary" msgstr "" -#: erpnext/stock/doctype/item/item.py:265 +#: erpnext/stock/doctype/item/item.py:266 msgid "\"Customer Provided Item\" cannot be Purchase Item also" msgstr ""Klant voorsien artikel" kan ook nie die aankoopitem wees nie" -#: erpnext/stock/doctype/item/item.py:267 +#: erpnext/stock/doctype/item/item.py:268 msgid "\"Customer Provided Item\" cannot have Valuation Rate" msgstr ""Klant voorsien artikel" kan nie 'n waardasiekoers hê nie" -#: erpnext/stock/doctype/item/item.py:366 +#: erpnext/stock/doctype/item/item.py:367 msgid "\"Is Fixed Asset\" cannot be unchecked, as Asset record exists against the item" msgstr ""Is Vaste Bate" kan nie afgeskakel word nie, aangesien Bate-rekord teen die item bestaan" @@ -267,7 +267,7 @@ msgstr "" msgid "% of materials delivered against this Sales Order" msgstr "" -#: erpnext/controllers/accounts_controller.py:2394 +#: erpnext/controllers/accounts_controller.py:2414 msgid "'Account' in the Accounting section of Customer {0}" msgstr "" @@ -283,7 +283,7 @@ msgstr "'Gebaseer op' en 'Groepeer' kan nie dieselfde wees nie" msgid "'Days Since Last Order' must be greater than or equal to zero" msgstr "'Dae sedert Laaste bestelling' moet groter as of gelyk wees aan nul" -#: erpnext/controllers/accounts_controller.py:2399 +#: erpnext/controllers/accounts_controller.py:2419 msgid "'Default {0} Account' in Company {1}" msgstr "" @@ -301,15 +301,15 @@ msgstr "'Vanaf datum' word vereis" msgid "'From Date' must be after 'To Date'" msgstr "'Vanaf datum' moet na 'tot datum' wees" -#: erpnext/stock/doctype/item/item.py:449 +#: erpnext/stock/doctype/item/item.py:450 msgid "'Has Serial No' can not be 'Yes' for non-stock item" msgstr "'Het 'n serienummer' kan nie 'Ja' wees vir nie-voorraaditem" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:143 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:147 msgid "'Inspection Required before Delivery' has disabled for the item {0}, no need to create the QI" msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:134 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:138 msgid "'Inspection Required before Purchase' has disabled for the item {0}, no need to create the QI" msgstr "" @@ -345,23 +345,23 @@ msgstr "" msgid "'{0}' has been already added." msgstr "" -#: erpnext/setup/doctype/company/company.py:304 -#: erpnext/setup/doctype/company/company.py:315 +#: erpnext/setup/doctype/company/company.py:305 +#: erpnext/setup/doctype/company/company.py:316 msgid "'{0}' should be in company currency {1}." msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:174 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:203 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:214 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:106 msgid "(A) Qty After Transaction" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:208 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:219 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:111 msgid "(B) Expected Qty After Transaction" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:223 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:234 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:126 msgid "(C) Total Qty in Queue" msgstr "" @@ -371,7 +371,7 @@ msgid "(C) Total qty in queue" msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:194 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:233 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:244 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:136 msgid "(D) Balance Stock Value" msgstr "" @@ -382,12 +382,12 @@ msgid "(Daily Yield * No of Units Produced) / 100" msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:199 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:238 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:249 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:141 msgid "(E) Balance Stock Value in Queue" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:248 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:259 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:151 msgid "(F) Change in Stock Value" msgstr "" @@ -396,7 +396,7 @@ msgstr "" msgid "(Forecast)" msgstr "(Vooruitskatting)" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:253 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:264 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:156 msgid "(G) Sum of Change in Stock Value" msgstr "" @@ -407,7 +407,7 @@ msgstr "" msgid "(Good Units Produced / Total Units Produced) × 100" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:263 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:274 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:166 msgid "(H) Change in Stock Value (FIFO Queue)" msgstr "" @@ -422,17 +422,17 @@ msgstr "" msgid "(Hour Rate / 60) * Actual Operation Time" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:273 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:284 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:176 msgid "(I) Valuation Rate" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:278 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:289 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:181 msgid "(J) Valuation Rate as per FIFO" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:288 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:299 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:191 msgid "(K) Valuation = Value (D) ÷ Qty (A)" msgstr "" @@ -616,7 +616,7 @@ msgstr "" msgid "<0" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:541 +#: erpnext/assets/doctype/asset/asset.py:545 msgid "Cannot create asset.

    You're trying to create {0} asset(s) from {2} {3}.
    However, only {1} item(s) were purchased and {4} asset(s) already exist against {5}." msgstr "" @@ -792,7 +792,7 @@ msgstr "" msgid "
  • Clearance date must be after cheque date for row(s): {0}
  • " msgstr "" -#: erpnext/controllers/accounts_controller.py:2277 +#: erpnext/controllers/accounts_controller.py:2297 msgid "
  • Item {0} in row(s) {1} billed more than {2}
  • " msgstr "" @@ -809,7 +809,7 @@ msgstr "" msgid "
  • {}
  • " msgstr "" -#: erpnext/controllers/accounts_controller.py:2274 +#: erpnext/controllers/accounts_controller.py:2294 msgid "

    Cannot overbill for the following Items:

    " msgstr "" @@ -854,7 +854,7 @@ msgstr "" msgid "

    Price List Rate has not been set as editable in Selling Settings. In this scenario, setting Update Price List Based On to Price List Rate will prevent auto-updation of Item Price.

    Are you sure you want to continue?" msgstr "" -#: erpnext/controllers/accounts_controller.py:2286 +#: erpnext/controllers/accounts_controller.py:2306 msgid "

    To allow over-billing, please set allowance in Accounts Settings.

    " msgstr "" @@ -939,11 +939,11 @@ msgstr "" msgid "Your Shortcuts" msgstr "" -#: erpnext/accounts/doctype/payment_request/payment_request.py:1135 +#: erpnext/accounts/doctype/payment_request/payment_request.py:1136 msgid "Grand Total: {0}" msgstr "" -#: erpnext/accounts/doctype/payment_request/payment_request.py:1136 +#: erpnext/accounts/doctype/payment_request/payment_request.py:1137 msgid "Outstanding Amount: {0}" msgstr "" @@ -987,18 +987,18 @@ msgid "" "\n" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:213 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:224 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:116 msgid "A - B" msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:189 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:228 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:239 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:131 msgid "A - C" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:355 +#: erpnext/selling/doctype/customer/customer.py:356 msgid "A Customer Group exists with same name please change the Customer name or rename the Customer Group" msgstr "'N Kliëntegroep bestaan met dieselfde naam, verander asseblief die Kliënt se naam of die naam van die Kliëntegroep" @@ -1014,7 +1014,7 @@ msgstr "'N Lead benodig óf 'n persoon se naam óf 'n organisasie se msgid "A Packing Slip can only be created for Draft Delivery Note." msgstr "" -#: erpnext/accounts/general_ledger.py:827 +#: erpnext/accounts/general_ledger.py:829 msgid "A Period Closing Voucher is already submitted and an Opening Entry can no longer be created. {0} to learn more." msgstr "" @@ -1056,6 +1056,14 @@ msgstr "" msgid "A driver must be set to submit." msgstr "" +#: erpnext/public/js/setup_wizard.js:27 +msgid "A few quick questions so we can set things up the way you work." +msgstr "" + +#: erpnext/public/js/setup_wizard.js:25 +msgid "A little about you" +msgstr "" + #. Description of a DocType #: erpnext/stock/doctype/warehouse/warehouse.json msgid "A logical Warehouse against which stock entries are made." @@ -1171,11 +1179,11 @@ msgstr "" msgid "Abbreviation" msgstr "" -#: erpnext/setup/doctype/company/company.py:239 +#: erpnext/setup/doctype/company/company.py:240 msgid "Abbreviation already used for another company" msgstr "Afkorting is reeds vir 'n ander maatskappy gebruik" -#: erpnext/setup/doctype/company/company.py:236 +#: erpnext/setup/doctype/company/company.py:237 msgid "Abbreviation is mandatory" msgstr "Afkorting is verpligtend" @@ -1237,7 +1245,7 @@ msgid "Accepted Qty in Stock UOM" msgstr "" #. Label of the qty (Float) field in DocType 'Purchase Receipt Item' -#: erpnext/public/js/controllers/transaction.js:2864 +#: erpnext/public/js/controllers/transaction.js:2886 #: erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json msgid "Accepted Quantity" msgstr "Geaccepteerde hoeveelheid" @@ -1394,7 +1402,7 @@ msgid "Account Manager" msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1057 -#: erpnext/controllers/accounts_controller.py:2403 +#: erpnext/controllers/accounts_controller.py:2423 msgid "Account Missing" msgstr "Rekening ontbreek" @@ -1488,8 +1496,8 @@ msgstr "Rekeningbalans reeds in Krediet, jy mag nie 'Balans moet wees' a msgid "Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'" msgstr "Rekeningbalans reeds in Debiet, jy mag nie 'Balans moet wees' as 'Krediet'" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:101 -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:107 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:148 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:154 msgid "Account company does not match with the rule company." msgstr "" @@ -1515,15 +1523,15 @@ msgstr "Rekeninge is verpligtend om betalingsinskrywings te kry" msgid "Account is not set for the dashboard chart {0}" msgstr "Die rekening is nie opgestel vir die paneelkaart {0}" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:635 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:611 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:217 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1201 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:315 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:316 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:659 msgid "Account is required" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:903 +#: erpnext/assets/doctype/asset/asset.py:907 msgid "Account not Found" msgstr "" @@ -1588,7 +1596,7 @@ msgstr "" msgid "Account {0} does not belong to company {1}" msgstr "" -#: erpnext/setup/doctype/company/company.py:286 +#: erpnext/setup/doctype/company/company.py:287 msgid "Account {0} does not belong to company: {1}" msgstr "Rekening {0} behoort nie aan maatskappy nie: {1}" @@ -1620,7 +1628,7 @@ msgstr "Rekening {0} bestaan in moedermaatskappy {1}." msgid "Account {0} is added in the child company {1}" msgstr "Rekening {0} word by die kinderonderneming {1} gevoeg" -#: erpnext/setup/doctype/company/company.py:275 +#: erpnext/setup/doctype/company/company.py:276 msgid "Account {0} is disabled." msgstr "" @@ -1628,7 +1636,7 @@ msgstr "" msgid "Account {0} is frozen" msgstr "Rekening {0} is gevries" -#: erpnext/controllers/accounts_controller.py:1478 +#: erpnext/controllers/accounts_controller.py:1498 msgid "Account {0} is invalid. Account Currency must be {1}" msgstr "Rekening {0} is ongeldig. Rekeninggeldeenheid moet {1} wees" @@ -1664,7 +1672,7 @@ msgstr "Rekening: {0} kan slegs deur voorraadtransaksies opgedateer word" msgid "Account: {0} is not permitted under Payment Entry" msgstr "Rekening: {0} is nie toegelaat onder betalingstoelae nie" -#: erpnext/controllers/accounts_controller.py:3287 +#: erpnext/controllers/accounts_controller.py:3307 msgid "Account: {0} with currency: {1} can not be selected" msgstr "Rekening: {0} met valuta: {1} kan nie gekies word nie" @@ -1690,7 +1698,7 @@ msgstr "" #: erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json #: erpnext/accounts/doctype/shipping_rule/shipping_rule.json #: erpnext/buying/doctype/supplier/supplier.json -#: erpnext/desktop_icon/accounting.json +#: erpnext/desktop_icon/accounting.json erpnext/public/js/setup_wizard.js:91 #: erpnext/selling/doctype/customer/customer.json #: erpnext/setup/setup_wizard/data/industry_type.txt:1 #: erpnext/setup/workspace/home/home.json erpnext/stock/doctype/item/item.json @@ -1892,8 +1900,8 @@ msgstr "" msgid "Accounting Entries" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:937 -#: erpnext/assets/doctype/asset/asset.py:952 +#: erpnext/assets/doctype/asset/asset.py:941 +#: erpnext/assets/doctype/asset/asset.py:956 #: erpnext/assets/doctype/asset_capitalization/asset_capitalization.py:546 msgid "Accounting Entry for Asset" msgstr "Rekeningkundige Inskrywing vir Bate" @@ -1907,7 +1915,7 @@ msgstr "" msgid "Accounting Entry for Landed Cost Voucher for SCR {0}" msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:838 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:843 msgid "Accounting Entry for Service" msgstr "Rekeningkundige inskrywing vir diens" @@ -1920,25 +1928,25 @@ msgstr "Rekeningkundige inskrywing vir diens" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1267 #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1506 #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1528 -#: erpnext/controllers/stock_controller.py:728 -#: erpnext/controllers/stock_controller.py:745 -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:935 +#: erpnext/controllers/stock_controller.py:768 +#: erpnext/controllers/stock_controller.py:785 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:940 #: erpnext/stock/doctype/stock_entry/stock_entry.py:2265 #: erpnext/stock/doctype/stock_entry/stock_entry.py:2279 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:753 msgid "Accounting Entry for Stock" msgstr "Rekeningkundige Inskrywing vir Voorraad" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:735 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:740 msgid "Accounting Entry for {0}" msgstr "" -#: erpnext/controllers/accounts_controller.py:2444 +#: erpnext/controllers/accounts_controller.py:2464 msgid "Accounting Entry for {0}: {1} can only be made in currency: {2}" msgstr "Rekeningkundige Inskrywing vir {0}: {1} kan slegs in valuta gemaak word: {2}" #: erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js:193 -#: erpnext/assets/doctype/asset/asset.js:185 +#: erpnext/assets/doctype/asset/asset.js:190 #: erpnext/assets/doctype/asset_repair/asset_repair.js:92 #: erpnext/buying/doctype/supplier/supplier.js:123 #: erpnext/public/js/controllers/stock_controller.js:88 @@ -2003,7 +2011,7 @@ msgstr "" #: erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.json #: erpnext/assets/doctype/asset_category/asset_category.json #: erpnext/setup/doctype/company/company.json -#: erpnext/setup/doctype/company/company.py:445 +#: erpnext/setup/doctype/company/company.py:446 #: erpnext/setup/doctype/customer_group/customer_group.json #: erpnext/setup/doctype/email_digest/email_digest.json #: erpnext/setup/doctype/incoterm/incoterm.json @@ -2164,7 +2172,7 @@ msgstr "" #. Label of the accumulated_depreciation_amount (Currency) field in DocType #. 'Depreciation Schedule' #: erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py:178 -#: erpnext/assets/doctype/asset/asset.js:380 +#: erpnext/assets/doctype/asset/asset.js:385 #: erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json msgid "Accumulated Depreciation Amount" msgstr "Opgehoopte Waardevermindering Bedrag" @@ -2436,7 +2444,7 @@ msgstr "Werklike Einddatum" msgid "Actual End Date (via Timesheet)" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:299 +#: erpnext/manufacturing/doctype/work_order/work_order.py:300 msgid "Actual End Date cannot be before Actual Start Date" msgstr "" @@ -2662,13 +2670,13 @@ msgstr "" msgid "Add Raw Materials" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:711 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:687 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1260 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:728 msgid "Add Row" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:227 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:228 #: banking/src/components/features/Settings/MatchingRules.tsx:30 msgid "Add Rule" msgstr "" @@ -2753,7 +2761,7 @@ msgstr "" msgid "Add a charge to the payment entry with the unallocated amount" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:800 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:776 msgid "Add a row with the difference amount" msgstr "" @@ -2819,7 +2827,7 @@ msgstr "" msgid "Added Supplier Role to User {0}." msgstr "" -#: erpnext/controllers/website_list_for_contact.py:307 +#: erpnext/controllers/website_list_for_contact.py:308 msgid "Added {1} Role to User {0}." msgstr "" @@ -3063,7 +3071,7 @@ msgstr "" msgid "Additional Transferred Qty" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:775 +#: erpnext/manufacturing/doctype/work_order/work_order.py:782 msgid "" "Additional Transferred Qty {0}\n" "\t\t\t\t\tcannot be greater than {1}.\n" @@ -3217,7 +3225,7 @@ msgstr "" msgid "Adjustment Against" msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:660 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:664 msgid "Adjustment based on Purchase Invoice rate" msgstr "" @@ -3293,7 +3301,7 @@ msgstr "" #: erpnext/accounts/doctype/pos_invoice/pos_invoice.json #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json -#: erpnext/controllers/accounts_controller.py:286 +#: erpnext/controllers/accounts_controller.py:306 #: erpnext/setup/doctype/company/company.json msgid "Advance Payments" msgstr "Vooruitbetalings" @@ -3662,7 +3670,7 @@ msgstr "" #: erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:165 #: erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:185 #: erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py:169 -#: erpnext/accounts/utils.py:1632 erpnext/public/js/setup_wizard.js:184 +#: erpnext/accounts/utils.py:1632 erpnext/public/js/setup_wizard.js:279 msgid "All Accounts" msgstr "Alle rekeninge" @@ -3713,21 +3721,21 @@ msgstr "Alle kliënte groepe" #: erpnext/patches/v11_0/update_department_lft_rgt.py:9 #: erpnext/patches/v11_0/update_department_lft_rgt.py:11 #: erpnext/patches/v11_0/update_department_lft_rgt.py:16 -#: erpnext/setup/doctype/company/company.py:438 -#: erpnext/setup/doctype/company/company.py:441 -#: erpnext/setup/doctype/company/company.py:446 -#: erpnext/setup/doctype/company/company.py:452 -#: erpnext/setup/doctype/company/company.py:458 -#: erpnext/setup/doctype/company/company.py:464 -#: erpnext/setup/doctype/company/company.py:470 -#: erpnext/setup/doctype/company/company.py:476 -#: erpnext/setup/doctype/company/company.py:482 -#: erpnext/setup/doctype/company/company.py:488 -#: erpnext/setup/doctype/company/company.py:494 -#: erpnext/setup/doctype/company/company.py:500 -#: erpnext/setup/doctype/company/company.py:506 -#: erpnext/setup/doctype/company/company.py:512 -#: erpnext/setup/doctype/company/company.py:518 +#: erpnext/setup/doctype/company/company.py:439 +#: erpnext/setup/doctype/company/company.py:442 +#: erpnext/setup/doctype/company/company.py:447 +#: erpnext/setup/doctype/company/company.py:453 +#: erpnext/setup/doctype/company/company.py:459 +#: erpnext/setup/doctype/company/company.py:465 +#: erpnext/setup/doctype/company/company.py:471 +#: erpnext/setup/doctype/company/company.py:477 +#: erpnext/setup/doctype/company/company.py:483 +#: erpnext/setup/doctype/company/company.py:489 +#: erpnext/setup/doctype/company/company.py:495 +#: erpnext/setup/doctype/company/company.py:501 +#: erpnext/setup/doctype/company/company.py:507 +#: erpnext/setup/doctype/company/company.py:513 +#: erpnext/setup/doctype/company/company.py:519 msgid "All Departments" msgstr "Alle Departemente" @@ -3807,7 +3815,7 @@ msgstr "Alle Verskaffersgroepe" msgid "All Territories" msgstr "Alle gebiede" -#: erpnext/setup/doctype/company/company.py:383 +#: erpnext/setup/doctype/company/company.py:384 msgid "All Warehouses" msgstr "Alle pakhuise" @@ -3834,11 +3842,11 @@ msgstr "" msgid "All items are already requested" msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1486 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1520 msgid "All items have already been Invoiced/Returned" msgstr "Alle items is reeds gefaktureer / teruggestuur" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:1193 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:1201 msgid "All items have already been received" msgstr "" @@ -3846,7 +3854,7 @@ msgstr "" msgid "All items have already been transferred for this Work Order." msgstr "Alle items is reeds vir hierdie werkorder oorgedra." -#: erpnext/public/js/controllers/transaction.js:2993 +#: erpnext/public/js/controllers/transaction.js:3009 msgid "All items in this document already have a linked Quality Inspection." msgstr "" @@ -3872,7 +3880,7 @@ msgstr "" msgid "All the required items (raw materials) will be fetched from BOM and populated in this table. Here you can also change the Source Warehouse for any item. And during the production, you can track transferred raw materials from this table." msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:833 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:836 msgid "All these items have already been Invoiced/Returned" msgstr "Al hierdie items is reeds gefaktureer / teruggestuur" @@ -4442,11 +4450,11 @@ msgstr "" msgid "Allows users to submit Supplier Quotations with zero quantity. Useful when rates are fixed but the quantities are not. Eg. Rate Contracts." msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1184 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1205 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1257 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1291 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1310 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1190 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1211 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1263 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1297 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1316 msgid "Already Imported" msgstr "" @@ -4474,7 +4482,7 @@ msgstr "" #: erpnext/manufacturing/doctype/work_order/work_order.js:158 #: erpnext/manufacturing/doctype/work_order/work_order.js:173 #: erpnext/public/js/utils.js:604 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:339 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:344 msgid "Alternate Item" msgstr "Alternatiewe Item" @@ -4613,7 +4621,7 @@ msgstr "" #: erpnext/accounts/doctype/bank_statement_import_log_column_map/bank_statement_import_log_column_map.json #: erpnext/accounts/doctype/budget_distribution/budget_distribution.json #: erpnext/accounts/doctype/cashier_closing_payments/cashier_closing_payments.json -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:629 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:636 #: erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json #: erpnext/accounts/doctype/payment_entry/payment_entry.json #: erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.json @@ -4669,7 +4677,7 @@ msgstr "" #: erpnext/manufacturing/doctype/bom_item/bom_item.json #: erpnext/manufacturing/doctype/work_order_additional_item/work_order_additional_item.json #: erpnext/manufacturing/doctype/work_order_item/work_order_item.json -#: erpnext/public/js/controllers/transaction.js:536 +#: erpnext/public/js/controllers/transaction.js:558 #: erpnext/selling/doctype/quotation/quotation.js:315 #: erpnext/selling/doctype/quotation_item/quotation_item.json #: erpnext/selling/doctype/sales_order_item/sales_order_item.json @@ -4970,7 +4978,7 @@ msgstr "Nog 'n verkoopspersoon {0} bestaan uit dieselfde werknemer-ID" msgid "Any" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:49 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:50 msgid "Any debit transaction with the keyword 'Bank Fee'." msgstr "" @@ -5432,7 +5440,7 @@ msgstr "Aangesien die veld {0} geaktiveer is, is die veld {1} verpligtend." msgid "As the field {0} is enabled, the value of the field {1} should be more than 1." msgstr "Aangesien die veld {0} geaktiveer is, moet die waarde van die veld {1} meer as 1 wees." -#: erpnext/stock/doctype/item/item.py:1093 +#: erpnext/stock/doctype/item/item.py:1094 msgid "As there are existing submitted transactions against item {0}, you can not change the value of {1}." msgstr "" @@ -5582,7 +5590,7 @@ msgstr "Bate Kategorie Rekening" msgid "Asset Category Name" msgstr "" -#: erpnext/stock/doctype/item/item.py:358 +#: erpnext/stock/doctype/item/item.py:359 msgid "Asset Category is mandatory for Fixed Asset item" msgstr "Bate-kategorie is verpligtend vir vaste bate-item" @@ -5622,7 +5630,7 @@ msgstr "" msgid "Asset Depreciation Schedule {0} for Asset {1} and Finance Book {2} already exists." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:235 +#: erpnext/assets/doctype/asset/asset.py:239 msgid "Asset Depreciation Schedules created/updated:
    {0}

    Please check, edit if needed, and submit the Asset." msgstr "" @@ -5714,7 +5722,7 @@ msgstr "Batebeweging" msgid "Asset Movement Item" msgstr "Batebewegingsitem" -#: erpnext/assets/doctype/asset/asset.py:1183 +#: erpnext/assets/doctype/asset/asset.py:1187 msgid "Asset Movement record {0} created" msgstr "Bate Beweging rekord {0} geskep" @@ -5776,7 +5784,7 @@ msgstr "Bate ontvang maar nie gefaktureer nie" #. Batch Bundle' #. Label of the asset_repair (Link) field in DocType 'Stock Entry' #. Label of a Workspace Sidebar Item -#: erpnext/assets/doctype/asset/asset.js:108 +#: erpnext/assets/doctype/asset/asset.js:113 #: erpnext/assets/doctype/asset_repair/asset_repair.json #: erpnext/assets/workspace/assets/assets.json #: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.json @@ -5828,7 +5836,7 @@ msgstr "" #. Label of the asset_value (Currency) field in DocType 'Asset Capitalization #. Asset Item' #: erpnext/assets/dashboard_fixtures.py:180 -#: erpnext/assets/doctype/asset/asset.js:512 +#: erpnext/assets/doctype/asset/asset.js:517 #: erpnext/assets/doctype/asset_capitalization_asset_item/asset_capitalization_asset_item.json #: erpnext/assets/report/fixed_asset_register/fixed_asset_register.py:209 #: erpnext/assets/report/fixed_asset_register/fixed_asset_register.py:460 @@ -5839,7 +5847,7 @@ msgstr "Batewaarde" #. Name of a DocType #. Label of a Link in the Assets Workspace #. Label of a Workspace Sidebar Item -#: erpnext/assets/doctype/asset/asset.js:100 +#: erpnext/assets/doctype/asset/asset.js:105 #: erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.json #: erpnext/assets/workspace/assets/assets.json #: erpnext/workspace_sidebar/assets.json @@ -5856,11 +5864,11 @@ msgstr "Die aanpassing van die batewaarde kan nie voor die aankoopdatum van die msgid "Asset Value Analytics" msgstr "Analise van batewaarde" -#: erpnext/assets/doctype/asset/asset.py:277 +#: erpnext/assets/doctype/asset/asset.py:281 msgid "Asset cancelled" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:732 +#: erpnext/assets/doctype/asset/asset.py:736 msgid "Asset cannot be cancelled, as it is already {0}" msgstr "Bate kan nie gekanselleer word nie, want dit is reeds {0}" @@ -5872,15 +5880,15 @@ msgstr "" msgid "Asset capitalized after Asset Capitalization {0} was submitted" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:286 +#: erpnext/assets/doctype/asset/asset.py:290 msgid "Asset created" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1424 +#: erpnext/assets/doctype/asset/asset.py:1428 msgid "Asset created after being split from Asset {0}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:289 +#: erpnext/assets/doctype/asset/asset.py:293 msgid "Asset deleted" msgstr "" @@ -5921,7 +5929,7 @@ msgstr "Bate geskrap via Joernaal Inskrywing {0}" msgid "Asset sold" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:264 +#: erpnext/assets/doctype/asset/asset.py:268 msgid "Asset submitted" msgstr "" @@ -5929,7 +5937,7 @@ msgstr "" msgid "Asset transferred to Location {0}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1433 +#: erpnext/assets/doctype/asset/asset.py:1437 msgid "Asset updated after being split into Asset {0}" msgstr "" @@ -6038,6 +6046,10 @@ msgstr "" msgid "Assign to Name" msgstr "" +#: erpnext/templates/pages/projects.html:48 +msgid "Assignment" +msgstr "" + #. Label of the filters_section (Section Break) field in DocType 'Service Level #. Agreement' #: erpnext/support/doctype/service_level_agreement/service_level_agreement.json @@ -6056,7 +6068,7 @@ msgstr "" msgid "At Row #{0}: The picked quantity {1} for the item {2} is greater than available stock {3} in the warehouse {4}." msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1436 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1486 msgid "At Row {0}: In Serial and Batch Bundle {1} must have docstatus as 1 and not 0" msgstr "" @@ -6064,7 +6076,7 @@ msgstr "" msgid "At least one account with exchange gain or loss is required" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1289 +#: erpnext/assets/doctype/asset/asset.py:1293 msgid "At least one asset has to be selected." msgstr "" @@ -6113,7 +6125,7 @@ msgstr "Op ry # {0}: die volgorde-ID {1} mag nie kleiner wees as die vorige ryvo msgid "At row #{0}: you have selected the Difference Account {1}, which is a Cost of Goods Sold type account. Please select a different account" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1184 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1234 msgid "At row {0}: Batch No is mandatory for Item {1}" msgstr "" @@ -6121,15 +6133,15 @@ msgstr "" msgid "At row {0}: Parent Row No cannot be set for item {1}" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1169 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1219 msgid "At row {0}: Qty is mandatory for the batch {1}" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1176 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1226 msgid "At row {0}: Serial No is mandatory for Item {1}" msgstr "" -#: erpnext/controllers/stock_controller.py:676 +#: erpnext/controllers/stock_controller.py:716 msgid "At row {0}: Serial and Batch Bundle {1} has already created. Please remove the values from the serial no or batch no fields." msgstr "" @@ -6193,11 +6205,11 @@ msgstr "" msgid "Attribute Value" msgstr "" -#: erpnext/stock/doctype/item/item.py:883 +#: erpnext/stock/doctype/item/item.py:884 msgid "Attribute Value {0} is not valid for the selected attribute {1}." msgstr "" -#: erpnext/stock/doctype/item/item.py:1029 +#: erpnext/stock/doctype/item/item.py:1030 msgid "Attribute table is mandatory" msgstr "Eienskapstabel is verpligtend" @@ -6205,19 +6217,19 @@ msgstr "Eienskapstabel is verpligtend" msgid "Attribute value: {0} must appear only once" msgstr "" -#: erpnext/stock/doctype/item/item.py:872 +#: erpnext/stock/doctype/item/item.py:873 msgid "Attribute {0} is disabled." msgstr "" -#: erpnext/stock/doctype/item/item.py:860 +#: erpnext/stock/doctype/item/item.py:861 msgid "Attribute {0} is not valid for the selected template." msgstr "" -#: erpnext/stock/doctype/item/item.py:1033 +#: erpnext/stock/doctype/item/item.py:1034 msgid "Attribute {0} selected multiple times in Attributes Table" msgstr "Attribuut {0} het verskeie kere gekies in Attributes Table" -#: erpnext/stock/doctype/item/item.py:961 +#: erpnext/stock/doctype/item/item.py:962 msgid "Attributes" msgstr "eienskappe" @@ -6327,11 +6339,11 @@ msgstr "" msgid "Auto Reconcile" msgstr "" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1037 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1038 msgid "Auto Reconciliation" msgstr "" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:985 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:986 msgid "Auto Reconciliation has started in the background" msgstr "" @@ -6624,7 +6636,7 @@ msgstr "Beskikbare voorraad vir verpakking items" msgid "Available for Use Date" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:382 +#: erpnext/assets/doctype/asset/asset.py:386 msgid "Available for use date is required" msgstr "Beskikbaar vir gebruik datum is nodig" @@ -6636,7 +6648,7 @@ msgstr "Beskikbare hoeveelheid is {0}, u het {1} nodig" msgid "Available {0}" msgstr "Beskikbaar {0}" -#: erpnext/assets/doctype/asset/asset.py:488 +#: erpnext/assets/doctype/asset/asset.py:492 msgid "Available-for-use Date should be after purchase date" msgstr "Beskikbaar vir gebruik Datum moet na aankoopdatum wees" @@ -6762,7 +6774,7 @@ msgstr "" #: erpnext/selling/doctype/sales_order/sales_order.js:1458 #: erpnext/stock/doctype/material_request/material_request.js:351 #: erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:805 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:810 #: erpnext/stock/report/bom_search/bom_search.py:38 #: erpnext/subcontracting/doctype/subcontracting_inward_order_item/subcontracting_inward_order_item.json #: erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js:525 @@ -7031,7 +7043,7 @@ msgid "BOM and Production" msgstr "" #: erpnext/stock/doctype/material_request/material_request.js:386 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:857 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:862 msgid "BOM does not contain any stock item" msgstr "BOM bevat geen voorraaditem nie" @@ -7122,8 +7134,8 @@ msgstr "" #: erpnext/accounts/doctype/bank_statement_import_log_column_map/bank_statement_import_log_column_map.json #: erpnext/accounts/report/account_balance/account_balance.py:36 #: erpnext/accounts/report/general_ledger/general_ledger.html:168 -#: erpnext/accounts/report/purchase_register/purchase_register.py:242 -#: erpnext/accounts/report/sales_register/sales_register.py:278 +#: erpnext/accounts/report/purchase_register/purchase_register.py:258 +#: erpnext/accounts/report/sales_register/sales_register.py:292 #: erpnext/stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.py:71 msgid "Balance" msgstr "balans" @@ -7387,7 +7399,7 @@ msgstr "" msgid "Bank Charges Account" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:34 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:35 msgid "Bank Charges, Salary, etc." msgstr "" @@ -7429,7 +7441,7 @@ msgstr "Bankbesonderhede" msgid "Bank Draft" msgstr "Bank Konsep" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:97 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:98 msgid "Bank Entries Created" msgstr "" @@ -7443,7 +7455,7 @@ msgstr "" #: banking/src/components/features/BankReconciliation/BankEntryModal.tsx:17 #: banking/src/components/features/BankReconciliation/MatchAndReconcile.tsx:478 #: banking/src/components/features/BankReconciliation/MatchAndReconcile.tsx:571 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:269 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:270 #: banking/src/components/features/Settings/KeyboardShortcuts.tsx:14 #: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.json #: erpnext/accounts/doctype/journal_entry/journal_entry.json @@ -7451,7 +7463,7 @@ msgstr "" msgid "Bank Entry" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:319 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:295 msgid "Bank Entry Created" msgstr "" @@ -7461,7 +7473,7 @@ msgstr "" msgid "Bank Entry Type" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:212 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:213 msgid "Bank Fee, Salary, etc." msgstr "" @@ -7610,11 +7622,11 @@ msgstr "" msgid "Bank account cannot be named as {0}" msgstr "Bankrekening kan nie as {0} genoem word nie." -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:700 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:676 msgid "Bank account credit for withdrawal" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:683 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:659 msgid "Bank account debit for deposit" msgstr "" @@ -7665,11 +7677,11 @@ msgstr "Banking" msgid "Barcode Type" msgstr "" -#: erpnext/stock/doctype/item/item.py:526 +#: erpnext/stock/doctype/item/item.py:527 msgid "Barcode {0} already used in Item {1}" msgstr "Barcode {0} wat reeds in item {1} gebruik is" -#: erpnext/stock/doctype/item/item.py:541 +#: erpnext/stock/doctype/item/item.py:542 msgid "Barcode {0} is not a valid {1} code" msgstr "Barcode {0} is nie 'n geldige {1} kode" @@ -7791,7 +7803,7 @@ msgstr "" msgid "Based On Value" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:427 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:428 msgid "Based on the above entries, the balance amount (debit or credit) will be set for the last row to balance the journal entry." msgstr "" @@ -7827,7 +7839,7 @@ msgstr "" #: erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py:80 #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:158 #: erpnext/stock/report/stock_ledger/stock_ledger.py:419 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:171 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:182 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:80 #: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.js:19 #: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.py:32 @@ -7907,7 +7919,7 @@ msgstr "" #: erpnext/manufacturing/doctype/job_card/job_card.json #: erpnext/manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:89 #: erpnext/manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.py:115 -#: erpnext/public/js/controllers/transaction.js:2890 +#: erpnext/public/js/controllers/transaction.js:2912 #: erpnext/public/js/utils/barcode_scanner.js:281 #: erpnext/public/js/utils/serial_no_batch_selector.js:449 #: erpnext/stock/doctype/delivery_note_item/delivery_note_item.json @@ -7938,11 +7950,11 @@ msgstr "" msgid "Batch No" msgstr "Lotnommer" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1187 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1237 msgid "Batch No is mandatory" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:3470 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:3520 msgid "Batch No {0} does not exists" msgstr "" @@ -7965,7 +7977,7 @@ msgstr "" msgid "Batch Nos" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2009 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2059 msgid "Batch Nos are created successfully" msgstr "" @@ -7983,7 +7995,7 @@ msgstr "" msgid "Batch Qty" msgstr "" -#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.py:125 +#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.py:126 msgid "Batch Qty updated successfully" msgstr "" @@ -8019,7 +8031,7 @@ msgstr "" msgid "Batch and Serial No" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1002 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1009 msgid "Batch not created for item {} since it does not have a batch series." msgstr "" @@ -8061,7 +8073,7 @@ msgid "Batch-Wise Balance History" msgstr "Batch-Wise Balance Geskiedenis" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:164 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:183 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:194 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:86 msgid "Batchwise Valuation" msgstr "" @@ -8087,15 +8099,15 @@ msgstr "" msgid "Below Subscription Plans are of different currency to the party default billing currency/Company currency: {0}" msgstr "" -#: banking/src/components/features/BankReconciliation/BankClearanceSummary.tsx:211 +#: banking/src/components/features/BankReconciliation/BankClearanceSummary.tsx:206 msgid "Below is a list of all accounting entries posted against the bank account {0} between {1} and {2}." msgstr "" -#: banking/src/components/features/BankReconciliation/BankTransactionList.tsx:251 +#: banking/src/components/features/BankReconciliation/BankTransactionList.tsx:246 msgid "Below is a list of all bank transactions imported in the system for the bank account {0} between {1} and {2}." msgstr "" -#: banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx:197 +#: banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx:192 msgid "Below is a list of all entries posted against the bank account {0} which have not been cleared till {1}." msgstr "" @@ -8103,7 +8115,7 @@ msgstr "" #. Label of the bill_date (Date) field in DocType 'Subcontracting Receipt' #: erpnext/accounts/doctype/journal_entry/journal_entry.json #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1207 -#: erpnext/accounts/report/purchase_register/purchase_register.py:214 +#: erpnext/accounts/report/purchase_register/purchase_register.py:230 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json msgid "Bill Date" msgstr "Rekeningdatum" @@ -8112,7 +8124,7 @@ msgstr "Rekeningdatum" #. Label of the bill_no (Data) field in DocType 'Subcontracting Receipt' #: erpnext/accounts/doctype/journal_entry/journal_entry.json #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1206 -#: erpnext/accounts/report/purchase_register/purchase_register.py:213 +#: erpnext/accounts/report/purchase_register/purchase_register.py:229 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json msgid "Bill No" msgstr "Rekening No" @@ -8129,13 +8141,13 @@ msgstr "" #: erpnext/manufacturing/doctype/bom/bom.py:1373 #: erpnext/manufacturing/workspace/manufacturing/manufacturing.json #: erpnext/stock/doctype/material_request/material_request.js:139 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:791 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:796 #: erpnext/workspace_sidebar/subcontracting.json msgid "Bill of Materials" msgstr "Handleiding" #. Option for the 'Status' (Select) field in DocType 'Timesheet' -#: erpnext/controllers/website_list_for_contact.py:206 +#: erpnext/controllers/website_list_for_contact.py:207 #: erpnext/projects/doctype/timesheet/timesheet.json #: erpnext/projects/doctype/timesheet/timesheet_list.js:9 msgid "Billed" @@ -8226,7 +8238,7 @@ msgstr "" msgid "Billing Address Name" msgstr "" -#: erpnext/controllers/accounts_controller.py:573 +#: erpnext/controllers/accounts_controller.py:593 msgid "Billing Address does not belong to the {0}" msgstr "" @@ -8571,7 +8583,7 @@ msgstr "bespreek" msgid "Booked Fixed Asset" msgstr "" -#: erpnext/accounts/general_ledger.py:847 +#: erpnext/accounts/general_ledger.py:849 msgid "Books have been closed till the period ending on {0}" msgstr "" @@ -9310,7 +9322,7 @@ msgstr "" msgid "Can be approved by {0}" msgstr "Kan goedgekeur word deur {0}" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2767 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2782 msgid "Can not close Work Order. Since {0} Job Cards are in Work In Progress state." msgstr "" @@ -9344,12 +9356,12 @@ msgid "Can only make payment against unbilled {0}" msgstr "Kan slegs betaling teen onbillike {0}" #: erpnext/accounts/doctype/payment_entry/payment_entry.js:1510 -#: erpnext/controllers/accounts_controller.py:3196 +#: erpnext/controllers/accounts_controller.py:3216 #: erpnext/public/js/controllers/accounts.js:100 msgid "Can refer row only if the charge type is 'On Previous Row Amount' or 'Previous Row Total'" msgstr "Kan slegs ry verwys as die lading tipe 'Op vorige rybedrag' of 'Vorige ry totaal' is" -#: erpnext/setup/doctype/company/company.py:207 +#: erpnext/setup/doctype/company/company.py:208 #: erpnext/stock/doctype/stock_settings/stock_settings.py:183 msgid "Can't change the valuation method, as there are transactions against some items which do not have its own valuation method" msgstr "" @@ -9395,7 +9407,7 @@ msgstr "" msgid "Cannot Calculate Arrival Time as Driver Address is Missing." msgstr "Kan nie die aankomstyd bereken nie, aangesien die adres van die bestuurder ontbreek." -#: erpnext/setup/doctype/company/company.py:226 +#: erpnext/setup/doctype/company/company.py:227 msgid "Cannot Change Inventory Account Setting" msgstr "" @@ -9403,9 +9415,9 @@ msgstr "" msgid "Cannot Create Return" msgstr "" -#: erpnext/stock/doctype/item/item.py:681 -#: erpnext/stock/doctype/item/item.py:694 -#: erpnext/stock/doctype/item/item.py:708 +#: erpnext/stock/doctype/item/item.py:682 +#: erpnext/stock/doctype/item/item.py:695 +#: erpnext/stock/doctype/item/item.py:709 msgid "Cannot Merge" msgstr "" @@ -9433,7 +9445,7 @@ msgstr "" msgid "Cannot apply TDS against multiple parties in one entry" msgstr "" -#: erpnext/stock/doctype/item/item.py:361 +#: erpnext/stock/doctype/item/item.py:362 msgid "Cannot be a fixed asset item as Stock Ledger is created." msgstr "Kan nie 'n vaste bateitem wees nie, aangesien Voorraadgrootboek geskep is." @@ -9453,7 +9465,7 @@ msgstr "" msgid "Cannot cancel as processing of cancelled documents is pending." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1180 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1187 msgid "Cannot cancel because submitted Stock Entry {0} exists" msgstr "Kan nie kanselleer nie aangesien ingevoerde Voorraadinskrywing {0} bestaan" @@ -9477,10 +9489,14 @@ msgstr "" msgid "Cannot cancel transaction for Completed Work Order." msgstr "Kan nie transaksie vir voltooide werkorder kanselleer nie." -#: erpnext/stock/doctype/item/item.py:981 +#: erpnext/stock/doctype/item/item.py:982 msgid "Cannot change Attributes after stock transaction. Make a new Item and transfer stock to the new Item" msgstr "Kan nie eienskappe verander na voorraadtransaksie nie. Maak 'n nuwe item en dra voorraad na die nuwe item" +#: erpnext/stock/doctype/item/item.py:1119 +msgid "Cannot change Item {0} from serialized to non-serialized because a Serial and Batch Bundle exists for it. Please delete or cancel the Serial and Batch Bundle first." +msgstr "" + #: erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py:74 msgid "Cannot change Reference Document Type." msgstr "" @@ -9489,11 +9505,11 @@ msgstr "" msgid "Cannot change Service Stop Date for item in row {0}" msgstr "Kan nie diensstopdatum vir item in ry {0} verander nie" -#: erpnext/stock/doctype/item/item.py:972 +#: erpnext/stock/doctype/item/item.py:973 msgid "Cannot change Variant properties after stock transaction. You will have to make a new Item to do this." msgstr "Kan nie Variant eiendomme verander na voorraad transaksie. Jy sal 'n nuwe item moet maak om dit te doen." -#: erpnext/setup/doctype/company/company.py:331 +#: erpnext/setup/doctype/company/company.py:332 msgid "Cannot change company's default currency, because there are existing transactions. Transactions must be cancelled to change the default currency." msgstr "Kan nie die maatskappy se standaard valuta verander nie, want daar is bestaande transaksies. Transaksies moet gekanselleer word om die verstek valuta te verander." @@ -9521,7 +9537,7 @@ msgstr "Kan nie in Groep verskuil word nie omdat rekeningtipe gekies is." msgid "Cannot create Intercompany {0}. All items in the source {1} have already been fully invoiced. Please check the existing linked {2}s." msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1016 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1021 msgid "Cannot create Stock Reservation Entries for future dated Purchase Receipts." msgstr "" @@ -9559,7 +9575,7 @@ msgstr "" msgid "Cannot delete Serial No {0}, as it is used in stock transactions" msgstr "Kan nie reeksnommer {0} uitvee nie, aangesien dit in voorraadtransaksies gebruik word" -#: erpnext/controllers/accounts_controller.py:3811 +#: erpnext/controllers/accounts_controller.py:3831 msgid "Cannot delete an item which has been ordered" msgstr "" @@ -9576,7 +9592,7 @@ msgstr "" msgid "Cannot disable Serial and Batch No for Item, as there are existing records for serial / batch." msgstr "" -#: erpnext/setup/doctype/company/company.py:561 +#: erpnext/setup/doctype/company/company.py:562 msgid "Cannot disable perpetual inventory, as there are existing Stock Ledger Entries for the company {0}. Please cancel the stock transactions first and try again." msgstr "" @@ -9584,7 +9600,7 @@ msgstr "" msgid "Cannot disable {0} as it may lead to incorrect stock valuation." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:792 +#: erpnext/manufacturing/doctype/work_order/work_order.py:799 msgid "Cannot disassemble more than produced quantity." msgstr "" @@ -9592,7 +9608,7 @@ msgstr "" msgid "Cannot disassemble {0} qty against Stock Entry {1}. Only {2} qty available to disassemble." msgstr "" -#: erpnext/setup/doctype/company/company.py:223 +#: erpnext/setup/doctype/company/company.py:224 msgid "Cannot enable Item-wise Inventory Account, as there are existing Stock Ledger Entries for the company {0} with Warehouse-wise Inventory Account. Please cancel the stock transactions first and try again." msgstr "" @@ -9617,7 +9633,7 @@ msgstr "" msgid "Cannot find Item with this Barcode" msgstr "Kan nie item met hierdie strepieskode vind nie" -#: erpnext/controllers/accounts_controller.py:3763 +#: erpnext/controllers/accounts_controller.py:3783 msgid "Cannot find a default warehouse for item {0}. Please set one in the Item Master or in Stock Settings." msgstr "" @@ -9625,15 +9641,15 @@ msgstr "" msgid "Cannot merge {0} '{1}' into '{2}' as both have existing accounting entries in different currencies for company '{3}'." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:642 +#: erpnext/manufacturing/doctype/work_order/work_order.py:643 msgid "Cannot produce more Item {0} than Sales Order quantity {1} {2}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1537 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1561 msgid "Cannot produce more item for {0}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1541 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1565 msgid "Cannot produce more than {0} items for {1}" msgstr "" @@ -9641,12 +9657,12 @@ msgstr "" msgid "Cannot receive from customer against negative outstanding" msgstr "" -#: erpnext/controllers/accounts_controller.py:3959 +#: erpnext/controllers/accounts_controller.py:3979 msgid "Cannot reduce quantity than ordered or purchased quantity" msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.js:1523 -#: erpnext/controllers/accounts_controller.py:3211 +#: erpnext/controllers/accounts_controller.py:3231 #: erpnext/public/js/controllers/accounts.js:117 msgid "Cannot refer row number greater than or equal to current row number for this Charge type" msgstr "Kan nie rynommer groter as of gelyk aan huidige rynommer vir hierdie Laai tipe verwys nie" @@ -9659,14 +9675,14 @@ msgstr "" msgid "Cannot retrieve link token. Check Error Log for more information" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:368 +#: erpnext/selling/doctype/customer/customer.py:369 msgid "Cannot select a Group type Customer Group. Please select a non-group Customer Group." msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.js:1516 #: erpnext/accounts/doctype/payment_entry/payment_entry.js:1694 #: erpnext/accounts/doctype/payment_entry/payment_entry.py:1848 -#: erpnext/controllers/accounts_controller.py:3201 +#: erpnext/controllers/accounts_controller.py:3221 #: erpnext/public/js/controllers/accounts.js:109 #: erpnext/public/js/controllers/taxes_and_totals.js:555 msgid "Cannot select charge type as 'On Previous Row Amount' or 'On Previous Row Total' for first row" @@ -9680,15 +9696,15 @@ msgstr "Kan nie as verlore gestel word nie aangesien verkoopsbestelling gemaak i msgid "Cannot set authorization on basis of Discount for {0}" msgstr "Kan nie magtiging instel op grond van Korting vir {0}" -#: erpnext/stock/doctype/item/item.py:772 +#: erpnext/stock/doctype/item/item.py:773 msgid "Cannot set multiple Item Defaults for a company." msgstr "Kan nie verskeie itemvoorkeure vir 'n maatskappy stel nie." -#: erpnext/controllers/accounts_controller.py:3925 +#: erpnext/controllers/accounts_controller.py:3945 msgid "Cannot set quantity less than delivered quantity." msgstr "" -#: erpnext/controllers/accounts_controller.py:3926 +#: erpnext/controllers/accounts_controller.py:3946 msgid "Cannot set quantity less than received quantity." msgstr "" @@ -9704,7 +9720,7 @@ msgstr "" msgid "Cannot submit Job Card {0} while it is On Hold. Please resume and complete the job before submission." msgstr "" -#: erpnext/controllers/accounts_controller.py:3953 +#: erpnext/controllers/accounts_controller.py:3973 msgid "Cannot update rate as item {0} is already ordered or purchased against this quotation" msgstr "" @@ -9737,7 +9753,7 @@ msgstr "" msgid "Capacity Planning" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1166 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1173 msgid "Capacity Planning Error, planned start time can not be same as end time" msgstr "Kapasiteitsbeplanningsfout, beplande begintyd kan nie dieselfde wees as eindtyd nie" @@ -9781,7 +9797,7 @@ msgstr "" msgid "Capital Work in Progress" msgstr "Kapitaalwerk in voortsetting" -#: erpnext/assets/doctype/asset/asset.js:223 +#: erpnext/assets/doctype/asset/asset.js:228 msgid "Capitalize Asset" msgstr "" @@ -9790,7 +9806,7 @@ msgstr "" msgid "Capitalize Repair Cost" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:221 +#: erpnext/assets/doctype/asset/asset.js:226 msgid "Capitalize this asset before submitting." msgstr "" @@ -10093,7 +10109,7 @@ msgstr "Verander die rekeningtipe na Ontvangbaar of kies 'n ander rekening." msgid "Change this date manually to setup the next synchronization start date" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:158 +#: erpnext/selling/doctype/customer/customer.py:159 msgid "Changed customer name to '{}' as '{}' already exists." msgstr "" @@ -10122,7 +10138,7 @@ msgid "Channel Partner" msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.py:2277 -#: erpnext/controllers/accounts_controller.py:3264 +#: erpnext/controllers/accounts_controller.py:3284 msgid "Charge of type 'Actual' in row {0} cannot be included in Item Rate or Paid Amount" msgstr "" @@ -10172,7 +10188,7 @@ msgstr "" #: erpnext/accounts/doctype/accounts_settings/accounts_settings.json #: erpnext/accounts/doctype/cost_center/cost_center_tree.js:52 #: erpnext/accounts/workspace/invoicing/invoicing.json -#: erpnext/public/js/setup_wizard.js:43 +#: erpnext/public/js/setup_wizard.js:138 #: erpnext/setup/doctype/company/company.js:123 #: erpnext/setup/doctype/company/company.json #: erpnext/setup/workspace/home/home.json @@ -10316,7 +10332,7 @@ msgstr "" #. Label of the reference_date (Date) field in DocType 'Payment Entry' #: erpnext/accounts/doctype/payment_entry/payment_entry.json -#: erpnext/public/js/controllers/transaction.js:2801 +#: erpnext/public/js/controllers/transaction.js:2823 msgid "Cheque/Reference Date" msgstr "Tjek / Verwysingsdatum" @@ -10374,7 +10390,7 @@ msgstr "" #. Label of the child_row_reference (Data) field in DocType 'Quality #. Inspection' -#: erpnext/public/js/controllers/transaction.js:2896 +#: erpnext/public/js/controllers/transaction.js:2918 #: erpnext/stock/doctype/quality_inspection/quality_inspection.json msgid "Child Row Reference" msgstr "" @@ -10577,7 +10593,7 @@ msgstr "Geslote dokument" msgid "Closed Documents" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2690 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2705 msgid "Closed Work Order can not be stopped or Re-opened" msgstr "" @@ -11038,7 +11054,7 @@ msgstr "" #. Label of the company (Link) field in DocType 'Issue' #. Label of the company (Link) field in DocType 'Warranty Claim' #. Label of a Workspace Sidebar Item -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:81 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:82 #: banking/src/pages/BankStatementImporter.tsx:84 #: erpnext/accounts/dashboard_chart_source/account_balance_timeline/account_balance_timeline.js:8 #: erpnext/accounts/doctype/account/account.json @@ -11348,11 +11364,11 @@ msgstr "" msgid "Company" msgstr "maatskappy" -#: erpnext/public/js/setup_wizard.js:36 +#: erpnext/public/js/setup_wizard.js:131 msgid "Company Abbreviation" msgstr "Maatskappy Afkorting" -#: erpnext/public/js/setup_wizard.js:174 +#: erpnext/public/js/setup_wizard.js:269 msgid "Company Abbreviation cannot have more than 5 characters" msgstr "Maatskappyafkorting kan nie meer as 5 karakters hê nie" @@ -11406,11 +11422,11 @@ msgstr "" msgid "Company Address Name" msgstr "" -#: erpnext/controllers/accounts_controller.py:4389 +#: erpnext/controllers/accounts_controller.py:4409 msgid "Company Address is missing. You don't have permission to create an Address. Please contact your System Manager." msgstr "" -#: erpnext/controllers/accounts_controller.py:4377 +#: erpnext/controllers/accounts_controller.py:4397 msgid "Company Address is missing. You don't have permission to update it. Please contact your System Manager." msgstr "" @@ -11486,7 +11502,7 @@ msgstr "" msgid "Company Logo" msgstr "" -#: erpnext/public/js/setup_wizard.js:77 +#: erpnext/public/js/setup_wizard.js:172 msgid "Company Name cannot be Company" msgstr "Maatskappy se naam kan nie Maatskappy wees nie" @@ -11516,7 +11532,7 @@ msgid "Company currencies of both the companies should match for Inter Company T msgstr "Maatskappy-geldeenhede van albei die maatskappye moet ooreenstem met Inter Company Transactions." #: erpnext/stock/doctype/material_request/material_request.js:380 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:851 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:856 msgid "Company field is required" msgstr "Ondernemingsveld word vereis" @@ -11532,7 +11548,7 @@ msgstr "" msgid "Company is mandatory for generating an invoice. Please set a default company in Global Defaults." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:85 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:86 msgid "Company is required" msgstr "" @@ -11546,7 +11562,7 @@ msgstr "" msgid "Company name not same" msgstr "Maatskappy se naam is nie dieselfde nie" -#: erpnext/assets/doctype/asset/asset.py:330 +#: erpnext/assets/doctype/asset/asset.py:334 msgid "Company of asset {0} and purchase document {1} doesn't matches." msgstr "Die maatskappy van bate {0} en die aankoopdokument {1} stem nie ooreen nie." @@ -11675,7 +11691,7 @@ msgstr "" msgid "Completed Qty" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1455 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1479 msgid "Completed Qty cannot be greater than 'Qty to Manufacture'" msgstr "Voltooide hoeveelheid kan nie groter wees as 'hoeveelheid om te vervaardig'" @@ -11786,8 +11802,8 @@ msgstr "" msgid "Conditions will be applied on all the selected items combined. " msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:395 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:413 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:396 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:414 msgid "Configure Accounts" msgstr "" @@ -12067,7 +12083,7 @@ msgstr "" msgid "Consumed Qty" msgstr "Verbruikte hoeveelheid" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1866 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1881 msgid "Consumed Qty cannot be greater than Reserved Qty for item {0}" msgstr "" @@ -12104,7 +12120,7 @@ msgstr "" msgid "Consumer Products" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:198 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:209 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:101 msgid "Consumption Rate" msgstr "" @@ -12224,7 +12240,7 @@ msgstr "" msgid "Contact Person" msgstr "" -#: erpnext/controllers/accounts_controller.py:585 +#: erpnext/controllers/accounts_controller.py:605 msgid "Contact Person does not belong to the {0}" msgstr "" @@ -12235,7 +12251,7 @@ msgstr "" #. Option for the 'Check' (Select) field in DocType 'Bank Transaction Rule #. Description Conditions' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:200 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:201 #: erpnext/accounts/doctype/bank_transaction_rule_description_conditions/bank_transaction_rule_description_conditions.json msgid "Contains" msgstr "" @@ -12412,23 +12428,23 @@ msgstr "Gesprekfaktor" msgid "Conversion Rate" msgstr "Omskakelingskoers" -#: erpnext/stock/doctype/item/item.py:444 +#: erpnext/stock/doctype/item/item.py:445 msgid "Conversion factor for default Unit of Measure must be 1 in row {0}" msgstr "Omskakelingsfaktor vir verstek Eenheid van maatstaf moet 1 in ry {0} wees." -#: erpnext/controllers/stock_controller.py:122 +#: erpnext/controllers/stock_controller.py:158 msgid "Conversion factor for item {0} has been reset to 1.0 as the uom {1} is same as stock uom {2}." msgstr "" -#: erpnext/controllers/accounts_controller.py:2979 +#: erpnext/controllers/accounts_controller.py:2999 msgid "Conversion rate cannot be 0" msgstr "" -#: erpnext/controllers/accounts_controller.py:2986 +#: erpnext/controllers/accounts_controller.py:3006 msgid "Conversion rate is 1.00, but document currency is different from company currency" msgstr "" -#: erpnext/controllers/accounts_controller.py:2982 +#: erpnext/controllers/accounts_controller.py:3002 msgid "Conversion rate must be 1.00 if document currency is same as company currency" msgstr "" @@ -12629,8 +12645,8 @@ msgstr "" #. Label of the cost_center (Link) field in DocType 'Subcontracting Receipt #. Supplied Item' #. Label of a Workspace Sidebar Item -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:591 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:650 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:567 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:626 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1179 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1223 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:593 @@ -12686,7 +12702,7 @@ msgstr "" #: erpnext/accounts/report/purchase_register/purchase_register.js:46 #: erpnext/accounts/report/sales_payment_summary/sales_payment_summary.py:29 #: erpnext/accounts/report/sales_register/sales_register.js:52 -#: erpnext/accounts/report/sales_register/sales_register.py:252 +#: erpnext/accounts/report/sales_register/sales_register.py:266 #: erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:79 #: erpnext/accounts/report/trial_balance/trial_balance.js:49 #: erpnext/assets/doctype/asset/asset.json @@ -12774,7 +12790,7 @@ msgid "Cost Center is required" msgstr "" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1472 -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:903 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:908 msgid "Cost Center is required in row {0} in Taxes table for type {1}" msgstr "Kostesentrum word benodig in ry {0} in Belasting tabel vir tipe {1}" @@ -12794,11 +12810,11 @@ msgstr "Kostesentrum met bestaande transaksies kan nie na grootboek omgeskakel w msgid "Cost Center {0} cannot be used for allocation as it is used as main cost center in other allocation record." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:358 +#: erpnext/assets/doctype/asset/asset.py:362 msgid "Cost Center {} doesn't belong to Company {}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:365 +#: erpnext/assets/doctype/asset/asset.py:369 msgid "Cost Center {} is a group cost center and group cost centers cannot be used in transactions" msgstr "" @@ -12939,11 +12955,11 @@ msgstr "" msgid "Could not auto create Customer due to the following missing mandatory field(s):" msgstr "Kon nie kliënt outomaties skep nie weens die volgende ontbrekende verpligte veld (e):" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:655 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:656 msgid "Could not create Credit Note automatically, please uncheck 'Issue Credit Note' and submit again" msgstr "Kon nie kredietnota outomaties skep nie. Merk asseblief die afskrif 'Kredietnota uitreik' en dien weer in" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:972 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:978 msgid "Could not detect any tables in this PDF. It may be a scanned or image-based statement, which is not supported (no OCR)." msgstr "" @@ -13066,7 +13082,7 @@ msgstr "" msgid "Create Asset Location" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:277 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:278 msgid "Create Bank Entry against" msgstr "" @@ -13244,7 +13260,7 @@ msgstr "Skep betalingsinskrywings" msgid "Create Payment Entry for Consolidated POS Invoices." msgstr "" -#: erpnext/public/js/controllers/transaction.js:543 +#: erpnext/public/js/controllers/transaction.js:565 msgid "Create Payment Request" msgstr "" @@ -13431,12 +13447,12 @@ msgstr "" msgid "Create Users" msgstr "Skep gebruikers" -#: erpnext/stock/doctype/item/item.js:1011 +#: erpnext/stock/doctype/item/item.js:1097 msgid "Create Variant" msgstr "Skep Variant" -#: erpnext/stock/doctype/item/item.js:816 -#: erpnext/stock/doctype/item/item.js:860 +#: erpnext/stock/doctype/item/item.js:909 +#: erpnext/stock/doctype/item/item.js:946 msgid "Create Variants" msgstr "Skep variante" @@ -13467,12 +13483,12 @@ msgstr "" msgid "Create a new rule to automatically classify transactions." msgstr "" -#: erpnext/stock/doctype/item/item.js:843 -#: erpnext/stock/doctype/item/item.js:1004 +#: erpnext/stock/doctype/item/item.js:929 +#: erpnext/stock/doctype/item/item.js:1090 msgid "Create a variant with the template image." msgstr "" -#: erpnext/stock/stock_ledger.py:2027 +#: erpnext/stock/stock_ledger.py:2033 msgid "Create an incoming stock transaction for the Item." msgstr "Skep 'n inkomende voorraadtransaksie vir die Item." @@ -13593,7 +13609,7 @@ msgstr "" msgid "Creating User..." msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:36 +#: erpnext/setup/setup_wizard/setup_wizard.py:44 msgid "Creating demo data" msgstr "" @@ -13602,7 +13618,7 @@ msgid "Creating {} out of {} {}" msgstr "Skep tans {} uit {} {}" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:141 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:154 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:165 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:46 msgid "Creation" msgstr "" @@ -13628,11 +13644,11 @@ msgstr "" #. Label of the credit_in_account_currency (Currency) field in DocType 'Journal #. Entry Account' #: banking/src/components/features/ActionLog/ActionLogDialogBody.tsx:199 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:594 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:693 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:570 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:669 #: banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx:133 #: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:140 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:404 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:405 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:596 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:711 #: erpnext/accounts/doctype/account/account.json @@ -13644,8 +13660,8 @@ msgstr "" #: erpnext/accounts/report/cheques_and_deposits_incorrectly_cleared/cheques_and_deposits_incorrectly_cleared.py:146 #: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:431 #: erpnext/accounts/report/general_ledger/general_ledger.html:167 -#: erpnext/accounts/report/purchase_register/purchase_register.py:241 -#: erpnext/accounts/report/sales_register/sales_register.py:277 +#: erpnext/accounts/report/purchase_register/purchase_register.py:257 +#: erpnext/accounts/report/sales_register/sales_register.py:291 #: erpnext/accounts/report/trial_balance/trial_balance.py:530 #: erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.py:212 #: erpnext/accounts/report/voucher_wise_balance/voucher_wise_balance.py:34 @@ -13660,7 +13676,7 @@ msgstr "" msgid "Credit ({0})" msgstr "Krediet ({0})" -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:643 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:650 msgid "Credit Account" msgstr "Kredietrekening" @@ -13737,7 +13753,7 @@ msgstr "" msgid "Credit Limit" msgstr "Krediet limiet" -#: erpnext/selling/doctype/customer/customer.py:643 +#: erpnext/selling/doctype/customer/customer.py:645 msgid "Credit Limit Crossed" msgstr "" @@ -13800,7 +13816,7 @@ msgstr "Kredietnota Uitgereik" msgid "Credit Note will update it's own outstanding amount, even if 'Return Against' is specified." msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:652 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:653 msgid "Credit Note {0} has been created automatically" msgstr "Kredietnota {0} is outomaties geskep" @@ -13808,7 +13824,7 @@ msgstr "Kredietnota {0} is outomaties geskep" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:383 #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:391 -#: erpnext/controllers/accounts_controller.py:2383 +#: erpnext/controllers/accounts_controller.py:2403 msgid "Credit To" msgstr "" @@ -13817,20 +13833,20 @@ msgstr "" msgid "Credit in Company Currency" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:609 -#: erpnext/selling/doctype/customer/customer.py:664 +#: erpnext/selling/doctype/customer/customer.py:611 +#: erpnext/selling/doctype/customer/customer.py:666 msgid "Credit limit has been crossed for customer {0} ({1}/{2})" msgstr "Kredietlimiet is gekruis vir kliënt {0} ({1} / {2})" -#: erpnext/selling/doctype/customer/customer.py:395 +#: erpnext/selling/doctype/customer/customer.py:396 msgid "Credit limit is already defined for the Company {0}" msgstr "Kredietlimiet is reeds gedefinieër vir die maatskappy {0}" -#: erpnext/selling/doctype/customer/customer.py:663 +#: erpnext/selling/doctype/customer/customer.py:665 msgid "Credit limit reached for customer {0}" msgstr "Kredietlimiet vir kliënt {0} bereik" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:213 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:215 msgid "Creditor Turnover Ratio" msgstr "" @@ -14113,7 +14129,7 @@ msgstr "" msgid "Current Qty" msgstr "Huidige hoeveelheid" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:152 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:154 msgid "Current Ratio" msgstr "" @@ -14300,7 +14316,7 @@ msgstr "" #: erpnext/accounts/report/pos_register/pos_register.py:120 #: erpnext/accounts/report/pos_register/pos_register.py:181 #: erpnext/accounts/report/sales_register/sales_register.js:21 -#: erpnext/accounts/report/sales_register/sales_register.py:187 +#: erpnext/accounts/report/sales_register/sales_register.py:201 #: erpnext/assets/doctype/asset/asset.json #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/supplier/supplier.js:225 @@ -14364,7 +14380,7 @@ msgstr "" #: erpnext/stock/doctype/pick_list/pick_list.json #: erpnext/stock/doctype/serial_no/serial_no.json #: erpnext/stock/doctype/shipment/shipment.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:489 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:494 #: erpnext/stock/doctype/warehouse/warehouse.json #: erpnext/stock/report/delayed_item_report/delayed_item_report.js:36 #: erpnext/stock/report/delayed_item_report/delayed_item_report.py:121 @@ -14576,7 +14592,7 @@ msgstr "" #: erpnext/accounts/report/gross_profit/gross_profit.py:423 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:208 #: erpnext/accounts/report/sales_register/sales_register.js:27 -#: erpnext/accounts/report/sales_register/sales_register.py:202 +#: erpnext/accounts/report/sales_register/sales_register.py:216 #: erpnext/crm/doctype/opportunity/opportunity.json #: erpnext/crm/doctype/prospect/prospect.json #: erpnext/crm/workspace/crm/crm.json @@ -14687,7 +14703,7 @@ msgstr "" #: erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:35 #: erpnext/accounts/report/gross_profit/gross_profit.py:430 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:228 -#: erpnext/accounts/report/sales_register/sales_register.py:193 +#: erpnext/accounts/report/sales_register/sales_register.py:207 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/crm/doctype/opportunity/opportunity.json #: erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.json @@ -14786,7 +14802,7 @@ msgstr "" msgid "Customer Provided Item Cost" msgstr "" -#: erpnext/setup/doctype/company/company.py:487 +#: erpnext/setup/doctype/company/company.py:488 msgid "Customer Service" msgstr "Kliëntediens" @@ -14845,7 +14861,7 @@ msgstr "Kliënt benodig vir 'Customerwise Discount'" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1190 #: erpnext/selling/doctype/sales_order/sales_order.py:436 -#: erpnext/stock/doctype/delivery_note/delivery_note.py:406 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:407 msgid "Customer {0} does not belong to project {1}" msgstr "Kliënt {0} behoort nie aan projek nie {1}" @@ -14946,7 +14962,7 @@ msgid "Cycle/Second" msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:204 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:243 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:254 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:146 msgid "D - E" msgstr "" @@ -15186,11 +15202,11 @@ msgstr "" #. Label of the debit_in_account_currency (Currency) field in DocType 'Journal #. Entry Account' #: banking/src/components/features/ActionLog/ActionLogDialogBody.tsx:198 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:593 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:673 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:569 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:649 #: banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx:126 #: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:133 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:403 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:404 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:595 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:696 #: erpnext/accounts/doctype/account/account.json @@ -15202,8 +15218,8 @@ msgstr "" #: erpnext/accounts/report/cheques_and_deposits_incorrectly_cleared/cheques_and_deposits_incorrectly_cleared.py:139 #: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:424 #: erpnext/accounts/report/general_ledger/general_ledger.html:166 -#: erpnext/accounts/report/purchase_register/purchase_register.py:240 -#: erpnext/accounts/report/sales_register/sales_register.py:276 +#: erpnext/accounts/report/purchase_register/purchase_register.py:256 +#: erpnext/accounts/report/sales_register/sales_register.py:290 #: erpnext/accounts/report/trial_balance/trial_balance.py:523 #: erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.py:205 #: erpnext/accounts/report/voucher_wise_balance/voucher_wise_balance.py:27 @@ -15224,7 +15240,7 @@ msgstr "Debiet ({0})" msgid "Debit / Credit Note Posting Date" msgstr "" -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:633 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:640 msgid "Debit Account" msgstr "Debietrekening" @@ -15296,7 +15312,7 @@ msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1061 #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1072 -#: erpnext/controllers/accounts_controller.py:2383 +#: erpnext/controllers/accounts_controller.py:2403 msgid "Debit To" msgstr "" @@ -15340,11 +15356,11 @@ msgstr "" msgid "Debits" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:170 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:172 msgid "Debt Equity Ratio" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:212 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:214 msgid "Debtor Turnover Ratio" msgstr "" @@ -15453,14 +15469,14 @@ msgstr "" #. Label of the default_advance_paid_account (Link) field in DocType 'Company' #: erpnext/setup/doctype/company/company.json -#: erpnext/setup/doctype/company/company.py:316 +#: erpnext/setup/doctype/company/company.py:317 msgid "Default Advance Paid Account" msgstr "" #. Label of the default_advance_received_account (Link) field in DocType #. 'Company' #: erpnext/setup/doctype/company/company.json -#: erpnext/setup/doctype/company/company.py:305 +#: erpnext/setup/doctype/company/company.py:306 msgid "Default Advance Received Account" msgstr "" @@ -15475,19 +15491,19 @@ msgstr "" msgid "Default BOM" msgstr "" -#: erpnext/stock/doctype/item/item.py:487 +#: erpnext/stock/doctype/item/item.py:488 msgid "Default BOM ({0}) must be active for this item or its template" msgstr "Standaard BOM ({0}) moet vir hierdie item of sy sjabloon aktief wees" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2458 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2473 msgid "Default BOM for {0} not found" msgstr "Verstek BOM vir {0} nie gevind nie" -#: erpnext/controllers/accounts_controller.py:3997 +#: erpnext/controllers/accounts_controller.py:4017 msgid "Default BOM not found for FG Item {0}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2455 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2470 msgid "Default BOM not found for Item {0} and Project {1}" msgstr "Verstek BOM nie gevind vir Item {0} en Projek {1}" @@ -15819,15 +15835,15 @@ msgstr "" msgid "Default Unit of Measure" msgstr "" -#: erpnext/stock/doctype/item/item.py:1376 +#: erpnext/stock/doctype/item/item.py:1396 msgid "Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You need to either cancel the linked documents or create a new Item." msgstr "" -#: erpnext/stock/doctype/item/item.py:1359 +#: erpnext/stock/doctype/item/item.py:1379 msgid "Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You will need to create a new Item to use a different Default UOM." msgstr "Verstekeenheid van item vir item {0} kan nie direk verander word nie omdat jy reeds 'n transaksie (s) met 'n ander UOM gemaak het. Jy sal 'n nuwe item moet skep om 'n ander standaard UOM te gebruik." -#: erpnext/stock/doctype/item/item.py:1007 +#: erpnext/stock/doctype/item/item.py:1008 msgid "Default Unit of Measure for Variant '{0}' must be same as in Template '{1}'" msgstr "Standaard eenheid van maatstaf vir variant '{0}' moet dieselfde wees as in Sjabloon '{1}'" @@ -16123,7 +16139,7 @@ msgstr "" #. Order' #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/purchase_order/purchase_order_list.js:20 -#: erpnext/controllers/website_list_for_contact.py:212 +#: erpnext/controllers/website_list_for_contact.py:213 #: erpnext/stock/doctype/serial_no/serial_no.json #: erpnext/stock/doctype/shipment/shipment.json #: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.json @@ -16282,7 +16298,7 @@ msgstr "" #: erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.js:22 #: erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:21 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:291 -#: erpnext/accounts/report/sales_register/sales_register.py:245 +#: erpnext/accounts/report/sales_register/sales_register.py:259 #: erpnext/selling/doctype/sales_order/sales_order.js:1048 #: erpnext/selling/doctype/sales_order/sales_order_list.js:81 #: erpnext/selling/doctype/selling_settings/selling_settings.js:52 @@ -16509,7 +16525,7 @@ msgstr "" #. Option for the 'Transaction Type' (Select) field in DocType 'Bank #. Transaction Rule' #: banking/src/components/features/BankReconciliation/BankTransactionList.tsx:95 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:162 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:163 #: banking/src/components/features/BankStatementImporter/CSV/StatementDetails.tsx:247 #: banking/src/components/features/BankStatementImporter/CSV/StatementDetails.tsx:314 #: banking/src/pages/BankStatementImporter.tsx:194 @@ -16558,7 +16574,7 @@ msgstr "waardevermindering" #. Label of the depreciation_amount (Currency) field in DocType 'Depreciation #. Schedule' #: erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py:172 -#: erpnext/assets/doctype/asset/asset.js:379 +#: erpnext/assets/doctype/asset/asset.js:384 #: erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json msgid "Depreciation Amount" msgstr "Waardevermindering Bedrag" @@ -16589,7 +16605,7 @@ msgstr "Waardevermindering Uitgeëis as gevolg van verkoop van bates" #: erpnext/accounts/doctype/journal_entry/journal_entry.json #: erpnext/accounts/doctype/journal_entry_template/journal_entry_template.json #: erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py:190 -#: erpnext/assets/doctype/asset/asset.js:122 +#: erpnext/assets/doctype/asset/asset.js:127 msgid "Depreciation Entry" msgstr "Waardevermindering Inskrywing" @@ -16598,7 +16614,7 @@ msgstr "Waardevermindering Inskrywing" msgid "Depreciation Entry Posting Status" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1257 +#: erpnext/assets/doctype/asset/asset.py:1261 msgid "Depreciation Entry against asset {0}" msgstr "" @@ -16641,15 +16657,15 @@ msgstr "" msgid "Depreciation Posting Date" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:918 +#: erpnext/assets/doctype/asset/asset.js:927 msgid "Depreciation Posting Date cannot be before Available-for-use Date" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:387 +#: erpnext/assets/doctype/asset/asset.py:391 msgid "Depreciation Row {0}: Depreciation Posting Date cannot be before Available-for-use Date" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:717 +#: erpnext/assets/doctype/asset/asset.py:721 msgid "Depreciation Row {0}: Expected value after useful life must be greater than or equal to {1}" msgstr "Waardeverminderingsreeks {0}: Verwagte waarde na nuttige lewensduur moet groter as of gelyk wees aan {1}" @@ -16677,7 +16693,7 @@ msgstr "Waardeverminderingskedule" msgid "Depreciation Schedule View" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:482 +#: erpnext/assets/doctype/asset/asset.py:486 msgid "Depreciation cannot be calculated for fully depreciated assets" msgstr "" @@ -16772,7 +16788,7 @@ msgstr "" #. Label of the difference (Currency) field in DocType 'POS Closing Entry #. Detail' #: banking/src/components/features/BankReconciliation/BankBalance.tsx:106 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:792 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:768 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:871 #: erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.json #: erpnext/accounts/doctype/bisect_nodes/bisect_nodes.json @@ -17049,7 +17065,7 @@ msgstr "" msgid "Disabled items cannot be selected in any transaction." msgstr "" -#: erpnext/controllers/accounts_controller.py:911 +#: erpnext/controllers/accounts_controller.py:931 msgid "Disabled pricing rules since this {} is an internal transfer" msgstr "" @@ -17058,7 +17074,7 @@ msgstr "" msgid "Disabled suppliers are hidden from selection in new transactions but remain in historical records" msgstr "" -#: erpnext/controllers/accounts_controller.py:925 +#: erpnext/controllers/accounts_controller.py:945 msgid "Disabled tax included prices since this {} is an internal transfer" msgstr "" @@ -17075,8 +17091,8 @@ msgstr "" #. Option for the 'Purpose' (Select) field in DocType 'Stock Entry' #. Option for the 'Purpose' (Select) field in DocType 'Stock Entry Type' #: erpnext/manufacturing/doctype/work_order/work_order.js:1068 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:387 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:430 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:392 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:435 #: erpnext/stock/doctype/stock_entry/stock_entry.json #: erpnext/stock/doctype/stock_entry_type/stock_entry_type.json msgid "Disassemble" @@ -17360,7 +17376,7 @@ msgstr "" msgid "Dislikes" msgstr "Hou nie van nie" -#: erpnext/setup/doctype/company/company.py:481 +#: erpnext/setup/doctype/company/company.py:482 msgid "Dispatch" msgstr "versending" @@ -17610,7 +17626,7 @@ msgstr "" msgid "Do not use Batch-wise Valuation" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:956 +#: erpnext/assets/doctype/asset/asset.js:965 msgid "Do you really want to restore this scrapped asset?" msgstr "Wil jy hierdie geskrapde bate regtig herstel?" @@ -17947,7 +17963,7 @@ msgstr "" msgid "Duplicate Entry. Please check Authorization Rule {0}" msgstr "Duplikaat Inskrywing. Gaan asseblief die magtigingsreël {0}" -#: erpnext/assets/doctype/asset/asset.py:414 +#: erpnext/assets/doctype/asset/asset.py:418 msgid "Duplicate Finance Book" msgstr "" @@ -18562,7 +18578,7 @@ msgstr "" msgid "Ems(Pica)" msgstr "" -#: erpnext/public/js/controllers/transaction.js:2965 +#: erpnext/public/js/controllers/transaction.js:2981 msgid "Enable {0} on the Item master to proceed with {1} inspection." msgstr "" @@ -18588,7 +18604,7 @@ msgstr "" msgid "Enable Auto Email" msgstr "" -#: erpnext/stock/doctype/item/item.py:1168 +#: erpnext/stock/doctype/item/item.py:1188 msgid "Enable Auto Re-Order" msgstr "Aktiveer outomatiese herbestelling" @@ -18920,7 +18936,7 @@ msgstr "Einddatum kan nie voor die begin datum wees nie." msgid "End Time" msgstr "" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:362 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:367 msgid "End Transit" msgstr "" @@ -18967,7 +18983,7 @@ msgstr "" msgid "Ends With" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:202 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:203 msgid "Ends with" msgstr "" @@ -19037,7 +19053,7 @@ msgstr "" msgid "Enter amount to be redeemed." msgstr "Voer die bedrag in wat afgelos moet word." -#: erpnext/stock/doctype/item/item.js:1173 +#: erpnext/stock/doctype/item/item.js:1259 msgid "Enter an Item Code, the name will be auto-filled the same as Item Code on clicking inside the Item Name field." msgstr "" @@ -19049,11 +19065,11 @@ msgstr "Voer die kliënt se e-posadres in" msgid "Enter customer's phone number" msgstr "Voer die kliënt se telefoonnommer in" -#: erpnext/assets/doctype/asset/asset.js:927 +#: erpnext/assets/doctype/asset/asset.js:936 msgid "Enter date to scrap asset" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:480 +#: erpnext/assets/doctype/asset/asset.py:484 msgid "Enter depreciation details" msgstr "Voer waardeverminderingsbesonderhede in" @@ -19094,7 +19110,7 @@ msgstr "" msgid "Enter the name of the bank or lending institution before submitting." msgstr "" -#: erpnext/stock/doctype/item/item.js:1199 +#: erpnext/stock/doctype/item/item.js:1285 msgid "Enter the opening stock units." msgstr "" @@ -19125,7 +19141,7 @@ msgstr "Vermaak Uitgawes" msgid "Entity" msgstr "" -#: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:190 +#: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:182 msgid "Entries below have a posting date after {0} but the clearance date is before {1}." msgstr "" @@ -19189,7 +19205,7 @@ msgstr "" msgid "Error in party matching for Bank Transaction {0}" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:350 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:326 msgid "Error uploading attachments" msgstr "" @@ -19258,7 +19274,7 @@ msgstr "" msgid "Example URL" msgstr "" -#: erpnext/stock/doctype/item/item.py:1099 +#: erpnext/stock/doctype/item/item.py:1100 msgid "Example of a linked document: {0}" msgstr "" @@ -19278,7 +19294,7 @@ msgstr "" msgid "Example: If the transaction amount is 200, then this will be calculated as {} = {}" msgstr "" -#: erpnext/stock/stock_ledger.py:2290 +#: erpnext/stock/stock_ledger.py:2315 msgid "Example: Serial No {0} reserved in {1}." msgstr "" @@ -19336,12 +19352,12 @@ msgstr "" #: erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.json #: erpnext/accounts/doctype/purchase_invoice_advance/purchase_invoice_advance.json #: erpnext/accounts/doctype/sales_invoice_advance/sales_invoice_advance.json -#: erpnext/setup/doctype/company/company.py:674 +#: erpnext/setup/doctype/company/company.py:675 msgid "Exchange Gain/Loss" msgstr "Uitruil wins / verlies" -#: erpnext/controllers/accounts_controller.py:1784 -#: erpnext/controllers/accounts_controller.py:1869 +#: erpnext/controllers/accounts_controller.py:1804 +#: erpnext/controllers/accounts_controller.py:1889 msgid "Exchange Gain/Loss amount has been booked through {0}" msgstr "" @@ -19438,7 +19454,7 @@ msgstr "Wisselkoers moet dieselfde wees as {0} {1} ({2})" msgid "Excise Entry" msgstr "" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:1525 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:1530 msgid "Excise Invoice" msgstr "Aksynsfaktuur" @@ -19648,7 +19664,7 @@ msgstr "" msgid "Expense" msgstr "koste" -#: erpnext/controllers/stock_controller.py:942 +#: erpnext/controllers/stock_controller.py:982 msgid "Expense / Difference account ({0}) must be a 'Profit or Loss' account" msgstr "Uitgawe / Verskil rekening ({0}) moet 'n 'Wins of verlies' rekening wees" @@ -19694,7 +19710,7 @@ msgstr "Uitgawe / Verskil rekening ({0}) moet 'n 'Wins of verlies' r msgid "Expense Account" msgstr "Uitgawe rekening" -#: erpnext/controllers/stock_controller.py:922 +#: erpnext/controllers/stock_controller.py:962 msgid "Expense Account Missing" msgstr "Uitgawe-rekening ontbreek" @@ -19746,7 +19762,7 @@ msgid "Expenses Included In Valuation" msgstr "Uitgawes Ingesluit in Waardasie" #: erpnext/stock/doctype/pick_list/pick_list.py:310 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:513 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:518 msgid "Expired Batches" msgstr "Vervaldatums" @@ -19878,7 +19894,7 @@ msgid "FIFO Stock Queue (qty, rate)" msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:179 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:218 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:229 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:121 msgid "FIFO/LIFO Queue" msgstr "" @@ -19901,8 +19917,8 @@ msgstr "" msgid "Failed to Authenticate the API key." msgstr "Kon nie die API-sleutel verifieer nie." -#: erpnext/setup/setup_wizard/setup_wizard.py:37 -#: erpnext/setup/setup_wizard/setup_wizard.py:38 +#: erpnext/setup/setup_wizard/setup_wizard.py:45 +#: erpnext/setup/setup_wizard/setup_wizard.py:46 msgid "Failed to create demo data" msgstr "" @@ -19918,8 +19934,8 @@ msgstr "" msgid "Failed to erase demo data, please delete the demo company manually." msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:16 #: erpnext/setup/setup_wizard/setup_wizard.py:17 +#: erpnext/setup/setup_wizard/setup_wizard.py:18 msgid "Failed to install presets" msgstr "Kon nie presets installeer nie" @@ -19927,7 +19943,12 @@ msgstr "Kon nie presets installeer nie" msgid "Failed to parse MT940 format. Error: {0}" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:264 +#: erpnext/setup/setup_wizard/setup_wizard.py:34 +#: erpnext/setup/setup_wizard/setup_wizard.py:36 +msgid "Failed to personalize your setup" +msgstr "" + +#: erpnext/assets/doctype/asset/asset.js:269 msgid "Failed to post depreciation entries" msgstr "" @@ -19939,20 +19960,20 @@ msgstr "" msgid "Failed to send email for campaign {0} to {1}" msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:26 +#: erpnext/setup/setup_wizard/setup_wizard.py:27 msgid "Failed to set defaults" msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:21 #: erpnext/setup/setup_wizard/setup_wizard.py:22 +#: erpnext/setup/setup_wizard/setup_wizard.py:23 msgid "Failed to setup company" msgstr "Kon nie maatskappy opstel nie" -#: erpnext/setup/setup_wizard/setup_wizard.py:28 +#: erpnext/setup/setup_wizard/setup_wizard.py:29 msgid "Failed to setup defaults" msgstr "Kon nie standaardinstellings instel nie" -#: erpnext/setup/doctype/company/company.py:856 +#: erpnext/setup/doctype/company/company.py:857 msgid "Failed to setup defaults for country {0}. Please contact support." msgstr "" @@ -20064,7 +20085,7 @@ msgid "Fetch Value From" msgstr "" #: erpnext/stock/doctype/material_request/material_request.js:372 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:828 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:833 msgid "Fetch exploded BOM (including sub-assemblies)" msgstr "Haal ontplof BOM (insluitend sub-gemeentes)" @@ -20092,7 +20113,7 @@ msgid "Fetching Sales Orders..." msgstr "" #: erpnext/accounts/doctype/dunning/dunning.js:135 -#: erpnext/public/js/controllers/transaction.js:1611 +#: erpnext/public/js/controllers/transaction.js:1633 msgid "Fetching exchange rates ..." msgstr "" @@ -20336,7 +20357,7 @@ msgstr "" msgid "Financial Statements" msgstr "Finansiële state" -#: erpnext/public/js/setup_wizard.js:48 +#: erpnext/public/js/setup_wizard.js:143 msgid "Financial Year Begins On" msgstr "" @@ -20405,15 +20426,15 @@ msgstr "" msgid "Finished Good Item Quantity" msgstr "" -#: erpnext/controllers/accounts_controller.py:3983 +#: erpnext/controllers/accounts_controller.py:4003 msgid "Finished Good Item is not specified for service item {0}" msgstr "" -#: erpnext/controllers/accounts_controller.py:4000 +#: erpnext/controllers/accounts_controller.py:4020 msgid "Finished Good Item {0} Qty can not be zero" msgstr "" -#: erpnext/controllers/accounts_controller.py:3994 +#: erpnext/controllers/accounts_controller.py:4014 msgid "Finished Good Item {0} must be a sub-contracted item" msgstr "" @@ -20459,7 +20480,7 @@ msgid "Finished Good {0} must be a sub-contracted item." msgstr "" #: erpnext/selling/doctype/sales_order/sales_order.js:1437 -#: erpnext/setup/doctype/company/company.py:386 +#: erpnext/setup/doctype/company/company.py:387 msgid "Finished Goods" msgstr "Voltooide goedere" @@ -20649,7 +20670,7 @@ msgstr "Vaste bate" #. Capitalization Asset Item' #. Label of the fixed_asset_account (Link) field in DocType 'Asset Category #. Account' -#: erpnext/assets/doctype/asset/asset.py:899 +#: erpnext/assets/doctype/asset/asset.py:903 #: erpnext/assets/doctype/asset_capitalization_asset_item/asset_capitalization_asset_item.json #: erpnext/assets/doctype/asset_category_account/asset_category_account.json msgid "Fixed Asset Account" @@ -20660,7 +20681,7 @@ msgstr "" msgid "Fixed Asset Defaults" msgstr "" -#: erpnext/stock/doctype/item/item.py:355 +#: erpnext/stock/doctype/item/item.py:356 msgid "Fixed Asset Item must be a non-stock item." msgstr "Vaste bate-item moet 'n nie-voorraaditem wees." @@ -20671,7 +20692,7 @@ msgstr "Vaste bate-item moet 'n nie-voorraaditem wees." msgid "Fixed Asset Register" msgstr "Vaste bateregister" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:211 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:213 msgid "Fixed Asset Turnover Ratio" msgstr "" @@ -20753,7 +20774,7 @@ msgstr "" msgid "Following Material Requests have been raised automatically based on Item's re-order level" msgstr "Volgende Materiële Versoeke is outomaties opgestel op grond van die item se herbestellingsvlak" -#: erpnext/selling/doctype/customer/customer.py:834 +#: erpnext/selling/doctype/customer/customer.py:836 msgid "Following fields are mandatory to create address:" msgstr "Die volgende velde is verpligtend om adres te skep:" @@ -20810,7 +20831,7 @@ msgstr "" msgid "For Item" msgstr "" -#: erpnext/controllers/stock_controller.py:1645 +#: erpnext/controllers/stock_controller.py:1685 msgid "For Item {0} cannot be received more than {1} qty against the {2} {3}" msgstr "" @@ -20854,7 +20875,7 @@ msgstr "Vir Hoeveelheid (Vervaardigde Aantal) is verpligtend" msgid "For Raw Materials" msgstr "" -#: erpnext/controllers/accounts_controller.py:1449 +#: erpnext/controllers/accounts_controller.py:1469 msgid "For Return Invoices with Stock effect, '0' qty Items are not allowed. Following rows are affected: {0}" msgstr "" @@ -20938,7 +20959,7 @@ msgstr "" msgid "For operation {0} at row {1}, please add raw materials or set a BOM against it." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2837 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2852 msgid "For operation {0}: Quantity ({1}) can not be greater than pending quantity({2})" msgstr "" @@ -20992,12 +21013,12 @@ msgstr "" msgid "For the item {0}, the consumed quantity should be {1} according to the BOM {2}." msgstr "" -#: erpnext/public/js/controllers/transaction.js:1421 +#: erpnext/public/js/controllers/transaction.js:1443 msgctxt "Clear payment terms template and/or payment schedule when due date is changed" msgid "For the new {0} to take effect, would you like to clear the current {1}?" msgstr "" -#: erpnext/controllers/stock_controller.py:443 +#: erpnext/controllers/stock_controller.py:483 msgid "For the {0}, no stock is available for the return in the warehouse {1}." msgstr "" @@ -21613,15 +21634,11 @@ msgstr "Toekomstige betalings" msgid "Future date is not allowed" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:258 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:269 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:161 msgid "G - D" msgstr "" -#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:16 -msgid "GENERAL LEDGER" -msgstr "" - #: banking/src/components/features/BankReconciliation/BankPicker.tsx:127 #: banking/src/components/features/BankReconciliation/SelectedTransactionDetails.tsx:64 msgid "GL Account" @@ -21696,7 +21713,7 @@ msgstr "" #: erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:134 #: erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:220 -#: erpnext/setup/doctype/company/company.py:682 +#: erpnext/setup/doctype/company/company.py:683 msgid "Gain/Loss on Asset Disposal" msgstr "Wins / verlies op bateverkope" @@ -21785,7 +21802,7 @@ msgstr "" msgid "Generate Demand" msgstr "" -#: erpnext/public/js/setup_wizard.js:54 +#: erpnext/public/js/setup_wizard.js:149 msgid "Generate Demo Data for Exploration" msgstr "" @@ -21945,11 +21962,11 @@ msgstr "" #: erpnext/stock/doctype/material_request/material_request.js:238 #: erpnext/stock/doctype/purchase_receipt/purchase_receipt.js:144 #: erpnext/stock/doctype/purchase_receipt/purchase_receipt.js:244 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:456 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:503 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:536 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:627 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:795 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:461 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:508 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:541 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:632 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:800 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:165 msgid "Get Items From" msgstr "Kry items van" @@ -21965,8 +21982,8 @@ msgid "Get Items for Purchase Only" msgstr "" #: erpnext/stock/doctype/material_request/material_request.js:346 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:831 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:844 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:836 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:849 msgid "Get Items from BOM" msgstr "Kry items van BOM" @@ -22150,7 +22167,7 @@ msgstr "" msgid "Goods" msgstr "" -#: erpnext/setup/doctype/company/company.py:387 +#: erpnext/setup/doctype/company/company.py:388 #: erpnext/stock/doctype/stock_entry/stock_entry_list.js:34 msgid "Goods In Transit" msgstr "Goedere In Transito" @@ -22280,8 +22297,8 @@ msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json #: erpnext/accounts/doctype/subscription/subscription.json #: erpnext/accounts/report/pos_register/pos_register.py:202 -#: erpnext/accounts/report/purchase_register/purchase_register.py:275 -#: erpnext/accounts/report/sales_register/sales_register.py:305 +#: erpnext/accounts/report/purchase_register/purchase_register.py:291 +#: erpnext/accounts/report/sales_register/sales_register.py:319 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/supplier_quotation/supplier_quotation.json #: erpnext/manufacturing/doctype/production_plan_sales_order/production_plan_sales_order.json @@ -22403,7 +22420,7 @@ msgstr "Bruto wins / verlies" msgid "Gross Profit Percent" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:171 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:173 msgid "Gross Profit Ratio" msgstr "" @@ -22513,7 +22530,7 @@ msgstr "groepe" msgid "Growth View" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:268 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:279 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:171 msgid "H - F" msgstr "" @@ -22780,7 +22797,7 @@ msgstr "" msgid "Here are the error logs for the aforementioned failed depreciation entries: {0}" msgstr "" -#: erpnext/stock/stock_ledger.py:2012 +#: erpnext/stock/stock_ledger.py:2018 msgid "Here are the options to proceed:" msgstr "" @@ -22968,6 +22985,10 @@ msgstr "" msgid "How Pricing Rule is applied?" msgstr "" +#: erpnext/public/js/setup_wizard.js:40 +msgid "How big is the team?" +msgstr "" + #. Label of the frequency (Select) field in DocType 'Email Digest' #: erpnext/setup/doctype/email_digest/email_digest.json msgid "How frequently?" @@ -23007,7 +23028,7 @@ msgstr "" msgid "Hrs" msgstr "" -#: erpnext/setup/doctype/company/company.py:493 +#: erpnext/setup/doctype/company/company.py:494 msgid "Human Resources" msgstr "Menslike hulpbronne" @@ -23021,12 +23042,12 @@ msgstr "" msgid "Hundredweight (US)" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:283 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:294 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:186 msgid "I - J" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:293 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:304 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:196 msgid "I - K" msgstr "" @@ -23191,7 +23212,7 @@ msgstr "" msgid "If checked, updates inventory; stock and accounting entries are created together. Leave unchecked if a Purchase Receipt is created separately." msgstr "" -#: erpnext/public/js/setup_wizard.js:56 +#: erpnext/public/js/setup_wizard.js:151 msgid "If checked, we will create demo data for you to explore the system. This demo data can be erased later." msgstr "" @@ -23423,7 +23444,7 @@ msgstr "" msgid "If no taxes are set, and Taxes and Charges Template is selected, the system will automatically apply the taxes from the chosen template." msgstr "" -#: erpnext/stock/stock_ledger.py:2022 +#: erpnext/stock/stock_ledger.py:2028 msgid "If not, you can Cancel / Submit this entry" msgstr "" @@ -23441,7 +23462,7 @@ msgstr "" msgid "If rate is zero then item will be treated as \"Free Item\"" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:258 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:259 msgid "If rule matches, then:" msgstr "" @@ -23469,7 +23490,7 @@ msgstr "" msgid "If the account is frozen, entries are allowed to restricted users." msgstr "" -#: erpnext/stock/stock_ledger.py:2015 +#: erpnext/stock/stock_ledger.py:2021 msgid "If the item is transacting as a Zero Valuation Rate item in this entry, please enable 'Allow Zero Valuation Rate' in the {0} Item table." msgstr "As die item in hierdie inskrywing as 'n nulwaardasietempo-item handel, skakel u 'Laat nulwaardasietarief toe' in die {0} Itemtabel aan." @@ -23556,7 +23577,7 @@ msgstr "" msgid "If yes, then this warehouse will be used to store rejected materials" msgstr "" -#: erpnext/stock/doctype/item/item.js:1185 +#: erpnext/stock/doctype/item/item.js:1271 msgid "If you are maintaining stock of this Item in your Inventory, ERPNext will make a stock ledger entry for each transaction of this item." msgstr "" @@ -23728,7 +23749,7 @@ msgstr "" msgid "Ignores legacy Is Opening field in GL Entry that allows adding opening balance post the system is in use while generating reports" msgstr "" -#: erpnext/stock/doctype/item/item.py:253 +#: erpnext/stock/doctype/item/item.py:254 msgid "Image in the description has been removed. To disable this behavior, uncheck \"{0}\" in {1}." msgstr "" @@ -24021,7 +24042,7 @@ msgstr "" msgid "In this case, the amount will be calculated as 25% of the transaction amount. If the transaction amount is 200, then this will be calculated as 200 * 0.25 = 50." msgstr "" -#: erpnext/stock/doctype/item/item.js:1218 +#: erpnext/stock/doctype/item/item.js:1304 msgid "In this section, you can define Company-wide transaction-related defaults for this Item. Eg. Default Warehouse, Default Price List, Supplier, etc." msgstr "" @@ -24330,7 +24351,7 @@ msgstr "" #: erpnext/stock/report/available_serial_no/available_serial_no.py:146 #: erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py:167 #: erpnext/stock/report/stock_ledger/stock_ledger.py:361 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:193 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:204 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:96 msgid "Incoming Rate" msgstr "Inkomende koers" @@ -24361,7 +24382,7 @@ msgstr "" msgid "Incorrect Batch Consumed" msgstr "" -#: erpnext/stock/doctype/item/item.py:583 +#: erpnext/stock/doctype/item/item.py:584 msgid "Incorrect Check in (group) Warehouse for Reorder" msgstr "" @@ -24373,7 +24394,7 @@ msgstr "" msgid "Incorrect Component Quantity" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:390 +#: erpnext/assets/doctype/asset/asset.py:394 #: erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.py:56 msgid "Incorrect Date" msgstr "Verkeerde datum" @@ -24579,14 +24600,14 @@ msgstr "geïnisieer" msgid "Inspected By" msgstr "Geinspekteer deur" -#: erpnext/controllers/stock_controller.py:1539 +#: erpnext/controllers/stock_controller.py:1579 #: erpnext/manufacturing/doctype/job_card/job_card.py:834 msgid "Inspection Rejected" msgstr "" #. Label of the inspection_required (Check) field in DocType 'Stock Entry' -#: erpnext/controllers/stock_controller.py:1509 -#: erpnext/controllers/stock_controller.py:1511 +#: erpnext/controllers/stock_controller.py:1549 +#: erpnext/controllers/stock_controller.py:1551 #: erpnext/stock/doctype/stock_entry/stock_entry.json msgid "Inspection Required" msgstr "Inspeksie benodig" @@ -24603,7 +24624,7 @@ msgstr "" msgid "Inspection Required before Purchase" msgstr "" -#: erpnext/controllers/stock_controller.py:1524 +#: erpnext/controllers/stock_controller.py:1564 #: erpnext/manufacturing/doctype/job_card/job_card.py:815 msgid "Inspection Submission" msgstr "" @@ -24634,7 +24655,7 @@ msgstr "Installasie Nota" msgid "Installation Note Item" msgstr "Installasie Nota Item" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:606 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:607 msgid "Installation Note {0} has already been submitted" msgstr "Installasie Nota {0} is reeds ingedien" @@ -24659,7 +24680,7 @@ msgstr "Installasiedatum kan nie voor afleweringsdatum vir Item {0} wees nie." msgid "Installed Qty" msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:15 +#: erpnext/setup/setup_wizard/setup_wizard.py:16 msgid "Installing presets" msgstr "Voorinstellings installeer" @@ -24673,11 +24694,11 @@ msgstr "" msgid "Insufficient Capacity" msgstr "" -#: erpnext/controllers/accounts_controller.py:3879 -#: erpnext/controllers/accounts_controller.py:3901 -#: erpnext/controllers/accounts_controller.py:4419 -#: erpnext/controllers/accounts_controller.py:4425 -#: erpnext/controllers/accounts_controller.py:4447 +#: erpnext/controllers/accounts_controller.py:3899 +#: erpnext/controllers/accounts_controller.py:3921 +#: erpnext/controllers/accounts_controller.py:4439 +#: erpnext/controllers/accounts_controller.py:4445 +#: erpnext/controllers/accounts_controller.py:4467 msgid "Insufficient Permissions" msgstr "Onvoldoende toestemmings" @@ -24686,12 +24707,12 @@ msgstr "Onvoldoende toestemmings" #: erpnext/stock/doctype/pick_list/pick_list.py:166 #: erpnext/stock/doctype/pick_list/pick_list.py:1093 #: erpnext/stock/doctype/stock_entry/stock_entry.py:1235 -#: erpnext/stock/serial_batch_bundle.py:1225 erpnext/stock/stock_ledger.py:1703 -#: erpnext/stock/stock_ledger.py:2181 +#: erpnext/stock/serial_batch_bundle.py:1225 erpnext/stock/stock_ledger.py:1709 +#: erpnext/stock/stock_ledger.py:2206 msgid "Insufficient Stock" msgstr "Onvoldoende voorraad" -#: erpnext/stock/stock_ledger.py:2196 +#: erpnext/stock/stock_ledger.py:2221 msgid "Insufficient Stock for Batch" msgstr "" @@ -24844,7 +24865,7 @@ msgstr "" msgid "Internal Customer Accounting" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:256 +#: erpnext/selling/doctype/customer/customer.py:257 msgid "Internal Customer for company {0} already exists" msgstr "" @@ -24852,7 +24873,7 @@ msgstr "" msgid "Internal Purchase Order" msgstr "" -#: erpnext/controllers/accounts_controller.py:811 +#: erpnext/controllers/accounts_controller.py:831 msgid "Internal Sale or Delivery Reference missing." msgstr "" @@ -24860,7 +24881,7 @@ msgstr "" msgid "Internal Sales Order" msgstr "" -#: erpnext/controllers/accounts_controller.py:813 +#: erpnext/controllers/accounts_controller.py:833 msgid "Internal Sales Reference Missing" msgstr "" @@ -24890,7 +24911,7 @@ msgstr "" msgid "Internal Transfer" msgstr "Interne Oordrag" -#: erpnext/controllers/accounts_controller.py:822 +#: erpnext/controllers/accounts_controller.py:842 msgid "Internal Transfer Reference Missing" msgstr "" @@ -24914,7 +24935,7 @@ msgstr "" msgid "Internal notes about this customer. Not visible on transactions or the portal." msgstr "" -#: erpnext/controllers/stock_controller.py:1606 +#: erpnext/controllers/stock_controller.py:1646 msgid "Internal transfers can only be done in company's default currency" msgstr "" @@ -24934,8 +24955,8 @@ msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1077 #: erpnext/assets/doctype/asset_category/asset_category.py:69 #: erpnext/assets/doctype/asset_category/asset_category.py:97 -#: erpnext/controllers/accounts_controller.py:3225 -#: erpnext/controllers/accounts_controller.py:3233 +#: erpnext/controllers/accounts_controller.py:3245 +#: erpnext/controllers/accounts_controller.py:3253 msgid "Invalid Account" msgstr "Ongeldige rekening" @@ -24944,7 +24965,7 @@ msgid "Invalid Accounting Dimension" msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.py:402 -#: erpnext/accounts/doctype/payment_request/payment_request.py:1006 +#: erpnext/accounts/doctype/payment_request/payment_request.py:1007 msgid "Invalid Allocated Amount" msgstr "" @@ -24956,7 +24977,11 @@ msgstr "" msgid "Invalid Attribute" msgstr "Ongeldige kenmerk" -#: erpnext/controllers/accounts_controller.py:625 +#: erpnext/stock/doctype/item/item.js:898 +msgid "Invalid Attribute Values" +msgstr "" + +#: erpnext/controllers/accounts_controller.py:645 msgid "Invalid Auto Repeat Date" msgstr "" @@ -24969,7 +24994,7 @@ msgstr "" msgid "Invalid Barcode. There is no Item attached to this barcode." msgstr "Ongeldige strepieskode. Daar is geen item verbonde aan hierdie strepieskode nie." -#: erpnext/public/js/controllers/transaction.js:3177 +#: erpnext/public/js/controllers/transaction.js:3202 msgid "Invalid Blanket Order for the selected Customer and Item" msgstr "Ongeldige kombersorder vir die gekose kliënt en item" @@ -24989,13 +25014,13 @@ msgstr "" msgid "Invalid Company for Inter Company Transaction." msgstr "Ongeldige maatskappy vir transaksies tussen maatskappye." -#: erpnext/assets/doctype/asset/asset.py:361 -#: erpnext/assets/doctype/asset/asset.py:368 -#: erpnext/controllers/accounts_controller.py:3248 +#: erpnext/assets/doctype/asset/asset.py:365 +#: erpnext/assets/doctype/asset/asset.py:372 +#: erpnext/controllers/accounts_controller.py:3268 msgid "Invalid Cost Center" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:369 +#: erpnext/selling/doctype/customer/customer.py:370 msgid "Invalid Customer Group" msgstr "" @@ -25036,8 +25061,8 @@ msgstr "" msgid "Invalid File Type" msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:325 -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:330 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:329 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:334 msgid "Invalid Formula" msgstr "" @@ -25050,7 +25075,7 @@ msgstr "" msgid "Invalid Item" msgstr "Ongeldige item" -#: erpnext/stock/doctype/item/item.py:1514 +#: erpnext/stock/doctype/item/item.py:1534 msgid "Invalid Item Defaults" msgstr "" @@ -25059,12 +25084,12 @@ msgstr "" msgid "Invalid Ledger Entries" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:565 +#: erpnext/assets/doctype/asset/asset.py:569 msgid "Invalid Net Purchase Amount" msgstr "" #: erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.py:77 -#: erpnext/accounts/general_ledger.py:834 +#: erpnext/accounts/general_ledger.py:836 msgid "Invalid Opening Entry" msgstr "Ongeldige openingsinskrywing" @@ -25106,12 +25131,12 @@ msgstr "" msgid "Invalid Purchase Invoice" msgstr "" -#: erpnext/controllers/accounts_controller.py:3921 -#: erpnext/controllers/accounts_controller.py:3935 +#: erpnext/controllers/accounts_controller.py:3941 +#: erpnext/controllers/accounts_controller.py:3955 msgid "Invalid Qty" msgstr "" -#: erpnext/controllers/accounts_controller.py:1467 +#: erpnext/controllers/accounts_controller.py:1487 msgid "Invalid Quantity" msgstr "Ongeldige hoeveelheid" @@ -25127,8 +25152,8 @@ msgstr "" msgid "Invalid Sales Invoices" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:654 -#: erpnext/assets/doctype/asset/asset.py:682 +#: erpnext/assets/doctype/asset/asset.py:658 +#: erpnext/assets/doctype/asset/asset.py:686 msgid "Invalid Schedule" msgstr "" @@ -25170,6 +25195,13 @@ msgstr "" msgid "Invalid condition expression" msgstr "Ongeldige toestandsuitdrukking" +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:38 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:41 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:49 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:52 +msgid "Invalid debit/credit formula: {0}" +msgstr "" + #: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:1069 msgid "Invalid file URL" msgstr "" @@ -25182,7 +25214,7 @@ msgstr "" msgid "Invalid lost reason {0}, please create a new lost reason" msgstr "Ongeldige verlore rede {0}, skep 'n nuwe verlore rede" -#: erpnext/stock/doctype/item/item.py:459 +#: erpnext/stock/doctype/item/item.py:460 msgid "Invalid naming series (. missing) for {0}" msgstr "Ongeldige naamreeks (. Ontbreek) vir {0}" @@ -25194,7 +25226,7 @@ msgstr "" msgid "Invalid reference {0} {1}" msgstr "Ongeldige verwysing {0} {1}" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:96 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:143 msgid "Invalid regex pattern." msgstr "" @@ -25216,8 +25248,8 @@ msgstr "" #: erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:109 #: erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:119 -#: erpnext/accounts/general_ledger.py:882 -#: erpnext/accounts/general_ledger.py:892 +#: erpnext/accounts/general_ledger.py:884 +#: erpnext/accounts/general_ledger.py:894 msgid "Invalid value {0} for {1} against account {2}" msgstr "" @@ -25270,7 +25302,7 @@ msgstr "" msgid "Inventory Settings" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:214 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:216 msgid "Inventory Turnover Ratio" msgstr "" @@ -26136,11 +26168,11 @@ msgstr "kwessies" msgid "Issuing Date" msgstr "" -#: erpnext/stock/doctype/item/item.py:640 +#: erpnext/stock/doctype/item/item.py:641 msgid "It can take upto few hours for accurate stock values to be visible after merging items." msgstr "" -#: erpnext/public/js/controllers/transaction.js:2558 +#: erpnext/public/js/controllers/transaction.js:2580 msgid "It is needed to fetch Item Details." msgstr "Dit is nodig om Itembesonderhede te gaan haal." @@ -26510,7 +26542,7 @@ msgstr "" #: erpnext/manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:86 #: erpnext/manufacturing/report/work_order_stock_report/work_order_stock_report.py:119 #: erpnext/projects/doctype/timesheet/timesheet.js:214 -#: erpnext/public/js/controllers/transaction.js:2852 +#: erpnext/public/js/controllers/transaction.js:2874 #: erpnext/public/js/stock_reservation.js:112 #: erpnext/public/js/stock_reservation.js:318 erpnext/public/js/utils.js:596 #: erpnext/public/js/utils.js:753 @@ -26986,7 +27018,7 @@ msgstr "Item Vervaardiger" #: erpnext/manufacturing/report/production_planning_report/production_planning_report.py:371 #: erpnext/manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:92 #: erpnext/manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.py:138 -#: erpnext/public/js/controllers/transaction.js:2858 +#: erpnext/public/js/controllers/transaction.js:2880 #: erpnext/public/js/utils.js:849 #: erpnext/selling/doctype/quotation_item/quotation_item.json #: erpnext/selling/doctype/sales_order/sales_order.js:1286 @@ -27280,11 +27312,11 @@ msgstr "Item Variant Besonderhede" msgid "Item Variant Settings" msgstr "Item Variant instellings" -#: erpnext/stock/doctype/item/item.js:1034 +#: erpnext/stock/doctype/item/item.js:1120 msgid "Item Variant {0} already exists with same attributes" msgstr "Item Variant {0} bestaan reeds met dieselfde eienskappe" -#: erpnext/stock/doctype/item/item.py:835 +#: erpnext/stock/doctype/item/item.py:836 msgid "Item Variants updated" msgstr "Itemvariante opgedateer" @@ -27388,7 +27420,7 @@ msgstr "" msgid "Item for row {0} does not match Material Request" msgstr "Item vir ry {0} stem nie ooreen met materiaalversoek nie" -#: erpnext/stock/doctype/item/item.py:894 +#: erpnext/stock/doctype/item/item.py:895 msgid "Item has variants." msgstr "Item het variante." @@ -27414,7 +27446,7 @@ msgstr "Item naam" msgid "Item operation" msgstr "" -#: erpnext/controllers/accounts_controller.py:3975 +#: erpnext/controllers/accounts_controller.py:3995 msgid "Item qty can not be updated as raw materials are already processed." msgstr "" @@ -27437,7 +27469,7 @@ msgstr "" msgid "Item valuation reposting in progress. Report might show incorrect item valuation." msgstr "" -#: erpnext/stock/doctype/item/item.py:1051 +#: erpnext/stock/doctype/item/item.py:1052 msgid "Item variant {0} exists with same attributes" msgstr "Item variant {0} bestaan met dieselfde eienskappe" @@ -27457,8 +27489,8 @@ msgstr "" msgid "Item {0} cannot be ordered more than {1} against Blanket Order {2}." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:343 -#: erpnext/stock/doctype/item/item.py:686 +#: erpnext/assets/doctype/asset/asset.py:347 +#: erpnext/stock/doctype/item/item.py:687 msgid "Item {0} does not exist" msgstr "Item {0} bestaan nie" @@ -27466,7 +27498,7 @@ msgstr "Item {0} bestaan nie" msgid "Item {0} does not exist in the system or has expired" msgstr "Item {0} bestaan nie in die stelsel nie of het verval" -#: erpnext/controllers/stock_controller.py:557 +#: erpnext/controllers/stock_controller.py:597 msgid "Item {0} does not exist." msgstr "" @@ -27478,7 +27510,7 @@ msgstr "" msgid "Item {0} has already been returned" msgstr "Item {0} is reeds teruggestuur" -#: erpnext/assets/doctype/asset/asset.py:345 +#: erpnext/assets/doctype/asset/asset.py:349 msgid "Item {0} has been disabled" msgstr "Item {0} is gedeaktiveer" @@ -27490,7 +27522,7 @@ msgstr "" msgid "Item {0} has no changes in delivered quantity. Please unselect the row if you do not wish to update its quantity." msgstr "" -#: erpnext/stock/doctype/item/item.py:1230 +#: erpnext/stock/doctype/item/item.py:1250 msgid "Item {0} has reached its end of life on {1}" msgstr "Item {0} het sy einde van die lewe bereik op {1}" @@ -27502,11 +27534,11 @@ msgstr "Item {0} geïgnoreer omdat dit nie 'n voorraaditem is nie" msgid "Item {0} is already reserved/delivered against Sales Order {1}." msgstr "" -#: erpnext/stock/doctype/item/item.py:1250 +#: erpnext/stock/doctype/item/item.py:1270 msgid "Item {0} is cancelled" msgstr "Item {0} is gekanselleer" -#: erpnext/stock/doctype/item/item.py:1234 +#: erpnext/stock/doctype/item/item.py:1254 msgid "Item {0} is disabled" msgstr "Item {0} is gedeaktiveer" @@ -27518,7 +27550,7 @@ msgstr "" msgid "Item {0} is not a serialized Item" msgstr "Item {0} is nie 'n seriële item nie" -#: erpnext/stock/doctype/item/item.py:1242 +#: erpnext/stock/doctype/item/item.py:1262 msgid "Item {0} is not a stock Item" msgstr "Item {0} is nie 'n voorraaditem nie" @@ -27526,7 +27558,7 @@ msgstr "Item {0} is nie 'n voorraaditem nie" msgid "Item {0} is not a subcontracted item" msgstr "" -#: erpnext/stock/doctype/item/item.py:852 +#: erpnext/stock/doctype/item/item.py:853 msgid "Item {0} is not a template item." msgstr "" @@ -27534,7 +27566,7 @@ msgstr "" msgid "Item {0} is not active or end of life has been reached" msgstr "Item {0} is nie aktief of die einde van die lewe is bereik nie" -#: erpnext/assets/doctype/asset/asset.py:347 +#: erpnext/assets/doctype/asset/asset.py:351 msgid "Item {0} must be a Fixed Asset Item" msgstr "Item {0} moet 'n vaste bate-item wees" @@ -27546,7 +27578,7 @@ msgstr "" msgid "Item {0} must be a Sub-contracted Item" msgstr "Item {0} moet 'n Subkontrakteerde Item wees" -#: erpnext/assets/doctype/asset/asset.py:349 +#: erpnext/assets/doctype/asset/asset.py:353 msgid "Item {0} must be a non-stock item" msgstr "Item {0} moet 'n nie-voorraaditem wees" @@ -27660,11 +27692,11 @@ msgstr "Items wat gevra moet word" msgid "Items and Pricing" msgstr "Items en pryse" -#: erpnext/controllers/accounts_controller.py:4233 +#: erpnext/controllers/accounts_controller.py:4253 msgid "Items cannot be updated as Subcontracting Inward Order(s) exist against this Subcontracted Sales Order." msgstr "" -#: erpnext/controllers/accounts_controller.py:4226 +#: erpnext/controllers/accounts_controller.py:4246 msgid "Items cannot be updated as Subcontracting Order is created against the Purchase Order {0}." msgstr "" @@ -27706,7 +27738,7 @@ msgstr "" msgid "Items under this warehouse will be suggested" msgstr "" -#: erpnext/controllers/stock_controller.py:166 +#: erpnext/controllers/stock_controller.py:202 msgid "Items {0} do not exist in the Item master." msgstr "" @@ -27894,7 +27926,7 @@ msgstr "" msgid "Job Worker Warehouse" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2892 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2907 msgid "Job card {0} created" msgstr "Werkkaart {0} geskep" @@ -27945,8 +27977,8 @@ msgstr "Joernaalinskrywings {0} is nie gekoppel nie" #: erpnext/accounts/doctype/payment_reconciliation_invoice/payment_reconciliation_invoice.json #: erpnext/accounts/print_format/journal_auditing_voucher/journal_auditing_voucher.html:10 #: erpnext/accounts/workspace/invoicing/invoicing.json -#: erpnext/assets/doctype/asset/asset.js:385 -#: erpnext/assets/doctype/asset/asset.js:394 +#: erpnext/assets/doctype/asset/asset.js:390 +#: erpnext/assets/doctype/asset/asset.js:399 #: erpnext/assets/doctype/asset/asset.json #: erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.json #: erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json @@ -27997,7 +28029,7 @@ msgstr "" msgid "Journal Entry {0} does not have account {1} or already matched against other voucher" msgstr "Joernaal-inskrywing {0} het nie rekening {1} of alreeds teen ander geskenkbewyse aangepas nie" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:394 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:395 msgid "Journal Template Accounts" msgstr "" @@ -28734,7 +28766,7 @@ msgstr "" msgid "Linked Location" msgstr "Gekoppelde ligging" -#: erpnext/stock/doctype/item/item.py:1103 +#: erpnext/stock/doctype/item/item.py:1104 msgid "Linked with submitted documents" msgstr "" @@ -28752,7 +28784,7 @@ msgid "Linking to Supplier Failed. Please try again." msgstr "" #: erpnext/accounts/report/financial_ratios/financial_ratios.js:55 -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:150 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:152 msgid "Liquidity Ratios" msgstr "" @@ -29100,10 +29132,10 @@ msgstr "" msgid "Machine operator errors" msgstr "" -#: erpnext/setup/doctype/company/company.py:720 -#: erpnext/setup/doctype/company/company.py:735 +#: erpnext/setup/doctype/company/company.py:721 #: erpnext/setup/doctype/company/company.py:736 #: erpnext/setup/doctype/company/company.py:737 +#: erpnext/setup/doctype/company/company.py:738 msgid "Main" msgstr "Main" @@ -29123,7 +29155,7 @@ msgstr "" msgid "Main Item Code" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:138 +#: erpnext/assets/doctype/asset/asset.js:143 msgid "Maintain Asset" msgstr "" @@ -29421,11 +29453,11 @@ msgstr "" msgid "Make project from a template." msgstr "Maak 'n projek uit 'n patroonvorm." -#: erpnext/stock/doctype/item/item.js:822 +#: erpnext/stock/doctype/item/item.js:915 msgid "Make {0} Variant" msgstr "" -#: erpnext/stock/doctype/item/item.js:824 +#: erpnext/stock/doctype/item/item.js:916 msgid "Make {0} Variants" msgstr "" @@ -29448,7 +29480,7 @@ msgstr "" msgid "Manage your orders" msgstr "Bestuur jou bestellings" -#: erpnext/setup/doctype/company/company.py:499 +#: erpnext/setup/doctype/company/company.py:500 msgid "Management" msgstr "bestuur" @@ -29665,6 +29697,7 @@ msgstr "" #: erpnext/desktop_icon/manufacturing.json #: erpnext/manufacturing/doctype/production_plan_sub_assembly_item/production_plan_sub_assembly_item.json #: erpnext/manufacturing/workspace/manufacturing/manufacturing.json +#: erpnext/public/js/setup_wizard.js:94 #: erpnext/selling/doctype/sales_order/sales_order_dashboard.py:29 #: erpnext/setup/doctype/company/company.json erpnext/setup/install.py:414 #: erpnext/setup/setup_wizard/data/industry_type.txt:31 @@ -29895,7 +29928,7 @@ msgstr "" msgid "Market Segment" msgstr "Marksegment" -#: erpnext/setup/doctype/company/company.py:451 +#: erpnext/setup/doctype/company/company.py:452 msgid "Marketing" msgstr "bemarking" @@ -29991,7 +30024,7 @@ msgstr "Materiële verbruik" msgid "Material Consumption for Manufacture" msgstr "" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:683 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:688 msgid "Material Consumption is not set in Manufacturing Settings." msgstr "Materiaalverbruik is nie in Vervaardigingsinstellings gestel nie." @@ -30079,8 +30112,8 @@ msgstr "Materiaal Ontvangs" #: erpnext/stock/doctype/pick_list/pick_list.json #: erpnext/stock/doctype/pick_list_item/pick_list_item.json #: erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:304 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:460 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:309 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:465 #: erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json #: erpnext/stock/doctype/stock_settings/stock_settings.js:153 #: erpnext/stock/workspace/stock/stock.json @@ -30369,11 +30402,11 @@ msgstr "" #: erpnext/manufacturing/doctype/work_order/work_order.js:1059 #: erpnext/manufacturing/doctype/work_order/work_order.js:1082 #: erpnext/stock/doctype/pick_list/pick_list.js:208 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:399 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:404 msgid "Max: {0}" msgstr "Maks: {0}" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:63 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:64 msgid "Maximum Amount" msgstr "" @@ -30464,7 +30497,7 @@ msgstr "" msgid "Megawatt" msgstr "" -#: erpnext/stock/stock_ledger.py:2028 +#: erpnext/stock/stock_ledger.py:2034 msgid "Mention Valuation Rate in the Item master." msgstr "Noem waardasiesyfer in die artikelmeester." @@ -30744,15 +30777,15 @@ msgstr "Minimum hoeveelheid kan nie groter wees as Max" msgid "Min Qty should be greater than Recurse Over Qty" msgstr "" -#: erpnext/stock/doctype/item/item.js:985 +#: erpnext/stock/doctype/item/item.js:1071 msgid "Min Value: {0}, Max Value: {1}, in Increments of: {2}" msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:62 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:104 msgid "Min amount cannot be greater than max amount." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:58 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:59 msgid "Minimum Amount" msgstr "" @@ -30862,7 +30895,7 @@ msgid "Missing Asset" msgstr "" #: erpnext/accounts/doctype/gl_entry/gl_entry.py:186 -#: erpnext/assets/doctype/asset/asset.py:377 +#: erpnext/assets/doctype/asset/asset.py:381 msgid "Missing Cost Center" msgstr "" @@ -30870,7 +30903,7 @@ msgstr "" msgid "Missing Default in Company" msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:929 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:931 msgid "Missing Dependency" msgstr "" @@ -30878,7 +30911,7 @@ msgstr "" msgid "Missing Filters" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:422 +#: erpnext/assets/doctype/asset/asset.py:426 msgid "Missing Finance Book" msgstr "" @@ -30886,7 +30919,7 @@ msgstr "" msgid "Missing Finished Good" msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:310 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:314 msgid "Missing Formula" msgstr "" @@ -30923,7 +30956,7 @@ msgid "Missing required filter: {0}" msgstr "" #: erpnext/manufacturing/doctype/bom/bom.py:1219 -#: erpnext/manufacturing/doctype/work_order/work_order.py:1563 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1587 msgid "Missing value" msgstr "" @@ -30936,8 +30969,8 @@ msgstr "" #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:216 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:248 -#: erpnext/accounts/report/purchase_register/purchase_register.py:201 -#: erpnext/accounts/report/sales_register/sales_register.py:224 +#: erpnext/accounts/report/purchase_register/purchase_register.py:217 +#: erpnext/accounts/report/sales_register/sales_register.py:238 msgid "Mode Of Payment" msgstr "Betaalmetode" @@ -31164,11 +31197,11 @@ msgstr "" msgid "Multiple Accounts" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:283 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:284 msgid "Multiple Accounts (Journal Template)" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:440 +#: erpnext/selling/doctype/customer/customer.py:441 msgid "Multiple Loyalty Programs found for Customer {}. Please select manually." msgstr "" @@ -31194,7 +31227,7 @@ msgstr "Veelvuldige Varianten" msgid "Multiple company fields available: {0}. Please select manually." msgstr "" -#: erpnext/controllers/accounts_controller.py:1313 +#: erpnext/controllers/accounts_controller.py:1333 msgid "Multiple fiscal years exist for the date {0}. Please set company in Fiscal Year" msgstr "Verskeie fiskale jare bestaan vir die datum {0}. Stel asseblief die maatskappy in die fiskale jaar" @@ -31207,7 +31240,7 @@ msgid "Music" msgstr "" #. Label of the must_be_whole_number (Check) field in DocType 'UOM' -#: erpnext/manufacturing/doctype/work_order/work_order.py:1510 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1534 #: erpnext/setup/doctype/uom/uom.json #: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:267 #: erpnext/utilities/transaction_base.py:631 @@ -31346,7 +31379,7 @@ msgstr "Negatiewe Hoeveelheid word nie toegelaat nie" msgid "Negative Stock" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1608 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1658 #: erpnext/stock/serial_batch_bundle.py:1548 msgid "Negative Stock Error" msgstr "" @@ -31475,7 +31508,7 @@ msgstr "" msgid "Net Profit" msgstr "Netto wins" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:172 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:174 msgid "Net Profit Ratio" msgstr "" @@ -31493,11 +31526,11 @@ msgstr "Netto wins / verlies" msgid "Net Purchase Amount" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:450 +#: erpnext/assets/doctype/asset/asset.py:454 msgid "Net Purchase Amount is mandatory" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:560 +#: erpnext/assets/doctype/asset/asset.py:564 msgid "Net Purchase Amount should be equal to purchase amount of one single Asset." msgstr "" @@ -31586,8 +31619,8 @@ msgstr "" #: erpnext/accounts/doctype/shipping_rule/shipping_rule.json #: erpnext/accounts/doctype/subscription/subscription.json #: erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.json -#: erpnext/accounts/report/purchase_register/purchase_register.py:253 -#: erpnext/accounts/report/sales_register/sales_register.py:285 +#: erpnext/accounts/report/purchase_register/purchase_register.py:269 +#: erpnext/accounts/report/sales_register/sales_register.py:299 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/supplier_quotation/supplier_quotation.json #: erpnext/selling/doctype/quotation/quotation.json @@ -31638,7 +31671,7 @@ msgstr "" msgid "Net Weight UOM" msgstr "" -#: erpnext/controllers/accounts_controller.py:1673 +#: erpnext/controllers/accounts_controller.py:1693 msgid "Net total calculation precision loss" msgstr "" @@ -31815,7 +31848,7 @@ msgstr "Nuwe pakhuis naam" msgid "New Workplace" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:405 +#: erpnext/selling/doctype/customer/customer.py:406 msgid "New credit limit is less than current outstanding amount for the customer. Credit limit has to be atleast {0}" msgstr "Nuwe kredietlimiet is minder as die huidige uitstaande bedrag vir die kliënt. Kredietlimiet moet ten minste {0} wees" @@ -31946,7 +31979,7 @@ msgstr "" #: erpnext/accounts/doctype/journal_entry/journal_entry.py:1582 #: erpnext/accounts/doctype/journal_entry/journal_entry.py:1642 #: erpnext/accounts/doctype/journal_entry/journal_entry.py:1656 -#: erpnext/stock/doctype/item/item.py:1475 +#: erpnext/stock/doctype/item/item.py:1495 msgid "No Permission" msgstr "Geen toestemming nie" @@ -31979,7 +32012,7 @@ msgstr "" msgid "No Supplier found for Inter Company Transactions which represents company {0}" msgstr "Geen verskaffer gevind vir transaksies tussen maatskappye wat die maatskappy verteenwoordig nie {0}" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:976 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:982 msgid "No Tables Detected" msgstr "" @@ -31991,7 +32024,7 @@ msgstr "" msgid "No Tax withholding account set for Company {0} in Tax Withholding Category {1}." msgstr "" -#: erpnext/accounts/report/gross_profit/gross_profit.py:990 +#: erpnext/accounts/report/gross_profit/gross_profit.py:996 msgid "No Terms" msgstr "" @@ -32008,12 +32041,12 @@ msgstr "" msgid "No Work Orders were created" msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:827 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:832 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:905 msgid "No accounting entries for the following warehouses" msgstr "Geen rekeningkundige inskrywings vir die volgende pakhuise nie" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:412 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:413 msgid "No accounts configured" msgstr "" @@ -32049,7 +32082,7 @@ msgstr "" msgid "No bank transactions found" msgstr "" -#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:495 +#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:497 msgid "No billing email found for customer: {0}" msgstr "" @@ -32123,7 +32156,7 @@ msgstr "Geen items gevind nie. Skandeer weer die strepieskode." msgid "No items in cart" msgstr "" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1046 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1047 msgid "No matches occurred via auto reconciliation" msgstr "" @@ -32247,7 +32280,7 @@ msgstr "" msgid "No pending Material Requests found to link for the given items." msgstr "Geen hangende materiaal versoeke gevind om te skakel vir die gegewe items." -#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:502 +#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:504 msgid "No primary email found for customer: {0}" msgstr "" @@ -32267,7 +32300,7 @@ msgstr "" msgid "No reconciliation actions found" msgstr "" -#: erpnext/accounts/report/purchase_register/purchase_register.py:45 +#: erpnext/accounts/report/purchase_register/purchase_register.py:46 #: erpnext/accounts/report/sales_register/sales_register.py:46 #: erpnext/crm/report/lead_conversion_time/lead_conversion_time.py:18 msgid "No record found" @@ -32324,7 +32357,7 @@ msgstr "" msgid "No tables were extracted from this PDF." msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:40 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:41 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:48 #: banking/src/components/features/BankReconciliation/TransferModalContent.tsx:40 msgid "No transaction selected" @@ -32546,7 +32579,7 @@ msgstr "" msgid "Note: Item {0} added multiple times" msgstr "Opmerking: item {0} is verskeie kere bygevoeg" -#: erpnext/controllers/accounts_controller.py:711 +#: erpnext/controllers/accounts_controller.py:731 msgid "Note: Payment Entry will not be created since 'Cash or Bank Account' was not specified" msgstr "Let wel: Betalinginskrywing sal nie geskep word nie aangesien 'Kontant of Bankrekening' nie gespesifiseer is nie" @@ -32554,7 +32587,7 @@ msgstr "Let wel: Betalinginskrywing sal nie geskep word nie aangesien 'Konta msgid "Note: This Cost Center is a Group. Cannot make accounting entries against groups." msgstr "Let wel: Hierdie kostesentrum is 'n groep. Kan nie rekeningkundige inskrywings teen groepe maak nie." -#: erpnext/stock/doctype/item/item.py:677 +#: erpnext/stock/doctype/item/item.py:678 msgid "Note: To merge the items, create a separate Stock Reconciliation for the old item {0}" msgstr "" @@ -33350,16 +33383,16 @@ msgstr "" #. Label of the opening_stock (Float) field in DocType 'Item' #. Option for the 'Purpose' (Select) field in DocType 'Stock Reconciliation' -#: erpnext/stock/doctype/item/item.json erpnext/stock/doctype/item/item.py:334 +#: erpnext/stock/doctype/item/item.json erpnext/stock/doctype/item/item.py:335 #: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json msgid "Opening Stock" msgstr "Openingsvoorraad" -#: erpnext/stock/doctype/item/item.py:339 +#: erpnext/stock/doctype/item/item.py:340 msgid "Opening Stock entry created with zero valuation rate: {0}" msgstr "" -#: erpnext/stock/doctype/item/item.py:347 +#: erpnext/stock/doctype/item/item.py:348 msgid "Opening Stock entry created: {0}" msgstr "" @@ -33488,7 +33521,7 @@ msgstr "" msgid "Operation Time" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1572 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1596 msgid "Operation Time must be greater than 0 for Operation {0}" msgstr "Operasie Tyd moet groter wees as 0 vir Operasie {0}" @@ -33525,7 +33558,7 @@ msgstr "Operasie {0} langer as enige beskikbare werksure in werkstasie {1}, bree #: erpnext/manufacturing/doctype/bom/bom.json #: erpnext/manufacturing/doctype/work_order/work_order.js:325 #: erpnext/manufacturing/doctype/work_order/work_order.json -#: erpnext/setup/doctype/company/company.py:469 +#: erpnext/setup/doctype/company/company.py:470 #: erpnext/setup/doctype/email_digest/email_digest.json #: erpnext/templates/generators/bom.html:61 msgid "Operations" @@ -34062,8 +34095,8 @@ msgstr "" #: erpnext/accounts/report/accounts_receivable/accounts_receivable.html:141 #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1220 #: erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:167 -#: erpnext/accounts/report/purchase_register/purchase_register.py:289 -#: erpnext/accounts/report/sales_register/sales_register.py:319 +#: erpnext/accounts/report/purchase_register/purchase_register.py:305 +#: erpnext/accounts/report/sales_register/sales_register.py:333 msgid "Outstanding Amount" msgstr "Uitstaande bedrag" @@ -34108,7 +34141,7 @@ msgstr "" msgid "Over Billing Allowance (%)" msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1343 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1377 msgid "Over Billing Allowance exceeded for Purchase Receipt Item {0} ({1}) by {2}%" msgstr "" @@ -34131,7 +34164,7 @@ msgstr "" msgid "Over Picking Allowance (%)" msgstr "" -#: erpnext/controllers/stock_controller.py:1776 +#: erpnext/controllers/stock_controller.py:1816 msgid "Over Receipt" msgstr "" @@ -34156,7 +34189,7 @@ msgstr "" msgid "Overbilling of {0} {1} ignored for item {2} because you have {3} role." msgstr "" -#: erpnext/controllers/accounts_controller.py:2191 +#: erpnext/controllers/accounts_controller.py:2211 msgid "Overbilling of {} ignored because you have {} role." msgstr "" @@ -34249,7 +34282,7 @@ msgstr "" #: erpnext/accounts/report/sales_payment_summary/sales_payment_summary.py:23 #: erpnext/accounts/report/sales_payment_summary/sales_payment_summary.py:39 #: erpnext/accounts/report/sales_register/sales_register.js:46 -#: erpnext/accounts/report/sales_register/sales_register.py:236 +#: erpnext/accounts/report/sales_register/sales_register.py:250 #: erpnext/crm/report/lead_details/lead_details.py:45 msgid "Owner" msgstr "Eienaar" @@ -34304,7 +34337,7 @@ msgstr "" msgid "PDF Tables" msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:928 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:930 msgid "PDF statement support requires the 'pdfplumber' library to be installed." msgstr "" @@ -34663,7 +34696,7 @@ msgstr "Gepakte item" msgid "Packed Items" msgstr "" -#: erpnext/controllers/stock_controller.py:1610 +#: erpnext/controllers/stock_controller.py:1650 msgid "Packed Items cannot be transferred internally" msgstr "" @@ -34700,7 +34733,7 @@ msgstr "Packing Slip" msgid "Packing Slip Item" msgstr "Verpakking Slip Item" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:622 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:623 msgid "Packing Slip(s) cancelled" msgstr "Verpakkingstrokie (s) gekanselleer" @@ -34903,7 +34936,7 @@ msgstr "" msgid "Parent Company" msgstr "" -#: erpnext/setup/doctype/company/company.py:604 +#: erpnext/setup/doctype/company/company.py:605 msgid "Parent Company must be a group company" msgstr "Moedermaatskappy moet 'n groepmaatskappy wees" @@ -35209,16 +35242,16 @@ msgstr "" #. Label of the party (Dynamic Link) field in DocType 'Appointment' #. Label of the party_name (Dynamic Link) field in DocType 'Opportunity' #. Label of the party_name (Dynamic Link) field in DocType 'Quotation' -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:589 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:735 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:747 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:565 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:711 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:723 #: banking/src/components/features/BankReconciliation/MatchAndReconcile.tsx:752 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:185 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:197 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:552 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:562 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:359 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:369 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:360 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:370 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:591 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:776 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:788 @@ -35306,7 +35339,7 @@ msgstr "" msgid "Party Account No. (Bank Statement)" msgstr "" -#: erpnext/controllers/accounts_controller.py:2475 +#: erpnext/controllers/accounts_controller.py:2495 msgid "Party Account {0} currency ({1}) and document currency ({2}) should be same" msgstr "" @@ -35432,10 +35465,10 @@ msgstr "" #. Label of the party_type (Select) field in DocType 'Party Specific Item' #. Name of a DocType #. Label of the party_type (Link) field in DocType 'Party Type' -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:614 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:590 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:170 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:409 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:292 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:293 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:640 #: erpnext/accounts/doctype/bank_account/bank_account.json #: erpnext/accounts/doctype/bank_transaction/bank_transaction.json @@ -35488,7 +35521,7 @@ msgstr "" msgid "Party Type and Party is mandatory for {0} account" msgstr "Party Tipe en Party is verpligtend vir {0} rekening" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:177 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:178 msgid "Party Type and Party is required for Receivable / Payable account {0}" msgstr "" @@ -35502,7 +35535,7 @@ msgstr "Party Tipe is verpligtend" msgid "Party User" msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:72 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:114 msgid "Party account is required to create a payment entry." msgstr "" @@ -35519,11 +35552,11 @@ msgstr "Party is verpligtend" msgid "Party is required" msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:69 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:111 msgid "Party is required create a payment entry." msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:66 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:108 msgid "Party type is required to create a payment entry." msgstr "" @@ -35550,7 +35583,7 @@ msgstr "" msgid "Passport Number" msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:941 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:947 msgid "Password Required" msgstr "" @@ -35627,8 +35660,8 @@ msgstr "betaalbaar" #: erpnext/accounts/report/accounts_payable/accounts_payable.js:50 #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1157 #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:209 -#: erpnext/accounts/report/purchase_register/purchase_register.py:194 -#: erpnext/accounts/report/purchase_register/purchase_register.py:235 +#: erpnext/accounts/report/purchase_register/purchase_register.py:210 +#: erpnext/accounts/report/purchase_register/purchase_register.py:251 msgid "Payable Account" msgstr "Betaalbare rekening" @@ -35762,7 +35795,7 @@ msgstr "Betalingsinskrywings {0} is nie gekoppel nie" #. Order' #. Label of a Link in the Invoicing Workspace #. Label of a Workspace Sidebar Item -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:270 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:271 #: erpnext/accounts/doctype/accounts_settings/accounts_settings.js:59 #: erpnext/accounts/doctype/bank_clearance_detail/bank_clearance_detail.json #: erpnext/accounts/doctype/bank_transaction_payments/bank_transaction_payments.json @@ -35807,7 +35840,7 @@ msgstr "Betalinginskrywing is gewysig nadat jy dit getrek het. Trek dit asseblie msgid "Payment Entry is already created" msgstr "Betalinginskrywing is reeds geskep" -#: erpnext/controllers/accounts_controller.py:1624 +#: erpnext/controllers/accounts_controller.py:1644 msgid "Payment Entry {0} is linked against Order {1}, check if it should be pulled as advance in this invoice." msgstr "" @@ -36086,7 +36119,7 @@ msgstr "" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json #: erpnext/buying/doctype/purchase_order/purchase_order.json -#: erpnext/controllers/accounts_controller.py:2757 +#: erpnext/controllers/accounts_controller.py:2777 #: erpnext/selling/doctype/quotation/quotation.json #: erpnext/selling/doctype/sales_order/sales_order.json msgid "Payment Schedule" @@ -36096,7 +36129,7 @@ msgstr "Betalingskedule" msgid "Payment Schedule based Payment Requests cannot be created because a Payment Entry already exists for this document." msgstr "" -#: erpnext/public/js/controllers/transaction.js:507 +#: erpnext/public/js/controllers/transaction.js:529 msgid "Payment Schedules" msgstr "" @@ -36118,7 +36151,7 @@ msgstr "" #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1210 #: erpnext/accounts/report/gross_profit/gross_profit.py:449 #: erpnext/accounts/workspace/invoicing/invoicing.json -#: erpnext/public/js/controllers/transaction.js:522 +#: erpnext/public/js/controllers/transaction.js:544 #: erpnext/selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py:30 #: erpnext/workspace_sidebar/accounts_setup.json msgid "Payment Term" @@ -36546,7 +36579,7 @@ msgstr "Persepsie-analise" msgid "Period Based On" msgstr "Tydperk gebaseer op" -#: erpnext/accounts/general_ledger.py:850 +#: erpnext/accounts/general_ledger.py:852 msgid "Period Closed" msgstr "" @@ -36723,6 +36756,10 @@ msgstr "" msgid "Personal Email" msgstr "" +#: erpnext/setup/setup_wizard/setup_wizard.py:33 +msgid "Personalizing your setup" +msgstr "" + #. Option for the 'Fuel Type' (Select) field in DocType 'Vehicle' #: erpnext/setup/doctype/vehicle/vehicle.json msgid "Petrol" @@ -37168,7 +37205,7 @@ msgstr "" msgid "Please add a Temporary Opening account in Chart of Accounts" msgstr "Voeg asseblief 'n Tydelike Openingsrekening in die Grafiek van Rekeninge by" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:77 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:119 msgid "Please add an account for the Bank Entry rule." msgstr "" @@ -37192,11 +37229,11 @@ msgstr "" msgid "Please add the account to root level Company - {}" msgstr "Voeg die rekening by die maatskappy se wortelvlak - {}" -#: erpnext/controllers/website_list_for_contact.py:301 +#: erpnext/controllers/website_list_for_contact.py:302 msgid "Please add {1} role to user {0}." msgstr "" -#: erpnext/controllers/stock_controller.py:1787 +#: erpnext/controllers/stock_controller.py:1827 msgid "Please adjust the qty or edit {0} to proceed." msgstr "" @@ -37218,7 +37255,7 @@ msgid "Please cancel related transaction." msgstr "" #: erpnext/assets/doctype/asset/asset.js:86 -#: erpnext/assets/doctype/asset/asset.py:249 +#: erpnext/assets/doctype/asset/asset.py:253 msgid "Please capitalize this asset before submitting." msgstr "" @@ -37267,11 +37304,11 @@ msgstr "Klik asseblief op 'Generate Schedule' om skedule te kry" msgid "Please complete the job first before entering Pending Quantity" msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:80 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:122 msgid "Please configure accounts for the Bank Entry rule." msgstr "" -#: erpnext/selling/doctype/customer/customer.py:635 +#: erpnext/selling/doctype/customer/customer.py:637 msgid "Please contact any of the following users to extend the credit limits for {0}: {1}" msgstr "" @@ -37279,7 +37316,7 @@ msgstr "" msgid "Please contact any of the following users to {} this transaction." msgstr "" -#: erpnext/selling/doctype/customer/customer.py:628 +#: erpnext/selling/doctype/customer/customer.py:630 msgid "Please contact your administrator to extend the credit limits for {0}." msgstr "" @@ -37299,15 +37336,15 @@ msgstr "" msgid "Please create a new Accounting Dimension if required." msgstr "" -#: erpnext/controllers/accounts_controller.py:812 +#: erpnext/controllers/accounts_controller.py:832 msgid "Please create purchase from internal sale or delivery document itself" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:460 +#: erpnext/assets/doctype/asset/asset.py:464 msgid "Please create purchase receipt or purchase invoice for the item {0}" msgstr "Maak asseblief aankoopkwitansie of aankoopfaktuur vir die item {0}" -#: erpnext/stock/doctype/item/item.py:705 +#: erpnext/stock/doctype/item/item.py:706 msgid "Please delete Product Bundle {0}, before merging {1} into {2}" msgstr "" @@ -37315,7 +37352,7 @@ msgstr "" msgid "Please disable workflow temporarily for Journal Entry {0}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:564 +#: erpnext/assets/doctype/asset/asset.py:568 msgid "Please do not book expense of multiple assets against one single Asset." msgstr "" @@ -37401,7 +37438,7 @@ msgstr "Voer asseblief koste-rekening in" msgid "Please enter Item Code to get Batch Number" msgstr "Voer asseblief die Kode in om groepsnommer te kry" -#: erpnext/public/js/controllers/transaction.js:3034 +#: erpnext/public/js/controllers/transaction.js:3059 msgid "Please enter Item Code to get batch no" msgstr "Voer asseblief die kode in om groepsnommer te kry" @@ -37482,7 +37519,7 @@ msgstr "" msgid "Please enter company name first" msgstr "Voer asseblief die maatskappy se naam eerste in" -#: erpnext/controllers/accounts_controller.py:2976 +#: erpnext/controllers/accounts_controller.py:2996 msgid "Please enter default currency in Company Master" msgstr "Voer asseblief die standaard geldeenheid in Company Master in" @@ -37526,7 +37563,7 @@ msgstr "Voer eers die telefoonnommer in" msgid "Please enter the {schedule_date}." msgstr "" -#: erpnext/public/js/setup_wizard.js:97 +#: erpnext/public/js/setup_wizard.js:192 msgid "Please enter valid Financial Year Start and End Dates" msgstr "Voer asseblief geldige finansiële jaar se begin- en einddatums in" @@ -37582,7 +37619,7 @@ msgstr "" msgid "Please make sure you really want to delete all the transactions for {0}. Your master data will remain as it is. This action cannot be undone." msgstr "" -#: erpnext/stock/doctype/item/item.js:728 +#: erpnext/stock/doctype/item/item.js:735 msgid "Please mention 'Weight UOM' along with Weight." msgstr "" @@ -37676,7 +37713,7 @@ msgstr "Kies asseblief Maatskappy" msgid "Please select Company and Posting Date to getting entries" msgstr "Kies asseblief Maatskappy en Posdatum om inskrywings te kry" -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:744 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:751 #: erpnext/manufacturing/doctype/plant_floor/plant_floor.js:28 msgid "Please select Company first" msgstr "Kies asseblief Maatskappy eerste" @@ -37691,7 +37728,7 @@ msgstr "Kies asseblief Voltooiingsdatum vir voltooide bateonderhoudslog" msgid "Please select Customer first" msgstr "Kies eers kliënt" -#: erpnext/setup/doctype/company/company.py:535 +#: erpnext/setup/doctype/company/company.py:536 msgid "Please select Existing Company for creating Chart of Accounts" msgstr "Kies asseblief bestaande maatskappy om 'n grafiek van rekeninge te skep" @@ -37700,8 +37737,8 @@ msgstr "Kies asseblief bestaande maatskappy om 'n grafiek van rekeninge te s msgid "Please select Finished Good Item for Service Item {0}" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:753 -#: erpnext/assets/doctype/asset/asset.js:768 +#: erpnext/assets/doctype/asset/asset.js:762 +#: erpnext/assets/doctype/asset/asset.js:777 msgid "Please select Item Code first" msgstr "Kies eers die itemkode" @@ -37725,7 +37762,7 @@ msgstr "" msgid "Please select Posting Date before selecting Party" msgstr "Kies asseblief Posdatum voordat jy Party kies" -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:745 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:752 msgid "Please select Posting Date first" msgstr "Kies asseblief die Posdatum eerste" @@ -37737,7 +37774,7 @@ msgstr "Kies asseblief Pryslys" msgid "Please select Qty against item {0}" msgstr "Kies asseblief hoeveelheid teen item {0}" -#: erpnext/stock/doctype/item/item.py:371 +#: erpnext/stock/doctype/item/item.py:372 msgid "Please select Sample Retention Warehouse in Stock Settings first" msgstr "Kies asseblief Sample Retention Warehouse in Voorraadinstellings" @@ -37757,7 +37794,7 @@ msgstr "" msgid "Please select Subcontracting Order instead of Purchase Order {0}" msgstr "" -#: erpnext/controllers/accounts_controller.py:2832 +#: erpnext/controllers/accounts_controller.py:2852 msgid "Please select Unrealized Profit / Loss account or add default Unrealized Profit / Loss account account for company {0}" msgstr "" @@ -37774,7 +37811,7 @@ msgstr "Kies asseblief 'n maatskappy" #: erpnext/manufacturing/doctype/bom/bom.js:730 #: erpnext/manufacturing/doctype/bom/bom.py:279 #: erpnext/public/js/controllers/accounts.js:274 -#: erpnext/public/js/controllers/transaction.js:3333 +#: erpnext/public/js/controllers/transaction.js:3358 msgid "Please select a Company first." msgstr "Kies eers 'n maatskappy." @@ -37851,7 +37888,7 @@ msgstr "" msgid "Please select a row to create a Reposting Entry" msgstr "" -#: erpnext/accounts/report/purchase_register/purchase_register.py:35 +#: erpnext/accounts/report/purchase_register/purchase_register.py:36 msgid "Please select a supplier for fetching payments." msgstr "" @@ -37887,11 +37924,11 @@ msgstr "" msgid "Please select at least one row to fix" msgstr "" -#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.js:50 +#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.js:51 msgid "Please select at least one row with difference value" msgstr "" -#: erpnext/public/js/controllers/transaction.js:550 +#: erpnext/public/js/controllers/transaction.js:572 msgid "Please select at least one schedule." msgstr "" @@ -37991,7 +38028,7 @@ msgstr "Kies asseblief weekliks af" msgid "Please select {0} first" msgstr "Kies asseblief eers {0}" -#: erpnext/public/js/controllers/transaction.js:122 +#: erpnext/public/js/controllers/transaction.js:150 msgid "Please set 'Apply Additional Discount On'" msgstr "Stel asseblief 'Add Additional Discount On'" @@ -38101,7 +38138,7 @@ msgstr "" msgid "Please set a Company" msgstr "Stel 'n maatskappy in" -#: erpnext/assets/doctype/asset/asset.py:374 +#: erpnext/assets/doctype/asset/asset.py:378 msgid "Please set a Cost Center for the Asset or set an Asset Depreciation Cost Center for the Company {}" msgstr "" @@ -38126,7 +38163,7 @@ msgstr "" msgid "Please set an Address on the Company '%s'" msgstr "" -#: erpnext/controllers/stock_controller.py:917 +#: erpnext/controllers/stock_controller.py:957 msgid "Please set an Expense Account in the Items table" msgstr "" @@ -38170,11 +38207,11 @@ msgstr "" msgid "Please set default UOM in Stock Settings" msgstr "Stel standaard UOM in Voorraadinstellings" -#: erpnext/controllers/stock_controller.py:776 +#: erpnext/controllers/stock_controller.py:816 msgid "Please set default cost of goods sold account in company {0} for booking rounding gain and loss during stock transfer" msgstr "" -#: erpnext/controllers/stock_controller.py:231 +#: erpnext/controllers/stock_controller.py:267 msgid "Please set default inventory account for item {0}, or their item group or brand." msgstr "" @@ -38187,15 +38224,15 @@ msgstr "Stel asseblief die standaard {0} in Maatskappy {1}" msgid "Please set filter based on Item or Warehouse" msgstr "Stel asseblief die filter op grond van item of pakhuis" -#: erpnext/controllers/accounts_controller.py:2391 +#: erpnext/controllers/accounts_controller.py:2411 msgid "Please set one of the following:" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:645 +#: erpnext/assets/doctype/asset/asset.py:649 msgid "Please set opening number of booked depreciations" msgstr "" -#: erpnext/public/js/controllers/transaction.js:2701 +#: erpnext/public/js/controllers/transaction.js:2723 msgid "Please set recurring after saving" msgstr "Stel asseblief herhaaldelik na die stoor" @@ -38254,7 +38291,7 @@ msgstr "" msgid "Please set {0} in Company {1} to account for Exchange Gain / Loss" msgstr "" -#: erpnext/controllers/accounts_controller.py:593 +#: erpnext/controllers/accounts_controller.py:613 msgid "Please set {0} to {1}, the same account that was used in the original invoice {2}." msgstr "" @@ -38276,7 +38313,7 @@ msgstr "Spesifiseer asb. Maatskappy" msgid "Please specify Company to proceed" msgstr "Spesifiseer asseblief Maatskappy om voort te gaan" -#: erpnext/controllers/accounts_controller.py:3207 +#: erpnext/controllers/accounts_controller.py:3227 #: erpnext/public/js/controllers/accounts.js:114 msgid "Please specify a valid Row ID for row {0} in table {1}" msgstr "Spesifiseer asseblief 'n geldige ry-ID vir ry {0} in tabel {1}" @@ -38448,7 +38485,7 @@ msgstr "" #: banking/src/components/features/ActionLog/ActionLogDialogBody.tsx:398 #: banking/src/components/features/BankReconciliation/BankClearanceSummary.tsx:125 #: banking/src/components/features/BankReconciliation/BankClearanceSummary.tsx:319 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:390 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:366 #: banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx:86 #: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:147 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:459 @@ -38492,8 +38529,8 @@ msgstr "" #: erpnext/accounts/report/payment_ledger/payment_ledger.py:143 #: erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:94 #: erpnext/accounts/report/pos_register/pos_register.py:172 -#: erpnext/accounts/report/purchase_register/purchase_register.py:169 -#: erpnext/accounts/report/sales_register/sales_register.py:185 +#: erpnext/accounts/report/purchase_register/purchase_register.py:185 +#: erpnext/accounts/report/sales_register/sales_register.py:199 #: erpnext/assets/doctype/asset_capitalization/asset_capitalization.json #: erpnext/manufacturing/doctype/job_card/job_card.json #: erpnext/manufacturing/doctype/master_production_schedule/master_production_schedule.json @@ -38520,7 +38557,7 @@ msgstr "" #: erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py:86 #: erpnext/stock/report/serial_no_ledger/serial_no_ledger.py:25 #: erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:150 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:144 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:155 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:36 #: erpnext/templates/form_grid/bank_reconciliation_grid.html:6 msgid "Posting Date" @@ -38537,7 +38574,7 @@ msgstr "Posdatum kan nie toekomstige datum wees nie" msgid "Posting Date inheritance for exchange gain / loss" msgstr "" -#: erpnext/public/js/controllers/transaction.js:1131 +#: erpnext/public/js/controllers/transaction.js:1153 msgid "Posting Date will change to today's date as Edit Posting Date and Time is unchecked. Are you sure want to proceed?" msgstr "" @@ -38592,7 +38629,7 @@ msgstr "" #: erpnext/stock/report/serial_no_ledger/serial_no_ledger.js:63 #: erpnext/stock/report/serial_no_ledger/serial_no_ledger.py:26 #: erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:151 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:149 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:160 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:41 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json msgid "Posting Time" @@ -39696,7 +39733,7 @@ msgstr "" #. Label of a Card Break in the Manufacturing Workspace #: erpnext/manufacturing/doctype/workstation/workstation.json #: erpnext/manufacturing/workspace/manufacturing/manufacturing.json -#: erpnext/setup/doctype/company/company.py:475 +#: erpnext/setup/doctype/company/company.py:476 msgid "Production" msgstr "produksie" @@ -39916,6 +39953,10 @@ msgstr "Projek vennootskappe Uitnodiging" msgid "Project Id" msgstr "Projek-ID" +#: erpnext/public/js/setup_wizard.js:95 +msgid "Project Management" +msgstr "" + #: erpnext/setup/setup_wizard/data/designation.txt:26 msgid "Project Manager" msgstr "" @@ -40244,7 +40285,7 @@ msgstr "" msgid "Providing" msgstr "" -#: erpnext/setup/doctype/company/company.py:574 +#: erpnext/setup/doctype/company/company.py:575 msgid "Provisional Account" msgstr "" @@ -40316,7 +40357,7 @@ msgstr "" #: erpnext/accounts/doctype/tax_rule/tax_rule.json #: erpnext/manufacturing/doctype/material_request_plan_item/material_request_plan_item.json #: erpnext/projects/doctype/project/project_dashboard.py:16 -#: erpnext/setup/doctype/company/company.py:463 erpnext/setup/install.py:428 +#: erpnext/setup/doctype/company/company.py:464 erpnext/setup/install.py:428 #: erpnext/stock/doctype/item/item.json #: erpnext/stock/doctype/item/item_list.js:30 #: erpnext/stock/doctype/item_lead_time/item_lead_time.json @@ -40434,7 +40475,7 @@ msgstr "" #: erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js:30 #: erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json #: erpnext/stock/doctype/quality_inspection/quality_inspection.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:441 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:446 #: erpnext/workspace_sidebar/buying.json #: erpnext/workspace_sidebar/invoicing.json msgid "Purchase Invoice" @@ -40474,7 +40515,7 @@ msgstr "" msgid "Purchase Invoice Trends" msgstr "Aankoop faktuur neigings" -#: erpnext/assets/doctype/asset/asset.py:336 +#: erpnext/assets/doctype/asset/asset.py:340 msgid "Purchase Invoice cannot be made against an existing asset {0}" msgstr "Aankoopfakture kan nie teen 'n bestaande bate {0} gemaak word" @@ -40513,7 +40554,7 @@ msgstr "Koop fakture" #: erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json #: erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:237 -#: erpnext/accounts/report/purchase_register/purchase_register.py:216 +#: erpnext/accounts/report/purchase_register/purchase_register.py:232 #: erpnext/buying/doctype/buying_settings/buying_settings.js:47 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/purchase_receipt_item_supplied/purchase_receipt_item_supplied.json @@ -40672,7 +40713,7 @@ msgstr "" msgid "Purchase Orders to Receive" msgstr "" -#: erpnext/controllers/accounts_controller.py:2023 +#: erpnext/controllers/accounts_controller.py:2043 msgid "Purchase Orders {0} are un-linked" msgstr "" @@ -40701,7 +40742,7 @@ msgstr "Aankooppryslys" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js:49 #: erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:244 -#: erpnext/accounts/report/purchase_register/purchase_register.py:223 +#: erpnext/accounts/report/purchase_register/purchase_register.py:239 #: erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.js:22 #: erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:21 #: erpnext/assets/doctype/asset/asset.json @@ -40907,7 +40948,7 @@ msgstr "Koop" #: erpnext/stock/doctype/item/item_list.js:41 #: erpnext/stock/doctype/material_request/material_request.json #: erpnext/stock/doctype/pick_list/pick_list.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:476 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:481 #: erpnext/stock/doctype/stock_entry/stock_entry.json #: erpnext/stock/doctype/stock_entry_type/stock_entry_type.json #: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json @@ -41105,7 +41146,7 @@ msgstr "" #: erpnext/stock/doctype/stock_closing_balance/stock_closing_balance.json #: erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.json #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:169 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:188 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:199 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:91 msgid "Qty Change" msgstr "" @@ -41138,7 +41179,7 @@ msgstr "" msgid "Qty To Manufacture" msgstr "Hoeveelheid om te vervaardig" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1506 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1530 msgid "Qty To Manufacture ({0}) cannot be a fraction for the UOM {2}. To allow this, disable '{1}' in the UOM {2}." msgstr "" @@ -41240,7 +41281,7 @@ msgstr "" msgid "Qty to Deliver" msgstr "Hoeveelheid om te lewer" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:396 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:401 msgid "Qty to Disassemble" msgstr "" @@ -41417,7 +41458,7 @@ msgstr "Kwaliteit Inspeksie" msgid "Quality Inspection Analysis" msgstr "Kwaliteitsinspeksie-analise" -#: erpnext/public/js/controllers/transaction.js:2964 +#: erpnext/public/js/controllers/transaction.js:2980 msgid "Quality Inspection Not Configured" msgstr "" @@ -41496,8 +41537,8 @@ msgstr "" msgid "Quality Inspection {0} is rejected for the item: {1}" msgstr "" -#: erpnext/public/js/controllers/transaction.js:403 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:208 +#: erpnext/public/js/controllers/transaction.js:431 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:212 msgid "Quality Inspection(s)" msgstr "" @@ -41506,7 +41547,7 @@ msgstr "" msgid "Quality Inspections" msgstr "" -#: erpnext/setup/doctype/company/company.py:505 +#: erpnext/setup/doctype/company/company.py:506 msgid "Quality Management" msgstr "Gehalte bestuur" @@ -41649,7 +41690,7 @@ msgstr "" #: erpnext/stock/doctype/material_request_item/material_request_item.json #: erpnext/stock/doctype/packing_slip_item/packing_slip_item.json #: erpnext/stock/doctype/pick_list_item/pick_list_item.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:824 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:829 #: erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json #: erpnext/stock/doctype/stock_reconciliation_item/stock_reconciliation_item.json #: erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.py:36 @@ -41796,11 +41837,11 @@ msgstr "Hoeveelheid moet groter as 0 wees" msgid "Quantity to Manufacture" msgstr "Hoeveelheid te vervaardig" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2830 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2845 msgid "Quantity to Manufacture can not be zero for the operation {0}" msgstr "Hoeveelheid te vervaardig kan nie nul wees vir die bewerking {0}" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1498 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1522 msgid "Quantity to Manufacture must be greater than 0." msgstr "Hoeveelheid tot Vervaardiging moet groter as 0 wees." @@ -41837,11 +41878,11 @@ msgstr "" msgid "Queue Size should be between 5 and 100" msgstr "" -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:627 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:634 msgid "Quick Journal Entry" msgstr "Vinnige Blaar Inskrywing" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:152 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:154 msgid "Quick Ratio" msgstr "" @@ -42244,7 +42285,7 @@ msgstr "" msgid "Rate at which this tax is applied" msgstr "" -#: erpnext/controllers/accounts_controller.py:4101 +#: erpnext/controllers/accounts_controller.py:4121 msgid "Rate of '{}' items cannot be changed" msgstr "" @@ -42484,7 +42525,7 @@ msgstr "" msgid "Reached Root" msgstr "" -#: erpnext/accounts/general_ledger.py:831 +#: erpnext/accounts/general_ledger.py:833 msgid "Read the docs" msgstr "" @@ -42652,8 +42693,8 @@ msgstr "" #: erpnext/accounts/report/accounts_receivable/accounts_receivable.js:79 #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1155 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:241 -#: erpnext/accounts/report/sales_register/sales_register.py:217 -#: erpnext/accounts/report/sales_register/sales_register.py:271 +#: erpnext/accounts/report/sales_register/sales_register.py:231 +#: erpnext/accounts/report/sales_register/sales_register.py:285 msgid "Receivable Account" msgstr "Ontvangbare rekening" @@ -42772,7 +42813,7 @@ msgstr "" msgid "Received Quantity" msgstr "Hoeveelheid ontvang" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:372 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:377 msgid "Received Stock Entries" msgstr "Ontvangde voorraadinskrywings" @@ -43105,11 +43146,11 @@ msgstr "" msgid "Reference #{0} dated {1}" msgstr "Verwysing # {0} gedateer {1}" -#: erpnext/public/js/controllers/transaction.js:2814 +#: erpnext/public/js/controllers/transaction.js:2836 msgid "Reference Date for Early Payment Discount" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:400 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:376 msgid "Reference Date is required" msgstr "" @@ -43217,7 +43258,7 @@ msgstr "" msgid "Reference for Reservation" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:406 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:382 msgid "Reference is required" msgstr "" @@ -43239,38 +43280,11 @@ msgstr "" msgid "Reference: {0}, Item Code: {1} and Customer: {2}" msgstr "Verwysing: {0}, Item Kode: {1} en Kliënt: {2}" -#. Label of the edit_references (Section Break) field in DocType 'POS Invoice -#. Item' -#. Label of the references_section (Section Break) field in DocType 'POS -#. Invoice Merge Log' -#. Label of the edit_references (Section Break) field in DocType 'Sales Invoice -#. Label of the references_section (Section Break) field in DocType 'Purchase -#. Order Item' -#. Label of the sb_references (Section Break) field in DocType 'Contract' -#. Label of the references_section (Section Break) field in DocType 'Customer' -#. Label of the references_section (Section Break) field in DocType -#. 'Subcontracting Order Item' -#: erpnext/accounts/doctype/fiscal_year/fiscal_year_dashboard.py:10 -#: erpnext/accounts/doctype/pos_invoice_item/pos_invoice_item.json -#: erpnext/accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.json -#: erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template_dashboard.py:15 -#: erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json -#: erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template_dashboard.py:14 -#: erpnext/accounts/doctype/share_type/share_type_dashboard.py:7 -#: erpnext/accounts/doctype/subscription_plan/subscription_plan_dashboard.py:8 -#: erpnext/buying/doctype/purchase_order_item/purchase_order_item.json -#: erpnext/crm/doctype/contract/contract.json -#: erpnext/projects/doctype/timesheet/timesheet_dashboard.py:7 -#: erpnext/selling/doctype/customer/customer.json -#: erpnext/subcontracting/doctype/subcontracting_order_item/subcontracting_order_item.json -msgid "References" -msgstr "verwysings" - -#: erpnext/stock/doctype/delivery_note/delivery_note.py:373 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:374 msgid "References to Sales Invoices are Incomplete" msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:365 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:366 msgid "References to Sales Orders are Incomplete" msgstr "" @@ -43302,7 +43316,7 @@ msgstr "" #. Option for the 'Check' (Select) field in DocType 'Bank Transaction Rule #. Description Conditions' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:203 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:204 #: erpnext/accounts/doctype/bank_transaction_rule_description_conditions/bank_transaction_rule_description_conditions.json msgid "Regex" msgstr "" @@ -43437,7 +43451,7 @@ msgid "Remaining Balance" msgstr "Oorblywende Saldo" #. Label of the remark (Small Text) field in DocType 'Journal Entry' -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:657 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:664 #: erpnext/accounts/doctype/journal_entry/journal_entry.json #: erpnext/selling/page/point_of_sale/pos_payment.js:489 msgid "Remark" @@ -43464,9 +43478,9 @@ msgstr "opmerking" #. Label of the remarks (Text) field in DocType 'Quality Inspection' #. Label of the remarks (Text) field in DocType 'Stock Entry' #. Label of the remarks (Small Text) field in DocType 'Subcontracting Receipt' -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:418 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:592 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:660 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:394 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:568 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:636 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1231 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:594 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:683 @@ -43493,8 +43507,8 @@ msgstr "opmerking" #: erpnext/accounts/report/general_ledger/general_ledger.html:163 #: erpnext/accounts/report/general_ledger/general_ledger.py:818 #: erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:112 -#: erpnext/accounts/report/purchase_register/purchase_register.py:296 -#: erpnext/accounts/report/sales_register/sales_register.py:335 +#: erpnext/accounts/report/purchase_register/purchase_register.py:312 +#: erpnext/accounts/report/sales_register/sales_register.py:349 #: erpnext/manufacturing/doctype/bom_creator/bom_creator.json #: erpnext/manufacturing/doctype/downtime_entry/downtime_entry.json #: erpnext/manufacturing/doctype/job_card/job_card.json @@ -43838,7 +43852,7 @@ msgid "Reposting Vouchers Progress" msgstr "" #: erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:216 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:327 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:338 msgid "Reposting entries created: {0}" msgstr "" @@ -44119,7 +44133,7 @@ msgstr "" msgid "Research" msgstr "navorsing" -#: erpnext/setup/doctype/company/company.py:511 +#: erpnext/setup/doctype/company/company.py:512 msgid "Research & Development" msgstr "navorsing en ontwikkeling" @@ -44207,7 +44221,7 @@ msgstr "" msgid "Reserved" msgstr "" -#: erpnext/controllers/stock_controller.py:1368 +#: erpnext/controllers/stock_controller.py:1408 msgid "Reserved Batch Conflict" msgstr "" @@ -44277,7 +44291,7 @@ msgstr "Gereserveerde hoeveelheid" msgid "Reserved Quantity for Production" msgstr "Gereserveerde hoeveelheid vir produksie" -#: erpnext/stock/stock_ledger.py:2296 +#: erpnext/stock/stock_ledger.py:2321 msgid "Reserved Serial No." msgstr "" @@ -44293,13 +44307,13 @@ msgstr "" #: erpnext/stock/doctype/pick_list/pick_list.js:178 #: erpnext/stock/report/reserved_stock/reserved_stock.json #: erpnext/stock/report/stock_balance/stock_balance.py:569 -#: erpnext/stock/stock_ledger.py:2280 +#: erpnext/stock/stock_ledger.py:2305 #: erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js:205 #: erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js:333 msgid "Reserved Stock" msgstr "" -#: erpnext/stock/stock_ledger.py:2325 +#: erpnext/stock/stock_ledger.py:2350 msgid "Reserved Stock for Batch" msgstr "" @@ -44516,7 +44530,7 @@ msgstr "" msgid "Restart Subscription" msgstr "Herbegin inskrywing" -#: erpnext/assets/doctype/asset/asset.js:178 +#: erpnext/assets/doctype/asset/asset.js:183 msgid "Restore Asset" msgstr "" @@ -44715,11 +44729,11 @@ msgstr "" msgid "Return of Components" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:173 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:175 msgid "Return on Asset Ratio" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:174 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:176 msgid "Return on Equity Ratio" msgstr "" @@ -45108,8 +45122,8 @@ msgstr "" #: erpnext/accounts/doctype/pos_invoice/pos_invoice.json #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json -#: erpnext/accounts/report/purchase_register/purchase_register.py:282 -#: erpnext/accounts/report/sales_register/sales_register.py:312 +#: erpnext/accounts/report/purchase_register/purchase_register.py:298 +#: erpnext/accounts/report/sales_register/sales_register.py:326 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/supplier_quotation/supplier_quotation.json #: erpnext/selling/doctype/quotation/quotation.json @@ -45182,8 +45196,8 @@ msgstr "" msgid "Rounding Loss Allowance should be between 0 and 1" msgstr "" -#: erpnext/controllers/stock_controller.py:788 -#: erpnext/controllers/stock_controller.py:803 +#: erpnext/controllers/stock_controller.py:828 +#: erpnext/controllers/stock_controller.py:843 msgid "Rounding gain/loss Entry for Stock Transfer" msgstr "" @@ -45226,7 +45240,7 @@ msgstr "Ry # {0}: koers kan nie groter wees as die koers wat gebruik word in {1} msgid "Row # {0}: Returned Item {1} does not exist in {2} {3}" msgstr "Ry # {0}: Teruggestuurde item {1} bestaan nie in {2} {3}" -#: erpnext/manufacturing/doctype/work_order/work_order.py:349 +#: erpnext/manufacturing/doctype/work_order/work_order.py:350 msgid "Row #1: Sequence ID must be 1 for Operation {0}." msgstr "" @@ -45240,15 +45254,15 @@ msgstr "Ry # {0} (Betalingstabel): Bedrag moet negatief wees" msgid "Row #{0} (Payment Table): Amount must be positive" msgstr "Ry # {0} (Betaal Tabel): Bedrag moet positief wees" -#: erpnext/stock/doctype/item/item.py:564 +#: erpnext/stock/doctype/item/item.py:565 msgid "Row #{0}: A reorder entry already exists for warehouse {1} with reorder type {2}." msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:329 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:333 msgid "Row #{0}: Acceptance Criteria Formula is incorrect." msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:309 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:313 msgid "Row #{0}: Acceptance Criteria Formula is required." msgstr "" @@ -45261,7 +45275,7 @@ msgstr "" msgid "Row #{0}: Accepted Warehouse is mandatory for the accepted Item {1}" msgstr "" -#: erpnext/controllers/accounts_controller.py:1301 +#: erpnext/controllers/accounts_controller.py:1321 msgid "Row #{0}: Account {1} does not belong to company {2}" msgstr "Ry # {0}: Rekening {1} behoort nie aan maatskappy nie {2}" @@ -45326,27 +45340,27 @@ msgstr "" msgid "Row #{0}: Cannot create entry with different taxable AND withholding document links." msgstr "" -#: erpnext/controllers/accounts_controller.py:3804 +#: erpnext/controllers/accounts_controller.py:3824 msgid "Row #{0}: Cannot delete item {1} which has already been billed." msgstr "Ry # {0}: kan nie item {1} wat reeds gefaktureer is, uitvee nie." -#: erpnext/controllers/accounts_controller.py:3778 +#: erpnext/controllers/accounts_controller.py:3798 msgid "Row #{0}: Cannot delete item {1} which has already been delivered" msgstr "Ry # {0}: kan nie die item {1} wat reeds afgelewer is, uitvee nie" -#: erpnext/controllers/accounts_controller.py:3797 +#: erpnext/controllers/accounts_controller.py:3817 msgid "Row #{0}: Cannot delete item {1} which has already been received" msgstr "Ry # {0}: kan nie item {1} wat reeds ontvang is, uitvee nie" -#: erpnext/controllers/accounts_controller.py:3784 +#: erpnext/controllers/accounts_controller.py:3804 msgid "Row #{0}: Cannot delete item {1} which has work order assigned to it." msgstr "Ry # {0}: kan nie item {1} wat aan die werkorde toegewys is, uitvee nie." -#: erpnext/controllers/accounts_controller.py:3790 +#: erpnext/controllers/accounts_controller.py:3810 msgid "Row #{0}: Cannot delete item {1} which is already ordered against this Sales Order." msgstr "" -#: erpnext/controllers/accounts_controller.py:4111 +#: erpnext/controllers/accounts_controller.py:4131 msgid "Row #{0}: Cannot set Rate if the billed amount is greater than the amount for Item {1}." msgstr "" @@ -45404,11 +45418,11 @@ msgstr "" msgid "Row #{0}: Customer Provided Item {1} cannot be added multiple times in the Subcontracting Inward process." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:426 +#: erpnext/manufacturing/doctype/work_order/work_order.py:427 msgid "Row #{0}: Customer Provided Item {1} cannot be added multiple times." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:451 +#: erpnext/manufacturing/doctype/work_order/work_order.py:452 msgid "Row #{0}: Customer Provided Item {1} does not exist in the Required Items table linked to the Subcontracting Inward Order." msgstr "" @@ -45416,7 +45430,7 @@ msgstr "" msgid "Row #{0}: Customer Provided Item {1} exceeds quantity available through Subcontracting Inward Order" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:439 +#: erpnext/manufacturing/doctype/work_order/work_order.py:440 msgid "Row #{0}: Customer Provided Item {1} has insufficient quantity in the Subcontracting Inward Order. Available quantity is {2}." msgstr "" @@ -45437,7 +45451,7 @@ msgstr "" msgid "Row #{0}: Default BOM not found for FG Item {1}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:681 +#: erpnext/assets/doctype/asset/asset.py:685 msgid "Row #{0}: Depreciation Start Date is required" msgstr "" @@ -45449,7 +45463,7 @@ msgstr "Ry # {0}: Duplikaatinskrywing in Verwysings {1} {2}" msgid "Row #{0}: Expected Delivery Date cannot be before Purchase Order Date" msgstr "Ry # {0}: Verwagte afleweringsdatum kan nie voor Aankoopdatum wees nie" -#: erpnext/controllers/stock_controller.py:919 +#: erpnext/controllers/stock_controller.py:959 msgid "Row #{0}: Expense Account not set for the Item {1}. {2}" msgstr "" @@ -45497,7 +45511,7 @@ msgstr "" msgid "Row #{0}: For {1}, you can select reference document only if account gets debited" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:664 +#: erpnext/assets/doctype/asset/asset.py:668 msgid "Row #{0}: Frequency of Depreciation must be greater than zero" msgstr "" @@ -45529,7 +45543,7 @@ msgstr "" msgid "Row #{0}: Item {1} has no stock in warehouse {2}." msgstr "" -#: erpnext/controllers/stock_controller.py:148 +#: erpnext/controllers/stock_controller.py:184 msgid "Row #{0}: Item {1} has zero rate but '{2}' is not enabled." msgstr "" @@ -45578,11 +45592,11 @@ msgstr "" msgid "Row #{0}: Journal Entry {1} does not have account {2} or already matched against another voucher" msgstr "Ry # {0}: Tydskrifinskrywings {1} het nie rekening {2} of alreeds teen 'n ander geskenkbewys aangepas nie" -#: erpnext/assets/doctype/asset/asset.py:675 +#: erpnext/assets/doctype/asset/asset.py:679 msgid "Row #{0}: Next Depreciation Date cannot be before Available-for-use Date" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:670 +#: erpnext/assets/doctype/asset/asset.py:674 msgid "Row #{0}: Next Depreciation Date cannot be before Purchase Date" msgstr "" @@ -45594,7 +45608,7 @@ msgstr "Ry # {0}: Nie toegelaat om Verskaffer te verander nie aangesien Aankoopb msgid "Row #{0}: Only {1} available to reserve for the Item {2}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:638 +#: erpnext/assets/doctype/asset/asset.py:642 msgid "Row #{0}: Opening Accumulated Depreciation must be less than or equal to {1}" msgstr "" @@ -45623,11 +45637,11 @@ msgstr "" msgid "Row #{0}: Please select the Sub Assembly Warehouse" msgstr "" -#: erpnext/stock/doctype/item/item.py:571 +#: erpnext/stock/doctype/item/item.py:572 msgid "Row #{0}: Please set reorder quantity" msgstr "Ry # {0}: Stel asseblief die volgorde van hoeveelheid in" -#: erpnext/controllers/accounts_controller.py:616 +#: erpnext/controllers/accounts_controller.py:636 msgid "Row #{0}: Please update deferred revenue/expense account in item row or default account in company master" msgstr "" @@ -45649,15 +45663,15 @@ msgstr "" msgid "Row #{0}: Qty should be less than or equal to Available Qty to Reserve (Actual Qty - Reserved Qty) {1} for Iem {2} against Batch {3} in Warehouse {4}." msgstr "" -#: erpnext/controllers/stock_controller.py:1505 +#: erpnext/controllers/stock_controller.py:1545 msgid "Row #{0}: Quality Inspection is required for Item {1}" msgstr "" -#: erpnext/controllers/stock_controller.py:1520 +#: erpnext/controllers/stock_controller.py:1560 msgid "Row #{0}: Quality Inspection {1} is not submitted for the item: {2}" msgstr "" -#: erpnext/controllers/stock_controller.py:1535 +#: erpnext/controllers/stock_controller.py:1575 msgid "Row #{0}: Quality Inspection {1} was rejected for item {2}" msgstr "" @@ -45665,7 +45679,7 @@ msgstr "" msgid "Row #{0}: Quantity cannot be a non-positive number. Please increase the quantity or remove the Item {1}" msgstr "" -#: erpnext/controllers/accounts_controller.py:1464 +#: erpnext/controllers/accounts_controller.py:1484 msgid "Row #{0}: Quantity for Item {1} cannot be zero." msgstr "Ry # {0}: Hoeveelheid vir item {1} kan nie nul wees nie." @@ -45677,8 +45691,8 @@ msgstr "" msgid "Row #{0}: Quantity to reserve for the Item {1} should be greater than 0." msgstr "" -#: erpnext/controllers/accounts_controller.py:879 -#: erpnext/controllers/accounts_controller.py:891 +#: erpnext/controllers/accounts_controller.py:899 +#: erpnext/controllers/accounts_controller.py:911 #: erpnext/utilities/transaction_base.py:172 #: erpnext/utilities/transaction_base.py:178 msgid "Row #{0}: Rate must be same as {1}: {2} ({3} / {4})" @@ -45728,11 +45742,11 @@ msgid "" "\t\t\t\t\tthis validation." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:355 +#: erpnext/manufacturing/doctype/work_order/work_order.py:356 msgid "Row #{0}: Sequence ID must be {1} or {2} for Operation {3}." msgstr "" -#: erpnext/controllers/stock_controller.py:303 +#: erpnext/controllers/stock_controller.py:339 msgid "Row #{0}: Serial No {1} does not belong to Batch {2}" msgstr "Ry # {0}: reeksnommer {1} behoort nie aan groep {2}" @@ -45748,15 +45762,15 @@ msgstr "" msgid "Row #{0}: Serial No(s) {1} are not a part of the linked Subcontracting Inward Order. Please select valid Serial No(s)." msgstr "" -#: erpnext/controllers/accounts_controller.py:644 +#: erpnext/controllers/accounts_controller.py:664 msgid "Row #{0}: Service End Date cannot be before Invoice Posting Date" msgstr "Ry # {0}: Die einddatum van die diens kan nie voor die inhandigingsdatum van die faktuur wees nie" -#: erpnext/controllers/accounts_controller.py:638 +#: erpnext/controllers/accounts_controller.py:658 msgid "Row #{0}: Service Start Date cannot be greater than Service End Date" msgstr "Ry # {0}: Diens se begindatum kan nie groter wees as die einddatum van die diens nie" -#: erpnext/controllers/accounts_controller.py:632 +#: erpnext/controllers/accounts_controller.py:652 msgid "Row #{0}: Service Start and End Date is required for deferred accounting" msgstr "Ry # {0}: Aanvangs- en einddatum van diens word benodig vir uitgestelde boekhouding" @@ -45772,11 +45786,11 @@ msgstr "" msgid "Row #{0}: Source Warehouse must be same as Customer Warehouse {1} from the linked Subcontracting Inward Order" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:460 +#: erpnext/manufacturing/doctype/work_order/work_order.py:461 msgid "Row #{0}: Source Warehouse {1} for item {2} cannot be a customer warehouse." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:415 +#: erpnext/manufacturing/doctype/work_order/work_order.py:416 msgid "Row #{0}: Source Warehouse {1} for item {2} must be same as Source Warehouse {3} in the Work Order." msgstr "" @@ -45792,7 +45806,7 @@ msgstr "" msgid "Row #{0}: Start Time must be before End Time" msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:209 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:213 msgid "Row #{0}: Status is mandatory" msgstr "" @@ -45816,7 +45830,7 @@ msgstr "" msgid "Row #{0}: Stock is already reserved for the Item {1}." msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:527 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:528 msgid "Row #{0}: Stock is reserved for item {1} in warehouse {2}." msgstr "" @@ -45837,11 +45851,11 @@ msgstr "" msgid "Row #{0}: Target Warehouse must be same as Customer Warehouse {1} from the linked Subcontracting Inward Order" msgstr "" -#: erpnext/controllers/stock_controller.py:316 +#: erpnext/controllers/stock_controller.py:352 msgid "Row #{0}: The batch {1} has already expired." msgstr "Ry # {0}: Die bondel {1} het reeds verval." -#: erpnext/stock/doctype/item/item.py:580 +#: erpnext/stock/doctype/item/item.py:581 msgid "Row #{0}: The warehouse {1} is not a child warehouse of a group warehouse {2}" msgstr "" @@ -45849,15 +45863,15 @@ msgstr "" msgid "Row #{0}: Timings conflicts with row {1}" msgstr "Ry # {0}: Tydsbesteding stryd met ry {1}" -#: erpnext/assets/doctype/asset/asset.py:651 +#: erpnext/assets/doctype/asset/asset.py:655 msgid "Row #{0}: Total Number of Depreciations cannot be less than or equal to Opening Number of Booked Depreciations" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:660 +#: erpnext/assets/doctype/asset/asset.py:664 msgid "Row #{0}: Total Number of Depreciations must be greater than zero" msgstr "" -#: erpnext/controllers/stock_controller.py:100 +#: erpnext/controllers/stock_controller.py:136 msgid "Row #{0}: Warehouse {1} does not match with the warehouse {2} in Serial and Batch Bundle {3}." msgstr "" @@ -45885,11 +45899,11 @@ msgstr "" msgid "Row #{0}: {1} can not be negative for item {2}" msgstr "Ry # {0}: {1} kan nie vir item {2} negatief wees nie" -#: erpnext/controllers/stock_controller.py:1183 +#: erpnext/controllers/stock_controller.py:1223 msgid "Row #{0}: {1} is mandatory for the Inventory Dimension {2}." msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:322 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:326 msgid "Row #{0}: {1} is not a valid reading field. Please refer to the field description." msgstr "" @@ -45901,7 +45915,7 @@ msgstr "Ry # {0}: {1} is nodig om die openingsfakture {2} te skep" msgid "Row #{0}: {1} of {2} should be {3}. Please update the {1} or select a different account." msgstr "" -#: erpnext/controllers/accounts_controller.py:3918 +#: erpnext/controllers/accounts_controller.py:3938 msgid "Row #{0}:Quantity for Item {1} cannot be zero." msgstr "" @@ -45949,7 +45963,7 @@ msgstr "Ry # {}: Geldeenheid van {} - {} stem nie ooreen met die maatskappy se g msgid "Row #{}: Either Party ID or Party Name is required" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:421 +#: erpnext/assets/doctype/asset/asset.py:425 msgid "Row #{}: Finance Book should not be empty since you're using multiple." msgstr "" @@ -45973,7 +45987,7 @@ msgstr "" msgid "Row #{}: Please assign task to a member." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:413 +#: erpnext/assets/doctype/asset/asset.py:417 msgid "Row #{}: Please use a different Finance Book." msgstr "" @@ -46002,7 +46016,7 @@ msgstr "Ry # {}: {}" msgid "Row #{}: {} {} does not exist." msgstr "Ry # {}: {} {} bestaan nie." -#: erpnext/stock/doctype/item/item.py:1507 +#: erpnext/stock/doctype/item/item.py:1527 msgid "Row #{}: {} {} doesn't belong to Company {}. Please select valid {}." msgstr "" @@ -46070,7 +46084,7 @@ msgstr "" msgid "Row {0}: Conversion Factor is mandatory" msgstr "Ry {0}: Omskakelfaktor is verpligtend" -#: erpnext/controllers/accounts_controller.py:3245 +#: erpnext/controllers/accounts_controller.py:3265 msgid "Row {0}: Cost Center {1} does not belong to Company {2}" msgstr "" @@ -46098,7 +46112,7 @@ msgstr "Ry {0}: Afleweringspakhuis ({1}) en kliëntepakhuis ({2}) kan nie diesel msgid "Row {0}: Delivery Warehouse cannot be same as Customer Warehouse for Item {1}." msgstr "" -#: erpnext/controllers/accounts_controller.py:2745 +#: erpnext/controllers/accounts_controller.py:2765 msgid "Row {0}: Due Date in the Payment Terms table cannot be before Posting Date" msgstr "Ry {0}: Die vervaldatum in die tabel Betalingsvoorwaardes kan nie voor die boekingsdatum wees nie" @@ -46111,11 +46125,11 @@ msgstr "" msgid "Row {0}: Exchange Rate is mandatory" msgstr "Ry {0}: Wisselkoers is verpligtend" -#: erpnext/assets/doctype/asset/asset.py:609 +#: erpnext/assets/doctype/asset/asset.py:613 msgid "Row {0}: Expected Value After Useful Life cannot be negative" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:612 +#: erpnext/assets/doctype/asset/asset.py:616 msgid "Row {0}: Expected Value After Useful Life must be less than Net Purchase Amount" msgstr "" @@ -46148,7 +46162,7 @@ msgstr "Ry {0}: Van tyd tot tyd is verpligtend." msgid "Row {0}: From Time and To Time of {1} is overlapping with {2}" msgstr "Ry {0}: Van tyd tot tyd van {1} oorvleuel met {2}" -#: erpnext/controllers/stock_controller.py:1601 +#: erpnext/controllers/stock_controller.py:1641 msgid "Row {0}: From Warehouse is mandatory for internal transfers" msgstr "" @@ -46192,7 +46206,7 @@ msgstr "" msgid "Row {0}: Operation time should be greater than 0 for operation {1}" msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:584 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:585 msgid "Row {0}: Packed Qty must be equal to {1} Qty." msgstr "" @@ -46292,7 +46306,7 @@ msgstr "" msgid "Row {0}: Subcontracted Item is mandatory for the raw material {1}" msgstr "Ry {0}: Item uit die onderkontrak is verpligtend vir die grondstof {1}" -#: erpnext/controllers/stock_controller.py:1592 +#: erpnext/controllers/stock_controller.py:1632 msgid "Row {0}: Target Warehouse is mandatory for internal transfers" msgstr "" @@ -46308,7 +46322,7 @@ msgstr "" msgid "Row {0}: The item {1}, quantity must be positive number" msgstr "Ry {0}: die item {1}, hoeveelheid moet positief wees" -#: erpnext/controllers/accounts_controller.py:3222 +#: erpnext/controllers/accounts_controller.py:3242 msgid "Row {0}: The {3} Account {1} does not belong to the company {2}" msgstr "" @@ -46337,11 +46351,11 @@ msgid "Row {0}: Warehouse {1} is linked to company {2}. Please select a warehous msgstr "" #: erpnext/manufacturing/doctype/bom/bom.py:1239 -#: erpnext/manufacturing/doctype/work_order/work_order.py:489 +#: erpnext/manufacturing/doctype/work_order/work_order.py:490 msgid "Row {0}: Workstation or Workstation Type is mandatory for an operation {1}" msgstr "" -#: erpnext/controllers/accounts_controller.py:1183 +#: erpnext/controllers/accounts_controller.py:1203 msgid "Row {0}: user has not applied the rule {1} on the item {2}" msgstr "Ry {0}: gebruiker het nie die reël {1} op die item {2} toegepas nie" @@ -46353,7 +46367,7 @@ msgstr "" msgid "Row {0}: {1} must be greater than 0" msgstr "Ry {0}: {1} moet groter as 0 wees" -#: erpnext/controllers/accounts_controller.py:789 +#: erpnext/controllers/accounts_controller.py:809 msgid "Row {0}: {1} {2} cannot be same as {3} (Party Account) {4}" msgstr "" @@ -46399,7 +46413,7 @@ msgstr "Rye is verwyder in {0}" msgid "Rows with Same Account heads will be merged on Ledger" msgstr "" -#: erpnext/controllers/accounts_controller.py:2756 +#: erpnext/controllers/accounts_controller.py:2776 msgid "Rows with duplicate due dates in other rows were found: {0}" msgstr "Rye met duplikaatsperdatums in ander rye is gevind: {0}" @@ -46407,7 +46421,7 @@ msgstr "Rye met duplikaatsperdatums in ander rye is gevind: {0}" msgid "Rows: {0} have 'Payment Entry' as reference_type. This should not be set manually." msgstr "" -#: erpnext/controllers/accounts_controller.py:282 +#: erpnext/controllers/accounts_controller.py:302 msgid "Rows: {0} in {1} section are Invalid. Reference Name should point to a valid Payment Entry or Journal Entry." msgstr "" @@ -46422,7 +46436,7 @@ msgstr "" #. Label of the rule_description (Small Text) field in DocType 'Promotional #. Scheme Price Discount' #. Scheme Product Discount' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:47 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:48 #: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.json #: erpnext/accounts/doctype/pricing_rule/pricing_rule.json #: erpnext/accounts/doctype/promotional_scheme_price_discount/promotional_scheme_price_discount.json @@ -46431,7 +46445,7 @@ msgid "Rule Description" msgstr "" #. Label of the rule_name (Data) field in DocType 'Bank Transaction Rule' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:28 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:29 #: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.json msgid "Rule Name" msgstr "" @@ -46448,7 +46462,7 @@ msgstr "" msgid "Rule matched based on transaction description and other criteria." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:39 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:40 msgid "Rule name is required" msgstr "" @@ -46468,7 +46482,7 @@ msgstr "" msgid "Rules evaluation started" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:189 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:190 msgid "Rules to match against the transaction description" msgstr "" @@ -46556,6 +46570,7 @@ msgstr "SO Aantal" msgid "SO Total Qty" msgstr "" +#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:16 #: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:26 msgid "STATEMENT OF ACCOUNTS" msgstr "" @@ -46623,8 +46638,8 @@ msgstr "" #: erpnext/regional/report/vat_audit_report/vat_audit_report.py:145 #: erpnext/selling/doctype/quotation/quotation.json #: erpnext/selling/doctype/sales_order/sales_order.json -#: erpnext/setup/doctype/company/company.py:457 -#: erpnext/setup/doctype/company/company.py:649 +#: erpnext/setup/doctype/company/company.py:458 +#: erpnext/setup/doctype/company/company.py:650 #: erpnext/setup/doctype/company/company_dashboard.py:9 #: erpnext/setup/doctype/sales_person/sales_person_dashboard.py:12 #: erpnext/setup/install.py:423 @@ -46639,7 +46654,7 @@ msgstr "verkope" msgid "Sales & Purchase" msgstr "" -#: erpnext/setup/doctype/company/company.py:649 +#: erpnext/setup/doctype/company/company.py:650 msgid "Sales Account" msgstr "Verkooprekening" @@ -46834,7 +46849,7 @@ msgstr "" msgid "Sales Invoice mode is activated in POS. Please create Sales Invoice instead." msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:597 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:598 msgid "Sales Invoice {0} has already been submitted" msgstr "Verkoopsfaktuur {0} is reeds ingedien" @@ -46893,7 +46908,7 @@ msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.js:380 #: erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:284 -#: erpnext/accounts/report/sales_register/sales_register.py:238 +#: erpnext/accounts/report/sales_register/sales_register.py:252 #: erpnext/buying/doctype/purchase_order_item/purchase_order_item.json #: erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.json #: erpnext/controllers/selling_controller.py:494 @@ -47030,7 +47045,7 @@ msgstr "" msgid "Sales Order Trends" msgstr "Verkoopsvolgorde" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:284 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:285 msgid "Sales Order required for Item {0}" msgstr "Verkoopsbestelling benodig vir item {0}" @@ -47047,7 +47062,7 @@ msgstr "" msgid "Sales Order {0} is not submitted" msgstr "Verkoopsbestelling {0} is nie ingedien nie" -#: erpnext/manufacturing/doctype/work_order/work_order.py:565 +#: erpnext/manufacturing/doctype/work_order/work_order.py:566 msgid "Sales Order {0} is not valid" msgstr "Verkoopsbestelling {0} is nie geldig nie" @@ -47301,7 +47316,7 @@ msgstr "Verkoopsregister" msgid "Sales Representative" msgstr "" -#: erpnext/accounts/report/gross_profit/gross_profit.py:989 +#: erpnext/accounts/report/gross_profit/gross_profit.py:995 #: erpnext/stock/doctype/delivery_note/delivery_note.js:270 msgid "Sales Return" msgstr "Verkope terug" @@ -47464,7 +47479,7 @@ msgid "Sample Quantity" msgstr "" #: erpnext/stock/doctype/purchase_receipt/purchase_receipt.js:269 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:552 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:557 msgid "Sample Retention Stock Entry" msgstr "" @@ -47476,7 +47491,7 @@ msgstr "" #. Label of the sample_size (Float) field in DocType 'Quality Inspection' #: erpnext/manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:93 -#: erpnext/public/js/controllers/transaction.js:2871 +#: erpnext/public/js/controllers/transaction.js:2893 #: erpnext/stock/doctype/quality_inspection/quality_inspection.json msgid "Sample Size" msgstr "Steekproefgrootte" @@ -47580,13 +47595,13 @@ msgstr "" #. Label of the schedule_date (Date) field in DocType 'Depreciation Schedule' #. Label of the schedule_date (Datetime) field in DocType 'Production Plan Sub #. Assembly Item' -#: erpnext/assets/doctype/asset/asset.js:378 +#: erpnext/assets/doctype/asset/asset.js:383 #: erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json #: erpnext/manufacturing/doctype/production_plan_sub_assembly_item/production_plan_sub_assembly_item.json msgid "Schedule Date" msgstr "Skedule Datum" -#: erpnext/public/js/controllers/transaction.js:516 +#: erpnext/public/js/controllers/transaction.js:538 msgid "Schedule Name" msgstr "" @@ -47711,7 +47726,7 @@ msgstr "" msgid "Scrap" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:163 +#: erpnext/assets/doctype/asset/asset.js:168 msgid "Scrap Asset" msgstr "" @@ -47772,6 +47787,10 @@ msgstr "" msgid "Search transactions" msgstr "" +#: erpnext/stock/doctype/item/item.js:798 +msgid "Search values..." +msgstr "" + #. Name of a UOM #: erpnext/setup/setup_wizard/data/uom_data.json msgid "Second" @@ -47888,7 +47907,7 @@ msgstr "Kies alternatiewe item" msgid "Select Alternative Items for Sales Order" msgstr "" -#: erpnext/stock/doctype/item/item.js:838 +#: erpnext/stock/doctype/item/item.js:924 msgid "Select Attribute Values" msgstr "Kies kenmerkwaardes" @@ -47991,7 +48010,7 @@ msgstr "Kies Items" msgid "Select Items based on Delivery Date" msgstr "Kies items gebaseer op Afleweringsdatum" -#: erpnext/public/js/controllers/transaction.js:2912 +#: erpnext/public/js/controllers/transaction.js:2928 msgid "Select Items for Quality Inspection" msgstr "" @@ -48021,7 +48040,7 @@ msgstr "" msgid "Select Loyalty Program" msgstr "Kies Lojaliteitsprogram" -#: erpnext/public/js/controllers/transaction.js:502 +#: erpnext/public/js/controllers/transaction.js:524 msgid "Select Payment Schedule" msgstr "" @@ -48120,14 +48139,14 @@ msgstr "Kies 'n maatskappy" msgid "Select a transaction to match and reconcile with vouchers" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:586 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:562 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:679 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1175 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:588 msgid "Select all" msgstr "" -#: erpnext/stock/doctype/item/item.js:1180 +#: erpnext/stock/doctype/item/item.js:1266 msgid "Select an Item Group." msgstr "" @@ -48143,7 +48162,7 @@ msgstr "" msgid "Select an item from each set to be used in the Sales Order." msgstr "" -#: erpnext/stock/doctype/item/item.js:852 +#: erpnext/stock/doctype/item/item.js:938 msgid "Select at least one attribute value." msgstr "" @@ -48161,7 +48180,7 @@ msgstr "" msgid "Select date" msgstr "" -#: erpnext/controllers/accounts_controller.py:2997 +#: erpnext/controllers/accounts_controller.py:3017 msgid "Select finance book for the item {0} at row {1}" msgstr "Kies finansieringsboek vir die item {0} op ry {1}" @@ -48173,7 +48192,7 @@ msgstr "Kies itemgroep" msgid "Select number of days" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:605 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:581 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:699 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1192 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:632 @@ -48210,7 +48229,7 @@ msgstr "" msgid "Select the customer or supplier." msgstr "Kies die kliënt of verskaffer." -#: erpnext/assets/doctype/asset/asset.js:930 +#: erpnext/assets/doctype/asset/asset.js:939 msgid "Select the date" msgstr "" @@ -48224,6 +48243,10 @@ msgstr "" msgid "Select the group first to filter the applicable withholding categories below." msgstr "" +#: erpnext/public/js/setup_wizard.js:89 +msgid "Select the modules that you plan to implement" +msgstr "" + #: erpnext/manufacturing/doctype/bom/bom.js:1007 msgid "Select the raw materials (Items) required to manufacture the Item" msgstr "" @@ -48283,22 +48306,22 @@ msgstr "" msgid "Self delivery" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:641 +#: erpnext/assets/doctype/asset/asset.js:646 #: erpnext/stock/doctype/batch/batch_dashboard.py:9 #: erpnext/stock/doctype/item/item_dashboard.py:20 msgid "Sell" msgstr "verkoop" -#: erpnext/assets/doctype/asset/asset.js:171 -#: erpnext/assets/doctype/asset/asset.js:630 +#: erpnext/assets/doctype/asset/asset.js:176 +#: erpnext/assets/doctype/asset/asset.js:635 msgid "Sell Asset" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:635 +#: erpnext/assets/doctype/asset/asset.js:640 msgid "Sell Qty" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:651 +#: erpnext/assets/doctype/asset/asset.js:656 msgid "Sell quantity cannot exceed the asset quantity" msgstr "" @@ -48306,7 +48329,7 @@ msgstr "" msgid "Sell quantity cannot exceed the asset quantity. Asset {0} has only {1} item(s)." msgstr "" -#: erpnext/assets/doctype/asset/asset.js:647 +#: erpnext/assets/doctype/asset/asset.js:652 msgid "Sell quantity must be greater than zero" msgstr "" @@ -48418,7 +48441,7 @@ msgid "Send Emails to Suppliers" msgstr "Stuur e-posse na verskaffers" #. Label of the send_sms (Button) field in DocType 'SMS Center' -#: erpnext/public/js/controllers/transaction.js:721 +#: erpnext/public/js/controllers/transaction.js:743 #: erpnext/selling/doctype/sms_center/sms_center.json msgid "Send SMS" msgstr "Stuur SMS" @@ -48554,7 +48577,7 @@ msgstr "" #: erpnext/manufacturing/doctype/job_card/job_card.json #: erpnext/manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:74 #: erpnext/manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.py:114 -#: erpnext/public/js/controllers/transaction.js:2884 +#: erpnext/public/js/controllers/transaction.js:2906 #: erpnext/public/js/utils/serial_no_batch_selector.js:432 #: erpnext/selling/doctype/installation_note_item/installation_note_item.json #: erpnext/stock/doctype/delivery_note_item/delivery_note_item.json @@ -48615,11 +48638,11 @@ msgstr "" msgid "Serial No Range" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2675 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2725 msgid "Serial No Reserved" msgstr "" -#: erpnext/stock/doctype/item/item.py:477 +#: erpnext/stock/doctype/item/item.py:478 msgid "Serial No Series Overlap" msgstr "" @@ -48671,7 +48694,7 @@ msgstr "" msgid "Serial No and Batch Traceability" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1179 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1229 msgid "Serial No is mandatory" msgstr "" @@ -48700,7 +48723,7 @@ msgstr "Reeksnommer {0} behoort nie aan item {1} nie" msgid "Serial No {0} does not exist" msgstr "Reeksnommer {0} bestaan nie" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:3464 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:3514 msgid "Serial No {0} does not exists" msgstr "" @@ -48754,11 +48777,11 @@ msgstr "" msgid "Serial Nos / Batches" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1958 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2008 msgid "Serial Nos are created successfully" msgstr "" -#: erpnext/stock/stock_ledger.py:2286 +#: erpnext/stock/stock_ledger.py:2311 msgid "Serial Nos are reserved in Stock Reservation Entries, you need to unreserve them before proceeding." msgstr "" @@ -48828,21 +48851,25 @@ msgstr "" #: erpnext/stock/report/incorrect_serial_and_batch_bundle/incorrect_serial_and_batch_bundle.py:31 #: erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py:80 #: erpnext/stock/report/stock_ledger/stock_ledger.py:411 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:177 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:188 #: erpnext/subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.json #: erpnext/workspace_sidebar/stock.json msgid "Serial and Batch Bundle" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2180 +#: erpnext/stock/doctype/item/item.py:1122 +msgid "Serial and Batch Bundle Exists" +msgstr "" + +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2230 msgid "Serial and Batch Bundle created" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2274 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2324 msgid "Serial and Batch Bundle updated" msgstr "" -#: erpnext/controllers/stock_controller.py:196 +#: erpnext/controllers/stock_controller.py:232 msgid "Serial and Batch Bundle {0} is already used in {1} {2}." msgstr "" @@ -48850,7 +48877,7 @@ msgstr "" msgid "Serial and Batch Bundle {0} is not submitted" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2250 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2300 msgid "Serial and Batch Bundle {0} is submitted and its entries cannot be modified." msgstr "" @@ -49104,12 +49131,12 @@ msgid "Service Stop Date" msgstr "" #: erpnext/accounts/deferred_revenue.py:45 -#: erpnext/public/js/controllers/transaction.js:1793 +#: erpnext/public/js/controllers/transaction.js:1815 msgid "Service Stop Date cannot be after Service End Date" msgstr "Diensstopdatum kan nie na diens einddatum wees nie" #: erpnext/accounts/deferred_revenue.py:42 -#: erpnext/public/js/controllers/transaction.js:1790 +#: erpnext/public/js/controllers/transaction.js:1812 msgid "Service Stop Date cannot be before Service Start Date" msgstr "Diensstopdatum kan nie voor die diens begin datum wees nie" @@ -49319,11 +49346,11 @@ msgstr "" msgid "Set closing balance as per bank statement" msgstr "" -#: erpnext/setup/doctype/company/company.py:547 +#: erpnext/setup/doctype/company/company.py:548 msgid "Set default inventory account for perpetual inventory" msgstr "Stel verstekvoorraadrekening vir voortdurende voorraad" -#: erpnext/setup/doctype/company/company.py:573 +#: erpnext/setup/doctype/company/company.py:574 msgid "Set default {0} account for non stock items" msgstr "" @@ -49390,15 +49417,15 @@ msgstr "" msgid "Set valuation rate for rejected Materials" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:898 +#: erpnext/assets/doctype/asset/asset.py:902 msgid "Set {0} in asset category {1} for company {2}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1231 +#: erpnext/assets/doctype/asset/asset.py:1235 msgid "Set {0} in asset category {1} or company {2}" msgstr "Stel {0} in batekategorie {1} of maatskappy {2}" -#: erpnext/assets/doctype/asset/asset.py:1228 +#: erpnext/assets/doctype/asset/asset.py:1232 msgid "Set {0} in company {1}" msgstr "Stel {0} in maatskappy {1}" @@ -49451,7 +49478,7 @@ msgstr "Stel gebeure in op {0}, aangesien die werknemer verbonde aan die onderst msgid "Setting Item Locations..." msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:25 +#: erpnext/setup/setup_wizard/setup_wizard.py:26 msgid "Setting defaults" msgstr "Stel verstek" @@ -49461,12 +49488,12 @@ msgstr "Stel verstek" msgid "Setting the account as a Company Account is necessary for Bank Reconciliation" msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:20 +#: erpnext/setup/setup_wizard/setup_wizard.py:21 msgid "Setting up company" msgstr "Stel 'n onderneming op" #: erpnext/manufacturing/doctype/bom/bom.py:1218 -#: erpnext/manufacturing/doctype/work_order/work_order.py:1562 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1586 msgid "Setting {0} is required" msgstr "" @@ -49524,7 +49551,7 @@ msgstr "" msgid "Setup Warehouse" msgstr "" -#: erpnext/public/js/setup_wizard.js:25 +#: erpnext/public/js/setup_wizard.js:120 msgid "Setup your organization" msgstr "" @@ -49606,7 +49633,7 @@ msgid "Shelf Life in Days" msgstr "" #. Label of the shift (Link) field in DocType 'Depreciation Schedule' -#: erpnext/assets/doctype/asset/asset.js:391 +#: erpnext/assets/doctype/asset/asset.js:396 #: erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json msgid "Shift" msgstr "" @@ -49678,7 +49705,7 @@ msgstr "" msgid "Shipment details" msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:768 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:769 msgid "Shipments" msgstr "verskepings" @@ -49713,7 +49740,7 @@ msgstr "" msgid "Shipping Address Template" msgstr "" -#: erpnext/controllers/accounts_controller.py:575 +#: erpnext/controllers/accounts_controller.py:595 msgid "Shipping Address does not belong to the {0}" msgstr "" @@ -50212,7 +50239,7 @@ msgstr "" #. Option for the 'Bank Entry Type' (Select) field in DocType 'Bank Transaction #. Rule' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:282 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:283 #: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.json msgid "Single Account" msgstr "" @@ -50297,11 +50324,11 @@ msgid "Sold by" msgstr "" #: erpnext/accounts/report/financial_ratios/financial_ratios.js:55 -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:168 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:170 msgid "Solvency Ratios" msgstr "" -#: erpnext/controllers/accounts_controller.py:4369 +#: erpnext/controllers/accounts_controller.py:4389 msgid "Some required Company details are missing. You don't have permission to update them. Please contact your System Manager." msgstr "" @@ -50416,7 +50443,7 @@ msgstr "" #: erpnext/selling/doctype/sales_order_item/sales_order_item.json #: erpnext/stock/dashboard/item_dashboard.js:227 #: erpnext/stock/doctype/material_request_item/material_request_item.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:815 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:820 #: erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json msgid "Source Warehouse" msgstr "Bron pakhuis" @@ -50436,7 +50463,7 @@ msgstr "" msgid "Source Warehouse is mandatory for the Item {0}." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:374 +#: erpnext/manufacturing/doctype/work_order/work_order.py:375 msgid "Source Warehouse {0} must be same as Customer Warehouse {1} in the Subcontracting Inward Order." msgstr "" @@ -50506,15 +50533,15 @@ msgstr "" msgid "Spent" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:691 +#: erpnext/assets/doctype/asset/asset.js:696 #: erpnext/stock/doctype/batch/batch.js:104 #: erpnext/stock/doctype/batch/batch.js:185 #: erpnext/support/doctype/issue/issue.js:114 msgid "Split" msgstr "verdeel" -#: erpnext/assets/doctype/asset/asset.js:147 -#: erpnext/assets/doctype/asset/asset.js:675 +#: erpnext/assets/doctype/asset/asset.js:152 +#: erpnext/assets/doctype/asset/asset.js:680 msgid "Split Asset" msgstr "" @@ -50538,11 +50565,11 @@ msgstr "" msgid "Split Issue" msgstr "Gesplete uitgawe" -#: erpnext/assets/doctype/asset/asset.js:681 +#: erpnext/assets/doctype/asset/asset.js:686 msgid "Split Qty" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1370 +#: erpnext/assets/doctype/asset/asset.py:1374 msgid "Split Quantity must be less than Asset Quantity" msgstr "" @@ -50628,7 +50655,7 @@ msgstr "" #: erpnext/setup/setup_wizard/operations/defaults_setup.py:70 #: erpnext/setup/setup_wizard/operations/install_fixtures.py:493 -#: erpnext/stock/doctype/item/item.py:275 erpnext/tests/utils.py:283 +#: erpnext/stock/doctype/item/item.py:276 erpnext/tests/utils.py:283 #: erpnext/tests/utils.py:2518 msgid "Standard Selling" msgstr "Standaardverkope" @@ -50767,7 +50794,7 @@ msgstr "" msgid "Starts With" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:201 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:202 msgid "Starts with" msgstr "" @@ -50827,7 +50854,7 @@ msgstr "Status moet gekanselleer of voltooi wees" msgid "Status must be one of {0}" msgstr "Status moet een van {0} wees" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:275 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:279 msgid "Status set to rejected as there are one or more rejected readings." msgstr "" @@ -50842,6 +50869,7 @@ msgstr "" #: erpnext/accounts/report/account_balance/account_balance.js:57 #: erpnext/desktop_icon/stock.json #: erpnext/manufacturing/doctype/bom/bom_dashboard.py:14 +#: erpnext/public/js/setup_wizard.js:92 #: erpnext/setup/doctype/incoterm/incoterm.json #: erpnext/setup/workspace/home/home.json #: erpnext/stock/doctype/item/item_list.js:21 @@ -51075,7 +51103,7 @@ msgstr "" #. Name of a DocType #: erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.json #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:113 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:138 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:149 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:30 msgid "Stock Ledger Entry" msgstr "Voorraad Grootboek Inskrywing" @@ -51229,7 +51257,7 @@ msgstr "Voorraad ontvang maar nie gefaktureer nie" #. Label of a Link in the Stock Workspace #. Label of a Workspace Sidebar Item #: erpnext/setup/workspace/home/home.json -#: erpnext/stock/doctype/item/item.py:668 +#: erpnext/stock/doctype/item/item.py:669 #: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json #: erpnext/stock/doctype/stock_settings/stock_settings.js:155 #: erpnext/stock/workspace/stock/stock.json @@ -51242,7 +51270,7 @@ msgstr "Voorraadversoening" msgid "Stock Reconciliation Item" msgstr "Voorraadversoening Item" -#: erpnext/stock/doctype/item/item.py:668 +#: erpnext/stock/doctype/item/item.py:669 msgid "Stock Reconciliations" msgstr "Voorraadversoenings" @@ -51307,7 +51335,7 @@ msgstr "" #: erpnext/controllers/subcontracting_inward_controller.py:1037 #: erpnext/manufacturing/doctype/production_plan/production_plan.py:2245 -#: erpnext/manufacturing/doctype/work_order/work_order.py:2338 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2353 #: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1777 msgid "Stock Reservation Entries Created" msgstr "" @@ -51335,7 +51363,7 @@ msgstr "" msgid "Stock Reservation Entry created against a Pick List cannot be updated. If you need to make changes, we recommend canceling the existing entry and creating a new one." msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:537 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:538 msgid "Stock Reservation Warehouse Mismatch" msgstr "" @@ -51673,14 +51701,14 @@ msgstr "" msgid "Stop Reason" msgstr "Stop Rede" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1170 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1177 msgid "Stopped Work Order cannot be cancelled, Unstop it first to cancel" msgstr "Gestopte werkbestelling kan nie gekanselleer word nie. Staak dit eers om te kanselleer" -#: erpnext/setup/doctype/company/company.py:384 +#: erpnext/setup/doctype/company/company.py:385 #: erpnext/setup/setup_wizard/operations/defaults_setup.py:33 #: erpnext/setup/setup_wizard/operations/install_fixtures.py:537 -#: erpnext/stock/doctype/item/item.py:312 erpnext/tests/utils.py:248 +#: erpnext/stock/doctype/item/item.py:313 erpnext/tests/utils.py:248 msgid "Stores" msgstr "winkels" @@ -52275,7 +52303,7 @@ msgstr "Suksesvol versoen" msgid "Successfully Set Supplier" msgstr "Suksesvol Stel Verskaffer" -#: erpnext/stock/doctype/item/item.py:390 +#: erpnext/stock/doctype/item/item.py:391 msgid "Successfully changed Stock UOM, please redefine conversion factors for new UOM." msgstr "" @@ -52323,7 +52351,7 @@ msgstr "" msgid "Successfully updated {0} records." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:263 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:264 msgid "Suggest creating a" msgstr "" @@ -52431,7 +52459,7 @@ msgstr "Voorsien Aantal" #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.js:34 #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:189 #: erpnext/accounts/report/purchase_register/purchase_register.js:21 -#: erpnext/accounts/report/purchase_register/purchase_register.py:171 +#: erpnext/accounts/report/purchase_register/purchase_register.py:187 #: erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:29 #: erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:37 #: erpnext/assets/doctype/asset/asset.json @@ -52573,7 +52601,7 @@ msgstr "" #: erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:198 #: erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py:178 #: erpnext/accounts/report/purchase_register/purchase_register.js:27 -#: erpnext/accounts/report/purchase_register/purchase_register.py:186 +#: erpnext/accounts/report/purchase_register/purchase_register.py:202 #: erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:55 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:503 @@ -52672,7 +52700,7 @@ msgstr "Verskaffer van grootboekverskaffer" #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1172 #: erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:156 #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:196 -#: erpnext/accounts/report/purchase_register/purchase_register.py:177 +#: erpnext/accounts/report/purchase_register/purchase_register.py:193 #: erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:35 #: erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:73 #: erpnext/buying/doctype/buying_settings/buying_settings.json @@ -53020,7 +53048,7 @@ msgstr "" msgid "System will fetch all the entries if limit value is zero." msgstr "" -#: erpnext/controllers/accounts_controller.py:2236 +#: erpnext/controllers/accounts_controller.py:2256 msgid "System will not check over billing since amount for Item {0} in {1} is zero" msgstr "" @@ -53194,7 +53222,7 @@ msgstr "" #: erpnext/stock/dashboard/item_dashboard.js:234 #: erpnext/stock/doctype/delivery_note_item/delivery_note_item.json #: erpnext/stock/doctype/material_request_item/material_request_item.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:821 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:826 #: erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json msgid "Target Warehouse" msgstr "Teiken Warehouse" @@ -53210,7 +53238,7 @@ msgstr "" msgid "Target Warehouse Address Link" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:319 +#: erpnext/manufacturing/doctype/work_order/work_order.py:320 msgid "Target Warehouse Reservation Error" msgstr "" @@ -53218,7 +53246,7 @@ msgstr "" msgid "Target Warehouse for Finished Good must be same as Finished Good Warehouse {1} in Work Order {2} linked to the Subcontracting Inward Order." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:858 +#: erpnext/manufacturing/doctype/work_order/work_order.py:865 msgid "Target Warehouse is required before Submit" msgstr "" @@ -53226,7 +53254,7 @@ msgstr "" msgid "Target Warehouse is set for some items but the customer is not an internal customer." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:390 +#: erpnext/manufacturing/doctype/work_order/work_order.py:391 msgid "Target Warehouse {0} must be same as Delivery Warehouse {1} in the Subcontracting Inward Order Item." msgstr "" @@ -53446,8 +53474,8 @@ msgstr "Belasting ID" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json #: erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.js:86 #: erpnext/accounts/report/general_ledger/general_ledger.js:142 -#: erpnext/accounts/report/purchase_register/purchase_register.py:192 -#: erpnext/accounts/report/sales_register/sales_register.py:215 +#: erpnext/accounts/report/purchase_register/purchase_register.py:208 +#: erpnext/accounts/report/sales_register/sales_register.py:229 #: erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:67 #: erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py:205 #: erpnext/accounts/report/tds_computation_summary/tds_computation_summary.py:57 @@ -53536,7 +53564,7 @@ msgstr "" msgid "Tax Template is mandatory." msgstr "Belasting sjabloon is verpligtend." -#: erpnext/accounts/report/sales_register/sales_register.py:295 +#: erpnext/accounts/report/sales_register/sales_register.py:309 msgid "Tax Total" msgstr "Belasting totaal" @@ -53826,7 +53854,7 @@ msgstr "" msgid "Taxes and Charges Deducted (Company Currency)" msgstr "" -#: erpnext/stock/doctype/item/item.py:403 +#: erpnext/stock/doctype/item/item.py:404 msgid "Taxes row #{0}: {1} cannot be smaller than {2}" msgstr "" @@ -54094,7 +54122,7 @@ msgstr "" #: erpnext/accounts/report/inactive_sales_items/inactive_sales_items.js:8 #: erpnext/accounts/report/inactive_sales_items/inactive_sales_items.py:22 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:259 -#: erpnext/accounts/report/sales_register/sales_register.py:209 +#: erpnext/accounts/report/sales_register/sales_register.py:223 #: erpnext/crm/doctype/lead/lead.json #: erpnext/crm/doctype/opportunity/opportunity.json #: erpnext/crm/doctype/prospect/prospect.json @@ -54225,7 +54253,7 @@ msgstr "" msgid "The Loyalty Program isn't valid for the selected company" msgstr "Die lojaliteitsprogram is nie geldig vir die geselekteerde maatskappy nie" -#: erpnext/accounts/doctype/payment_request/payment_request.py:1108 +#: erpnext/accounts/doctype/payment_request/payment_request.py:1109 msgid "The Payment Request {0} is already paid, cannot process payment twice" msgstr "" @@ -54249,7 +54277,7 @@ msgstr "" msgid "The Serial No at Row #{0}: {1} is not available in warehouse {2}." msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2672 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2722 msgid "The Serial No {0} is reserved against the {1} {2} and cannot be used for any other transaction." msgstr "" @@ -54267,7 +54295,7 @@ msgstr "Die voorraadinskrywing van die tipe 'Vervaardiging' staan bekend msgid "The account head under Liability or Equity, in which Profit/Loss will be booked" msgstr "" -#: erpnext/accounts/doctype/payment_request/payment_request.py:1003 +#: erpnext/accounts/doctype/payment_request/payment_request.py:1004 msgid "The allocated amount is greater than the outstanding amount of Payment Request {0}" msgstr "" @@ -54289,7 +54317,7 @@ msgstr "" msgid "The bank account is not a company account. Please select a company account" msgstr "" -#: erpnext/controllers/stock_controller.py:1357 +#: erpnext/controllers/stock_controller.py:1397 msgid "The batch {0} is already reserved in {1} {2}. So, cannot proceed with the {3} {4}, which is created against the {5} {6}." msgstr "" @@ -54354,7 +54382,7 @@ msgstr "Die veld van aandeelhouer kan nie leeg wees nie" msgid "The field To Shareholder cannot be blank" msgstr "Die veld Aan Aandeelhouer kan nie leeg wees nie" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:387 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:388 msgid "The field {0} in row {1} is not set" msgstr "" @@ -54395,11 +54423,11 @@ msgstr "" msgid "The following batches are expired, please restock them:
    {0}" msgstr "" -#: erpnext/controllers/accounts_controller.py:426 +#: erpnext/controllers/accounts_controller.py:446 msgid "The following cancelled repost entries exist for {0}:

    {1}

    Kindly delete these entries before continuing." msgstr "" -#: erpnext/stock/doctype/item/item.py:948 +#: erpnext/stock/doctype/item/item.py:949 msgid "The following deleted attributes exist in Variants but not in the Template. You can either delete the Variants or keep the attribute(s) in template." msgstr "Die volgende geskrapte kenmerke bestaan in variante, maar nie in die sjabloon nie. U kan die Variante uitvee of die kenmerk (e) in die sjabloon hou." @@ -54448,7 +54476,7 @@ msgstr "" msgid "The item {item} is not marked as {type_of} item. You can enable it as {type_of} item from its Item master." msgstr "" -#: erpnext/stock/doctype/item/item.py:670 +#: erpnext/stock/doctype/item/item.py:671 msgid "The items {0} and {1} are present in the following {2} :" msgstr "" @@ -54464,7 +54492,7 @@ msgstr "" msgid "The job card {0} is in {1} state and you cannot start it again." msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:87 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:129 msgid "The last account row must not have any debit or credit amounts set." msgstr "" @@ -54506,7 +54534,7 @@ msgstr "" msgid "The original invoice should be consolidated before or along with the return invoice." msgstr "" -#: erpnext/controllers/accounts_controller.py:204 +#: erpnext/controllers/accounts_controller.py:224 msgid "The outstanding amount {0} in {1} is lesser than {2}. Updating the outstanding to this invoice." msgstr "" @@ -54581,7 +54609,7 @@ msgstr "Die geselekteerde veranderingsrekening {} behoort nie aan die maatskappy msgid "The selected item cannot have Batch" msgstr "Die gekose item kan nie Batch hê nie" -#: erpnext/assets/doctype/asset/asset.js:656 +#: erpnext/assets/doctype/asset/asset.js:661 msgid "The sell quantity is less than the total asset quantity. The remaining quantity will be split into a new asset. This action cannot be undone.

    Do you want to continue?" msgstr "" @@ -54708,11 +54736,11 @@ msgstr "" msgid "The {0} ({1}) must be equal to {2} ({3})" msgstr "Die {0} ({1}) moet gelyk wees aan {2} ({3})" -#: erpnext/public/js/controllers/transaction.js:3373 +#: erpnext/public/js/controllers/transaction.js:3398 msgid "The {0} contains Unit Price Items." msgstr "" -#: erpnext/stock/doctype/item/item.py:474 +#: erpnext/stock/doctype/item/item.py:475 msgid "The {0} prefix '{1}' already exists. Please change the Serial No Series, otherwise you will get a Duplicate Entry error." msgstr "" @@ -54732,7 +54760,7 @@ msgstr "" msgid "Then Pricing Rules are filtered out based on Customer, Customer Group, Territory, Supplier, Supplier Type, Campaign, Sales Partner etc." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:727 +#: erpnext/assets/doctype/asset/asset.py:731 msgid "There are active maintenance or repairs against the asset. You must complete all of them before cancelling the asset." msgstr "Daar is aktiewe instandhouding of herstelwerk aan die bate. U moet almal voltooi voordat u die bate kanselleer." @@ -54769,7 +54797,7 @@ msgstr "" msgid "There are no transactions in the system for the selected bank account and dates that match the filters." msgstr "" -#: erpnext/stock/doctype/item/item.js:1204 +#: erpnext/stock/doctype/item/item.js:1290 msgid "There are two options to maintain valuation of stock. FIFO (first in - first out) and Moving Average. To understand this topic in detail please visit Item Valuation, FIFO and Moving Average." msgstr "" @@ -54869,7 +54897,7 @@ msgstr "Hierdie item is 'n variant van {0} (Sjabloon)." msgid "This Month's Summary" msgstr "Hierdie maand se opsomming" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:937 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:943 msgid "This PDF is password protected. Please set the correct statement password on the Bank Account and try again." msgstr "" @@ -54903,7 +54931,7 @@ msgstr "Hierdie aksie sal hierdie rekening ontkoppel van enige eksterne diens wa msgid "This allows creation of sales orders from quotations that have passed their expiration date, providing flexibility in processing orders despite outdated quotes." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:431 +#: erpnext/assets/doctype/asset/asset.py:435 msgid "This asset category is marked as non-depreciable. Please disable depreciation calculation or choose a different category." msgstr "" @@ -55000,7 +55028,7 @@ msgstr "Dit is 'n wortelverskaffergroep en kan nie geredigeer word nie." msgid "This is a root territory and cannot be edited." msgstr "Hierdie is 'n wortelgebied en kan nie geredigeer word nie." -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:424 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:425 msgid "This is auto computed to balance the journal entry." msgstr "" @@ -55028,7 +55056,7 @@ msgstr "Dit word gedoen om rekeningkunde te hanteer vir gevalle waar aankoopbewy msgid "This is enabled by default. If you want to plan materials for sub-assemblies of the Item you're manufacturing leave this enabled. If you plan and manufacture the sub-assemblies separately, you can disable this checkbox." msgstr "" -#: erpnext/stock/doctype/item/item.js:1192 +#: erpnext/stock/doctype/item/item.js:1278 msgid "This is for raw material Items that'll be used to create finished goods. If the Item is an additional service like 'washing' that'll be used in the BOM, keep this unchecked." msgstr "" @@ -55036,13 +55064,13 @@ msgstr "" msgid "This is not a valid formula. Check the variable used in the formula." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:198 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:266 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:279 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:199 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:267 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:280 msgid "This is required" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:599 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:575 msgid "This is the bank account entry. You cannot edit it." msgstr "" @@ -55091,7 +55119,7 @@ msgstr "" msgid "This option is useful if you want to ensure a constant supply of raw materials/products and avoid shortage. A Material Request will be raised automatically when stock reached the re-order level defined in the Item form." msgstr "" -#: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:185 +#: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:180 msgid "This report shows all entries in the system where the clearance date is before the posting date which is incorrect." msgstr "" @@ -55127,7 +55155,7 @@ msgstr "" msgid "This schedule was created when Asset {0} was scrapped." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1505 +#: erpnext/assets/doctype/asset/asset.py:1509 msgid "This schedule was created when Asset {0} was {1} into new Asset {2}." msgstr "" @@ -55153,11 +55181,11 @@ msgstr "" msgid "This section allows the user to set the Body and Closing text of the Dunning Letter for the Dunning Type based on language, which can be used in Print." msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1184 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1205 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1257 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1291 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1310 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1190 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1211 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1263 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1297 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1316 msgid "This statement has already been imported." msgstr "" @@ -55204,7 +55232,7 @@ msgstr "" msgid "This will be auto-populated if not set." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:264 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:265 msgid "This will just suggest creating a new entry, and will not automatically create it." msgstr "" @@ -55439,7 +55467,7 @@ msgstr "Aan Bill" msgid "To Currency" msgstr "" -#: erpnext/controllers/accounts_controller.py:625 +#: erpnext/controllers/accounts_controller.py:645 #: erpnext/setup/doctype/holiday_list/holiday_list.py:121 msgid "To Date cannot be before From Date" msgstr "Tot op datum kan nie voor die datum wees nie" @@ -55709,11 +55737,11 @@ msgid "To include sub-assembly costs and secondary items in Finished Goods on a msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.py:2268 -#: erpnext/controllers/accounts_controller.py:3255 +#: erpnext/controllers/accounts_controller.py:3275 msgid "To include tax in row {0} in Item rate, taxes in rows {1} must also be included" msgstr "Om belasting in ry {0} in Item-tarief in te sluit, moet belasting in rye {1} ook ingesluit word" -#: erpnext/stock/doctype/item/item.py:692 +#: erpnext/stock/doctype/item/item.py:693 msgid "To merge, following properties must be same for both items" msgstr "Om saam te voeg, moet die volgende eienskappe dieselfde wees vir beide items" @@ -56064,7 +56092,7 @@ msgid "Total Costing Amount (via Timesheet)" msgstr "" #. Label of the total_credit (Currency) field in DocType 'Journal Entry' -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:788 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:764 #: erpnext/accounts/doctype/journal_entry/journal_entry.json msgid "Total Credit" msgstr "" @@ -56087,7 +56115,7 @@ msgid "Total Credits" msgstr "" #. Label of the total_debit (Currency) field in DocType 'Journal Entry' -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:784 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:760 #: erpnext/accounts/doctype/journal_entry/journal_entry.json msgid "Total Debit" msgstr "" @@ -56322,7 +56350,7 @@ msgstr "Totale uitstaande bedrag" msgid "Total Paid Amount" msgstr "Totale betaalde bedrag" -#: erpnext/controllers/accounts_controller.py:2810 +#: erpnext/controllers/accounts_controller.py:2830 msgid "Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total" msgstr "Totale Betalingsbedrag in Betaalskedule moet gelyk wees aan Grand / Rounded Total" @@ -56456,7 +56484,7 @@ msgid "Total Tasks" msgstr "Totale take" #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:621 -#: erpnext/accounts/report/purchase_register/purchase_register.py:263 +#: erpnext/accounts/report/purchase_register/purchase_register.py:279 msgid "Total Tax" msgstr "Totale Belasting" @@ -56609,7 +56637,7 @@ msgstr "" msgid "Total allocated percentage for sales team should be 100" msgstr "Totale toegewysde persentasie vir verkope span moet 100 wees" -#: erpnext/selling/doctype/customer/customer.py:194 +#: erpnext/selling/doctype/customer/customer.py:195 msgid "Total contribution percentage should be equal to 100" msgstr "Die totale bydraepersentasie moet gelyk wees aan 100" @@ -56760,7 +56788,7 @@ msgstr "Transaksie datum" msgid "Transaction Dates" msgstr "" -#: erpnext/setup/doctype/company/company.py:1090 +#: erpnext/setup/doctype/company/company.py:1091 msgid "Transaction Deletion Document {0} has been triggered for company {1}" msgstr "" @@ -56852,7 +56880,7 @@ msgstr "" #. Label of the transaction_type (Data) field in DocType 'Bank Transaction' #. Label of the transaction_type (Select) field in DocType 'Bank Transaction #. Rule' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:106 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:107 #: erpnext/accounts/doctype/bank_statement_import_log_column_map/bank_statement_import_log_column_map.json #: erpnext/accounts/doctype/bank_transaction/bank_transaction.json #: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.json @@ -56921,7 +56949,7 @@ msgstr "" #. Group in Bank Account's connections #: erpnext/accounts/doctype/bank_account/bank_account.json -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1057 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1058 #: erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template_dashboard.py:12 #: erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template_dashboard.py:13 #: erpnext/manufacturing/doctype/job_card/job_card_dashboard.py:9 @@ -56964,7 +56992,7 @@ msgstr "" #: banking/src/components/features/ActionLog/ActionLogDialogBody.tsx:301 #: banking/src/components/features/BankReconciliation/MatchAndReconcile.tsx:515 #: banking/src/components/features/BankReconciliation/MatchAndReconcile.tsx:589 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:271 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:272 #: banking/src/components/features/BankReconciliation/TransferModal.tsx:17 #: banking/src/components/features/BankReconciliation/TransferModalContent.tsx:124 #: banking/src/components/features/BankReconciliation/TransferModalContent.tsx:361 @@ -56984,7 +57012,7 @@ msgstr "oordrag" msgid "Transfer Account" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:155 +#: erpnext/assets/doctype/asset/asset.js:160 msgid "Transfer Asset" msgstr "" @@ -57081,7 +57109,7 @@ msgstr "" msgid "Transit" msgstr "" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:606 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:611 msgid "Transit Entry" msgstr "" @@ -57219,7 +57247,7 @@ msgid "Try the {0} for a better experience." msgstr "" #: erpnext/accounts/report/financial_ratios/financial_ratios.js:55 -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:198 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:200 msgid "Turnover Ratios" msgstr "" @@ -57261,7 +57289,7 @@ msgstr "" msgid "Type of Transaction" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:194 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:195 msgid "Type of check" msgstr "" @@ -57563,7 +57591,7 @@ msgstr "" msgid "Unable to find score starting at {0}. You need to have standing scores covering 0 to 100" msgstr "Kan nie telling begin vanaf {0}. U moet standpunte van 0 tot 100 hê" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1128 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1135 msgid "Unable to find the time slot in the next {0} days for the operation {1}. Please increase the 'Capacity Planning For (Days)' in the {2}." msgstr "" @@ -57669,7 +57697,7 @@ msgstr "" msgid "Unit Of Measure" msgstr "" -#: erpnext/controllers/accounts_controller.py:4101 +#: erpnext/controllers/accounts_controller.py:4121 msgid "Unit Price" msgstr "" @@ -57686,7 +57714,7 @@ msgstr "Eenheid van maatreël" msgid "Unit of Measure (UOM)" msgstr "" -#: erpnext/stock/doctype/item/item.py:435 +#: erpnext/stock/doctype/item/item.py:436 msgid "Unit of Measure {0} has been entered more than once in Conversion Factor Table" msgstr "Eenheid van maat {0} is meer as een keer in die Faktor Tabel ingevoer" @@ -57958,7 +57986,7 @@ msgstr "Dateer BOM koste outomaties op" msgid "Update BOM cost automatically via scheduler, based on the latest Valuation Rate/Price List Rate/Last Purchase Rate of raw materials" msgstr "" -#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.js:31 +#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.js:32 msgid "Update Batch Qty" msgstr "" @@ -58037,7 +58065,7 @@ msgstr "Dateer items op" #. Label of the update_outstanding_for_self (Check) field in DocType 'Sales #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json -#: erpnext/controllers/accounts_controller.py:197 +#: erpnext/controllers/accounts_controller.py:217 msgid "Update Outstanding for Self" msgstr "" @@ -58088,7 +58116,7 @@ msgstr "" msgid "Update latest price in all BOMs" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:471 +#: erpnext/assets/doctype/asset/asset.py:475 msgid "Update stock must be enabled for the purchase invoice {0}" msgstr "" @@ -58121,7 +58149,7 @@ msgstr "" msgid "Updating Costing and Billing fields against this Project..." msgstr "" -#: erpnext/stock/doctype/item/item.py:1491 +#: erpnext/stock/doctype/item/item.py:1511 msgid "Updating Variants..." msgstr "Dateer variante op ..." @@ -58336,11 +58364,6 @@ msgstr "" msgid "Use prices from Default Price List as fallback" msgstr "" -#. Label of the used (Int) field in DocType 'Coupon Code' -#: erpnext/accounts/doctype/coupon_code/coupon_code.json -msgid "Used" -msgstr "" - #. Description of the 'Sales Order Date' (Date) field in DocType 'Sales Order #. Item' #: erpnext/selling/doctype/sales_order_item/sales_order_item.json @@ -58721,15 +58744,15 @@ msgstr "Waardasietempo" msgid "Valuation Rate (In / Out)" msgstr "" -#: erpnext/stock/stock_ledger.py:2031 +#: erpnext/stock/stock_ledger.py:2037 msgid "Valuation Rate Missing" msgstr "Waardasiesyfer ontbreek" -#: erpnext/stock/stock_ledger.py:2009 +#: erpnext/stock/stock_ledger.py:2015 msgid "Valuation Rate for the Item {0}, is required to do accounting entries for {1} {2}." msgstr "Waarderingskoers vir die artikel {0} word vereis om rekeningkundige inskrywings vir {1} {2} te doen." -#: erpnext/stock/doctype/item/item.py:296 +#: erpnext/stock/doctype/item/item.py:297 msgid "Valuation Rate is mandatory if Opening Stock entered" msgstr "Waardasietarief is verpligtend indien Openingsvoorraad ingeskryf is" @@ -58756,7 +58779,7 @@ msgid "Valuation rate for the item as per Sales Invoice (Only for Internal Trans msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.py:2292 -#: erpnext/controllers/accounts_controller.py:3279 +#: erpnext/controllers/accounts_controller.py:3299 msgid "Valuation type charges can not be marked as Inclusive" msgstr "Kostes van waardasie kan nie as Inklusief gemerk word nie" @@ -58891,7 +58914,7 @@ msgstr "Variansie ({})" msgid "Variant" msgstr "Variant" -#: erpnext/stock/doctype/item/item.py:963 +#: erpnext/stock/doctype/item/item.py:964 msgid "Variant Attribute Error" msgstr "Variantkenmerkfout" @@ -58910,7 +58933,7 @@ msgstr "Variant BOM" msgid "Variant Based On" msgstr "" -#: erpnext/stock/doctype/item/item.py:991 +#: erpnext/stock/doctype/item/item.py:992 msgid "Variant Based On cannot be changed" msgstr "Variant gebaseer op kan nie verander word nie" @@ -58928,7 +58951,7 @@ msgstr "Variant Veld" msgid "Variant Item" msgstr "Variantitem" -#: erpnext/stock/doctype/item/item.py:961 +#: erpnext/stock/doctype/item/item.py:962 msgid "Variant Items" msgstr "Variantitems" @@ -58939,7 +58962,7 @@ msgstr "Variantitems" msgid "Variant Of" msgstr "" -#: erpnext/stock/doctype/item/item.js:875 +#: erpnext/stock/doctype/item/item.js:963 msgid "Variant creation has been queued." msgstr "Variantskepping is in die ry." @@ -59066,7 +59089,7 @@ msgstr "" msgid "View Balance Sheet" msgstr "" -#: erpnext/public/js/setup_wizard.js:47 +#: erpnext/public/js/setup_wizard.js:142 msgid "View Chart of Accounts" msgstr "Bekyk grafiek van rekeninge" @@ -59229,8 +59252,8 @@ msgstr "" msgid "Volt-Ampere" msgstr "" -#: erpnext/accounts/report/purchase_register/purchase_register.py:163 -#: erpnext/accounts/report/sales_register/sales_register.py:179 +#: erpnext/accounts/report/purchase_register/purchase_register.py:179 +#: erpnext/accounts/report/sales_register/sales_register.py:193 msgid "Voucher" msgstr "" @@ -59331,12 +59354,12 @@ msgstr "" #: erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py:112 #: erpnext/stock/report/serial_no_ledger/serial_no_ledger.py:34 #: erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:154 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:165 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:176 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:74 msgid "Voucher No" msgstr "Voucher Nr" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1419 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1469 msgid "Voucher No is mandatory" msgstr "" @@ -59381,8 +59404,8 @@ msgstr "" #: erpnext/accounts/report/general_ledger/general_ledger.py:760 #: erpnext/accounts/report/invalid_ledger_entries/invalid_ledger_entries.py:31 #: erpnext/accounts/report/payment_ledger/payment_ledger.py:165 -#: erpnext/accounts/report/purchase_register/purchase_register.py:158 -#: erpnext/accounts/report/sales_register/sales_register.py:174 +#: erpnext/accounts/report/purchase_register/purchase_register.py:174 +#: erpnext/accounts/report/sales_register/sales_register.py:188 #: erpnext/accounts/report/voucher_wise_balance/voucher_wise_balance.py:17 #: erpnext/public/js/utils/unreconcile.js:71 #: erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.json @@ -59404,7 +59427,7 @@ msgstr "" #: erpnext/stock/report/serial_no_ledger/serial_no_ledger.py:28 #: erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:152 #: erpnext/stock/report/stock_ledger/stock_ledger.py:402 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:159 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:170 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:68 msgid "Voucher Type" msgstr "Voucher Type" @@ -59583,7 +59606,7 @@ msgid "Warehouse not found against the account {0}" msgstr "Pakhuis word nie teen die rekening gevind nie {0}" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1263 -#: erpnext/stock/doctype/delivery_note/delivery_note.py:414 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:415 msgid "Warehouse required for stock Item {0}" msgstr "Pakhuis benodig vir voorraad Item {0}" @@ -59608,11 +59631,11 @@ msgstr "Pakhuis {0} behoort nie aan maatskappy nie {1}" msgid "Warehouse {0} does not exist" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:316 +#: erpnext/manufacturing/doctype/work_order/work_order.py:317 msgid "Warehouse {0} is not allowed for Sales Order {1}, it should be {2}" msgstr "" -#: erpnext/controllers/stock_controller.py:816 +#: erpnext/controllers/stock_controller.py:856 msgid "Warehouse {0} is not linked to any account, please mention the account in the warehouse record or set default inventory account in company {1}." msgstr "" @@ -59740,7 +59763,7 @@ msgstr "Waarskuwing: Nog {0} # {1} bestaan teen voorraadinskrywings {2}" msgid "Warning: Material Requested Qty is less than Minimum Order Qty" msgstr "Waarskuwing: Materiaal Gevraagde hoeveelheid is minder as minimum bestelhoeveelheid" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1547 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1571 msgid "Warning: Quantity exceeds maximum producible quantity based on quantity of raw materials received through the Subcontracting Inward Order {0}." msgstr "" @@ -59834,7 +59857,7 @@ msgstr "" msgid "Wavelength In Megametres" msgstr "" -#: erpnext/controllers/accounts_controller.py:192 +#: erpnext/controllers/accounts_controller.py:212 msgid "We can see {0} is made against {1}. If you want {1}'s outstanding to be updated, uncheck the '{2}' checkbox." msgstr "" @@ -59987,6 +60010,14 @@ msgstr "" msgid "What do you need help with?" msgstr "Waarmee het jy hulp nodig?" +#: erpnext/public/js/setup_wizard.js:69 +msgid "What do you use today?" +msgstr "" + +#: erpnext/public/js/setup_wizard.js:47 +msgid "What kind of work do you do?" +msgstr "" + #: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.js:82 msgid "What will be deleted:" msgstr "" @@ -60027,7 +60058,7 @@ msgstr "" msgid "When checked, the system will use the posting datetime of the document for naming the document instead of the creation datetime of the document." msgstr "" -#: erpnext/stock/doctype/item/item.js:1211 +#: erpnext/stock/doctype/item/item.js:1297 msgid "When creating an Item, entering a value for this field will automatically create an Item Price at the backend." msgstr "" @@ -60066,6 +60097,10 @@ msgstr "Terwyl u 'n rekening vir Child Company {0} skep, word die ouerrekeni msgid "While making Purchase Invoice from Purchase Order, use Exchange Rate on Invoice's transaction date rather than inheriting it from Purchase Order. Only applies for Purchase Invoice." msgstr "" +#: erpnext/public/js/setup_wizard.js:31 +msgid "Who are you setting this up for?" +msgstr "" + #. Option for the 'Marital Status' (Select) field in DocType 'Employee' #: erpnext/setup/doctype/employee/employee.json msgid "Widowed" @@ -60120,7 +60155,7 @@ msgstr "" #. Option for the 'Transaction Type' (Select) field in DocType 'Bank #. Transaction Rule' #: banking/src/components/features/BankReconciliation/BankTransactionList.tsx:88 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:145 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:146 #: banking/src/components/features/BankStatementImporter/CSV/StatementDetails.tsx:246 #: banking/src/components/features/BankStatementImporter/CSV/StatementDetails.tsx:313 #: banking/src/pages/BankStatementImporter.tsx:194 @@ -60197,7 +60232,7 @@ msgstr "" #: erpnext/assets/doctype/asset/asset_list.js:12 #: erpnext/manufacturing/doctype/job_card/job_card.json #: erpnext/manufacturing/doctype/job_card_operation/job_card_operation.json -#: erpnext/setup/doctype/company/company.py:385 +#: erpnext/setup/doctype/company/company.py:386 #: erpnext/support/doctype/warranty_claim/warranty_claim.json msgid "Work In Progress" msgstr "Werk aan die gang" @@ -60318,12 +60353,12 @@ msgstr "" msgid "Work Order cannot be created for following reason:
    {0}" msgstr "Werkorde kan nie om die volgende rede geskep word nie:
    {0}" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1491 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1515 msgid "Work Order cannot be raised against a Item Template" msgstr "Werkorder kan nie teen 'n Item Sjabloon verhoog word nie" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2694 -#: erpnext/manufacturing/doctype/work_order/work_order.py:2774 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2709 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2789 msgid "Work Order has been {0}" msgstr "Werkorder is {0}" @@ -60369,7 +60404,7 @@ msgstr "" msgid "Work-in-Progress Warehouse" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:856 +#: erpnext/manufacturing/doctype/work_order/work_order.py:863 msgid "Work-in-Progress Warehouse is required before Submit" msgstr "Werk-in-Progress-pakhuis word vereis voor indiening" @@ -60514,7 +60549,7 @@ msgstr "" #: erpnext/accounts/doctype/pos_profile/pos_profile.json #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json -#: erpnext/setup/doctype/company/company.py:667 +#: erpnext/setup/doctype/company/company.py:668 msgid "Write Off" msgstr "Afskryf" @@ -60664,11 +60699,11 @@ msgstr "Jaar begin datum of einddatum oorvleuel met {0}. Om te voorkom, stel ass msgid "You are importing data for the code list:" msgstr "" -#: erpnext/controllers/accounts_controller.py:3898 +#: erpnext/controllers/accounts_controller.py:3918 msgid "You are not allowed to update as per the conditions set in {} Workflow." msgstr "U mag nie opdateer volgens die voorwaardes wat in {} Werkvloei gestel word nie." -#: erpnext/accounts/general_ledger.py:818 +#: erpnext/accounts/general_ledger.py:820 msgid "You are not authorized to add or update entries before {0}" msgstr "Jy is nie gemagtig om inskrywings by te voeg of op te dateer voor {0}" @@ -60737,7 +60772,7 @@ msgstr "" msgid "You can set up the rule to split the transaction across multiple accounts." msgstr "" -#: erpnext/controllers/accounts_controller.py:213 +#: erpnext/controllers/accounts_controller.py:233 msgid "You can use {0} to reconcile against {1} later." msgstr "" @@ -60765,7 +60800,7 @@ msgstr "" msgid "You cannot create or cancel any accounting entries with in the closed Accounting Period {0}" msgstr "U kan geen rekeningkundige inskrywings skep of kanselleer in die geslote rekeningkundige tydperk nie {0}" -#: erpnext/accounts/general_ledger.py:849 +#: erpnext/accounts/general_ledger.py:851 msgid "You cannot create/amend any accounting entries till this date." msgstr "" @@ -60822,7 +60857,7 @@ msgstr "" msgid "You do not have permission to import bank transactions" msgstr "" -#: erpnext/controllers/accounts_controller.py:3876 +#: erpnext/controllers/accounts_controller.py:3896 msgid "You do not have permissions to {} items in a {}." msgstr "U het nie toestemming vir {} items in 'n {} nie." @@ -60834,11 +60869,11 @@ msgstr "U het nie genoeg lojaliteitspunte om te verkoop nie" msgid "You don't have enough points to redeem." msgstr "U het nie genoeg punte om af te los nie." -#: erpnext/controllers/accounts_controller.py:4444 +#: erpnext/controllers/accounts_controller.py:4464 msgid "You don't have permission to create a Company Address. Please contact your System Manager." msgstr "" -#: erpnext/controllers/accounts_controller.py:4424 +#: erpnext/controllers/accounts_controller.py:4444 msgid "You don't have permission to update Company details. Please contact your System Manager." msgstr "" @@ -60846,7 +60881,7 @@ msgstr "" msgid "You don't have permission to update Received Qty DocField for item {0}" msgstr "" -#: erpnext/controllers/accounts_controller.py:4418 +#: erpnext/controllers/accounts_controller.py:4438 msgid "You don't have permission to update this document. Please contact your System Manager." msgstr "" @@ -60882,7 +60917,7 @@ msgstr "" msgid "You have not performed any reconciliations in this session yet." msgstr "" -#: erpnext/stock/doctype/item/item.py:1167 +#: erpnext/stock/doctype/item/item.py:1187 msgid "You have to enable auto re-order in Stock Settings to maintain re-order levels." msgstr "U moet outomaties herbestel in Voorraadinstellings om herbestelvlakke te handhaaf." @@ -60898,7 +60933,7 @@ msgstr "U moet 'n klant kies voordat u 'n item byvoeg." msgid "You need to cancel POS Closing Entry {} to be able to cancel this document." msgstr "" -#: erpnext/controllers/accounts_controller.py:3230 +#: erpnext/controllers/accounts_controller.py:3250 msgid "You selected the account group {1} as {2} Account in row {0}. Please select a single account." msgstr "" @@ -60980,7 +61015,7 @@ msgstr "[Belangrik] [ERPNext] Herbestellingsfoute outomaties" msgid "`Allow Negative rates for Items`" msgstr "" -#: erpnext/stock/stock_ledger.py:2023 +#: erpnext/stock/stock_ledger.py:2029 msgid "after" msgstr "" @@ -61000,7 +61035,7 @@ msgstr "" msgid "as a percentage of finished item quantity" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1589 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1639 msgid "as of {0}" msgstr "" @@ -61052,7 +61087,7 @@ msgstr "" msgid "e.g. \"Summer Holiday 2019 Offer 20\"" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:663 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:639 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1233 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:685 msgid "e.g. Bank Charges" @@ -61171,7 +61206,7 @@ msgstr "" msgid "per hour" msgstr "" -#: erpnext/stock/stock_ledger.py:2024 +#: erpnext/stock/stock_ledger.py:2030 msgid "performing either one below:" msgstr "" @@ -61315,7 +61350,7 @@ msgstr "" msgid "you must select Capital Work in Progress Account in accounts table" msgstr "u moet Capital Work in Progress-rekening in die rekeningtabel kies" -#: erpnext/controllers/accounts_controller.py:1293 +#: erpnext/controllers/accounts_controller.py:1313 msgid "{0} '{1}' is disabled" msgstr "{0} '{1}' is gedeaktiveer" @@ -61323,7 +61358,7 @@ msgstr "{0} '{1}' is gedeaktiveer" msgid "{0} '{1}' not in Fiscal Year {2}" msgstr "{0} '{1}' nie in fiskale jaar {2}" -#: erpnext/manufacturing/doctype/work_order/work_order.py:742 +#: erpnext/manufacturing/doctype/work_order/work_order.py:749 msgid "{0} ({1}) cannot be greater than planned quantity ({2}) in Work Order {3}" msgstr "{0} ({1}) kan nie groter wees as die beplande hoeveelheid ({2}) in werkorder {3}" @@ -61331,7 +61366,7 @@ msgstr "{0} ({1}) kan nie groter wees as die beplande hoeveelheid ({2}) in werko msgid "{0} {1} has submitted Assets. Remove Item {2} from table to continue." msgstr "" -#: erpnext/controllers/accounts_controller.py:2390 +#: erpnext/controllers/accounts_controller.py:2410 msgid "{0} Account not found against Customer {1}." msgstr "" @@ -61371,11 +61406,11 @@ msgstr "{0} Operasies: {1}" msgid "{0} Request for {1}" msgstr "{0} Versoek vir {1}" -#: erpnext/stock/doctype/item/item.py:374 +#: erpnext/stock/doctype/item/item.py:375 msgid "{0} Retain Sample is based on batch, please check Has Batch No to retain sample of item" msgstr "{0} Die monster behou is gebaseer op bondel. Gaan asseblief 'Has batch no' aan om die voorbeeld van die item te behou" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1051 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1052 msgid "{0} Transaction(s) Reconciled" msgstr "" @@ -61451,7 +61486,7 @@ msgstr "{0} geskep" msgid "{0} creation for the following records will be skipped." msgstr "" -#: erpnext/setup/doctype/company/company.py:292 +#: erpnext/setup/doctype/company/company.py:293 msgid "{0} currency must be same as company's default currency. Please select another account." msgstr "" @@ -61467,7 +61502,7 @@ msgstr "{0} het tans 'n {1} Verskaffer Scorecard en RFQs aan hierdie verskaf msgid "{0} does not belong to Company {1}" msgstr "{0} behoort nie aan Maatskappy {1}" -#: erpnext/controllers/accounts_controller.py:352 +#: erpnext/controllers/accounts_controller.py:372 msgid "{0} does not belong to the Company {1}." msgstr "" @@ -61476,7 +61511,7 @@ msgid "{0} entered twice in Item Tax" msgstr "{0} het twee keer in Itembelasting ingeskryf" #: erpnext/setup/doctype/item_group/item_group.py:48 -#: erpnext/stock/doctype/item/item.py:505 +#: erpnext/stock/doctype/item/item.py:506 msgid "{0} entered twice {1} in Item Taxes" msgstr "" @@ -61501,7 +61536,7 @@ msgstr "{0} is suksesvol ingedien" msgid "{0} hours" msgstr "" -#: erpnext/controllers/accounts_controller.py:2750 +#: erpnext/controllers/accounts_controller.py:2770 msgid "{0} in row {1}" msgstr "{0} in ry {1}" @@ -61523,11 +61558,11 @@ msgstr "" msgid "{0} is already running for {1}" msgstr "" -#: erpnext/controllers/accounts_controller.py:174 +#: erpnext/controllers/accounts_controller.py:194 msgid "{0} is blocked so this transaction cannot proceed" msgstr "{0} is geblokkeer, sodat hierdie transaksie nie kan voortgaan nie" -#: erpnext/assets/doctype/asset/asset.py:505 +#: erpnext/assets/doctype/asset/asset.py:509 msgid "{0} is in Draft. Submit it before creating the Asset." msgstr "" @@ -61536,7 +61571,7 @@ msgid "{0} is mandatory for Item {1}" msgstr "{0} is verpligtend vir item {1}" #: erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:100 -#: erpnext/accounts/general_ledger.py:873 +#: erpnext/accounts/general_ledger.py:875 msgid "{0} is mandatory for account {1}" msgstr "" @@ -61544,15 +61579,15 @@ msgstr "" msgid "{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}" msgstr "{0} is verpligtend. Miskien word valuta-rekord nie vir {1} tot {2} geskep nie" -#: erpnext/controllers/accounts_controller.py:3187 +#: erpnext/controllers/accounts_controller.py:3207 msgid "{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}." msgstr "{0} is verpligtend. Miskien is Geldwissel-rekord nie vir {1} tot {2} geskep nie." -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1813 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1863 msgid "{0} is not a CSV file." msgstr "" -#: erpnext/selling/doctype/customer/customer.py:236 +#: erpnext/selling/doctype/customer/customer.py:237 msgid "{0} is not a company bank account" msgstr "{0} is nie 'n bankrekening nie" @@ -61644,7 +61679,7 @@ msgstr "{0} -parameter is ongeldig" msgid "{0} payment entries can not be filtered by {1}" msgstr "{0} betalingsinskrywings kan nie gefiltreer word deur {1}" -#: erpnext/controllers/stock_controller.py:1779 +#: erpnext/controllers/stock_controller.py:1819 msgid "{0} qty of Item {1} is being received into Warehouse {2} with capacity {3}." msgstr "" @@ -61673,16 +61708,16 @@ msgstr "" msgid "{0} units of {1} are required in {2} with the inventory dimension: {3} on {4} {5} for {6} to complete the transaction." msgstr "" -#: erpnext/stock/stock_ledger.py:1676 erpnext/stock/stock_ledger.py:2172 -#: erpnext/stock/stock_ledger.py:2186 +#: erpnext/stock/stock_ledger.py:1682 erpnext/stock/stock_ledger.py:2197 +#: erpnext/stock/stock_ledger.py:2211 msgid "{0} units of {1} needed in {2} on {3} {4} for {5} to complete this transaction." msgstr "{0} eenhede van {1} benodig in {2} op {3} {4} vir {5} om hierdie transaksie te voltooi." -#: erpnext/stock/stock_ledger.py:2273 erpnext/stock/stock_ledger.py:2318 +#: erpnext/stock/stock_ledger.py:2298 erpnext/stock/stock_ledger.py:2343 msgid "{0} units of {1} needed in {2} on {3} {4} to complete this transaction." msgstr "" -#: erpnext/stock/stock_ledger.py:1670 +#: erpnext/stock/stock_ledger.py:1676 msgid "{0} units of {1} needed in {2} to complete this transaction." msgstr "{0} eenhede van {1} benodig in {2} om hierdie transaksie te voltooi." @@ -61694,7 +61729,7 @@ msgstr "" msgid "{0} valid serial nos for Item {1}" msgstr "{0} geldige reeksnommers vir item {1}" -#: erpnext/stock/doctype/item/item.js:880 +#: erpnext/stock/doctype/item/item.js:968 msgid "{0} variants created." msgstr "{0} variante geskep." @@ -61718,7 +61753,7 @@ msgstr "" msgid "{0} {1} Manually" msgstr "" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1055 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1056 msgid "{0} {1} Partially Reconciled" msgstr "" @@ -61859,7 +61894,7 @@ msgstr "{0} {1}: Rekening {2} is onaktief" msgid "{0} {1}: Accounting Entry for {2} can only be made in currency: {3}" msgstr "{0} {1}: Rekeningkundige Inskrywing vir {2} kan slegs in valuta gemaak word: {3}" -#: erpnext/controllers/stock_controller.py:948 +#: erpnext/controllers/stock_controller.py:988 msgid "{0} {1}: Cost Center is mandatory for Item {2}" msgstr "{0} {1}: Koste sentrum is verpligtend vir item {2}" @@ -61891,11 +61926,11 @@ msgstr "{0} {1}: Verskaffer is nodig teen Betaalbare rekening {2}" msgid "{0}%" msgstr "" -#: erpnext/controllers/website_list_for_contact.py:206 +#: erpnext/controllers/website_list_for_contact.py:207 msgid "{0}% Billed" msgstr "" -#: erpnext/controllers/website_list_for_contact.py:214 +#: erpnext/controllers/website_list_for_contact.py:215 msgid "{0}% Delivered" msgstr "" @@ -61933,7 +61968,15 @@ msgstr "" msgid "{0}: Virtual DocType (no database table)" msgstr "" -#: erpnext/controllers/accounts_controller.py:542 +#: erpnext/stock/doctype/item/item.js:884 +msgid "{0}: remove invalid value(s) {1}" +msgstr "" + +#: erpnext/stock/doctype/item/item.js:891 +msgid "{0}: select the typed value {1} from the list or clear it" +msgstr "" + +#: erpnext/controllers/accounts_controller.py:562 msgid "{0}: {1} does not belong to the Company: {2}" msgstr "" @@ -61941,7 +61984,7 @@ msgstr "" msgid "{0}: {1} does not exist" msgstr "" -#: erpnext/setup/doctype/company/company.py:279 +#: erpnext/setup/doctype/company/company.py:280 msgid "{0}: {1} is a group account." msgstr "" @@ -61961,11 +62004,11 @@ msgstr "" msgid "{field_label} is mandatory for sub-contracted {doctype}." msgstr "" -#: erpnext/controllers/stock_controller.py:2240 +#: erpnext/controllers/stock_controller.py:2283 msgid "{item_name}'s Sample Size ({sample_size}) cannot be greater than the Accepted Quantity ({accepted_quantity})" msgstr "" -#: erpnext/controllers/stock_controller.py:2005 +#: erpnext/controllers/stock_controller.py:2048 msgid "{ref_doctype} {ref_name} status is {status}." msgstr "" diff --git a/erpnext/locale/ar.po b/erpnext/locale/ar.po index f9718935b3d..19fd9891776 100644 --- a/erpnext/locale/ar.po +++ b/erpnext/locale/ar.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: frappe\n" "Report-Msgid-Bugs-To: hello@frappe.io\n" -"POT-Creation-Date: 2026-06-28 10:20+0000\n" -"PO-Revision-Date: 2026-06-29 11:40+0000\n" +"POT-Creation-Date: 2026-07-05 10:19+0000\n" +"PO-Revision-Date: 2026-07-06 11:32+0000\n" "Last-Translator: hello@frappe.io\n" "Language: ar_SA\n" "Language-Team: Arabic\n" @@ -14,7 +14,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.16.0\n" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1591 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1641 msgid "" "\n" "\t\t\tThe Batch {0} of an item {1} has negative stock in the warehouse {2}{3}.\n" @@ -92,15 +92,15 @@ msgstr " التجميع الفرعي" msgid " Summary" msgstr "" -#: erpnext/stock/doctype/item/item.py:265 +#: erpnext/stock/doctype/item/item.py:266 msgid "\"Customer Provided Item\" cannot be Purchase Item also" msgstr "\"الأصناف المقدمة من العملاء\" لا يمكن شرائها" -#: erpnext/stock/doctype/item/item.py:267 +#: erpnext/stock/doctype/item/item.py:268 msgid "\"Customer Provided Item\" cannot have Valuation Rate" msgstr "\"الأصناف المقدمة من العملاء\" لا يمكن ان تحتوي على تكلفة" -#: erpnext/stock/doctype/item/item.py:366 +#: erpnext/stock/doctype/item/item.py:367 msgid "\"Is Fixed Asset\" cannot be unchecked, as Asset record exists against the item" msgstr "\"اصل ثابت\" لا يمكن أن يكون غير محدد، حيث يوجد سجل أصول مقابل البند" @@ -265,7 +265,7 @@ msgstr "" msgid "% of materials delivered against this Sales Order" msgstr "" -#: erpnext/controllers/accounts_controller.py:2394 +#: erpnext/controllers/accounts_controller.py:2414 msgid "'Account' in the Accounting section of Customer {0}" msgstr "" @@ -281,7 +281,7 @@ msgstr "'على أساس' و 'المجموعة حسب' لا يمكن أن يكو msgid "'Days Since Last Order' must be greater than or equal to zero" msgstr "يجب أن تكون \"الأيام منذ آخر طلب\" أكبر من أو تساوي الصفر" -#: erpnext/controllers/accounts_controller.py:2399 +#: erpnext/controllers/accounts_controller.py:2419 msgid "'Default {0} Account' in Company {1}" msgstr "" @@ -299,15 +299,15 @@ msgstr "من تاريخ (مطلوب)" msgid "'From Date' must be after 'To Date'" msgstr "\"من تاريخ \" يجب أن يكون بعد \" إلى تاريخ \"" -#: erpnext/stock/doctype/item/item.py:449 +#: erpnext/stock/doctype/item/item.py:450 msgid "'Has Serial No' can not be 'Yes' for non-stock item" msgstr "\"لهُ رقم تسلسل\" لا يمكن ان يكون \"نعم\" لبند غير قابل للتخزين" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:143 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:147 msgid "'Inspection Required before Delivery' has disabled for the item {0}, no need to create the QI" msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:134 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:138 msgid "'Inspection Required before Purchase' has disabled for the item {0}, no need to create the QI" msgstr "" @@ -343,23 +343,23 @@ msgstr "{0} الحساب مستخدم بواسطة{1} استخدم حساب آخ msgid "'{0}' has been already added." msgstr "لقد تمت إضافة '{0}' بالفعل." -#: erpnext/setup/doctype/company/company.py:304 -#: erpnext/setup/doctype/company/company.py:315 +#: erpnext/setup/doctype/company/company.py:305 +#: erpnext/setup/doctype/company/company.py:316 msgid "'{0}' should be in company currency {1}." msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:174 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:203 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:214 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:106 msgid "(A) Qty After Transaction" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:208 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:219 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:111 msgid "(B) Expected Qty After Transaction" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:223 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:234 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:126 msgid "(C) Total Qty in Queue" msgstr "(ج) إجمالي الكمية في قائمة الانتظار" @@ -369,7 +369,7 @@ msgid "(C) Total qty in queue" msgstr "(ج) إجمالي الكمية في قائمة الانتظار" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:194 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:233 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:244 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:136 msgid "(D) Balance Stock Value" msgstr "" @@ -380,12 +380,12 @@ msgid "(Daily Yield * No of Units Produced) / 100" msgstr "(العائد اليومي * عدد الوحدات المنتجة) / 100" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:199 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:238 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:249 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:141 msgid "(E) Balance Stock Value in Queue" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:248 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:259 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:151 msgid "(F) Change in Stock Value" msgstr "" @@ -394,7 +394,7 @@ msgstr "" msgid "(Forecast)" msgstr "(توقعات)" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:253 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:264 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:156 msgid "(G) Sum of Change in Stock Value" msgstr "(ز) مجموع التغير في قيمة الأسهم" @@ -405,7 +405,7 @@ msgstr "(ز) مجموع التغير في قيمة الأسهم" msgid "(Good Units Produced / Total Units Produced) × 100" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:263 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:274 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:166 msgid "(H) Change in Stock Value (FIFO Queue)" msgstr "" @@ -420,17 +420,17 @@ msgstr "" msgid "(Hour Rate / 60) * Actual Operation Time" msgstr "(سعر الساعة / 60) * وقت العمل الفعلي" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:273 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:284 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:176 msgid "(I) Valuation Rate" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:278 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:289 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:181 msgid "(J) Valuation Rate as per FIFO" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:288 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:299 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:191 msgid "(K) Valuation = Value (D) ÷ Qty (A)" msgstr "" @@ -614,7 +614,7 @@ msgstr "أكثر من 90" msgid "<0" msgstr "<0" -#: erpnext/assets/doctype/asset/asset.py:541 +#: erpnext/assets/doctype/asset/asset.py:545 msgid "Cannot create asset.

    You're trying to create {0} asset(s) from {2} {3}.
    However, only {1} item(s) were purchased and {4} asset(s) already exist against {5}." msgstr "" @@ -790,7 +790,7 @@ msgstr "" msgid "
  • Clearance date must be after cheque date for row(s): {0}
  • " msgstr "" -#: erpnext/controllers/accounts_controller.py:2277 +#: erpnext/controllers/accounts_controller.py:2297 msgid "
  • Item {0} in row(s) {1} billed more than {2}
  • " msgstr "" @@ -807,7 +807,7 @@ msgstr "" msgid "
  • {}
  • " msgstr "" -#: erpnext/controllers/accounts_controller.py:2274 +#: erpnext/controllers/accounts_controller.py:2294 msgid "

    Cannot overbill for the following Items:

    " msgstr "" @@ -852,7 +852,7 @@ msgstr "" msgid "

    Price List Rate has not been set as editable in Selling Settings. In this scenario, setting Update Price List Based On to Price List Rate will prevent auto-updation of Item Price.

    Are you sure you want to continue?" msgstr "" -#: erpnext/controllers/accounts_controller.py:2286 +#: erpnext/controllers/accounts_controller.py:2306 msgid "

    To allow over-billing, please set allowance in Accounts Settings.

    " msgstr "" @@ -937,11 +937,11 @@ msgstr "" msgid "Your Shortcuts" msgstr "" -#: erpnext/accounts/doctype/payment_request/payment_request.py:1135 +#: erpnext/accounts/doctype/payment_request/payment_request.py:1136 msgid "Grand Total: {0}" msgstr "" -#: erpnext/accounts/doctype/payment_request/payment_request.py:1136 +#: erpnext/accounts/doctype/payment_request/payment_request.py:1137 msgid "Outstanding Amount: {0}" msgstr "" @@ -985,18 +985,18 @@ msgid "" "\n" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:213 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:224 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:116 msgid "A - B" msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:189 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:228 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:239 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:131 msgid "A - C" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:355 +#: erpnext/selling/doctype/customer/customer.py:356 msgid "A Customer Group exists with same name please change the Customer name or rename the Customer Group" msgstr "مجموعة الزبائن موجودة بنفس الاسم أرجو تغير اسم العميل أو اعادة تسمية مجموعة الزبائن\\n
    \\nA Customer Group exists with same name please change the Customer name or rename the Customer Group" @@ -1012,7 +1012,7 @@ msgstr "يتطلب العميل المتوقع اسم شخص أو اسم مؤس msgid "A Packing Slip can only be created for Draft Delivery Note." msgstr "" -#: erpnext/accounts/general_ledger.py:827 +#: erpnext/accounts/general_ledger.py:829 msgid "A Period Closing Voucher is already submitted and an Opening Entry can no longer be created. {0} to learn more." msgstr "" @@ -1054,6 +1054,14 @@ msgstr "" msgid "A driver must be set to submit." msgstr "" +#: erpnext/public/js/setup_wizard.js:27 +msgid "A few quick questions so we can set things up the way you work." +msgstr "" + +#: erpnext/public/js/setup_wizard.js:25 +msgid "A little about you" +msgstr "" + #. Description of a DocType #: erpnext/stock/doctype/warehouse/warehouse.json msgid "A logical Warehouse against which stock entries are made." @@ -1169,11 +1177,11 @@ msgstr "" msgid "Abbreviation" msgstr "اسم مختصر" -#: erpnext/setup/doctype/company/company.py:239 +#: erpnext/setup/doctype/company/company.py:240 msgid "Abbreviation already used for another company" msgstr "الاختصار يستخدم بالفعل لشركة أخرى\\n
    \\nAbbreviation already used for another company" -#: erpnext/setup/doctype/company/company.py:236 +#: erpnext/setup/doctype/company/company.py:237 msgid "Abbreviation is mandatory" msgstr "الاسم المختصر إلزامي" @@ -1235,7 +1243,7 @@ msgid "Accepted Qty in Stock UOM" msgstr "" #. Label of the qty (Float) field in DocType 'Purchase Receipt Item' -#: erpnext/public/js/controllers/transaction.js:2864 +#: erpnext/public/js/controllers/transaction.js:2886 #: erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json msgid "Accepted Quantity" msgstr "كمية مقبولة" @@ -1392,7 +1400,7 @@ msgid "Account Manager" msgstr "إدارة حساب المستخدم" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1057 -#: erpnext/controllers/accounts_controller.py:2403 +#: erpnext/controllers/accounts_controller.py:2423 msgid "Account Missing" msgstr "الحساب مفقود" @@ -1486,8 +1494,8 @@ msgstr "رصيد الحساب بالفعل دائن ، لا يسمح لك لتع msgid "Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'" msgstr "رصيد الحساب رصيد مدين، لا يسمح لك بتغييره 'الرصيد يجب أن يكون دائن'" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:101 -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:107 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:148 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:154 msgid "Account company does not match with the rule company." msgstr "" @@ -1513,15 +1521,15 @@ msgstr "الحساب إلزامي للحصول على إدخالات الدفع" msgid "Account is not set for the dashboard chart {0}" msgstr "لم يتم تعيين الحساب لمخطط لوحة المعلومات {0}" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:635 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:611 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:217 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1201 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:315 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:316 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:659 msgid "Account is required" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:903 +#: erpnext/assets/doctype/asset/asset.py:907 msgid "Account not Found" msgstr "تعذر العثور على الحساب" @@ -1586,7 +1594,7 @@ msgstr "لا يمكن تعطيل الحساب {0} لأنه تم تعيينه ب msgid "Account {0} does not belong to company {1}" msgstr "" -#: erpnext/setup/doctype/company/company.py:286 +#: erpnext/setup/doctype/company/company.py:287 msgid "Account {0} does not belong to company: {1}" msgstr "الحساب {0} لا يتنمى للشركة {1}\\n
    \\nAccount {0} does not belong to company: {1}" @@ -1618,7 +1626,7 @@ msgstr "الحساب {0} موجود في الشركة الأم {1}." msgid "Account {0} is added in the child company {1}" msgstr "تتم إضافة الحساب {0} في الشركة التابعة {1}" -#: erpnext/setup/doctype/company/company.py:275 +#: erpnext/setup/doctype/company/company.py:276 msgid "Account {0} is disabled." msgstr "تم تعطيل الحساب {0}." @@ -1626,7 +1634,7 @@ msgstr "تم تعطيل الحساب {0}." msgid "Account {0} is frozen" msgstr "الحساب {0} مجمد\\n
    \\nAccount {0} is frozen" -#: erpnext/controllers/accounts_controller.py:1478 +#: erpnext/controllers/accounts_controller.py:1498 msgid "Account {0} is invalid. Account Currency must be {1}" msgstr "الحساب {0} غير صحيح. يجب أن تكون عملة الحساب {1}" @@ -1662,7 +1670,7 @@ msgstr "الحساب: {0} لا يمكن تحديثه إلا من خلال معا msgid "Account: {0} is not permitted under Payment Entry" msgstr "الحساب: {0} غير مسموح به بموجب إدخال الدفع" -#: erpnext/controllers/accounts_controller.py:3287 +#: erpnext/controllers/accounts_controller.py:3307 msgid "Account: {0} with currency: {1} can not be selected" msgstr "الحساب: {0} مع العملة: {1} لا يمكن اختياره" @@ -1688,7 +1696,7 @@ msgstr "" #: erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json #: erpnext/accounts/doctype/shipping_rule/shipping_rule.json #: erpnext/buying/doctype/supplier/supplier.json -#: erpnext/desktop_icon/accounting.json +#: erpnext/desktop_icon/accounting.json erpnext/public/js/setup_wizard.js:91 #: erpnext/selling/doctype/customer/customer.json #: erpnext/setup/setup_wizard/data/industry_type.txt:1 #: erpnext/setup/workspace/home/home.json erpnext/stock/doctype/item/item.json @@ -1890,8 +1898,8 @@ msgstr "فلتر الأبعاد المحاسبية" msgid "Accounting Entries" msgstr "القيود المحاسبة" -#: erpnext/assets/doctype/asset/asset.py:937 -#: erpnext/assets/doctype/asset/asset.py:952 +#: erpnext/assets/doctype/asset/asset.py:941 +#: erpnext/assets/doctype/asset/asset.py:956 #: erpnext/assets/doctype/asset_capitalization/asset_capitalization.py:546 msgid "Accounting Entry for Asset" msgstr "المدخلات الحسابية للأصول" @@ -1905,7 +1913,7 @@ msgstr "" msgid "Accounting Entry for Landed Cost Voucher for SCR {0}" msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:838 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:843 msgid "Accounting Entry for Service" msgstr "القيد المحاسبي للخدمة" @@ -1918,25 +1926,25 @@ msgstr "القيد المحاسبي للخدمة" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1267 #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1506 #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1528 -#: erpnext/controllers/stock_controller.py:728 -#: erpnext/controllers/stock_controller.py:745 -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:935 +#: erpnext/controllers/stock_controller.py:768 +#: erpnext/controllers/stock_controller.py:785 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:940 #: erpnext/stock/doctype/stock_entry/stock_entry.py:2265 #: erpnext/stock/doctype/stock_entry/stock_entry.py:2279 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:753 msgid "Accounting Entry for Stock" msgstr "القيود المحاسبية للمخزون" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:735 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:740 msgid "Accounting Entry for {0}" msgstr "القيد المحاسبي لـ {0}" -#: erpnext/controllers/accounts_controller.py:2444 +#: erpnext/controllers/accounts_controller.py:2464 msgid "Accounting Entry for {0}: {1} can only be made in currency: {2}" msgstr "المدخل المحاسبي ل {0}: {1} يمكن أن يكون فقط بالعملة {1}.\\n
    \\nAccounting Entry for {0}: {1} can only be made in currency: {2}" #: erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js:193 -#: erpnext/assets/doctype/asset/asset.js:185 +#: erpnext/assets/doctype/asset/asset.js:190 #: erpnext/assets/doctype/asset_repair/asset_repair.js:92 #: erpnext/buying/doctype/supplier/supplier.js:123 #: erpnext/public/js/controllers/stock_controller.js:88 @@ -2001,7 +2009,7 @@ msgstr "تم تجميد القيود المحاسبية حتى هذا التار #: erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.json #: erpnext/assets/doctype/asset_category/asset_category.json #: erpnext/setup/doctype/company/company.json -#: erpnext/setup/doctype/company/company.py:445 +#: erpnext/setup/doctype/company/company.py:446 #: erpnext/setup/doctype/customer_group/customer_group.json #: erpnext/setup/doctype/email_digest/email_digest.json #: erpnext/setup/doctype/incoterm/incoterm.json @@ -2162,7 +2170,7 @@ msgstr "حساب الاستهلاك المتراكم" #. Label of the accumulated_depreciation_amount (Currency) field in DocType #. 'Depreciation Schedule' #: erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py:178 -#: erpnext/assets/doctype/asset/asset.js:380 +#: erpnext/assets/doctype/asset/asset.js:385 #: erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json msgid "Accumulated Depreciation Amount" msgstr "قيمة الاستهلاك المتراكمة" @@ -2434,7 +2442,7 @@ msgstr "تاريخ الإنتهاء الفعلي" msgid "Actual End Date (via Timesheet)" msgstr "تاريخ الإنتهاء الفعلي (عبر ورقة الوقت)" -#: erpnext/manufacturing/doctype/work_order/work_order.py:299 +#: erpnext/manufacturing/doctype/work_order/work_order.py:300 msgid "Actual End Date cannot be before Actual Start Date" msgstr "تاريخ النهاية الفعلي لا يمكن أن يكون قبل تاريخ البداية الفعلي" @@ -2660,13 +2668,13 @@ msgstr "إضافة عرض سعر" msgid "Add Raw Materials" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:711 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:687 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1260 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:728 msgid "Add Row" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:227 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:228 #: banking/src/components/features/Settings/MatchingRules.tsx:30 msgid "Add Rule" msgstr "" @@ -2751,7 +2759,7 @@ msgstr "" msgid "Add a charge to the payment entry with the unallocated amount" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:800 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:776 msgid "Add a row with the difference amount" msgstr "" @@ -2817,7 +2825,7 @@ msgstr "" msgid "Added Supplier Role to User {0}." msgstr "" -#: erpnext/controllers/website_list_for_contact.py:307 +#: erpnext/controllers/website_list_for_contact.py:308 msgid "Added {1} Role to User {0}." msgstr "تمت إضافة دور {1} إلى المستخدم {0}." @@ -3061,7 +3069,7 @@ msgstr "تكاليف تشغيل اضافية" msgid "Additional Transferred Qty" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:775 +#: erpnext/manufacturing/doctype/work_order/work_order.py:782 msgid "" "Additional Transferred Qty {0}\n" "\t\t\t\t\tcannot be greater than {1}.\n" @@ -3215,7 +3223,7 @@ msgstr "العنوان المستخدم لتحديد فئة الضريبة في msgid "Adjustment Against" msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:660 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:664 msgid "Adjustment based on Purchase Invoice rate" msgstr "" @@ -3291,7 +3299,7 @@ msgstr "حالة الدفع المسبّق" #: erpnext/accounts/doctype/pos_invoice/pos_invoice.json #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json -#: erpnext/controllers/accounts_controller.py:286 +#: erpnext/controllers/accounts_controller.py:306 #: erpnext/setup/doctype/company/company.json msgid "Advance Payments" msgstr "دفعات مقدمة" @@ -3660,7 +3668,7 @@ msgstr "" #: erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:165 #: erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:185 #: erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py:169 -#: erpnext/accounts/utils.py:1632 erpnext/public/js/setup_wizard.js:184 +#: erpnext/accounts/utils.py:1632 erpnext/public/js/setup_wizard.js:279 msgid "All Accounts" msgstr "جميع الحسابات" @@ -3711,21 +3719,21 @@ msgstr "جميع مجموعات العملاء" #: erpnext/patches/v11_0/update_department_lft_rgt.py:9 #: erpnext/patches/v11_0/update_department_lft_rgt.py:11 #: erpnext/patches/v11_0/update_department_lft_rgt.py:16 -#: erpnext/setup/doctype/company/company.py:438 -#: erpnext/setup/doctype/company/company.py:441 -#: erpnext/setup/doctype/company/company.py:446 -#: erpnext/setup/doctype/company/company.py:452 -#: erpnext/setup/doctype/company/company.py:458 -#: erpnext/setup/doctype/company/company.py:464 -#: erpnext/setup/doctype/company/company.py:470 -#: erpnext/setup/doctype/company/company.py:476 -#: erpnext/setup/doctype/company/company.py:482 -#: erpnext/setup/doctype/company/company.py:488 -#: erpnext/setup/doctype/company/company.py:494 -#: erpnext/setup/doctype/company/company.py:500 -#: erpnext/setup/doctype/company/company.py:506 -#: erpnext/setup/doctype/company/company.py:512 -#: erpnext/setup/doctype/company/company.py:518 +#: erpnext/setup/doctype/company/company.py:439 +#: erpnext/setup/doctype/company/company.py:442 +#: erpnext/setup/doctype/company/company.py:447 +#: erpnext/setup/doctype/company/company.py:453 +#: erpnext/setup/doctype/company/company.py:459 +#: erpnext/setup/doctype/company/company.py:465 +#: erpnext/setup/doctype/company/company.py:471 +#: erpnext/setup/doctype/company/company.py:477 +#: erpnext/setup/doctype/company/company.py:483 +#: erpnext/setup/doctype/company/company.py:489 +#: erpnext/setup/doctype/company/company.py:495 +#: erpnext/setup/doctype/company/company.py:501 +#: erpnext/setup/doctype/company/company.py:507 +#: erpnext/setup/doctype/company/company.py:513 +#: erpnext/setup/doctype/company/company.py:519 msgid "All Departments" msgstr "جميع الاقسام" @@ -3805,7 +3813,7 @@ msgstr "جميع مجموعات الموردين" msgid "All Territories" msgstr "جميع الأقاليم" -#: erpnext/setup/doctype/company/company.py:383 +#: erpnext/setup/doctype/company/company.py:384 msgid "All Warehouses" msgstr "جميع المخازن" @@ -3832,11 +3840,11 @@ msgstr "" msgid "All items are already requested" msgstr "جميع العناصر مطلوبة مسبقاً" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1486 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1520 msgid "All items have already been Invoiced/Returned" msgstr "تم بالفعل تحرير / إرجاع جميع العناصر" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:1193 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:1201 msgid "All items have already been received" msgstr "تم استلام جميع العناصر مسبقاً" @@ -3844,7 +3852,7 @@ msgstr "تم استلام جميع العناصر مسبقاً" msgid "All items have already been transferred for this Work Order." msgstr "جميع الإصناف تم نقلها لأمر العمل" -#: erpnext/public/js/controllers/transaction.js:2993 +#: erpnext/public/js/controllers/transaction.js:3009 msgid "All items in this document already have a linked Quality Inspection." msgstr "" @@ -3870,7 +3878,7 @@ msgstr "تم إرجاع جميع العناصر مسبقاً." msgid "All the required items (raw materials) will be fetched from BOM and populated in this table. Here you can also change the Source Warehouse for any item. And during the production, you can track transferred raw materials from this table." msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:833 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:836 msgid "All these items have already been Invoiced/Returned" msgstr "تم بالفعل إصدار فاتورة / إرجاع جميع هذه العناصر" @@ -4440,11 +4448,11 @@ msgstr "" msgid "Allows users to submit Supplier Quotations with zero quantity. Useful when rates are fixed but the quantities are not. Eg. Rate Contracts." msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1184 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1205 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1257 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1291 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1310 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1190 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1211 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1263 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1297 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1316 msgid "Already Imported" msgstr "" @@ -4472,7 +4480,7 @@ msgstr "" #: erpnext/manufacturing/doctype/work_order/work_order.js:158 #: erpnext/manufacturing/doctype/work_order/work_order.js:173 #: erpnext/public/js/utils.js:604 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:339 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:344 msgid "Alternate Item" msgstr "صنف بديل" @@ -4611,7 +4619,7 @@ msgstr "" #: erpnext/accounts/doctype/bank_statement_import_log_column_map/bank_statement_import_log_column_map.json #: erpnext/accounts/doctype/budget_distribution/budget_distribution.json #: erpnext/accounts/doctype/cashier_closing_payments/cashier_closing_payments.json -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:629 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:636 #: erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json #: erpnext/accounts/doctype/payment_entry/payment_entry.json #: erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.json @@ -4667,7 +4675,7 @@ msgstr "" #: erpnext/manufacturing/doctype/bom_item/bom_item.json #: erpnext/manufacturing/doctype/work_order_additional_item/work_order_additional_item.json #: erpnext/manufacturing/doctype/work_order_item/work_order_item.json -#: erpnext/public/js/controllers/transaction.js:536 +#: erpnext/public/js/controllers/transaction.js:558 #: erpnext/selling/doctype/quotation/quotation.js:315 #: erpnext/selling/doctype/quotation_item/quotation_item.json #: erpnext/selling/doctype/sales_order_item/sales_order_item.json @@ -4968,7 +4976,7 @@ msgstr "مندوب مبيعات آخر {0} موجود بنفس رقم هوية msgid "Any" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:49 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:50 msgid "Any debit transaction with the keyword 'Bank Fee'." msgstr "" @@ -5430,7 +5438,7 @@ msgstr "نظرًا لتمكين الحقل {0} ، يكون الحقل {1} إلز msgid "As the field {0} is enabled, the value of the field {1} should be more than 1." msgstr "أثناء تمكين الحقل {0} ، يجب أن تكون قيمة الحقل {1} أكثر من 1." -#: erpnext/stock/doctype/item/item.py:1093 +#: erpnext/stock/doctype/item/item.py:1094 msgid "As there are existing submitted transactions against item {0}, you can not change the value of {1}." msgstr "بما أن هناك معاملات مقدمة بالفعل مقابل العنصر {0}، فلا يمكنك تغيير قيمة {1}." @@ -5580,7 +5588,7 @@ msgstr "حساب فئة الأصول" msgid "Asset Category Name" msgstr "اسم فئة الأصول" -#: erpnext/stock/doctype/item/item.py:358 +#: erpnext/stock/doctype/item/item.py:359 msgid "Asset Category is mandatory for Fixed Asset item" msgstr "فئة الموجودات إلزامية لبنود الموجودات الثابتة\\n
    \\nAsset Category is mandatory for Fixed Asset item" @@ -5620,7 +5628,7 @@ msgstr "يوجد بالفعل جدول استهلاك الأصول {0} للأص msgid "Asset Depreciation Schedule {0} for Asset {1} and Finance Book {2} already exists." msgstr "يوجد بالفعل جدول استهلاك الأصول {0} للأصل {1} ودفتر المالية {2} ." -#: erpnext/assets/doctype/asset/asset.py:235 +#: erpnext/assets/doctype/asset/asset.py:239 msgid "Asset Depreciation Schedules created/updated:
    {0}

    Please check, edit if needed, and submit the Asset." msgstr "" @@ -5712,7 +5720,7 @@ msgstr "حركة الأصول" msgid "Asset Movement Item" msgstr "بند حركة الأصول" -#: erpnext/assets/doctype/asset/asset.py:1183 +#: erpnext/assets/doctype/asset/asset.py:1187 msgid "Asset Movement record {0} created" msgstr "تم إنشاء سجل حركة الأصول {0}\\n
    \\nAsset Movement record {0} created" @@ -5774,7 +5782,7 @@ msgstr "أصل مستلم ولكن غير فاتورة" #. Batch Bundle' #. Label of the asset_repair (Link) field in DocType 'Stock Entry' #. Label of a Workspace Sidebar Item -#: erpnext/assets/doctype/asset/asset.js:108 +#: erpnext/assets/doctype/asset/asset.js:113 #: erpnext/assets/doctype/asset_repair/asset_repair.json #: erpnext/assets/workspace/assets/assets.json #: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.json @@ -5826,7 +5834,7 @@ msgstr "" #. Label of the asset_value (Currency) field in DocType 'Asset Capitalization #. Asset Item' #: erpnext/assets/dashboard_fixtures.py:180 -#: erpnext/assets/doctype/asset/asset.js:512 +#: erpnext/assets/doctype/asset/asset.js:517 #: erpnext/assets/doctype/asset_capitalization_asset_item/asset_capitalization_asset_item.json #: erpnext/assets/report/fixed_asset_register/fixed_asset_register.py:209 #: erpnext/assets/report/fixed_asset_register/fixed_asset_register.py:460 @@ -5837,7 +5845,7 @@ msgstr "قيمة الأصول" #. Name of a DocType #. Label of a Link in the Assets Workspace #. Label of a Workspace Sidebar Item -#: erpnext/assets/doctype/asset/asset.js:100 +#: erpnext/assets/doctype/asset/asset.js:105 #: erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.json #: erpnext/assets/workspace/assets/assets.json #: erpnext/workspace_sidebar/assets.json @@ -5854,11 +5862,11 @@ msgstr "لا يمكن نشر تسوية قيمة الأصل قبل تاريخ ش msgid "Asset Value Analytics" msgstr "تحليلات قيمة الأصول" -#: erpnext/assets/doctype/asset/asset.py:277 +#: erpnext/assets/doctype/asset/asset.py:281 msgid "Asset cancelled" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:732 +#: erpnext/assets/doctype/asset/asset.py:736 msgid "Asset cannot be cancelled, as it is already {0}" msgstr "لا يمكن إلغاء الأصل، لانه بالفعل {0}" @@ -5870,15 +5878,15 @@ msgstr "لا يمكن التخلص من الأصل قبل آخر قيد استه msgid "Asset capitalized after Asset Capitalization {0} was submitted" msgstr "تم رسملة الأصل بعد تقديم رسملة الأصل {0}" -#: erpnext/assets/doctype/asset/asset.py:286 +#: erpnext/assets/doctype/asset/asset.py:290 msgid "Asset created" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1424 +#: erpnext/assets/doctype/asset/asset.py:1428 msgid "Asset created after being split from Asset {0}" msgstr "الأصل الذي تم إنشاؤه بعد فصله عن الأصل {0}" -#: erpnext/assets/doctype/asset/asset.py:289 +#: erpnext/assets/doctype/asset/asset.py:293 msgid "Asset deleted" msgstr "" @@ -5919,7 +5927,7 @@ msgstr "ألغت الأصول عن طريق قيد اليومية {0}\\n
    \\n msgid "Asset sold" msgstr "تم بيع الأصل" -#: erpnext/assets/doctype/asset/asset.py:264 +#: erpnext/assets/doctype/asset/asset.py:268 msgid "Asset submitted" msgstr "تم تقديم الأصل" @@ -5927,7 +5935,7 @@ msgstr "تم تقديم الأصل" msgid "Asset transferred to Location {0}" msgstr "تم نقل الأصل إلى الموقع {0}" -#: erpnext/assets/doctype/asset/asset.py:1433 +#: erpnext/assets/doctype/asset/asset.py:1437 msgid "Asset updated after being split into Asset {0}" msgstr "تم تحديث الأصل بعد تقسيمه إلى الأصل {0}" @@ -6036,6 +6044,10 @@ msgstr "إسناد الوظيفة إلى الموظف" msgid "Assign to Name" msgstr "تعيين للاسم" +#: erpnext/templates/pages/projects.html:48 +msgid "Assignment" +msgstr "" + #. Label of the filters_section (Section Break) field in DocType 'Service Level #. Agreement' #: erpnext/support/doctype/service_level_agreement/service_level_agreement.json @@ -6054,7 +6066,7 @@ msgstr "في الصف #{0}: الكمية المختارة {1} للصنف {2} أ msgid "At Row #{0}: The picked quantity {1} for the item {2} is greater than available stock {3} in the warehouse {4}." msgstr "في الصف #{0}: الكمية المختارة {1} للصنف {2} أكبر من المخزون المتاح {3} في المستودع {4}." -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1436 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1486 msgid "At Row {0}: In Serial and Batch Bundle {1} must have docstatus as 1 and not 0" msgstr "في الصف {0}: في حزمة البيانات التسلسلية والدفعية {1} ، يجب أن تكون حالة المستند 1 وليس 0" @@ -6062,7 +6074,7 @@ msgstr "في الصف {0}: في حزمة البيانات التسلسلية و msgid "At least one account with exchange gain or loss is required" msgstr "يشترط وجود حساب واحد على الأقل يتضمن أرباحًا أو خسائر في صرف العملات الأجنبية" -#: erpnext/assets/doctype/asset/asset.py:1289 +#: erpnext/assets/doctype/asset/asset.py:1293 msgid "At least one asset has to be selected." msgstr "يجب اختيار أصل واحد على الأقل." @@ -6111,7 +6123,7 @@ msgstr "في الصف # {0}: لا يمكن أن يكون معرف التسلسل msgid "At row #{0}: you have selected the Difference Account {1}, which is a Cost of Goods Sold type account. Please select a different account" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1184 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1234 msgid "At row {0}: Batch No is mandatory for Item {1}" msgstr "في الصف {0}: رقم الدفعة إلزامي للعنصر {1}" @@ -6119,15 +6131,15 @@ msgstr "في الصف {0}: رقم الدفعة إلزامي للعنصر {1}" msgid "At row {0}: Parent Row No cannot be set for item {1}" msgstr "في الصف {0}: لا يمكن تعيين رقم الصف الأصل للعنصر {1}" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1169 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1219 msgid "At row {0}: Qty is mandatory for the batch {1}" msgstr "في الصف {0}: الكمية إلزامية للدفعة {1}" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1176 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1226 msgid "At row {0}: Serial No is mandatory for Item {1}" msgstr "في الصف {0}: الرقم التسلسلي إلزامي للعنصر {1}" -#: erpnext/controllers/stock_controller.py:676 +#: erpnext/controllers/stock_controller.py:716 msgid "At row {0}: Serial and Batch Bundle {1} has already created. Please remove the values from the serial no or batch no fields." msgstr "في الصف {0}: تم إنشاء حزمة الرقم التسلسلي وحزمة الدفعة {1} مسبقًا. يُرجى حذف القيم من حقلي الرقم التسلسلي أو رقم الدفعة." @@ -6191,11 +6203,11 @@ msgstr "السمة اسم" msgid "Attribute Value" msgstr "السمة القيمة" -#: erpnext/stock/doctype/item/item.py:883 +#: erpnext/stock/doctype/item/item.py:884 msgid "Attribute Value {0} is not valid for the selected attribute {1}." msgstr "" -#: erpnext/stock/doctype/item/item.py:1029 +#: erpnext/stock/doctype/item/item.py:1030 msgid "Attribute table is mandatory" msgstr "جدول الخصائص إلزامي" @@ -6203,19 +6215,19 @@ msgstr "جدول الخصائص إلزامي" msgid "Attribute value: {0} must appear only once" msgstr "قيمة السمة: {0} يجب أن تظهر مرة واحدة فقط" -#: erpnext/stock/doctype/item/item.py:872 +#: erpnext/stock/doctype/item/item.py:873 msgid "Attribute {0} is disabled." msgstr "" -#: erpnext/stock/doctype/item/item.py:860 +#: erpnext/stock/doctype/item/item.py:861 msgid "Attribute {0} is not valid for the selected template." msgstr "" -#: erpnext/stock/doctype/item/item.py:1033 +#: erpnext/stock/doctype/item/item.py:1034 msgid "Attribute {0} selected multiple times in Attributes Table" msgstr "تم تحديد السمة {0} عدة مرات في جدول السمات\\n
    \\nAttribute {0} selected multiple times in Attributes Table" -#: erpnext/stock/doctype/item/item.py:961 +#: erpnext/stock/doctype/item/item.py:962 msgid "Attributes" msgstr "سمات" @@ -6325,11 +6337,11 @@ msgstr "الاشتراك التلقائي (لجميع العملاء)" msgid "Auto Reconcile" msgstr "المطابقة التلقائية" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1037 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1038 msgid "Auto Reconciliation" msgstr "التسوية التلقائية" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:985 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:986 msgid "Auto Reconciliation has started in the background" msgstr "بدأت عملية المطابقة التلقائية في الخلفية" @@ -6622,7 +6634,7 @@ msgstr "المخزون المتاج للأصناف المعبأة" msgid "Available for Use Date" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:382 +#: erpnext/assets/doctype/asset/asset.py:386 msgid "Available for use date is required" msgstr "مطلوب تاريخ متاح للاستخدام" @@ -6634,7 +6646,7 @@ msgstr "الكمية المتاحة هي {0} ، تحتاج إلى {1}" msgid "Available {0}" msgstr "متاح {0}" -#: erpnext/assets/doctype/asset/asset.py:488 +#: erpnext/assets/doctype/asset/asset.py:492 msgid "Available-for-use Date should be after purchase date" msgstr "يجب أن يكون التاريخ متاحًا بعد تاريخ الشراء" @@ -6760,7 +6772,7 @@ msgstr "الكمية في الصندوق" #: erpnext/selling/doctype/sales_order/sales_order.js:1458 #: erpnext/stock/doctype/material_request/material_request.js:351 #: erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:805 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:810 #: erpnext/stock/report/bom_search/bom_search.py:38 #: erpnext/subcontracting/doctype/subcontracting_inward_order_item/subcontracting_inward_order_item.json #: erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js:525 @@ -7029,7 +7041,7 @@ msgid "BOM and Production" msgstr "قائمة المواد والإنتاج" #: erpnext/stock/doctype/material_request/material_request.js:386 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:857 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:862 msgid "BOM does not contain any stock item" msgstr "فاتورة الموارد لا تحتوي على أي صنف مخزون" @@ -7120,8 +7132,8 @@ msgstr "" #: erpnext/accounts/doctype/bank_statement_import_log_column_map/bank_statement_import_log_column_map.json #: erpnext/accounts/report/account_balance/account_balance.py:36 #: erpnext/accounts/report/general_ledger/general_ledger.html:168 -#: erpnext/accounts/report/purchase_register/purchase_register.py:242 -#: erpnext/accounts/report/sales_register/sales_register.py:278 +#: erpnext/accounts/report/purchase_register/purchase_register.py:258 +#: erpnext/accounts/report/sales_register/sales_register.py:292 #: erpnext/stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.py:71 msgid "Balance" msgstr "الموازنة" @@ -7385,7 +7397,7 @@ msgstr "الرسوم المصرفية" msgid "Bank Charges Account" msgstr "حساب الرسوم البنكية" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:34 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:35 msgid "Bank Charges, Salary, etc." msgstr "" @@ -7427,7 +7439,7 @@ msgstr "تفاصيل البنك" msgid "Bank Draft" msgstr "مسودة بنكية" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:97 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:98 msgid "Bank Entries Created" msgstr "" @@ -7441,7 +7453,7 @@ msgstr "" #: banking/src/components/features/BankReconciliation/BankEntryModal.tsx:17 #: banking/src/components/features/BankReconciliation/MatchAndReconcile.tsx:478 #: banking/src/components/features/BankReconciliation/MatchAndReconcile.tsx:571 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:269 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:270 #: banking/src/components/features/Settings/KeyboardShortcuts.tsx:14 #: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.json #: erpnext/accounts/doctype/journal_entry/journal_entry.json @@ -7449,7 +7461,7 @@ msgstr "" msgid "Bank Entry" msgstr "حركة بنكية" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:319 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:295 msgid "Bank Entry Created" msgstr "" @@ -7459,7 +7471,7 @@ msgstr "" msgid "Bank Entry Type" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:212 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:213 msgid "Bank Fee, Salary, etc." msgstr "" @@ -7608,11 +7620,11 @@ msgstr "" msgid "Bank account cannot be named as {0}" msgstr "لا يمكن تسمية الحساب المصرفي باسم {0}" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:700 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:676 msgid "Bank account credit for withdrawal" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:683 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:659 msgid "Bank account debit for deposit" msgstr "" @@ -7663,11 +7675,11 @@ msgstr "الخدمات المصرفية" msgid "Barcode Type" msgstr "نوع الباركود" -#: erpnext/stock/doctype/item/item.py:526 +#: erpnext/stock/doctype/item/item.py:527 msgid "Barcode {0} already used in Item {1}" msgstr "الباركود {0} مستخدم بالفعل في الصنف {1}" -#: erpnext/stock/doctype/item/item.py:541 +#: erpnext/stock/doctype/item/item.py:542 msgid "Barcode {0} is not a valid {1} code" msgstr "الباركود {0} ليس رمز {1} صالحًا" @@ -7789,7 +7801,7 @@ msgstr "على أساس قائمة الأسعار" msgid "Based On Value" msgstr "بناءً على القيمة" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:427 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:428 msgid "Based on the above entries, the balance amount (debit or credit) will be set for the last row to balance the journal entry." msgstr "" @@ -7825,7 +7837,7 @@ msgstr "التسعير الاساسي استنادأ لوحدة القياس" #: erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py:80 #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:158 #: erpnext/stock/report/stock_ledger/stock_ledger.py:419 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:171 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:182 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:80 #: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.js:19 #: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.py:32 @@ -7905,7 +7917,7 @@ msgstr "" #: erpnext/manufacturing/doctype/job_card/job_card.json #: erpnext/manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:89 #: erpnext/manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.py:115 -#: erpnext/public/js/controllers/transaction.js:2890 +#: erpnext/public/js/controllers/transaction.js:2912 #: erpnext/public/js/utils/barcode_scanner.js:281 #: erpnext/public/js/utils/serial_no_batch_selector.js:449 #: erpnext/stock/doctype/delivery_note_item/delivery_note_item.json @@ -7936,11 +7948,11 @@ msgstr "" msgid "Batch No" msgstr "رقم دفعة" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1187 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1237 msgid "Batch No is mandatory" msgstr "رقم الدفعة إلزامي" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:3470 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:3520 msgid "Batch No {0} does not exists" msgstr "رقم الدفعة {0} غير موجود" @@ -7963,7 +7975,7 @@ msgstr "" msgid "Batch Nos" msgstr "أرقام الدفعات" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2009 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2059 msgid "Batch Nos are created successfully" msgstr "تم إنشاء أرقام الدفعات بنجاح" @@ -7981,7 +7993,7 @@ msgstr "سلسلة رقم الدفعة" msgid "Batch Qty" msgstr "كمية الدفعة" -#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.py:125 +#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.py:126 msgid "Batch Qty updated successfully" msgstr "تم تحديث كمية الدفعة بنجاح" @@ -8017,7 +8029,7 @@ msgstr "دفعة UOM" msgid "Batch and Serial No" msgstr "رقم الدفعة والرقم التسلسلي" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1002 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1009 msgid "Batch not created for item {} since it does not have a batch series." msgstr "لم يتم إنشاء دفعة للعنصر {} لأنه لا يحتوي على سلسلة دفعات." @@ -8059,7 +8071,7 @@ msgid "Batch-Wise Balance History" msgstr "دفعة الحكيم التاريخ الرصيد" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:164 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:183 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:194 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:86 msgid "Batchwise Valuation" msgstr "التقييم على أساس الدفعة" @@ -8085,15 +8097,15 @@ msgstr "بداية فترة الاشتراك الحالية" msgid "Below Subscription Plans are of different currency to the party default billing currency/Company currency: {0}" msgstr "تختلف عملات خطط الاشتراك أدناه عن عملة الفوترة الافتراضية للجهة/عملة الشركة: {0}" -#: banking/src/components/features/BankReconciliation/BankClearanceSummary.tsx:211 +#: banking/src/components/features/BankReconciliation/BankClearanceSummary.tsx:206 msgid "Below is a list of all accounting entries posted against the bank account {0} between {1} and {2}." msgstr "" -#: banking/src/components/features/BankReconciliation/BankTransactionList.tsx:251 +#: banking/src/components/features/BankReconciliation/BankTransactionList.tsx:246 msgid "Below is a list of all bank transactions imported in the system for the bank account {0} between {1} and {2}." msgstr "" -#: banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx:197 +#: banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx:192 msgid "Below is a list of all entries posted against the bank account {0} which have not been cleared till {1}." msgstr "" @@ -8101,7 +8113,7 @@ msgstr "" #. Label of the bill_date (Date) field in DocType 'Subcontracting Receipt' #: erpnext/accounts/doctype/journal_entry/journal_entry.json #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1207 -#: erpnext/accounts/report/purchase_register/purchase_register.py:214 +#: erpnext/accounts/report/purchase_register/purchase_register.py:230 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json msgid "Bill Date" msgstr "تاريخ الفاتورة" @@ -8110,7 +8122,7 @@ msgstr "تاريخ الفاتورة" #. Label of the bill_no (Data) field in DocType 'Subcontracting Receipt' #: erpnext/accounts/doctype/journal_entry/journal_entry.json #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1206 -#: erpnext/accounts/report/purchase_register/purchase_register.py:213 +#: erpnext/accounts/report/purchase_register/purchase_register.py:229 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json msgid "Bill No" msgstr "رقم الفاتورة" @@ -8127,13 +8139,13 @@ msgstr "" #: erpnext/manufacturing/doctype/bom/bom.py:1373 #: erpnext/manufacturing/workspace/manufacturing/manufacturing.json #: erpnext/stock/doctype/material_request/material_request.js:139 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:791 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:796 #: erpnext/workspace_sidebar/subcontracting.json msgid "Bill of Materials" msgstr "فاتورة المواد" #. Option for the 'Status' (Select) field in DocType 'Timesheet' -#: erpnext/controllers/website_list_for_contact.py:206 +#: erpnext/controllers/website_list_for_contact.py:207 #: erpnext/projects/doctype/timesheet/timesheet.json #: erpnext/projects/doctype/timesheet/timesheet_list.js:9 msgid "Billed" @@ -8224,7 +8236,7 @@ msgstr "تفاصيل عنوان الفوترة" msgid "Billing Address Name" msgstr "اسم عنوان تقديم الفواتير" -#: erpnext/controllers/accounts_controller.py:573 +#: erpnext/controllers/accounts_controller.py:593 msgid "Billing Address does not belong to the {0}" msgstr "عنوان الفوترة لا ينتمي إلى {0}" @@ -8569,7 +8581,7 @@ msgstr "حجز" msgid "Booked Fixed Asset" msgstr "حجز الأصول الثابتة" -#: erpnext/accounts/general_ledger.py:847 +#: erpnext/accounts/general_ledger.py:849 msgid "Books have been closed till the period ending on {0}" msgstr "تم إغلاق الكتب حتى نهاية الفترة في {0}" @@ -9308,7 +9320,7 @@ msgstr "" msgid "Can be approved by {0}" msgstr "يمكن الموافقة عليها بواسطة {0}" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2767 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2782 msgid "Can not close Work Order. Since {0} Job Cards are in Work In Progress state." msgstr "لا يمكن إغلاق أمر العمل. لأن {0} بطاقات العمل في حالة \"قيد التنفيذ\"." @@ -9342,12 +9354,12 @@ msgid "Can only make payment against unbilled {0}" msgstr "يمكن إجراء دفعة فقط مقابل فاتورة غير مدفوعة {0}" #: erpnext/accounts/doctype/payment_entry/payment_entry.js:1510 -#: erpnext/controllers/accounts_controller.py:3196 +#: erpnext/controllers/accounts_controller.py:3216 #: erpnext/public/js/controllers/accounts.js:100 msgid "Can refer row only if the charge type is 'On Previous Row Amount' or 'Previous Row Total'" msgstr "لا يمكن الرجوع إلى الصف إلا إذا كان نوع الرسوم هو \"مبلغ الصف السابق\" أو \"إجمالي الصف السابق\"." -#: erpnext/setup/doctype/company/company.py:207 +#: erpnext/setup/doctype/company/company.py:208 #: erpnext/stock/doctype/stock_settings/stock_settings.py:183 msgid "Can't change the valuation method, as there are transactions against some items which do not have its own valuation method" msgstr "لا يمكن تغيير طريقة التقييم، حيث توجد معاملات على بعض البنود التي لا تملك طريقة تقييم خاصة بها." @@ -9393,7 +9405,7 @@ msgstr "لا يمكن تعيين أمين صندوق" msgid "Cannot Calculate Arrival Time as Driver Address is Missing." msgstr "لا يمكن حساب وقت الوصول حيث أن عنوان برنامج التشغيل مفقود." -#: erpnext/setup/doctype/company/company.py:226 +#: erpnext/setup/doctype/company/company.py:227 msgid "Cannot Change Inventory Account Setting" msgstr "لا يمكن تغيير إعدادات حساب المخزون" @@ -9401,9 +9413,9 @@ msgstr "لا يمكن تغيير إعدادات حساب المخزون" msgid "Cannot Create Return" msgstr "لا يمكن إنشاء إرجاع" -#: erpnext/stock/doctype/item/item.py:681 -#: erpnext/stock/doctype/item/item.py:694 -#: erpnext/stock/doctype/item/item.py:708 +#: erpnext/stock/doctype/item/item.py:682 +#: erpnext/stock/doctype/item/item.py:695 +#: erpnext/stock/doctype/item/item.py:709 msgid "Cannot Merge" msgstr "لا يمكن الدمج" @@ -9431,7 +9443,7 @@ msgstr "لا يمكن تعديل {0} {1}، يرجى إنشاء واحد جديد msgid "Cannot apply TDS against multiple parties in one entry" msgstr "لا يمكن تطبيق ضريبة الاستقطاع على عدة أطراف في إدخال واحد" -#: erpnext/stock/doctype/item/item.py:361 +#: erpnext/stock/doctype/item/item.py:362 msgid "Cannot be a fixed asset item as Stock Ledger is created." msgstr "لا يمكن أن يكون عنصر الأصول الثابتة كما يتم إنشاء دفتر الأستاذ." @@ -9451,7 +9463,7 @@ msgstr "لا يمكن إلغاء إدخال حجز المخزون {0}، لأنه msgid "Cannot cancel as processing of cancelled documents is pending." msgstr "لا يمكن الإلغاء لأن معالجة المستندات الملغاة لا تزال قيد الانتظار." -#: erpnext/manufacturing/doctype/work_order/work_order.py:1180 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1187 msgid "Cannot cancel because submitted Stock Entry {0} exists" msgstr "لا يمكن الإلغاء لان هناك تدوينات مخزون مقدمة {0} موجوده" @@ -9475,10 +9487,14 @@ msgstr "لا يمكن إلغاء هذا المستند لأنه مرتبط با msgid "Cannot cancel transaction for Completed Work Order." msgstr "لا يمكن إلغاء المعاملة لأمر العمل المكتمل." -#: erpnext/stock/doctype/item/item.py:981 +#: erpnext/stock/doctype/item/item.py:982 msgid "Cannot change Attributes after stock transaction. Make a new Item and transfer stock to the new Item" msgstr "لا يمكن تغيير سمات بعد معاملة الأسهم. جعل عنصر جديد ونقل الأسهم إلى البند الجديد" +#: erpnext/stock/doctype/item/item.py:1119 +msgid "Cannot change Item {0} from serialized to non-serialized because a Serial and Batch Bundle exists for it. Please delete or cancel the Serial and Batch Bundle first." +msgstr "" + #: erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py:74 msgid "Cannot change Reference Document Type." msgstr "لا يمكن تغيير نوع المستند المرجعي." @@ -9487,11 +9503,11 @@ msgstr "لا يمكن تغيير نوع المستند المرجعي." msgid "Cannot change Service Stop Date for item in row {0}" msgstr "لا يمكن تغيير تاريخ إيقاف الخدمة للعنصر الموجود في الصف {0}" -#: erpnext/stock/doctype/item/item.py:972 +#: erpnext/stock/doctype/item/item.py:973 msgid "Cannot change Variant properties after stock transaction. You will have to make a new Item to do this." msgstr "لا يمكن تغيير خصائص المتغير بعد معاملة المخزون. سيكون عليك عمل عنصر جديد للقيام بذلك." -#: erpnext/setup/doctype/company/company.py:331 +#: erpnext/setup/doctype/company/company.py:332 msgid "Cannot change company's default currency, because there are existing transactions. Transactions must be cancelled to change the default currency." msgstr "لا يمكن تغيير العملة الافتراضية للشركة، لأن هناك معاملات موجودة. يجب إلغاء المعاملات لتغيير العملة الافتراضية." @@ -9519,7 +9535,7 @@ msgstr "لا يمكن تحويل الحساب إلى تصنيف مجموعة ل msgid "Cannot create Intercompany {0}. All items in the source {1} have already been fully invoiced. Please check the existing linked {2}s." msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1016 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1021 msgid "Cannot create Stock Reservation Entries for future dated Purchase Receipts." msgstr "لا يمكن إنشاء إدخالات حجز المخزون لإيصالات الشراء ذات التواريخ المستقبلية." @@ -9557,7 +9573,7 @@ msgstr "لا يمكن حذف صف الربح/الخسارة في الصرف" msgid "Cannot delete Serial No {0}, as it is used in stock transactions" msgstr "لا يمكن حذف الرقم التسلسلي {0}، لانه يتم استخدامها في قيود المخزون" -#: erpnext/controllers/accounts_controller.py:3811 +#: erpnext/controllers/accounts_controller.py:3831 msgid "Cannot delete an item which has been ordered" msgstr "لا يمكن حذف عنصر تم طلبه" @@ -9574,7 +9590,7 @@ msgstr "" msgid "Cannot disable Serial and Batch No for Item, as there are existing records for serial / batch." msgstr "" -#: erpnext/setup/doctype/company/company.py:561 +#: erpnext/setup/doctype/company/company.py:562 msgid "Cannot disable perpetual inventory, as there are existing Stock Ledger Entries for the company {0}. Please cancel the stock transactions first and try again." msgstr "لا يمكن تعطيل الجرد الدائم، لوجود قيود دفترية للمخزون للشركة {0}. يرجى إلغاء معاملات المخزون أولاً ثم المحاولة مرة أخرى." @@ -9582,7 +9598,7 @@ msgstr "لا يمكن تعطيل الجرد الدائم، لوجود قيود msgid "Cannot disable {0} as it may lead to incorrect stock valuation." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:792 +#: erpnext/manufacturing/doctype/work_order/work_order.py:799 msgid "Cannot disassemble more than produced quantity." msgstr "لا يمكن تفكيك كمية أكبر من الكمية المنتجة." @@ -9590,7 +9606,7 @@ msgstr "لا يمكن تفكيك كمية أكبر من الكمية المنت msgid "Cannot disassemble {0} qty against Stock Entry {1}. Only {2} qty available to disassemble." msgstr "" -#: erpnext/setup/doctype/company/company.py:223 +#: erpnext/setup/doctype/company/company.py:224 msgid "Cannot enable Item-wise Inventory Account, as there are existing Stock Ledger Entries for the company {0} with Warehouse-wise Inventory Account. Please cancel the stock transactions first and try again." msgstr "لا يمكن تفعيل حساب المخزون حسب الصنف، لوجود قيود دفترية للمخزون للشركة {0} مع حساب مخزون حسب المستودع. يرجى إلغاء معاملات المخزون أولاً ثم المحاولة مرة أخرى." @@ -9615,7 +9631,7 @@ msgstr "لا يمكن العثور على المنتج أو المستودع ب msgid "Cannot find Item with this Barcode" msgstr "لا يمكن العثور على عنصر بهذا الرمز الشريطي" -#: erpnext/controllers/accounts_controller.py:3763 +#: erpnext/controllers/accounts_controller.py:3783 msgid "Cannot find a default warehouse for item {0}. Please set one in the Item Master or in Stock Settings." msgstr "تعذر العثور على مستودع افتراضي للصنف {0}. يرجى تحديد مستودع في بيانات الصنف الرئيسية أو في إعدادات المخزون." @@ -9623,15 +9639,15 @@ msgstr "تعذر العثور على مستودع افتراضي للصنف {0}. msgid "Cannot merge {0} '{1}' into '{2}' as both have existing accounting entries in different currencies for company '{3}'." msgstr "لا يمكن دمج {0} '{1}' في '{2}' حيث أن لكليهما قيود محاسبية موجودة بعملات مختلفة للشركة '{3}'." -#: erpnext/manufacturing/doctype/work_order/work_order.py:642 +#: erpnext/manufacturing/doctype/work_order/work_order.py:643 msgid "Cannot produce more Item {0} than Sales Order quantity {1} {2}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1537 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1561 msgid "Cannot produce more item for {0}" msgstr "لا يمكن إنتاج المزيد من العناصر لـ {0}" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1541 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1565 msgid "Cannot produce more than {0} items for {1}" msgstr "لا يمكن إنتاج أكثر من {0} عنصرًا لـ {1}" @@ -9639,12 +9655,12 @@ msgstr "لا يمكن إنتاج أكثر من {0} عنصرًا لـ {1}" msgid "Cannot receive from customer against negative outstanding" msgstr "" -#: erpnext/controllers/accounts_controller.py:3959 +#: erpnext/controllers/accounts_controller.py:3979 msgid "Cannot reduce quantity than ordered or purchased quantity" msgstr "لا يمكن تقليل الكمية عن الكمية المطلوبة أو المشتراة" #: erpnext/accounts/doctype/payment_entry/payment_entry.js:1523 -#: erpnext/controllers/accounts_controller.py:3211 +#: erpnext/controllers/accounts_controller.py:3231 #: erpnext/public/js/controllers/accounts.js:117 msgid "Cannot refer row number greater than or equal to current row number for this Charge type" msgstr "لا يمكن أن يشير رقم الصف أكبر من أو يساوي رقم الصف الحالي لهذا النوع المسؤول" @@ -9657,14 +9673,14 @@ msgstr "تعذر استرداد رمز الرابط للتحديث. راجع س msgid "Cannot retrieve link token. Check Error Log for more information" msgstr "تعذر استرداد رمز الرابط. راجع سجل الأخطاء لمزيد من المعلومات." -#: erpnext/selling/doctype/customer/customer.py:368 +#: erpnext/selling/doctype/customer/customer.py:369 msgid "Cannot select a Group type Customer Group. Please select a non-group Customer Group." msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.js:1516 #: erpnext/accounts/doctype/payment_entry/payment_entry.js:1694 #: erpnext/accounts/doctype/payment_entry/payment_entry.py:1848 -#: erpnext/controllers/accounts_controller.py:3201 +#: erpnext/controllers/accounts_controller.py:3221 #: erpnext/public/js/controllers/accounts.js:109 #: erpnext/public/js/controllers/taxes_and_totals.js:555 msgid "Cannot select charge type as 'On Previous Row Amount' or 'On Previous Row Total' for first row" @@ -9678,15 +9694,15 @@ msgstr "لا يمكن أن تعين كخسارة لأنه تم تقديم أمر msgid "Cannot set authorization on basis of Discount for {0}" msgstr "لا يمكن تحديد التخويل على أساس الخصم ل {0}" -#: erpnext/stock/doctype/item/item.py:772 +#: erpnext/stock/doctype/item/item.py:773 msgid "Cannot set multiple Item Defaults for a company." msgstr "لا يمكن تعيين عدة عناصر افتراضية لأي شركة." -#: erpnext/controllers/accounts_controller.py:3925 +#: erpnext/controllers/accounts_controller.py:3945 msgid "Cannot set quantity less than delivered quantity." msgstr "لا يمكن ضبط كمية أقل من الكمية المسلمة." -#: erpnext/controllers/accounts_controller.py:3926 +#: erpnext/controllers/accounts_controller.py:3946 msgid "Cannot set quantity less than received quantity." msgstr "لا يمكن تعيين كمية أقل من الكمية المستلمة." @@ -9702,7 +9718,7 @@ msgstr "" msgid "Cannot submit Job Card {0} while it is On Hold. Please resume and complete the job before submission." msgstr "" -#: erpnext/controllers/accounts_controller.py:3953 +#: erpnext/controllers/accounts_controller.py:3973 msgid "Cannot update rate as item {0} is already ordered or purchased against this quotation" msgstr "" @@ -9735,7 +9751,7 @@ msgstr "السعة (وحدة قياس المخزون)" msgid "Capacity Planning" msgstr "القدرة على التخطيط" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1166 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1173 msgid "Capacity Planning Error, planned start time can not be same as end time" msgstr "خطأ في تخطيط السعة ، لا يمكن أن يكون وقت البدء المخطط له هو نفسه وقت الانتهاء" @@ -9779,7 +9795,7 @@ msgstr "حساب رأس المال قيد التنفيذ" msgid "Capital Work in Progress" msgstr "العمل الرأسمالي في التقدم" -#: erpnext/assets/doctype/asset/asset.js:223 +#: erpnext/assets/doctype/asset/asset.js:228 msgid "Capitalize Asset" msgstr "رسملة الأصول" @@ -9788,7 +9804,7 @@ msgstr "رسملة الأصول" msgid "Capitalize Repair Cost" msgstr "رسملة تكلفة الإصلاح" -#: erpnext/assets/doctype/asset/asset.js:221 +#: erpnext/assets/doctype/asset/asset.js:226 msgid "Capitalize this asset before submitting." msgstr "قم برسملة هذا الأصل قبل الإرسال." @@ -10091,7 +10107,7 @@ msgstr "قم بتغيير نوع الحساب إلى "ذمم مدينة&quo msgid "Change this date manually to setup the next synchronization start date" msgstr "قم بتغيير هذا التاريخ يدويًا لإعداد تاريخ بدء المزامنة التالي" -#: erpnext/selling/doctype/customer/customer.py:158 +#: erpnext/selling/doctype/customer/customer.py:159 msgid "Changed customer name to '{}' as '{}' already exists." msgstr "تم تغيير اسم العميل إلى '{}' لأن '{}' موجود بالفعل." @@ -10120,7 +10136,7 @@ msgid "Channel Partner" msgstr "شريك القناة" #: erpnext/accounts/doctype/payment_entry/payment_entry.py:2277 -#: erpnext/controllers/accounts_controller.py:3264 +#: erpnext/controllers/accounts_controller.py:3284 msgid "Charge of type 'Actual' in row {0} cannot be included in Item Rate or Paid Amount" msgstr "لا يمكن تضمين رسوم من النوع \"فعلي\" في الصف {0} في سعر السلعة أو المبلغ المدفوع" @@ -10170,7 +10186,7 @@ msgstr "شجرة الرسم البياني" #: erpnext/accounts/doctype/accounts_settings/accounts_settings.json #: erpnext/accounts/doctype/cost_center/cost_center_tree.js:52 #: erpnext/accounts/workspace/invoicing/invoicing.json -#: erpnext/public/js/setup_wizard.js:43 +#: erpnext/public/js/setup_wizard.js:138 #: erpnext/setup/doctype/company/company.js:123 #: erpnext/setup/doctype/company/company.json #: erpnext/setup/workspace/home/home.json @@ -10314,7 +10330,7 @@ msgstr "عرض الشيك" #. Label of the reference_date (Date) field in DocType 'Payment Entry' #: erpnext/accounts/doctype/payment_entry/payment_entry.json -#: erpnext/public/js/controllers/transaction.js:2801 +#: erpnext/public/js/controllers/transaction.js:2823 msgid "Cheque/Reference Date" msgstr "تاريخ الصك / السند المرجع" @@ -10372,7 +10388,7 @@ msgstr "اسم الطفل" #. Label of the child_row_reference (Data) field in DocType 'Quality #. Inspection' -#: erpnext/public/js/controllers/transaction.js:2896 +#: erpnext/public/js/controllers/transaction.js:2918 #: erpnext/stock/doctype/quality_inspection/quality_inspection.json msgid "Child Row Reference" msgstr "مرجع صف الطفل" @@ -10575,7 +10591,7 @@ msgstr "وثيقة مغلقة" msgid "Closed Documents" msgstr "وثائق مغلقة" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2690 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2705 msgid "Closed Work Order can not be stopped or Re-opened" msgstr "لا يمكن إيقاف أمر العمل المغلق أو إعادة فتحه." @@ -11036,7 +11052,7 @@ msgstr "شركات" #. Label of the company (Link) field in DocType 'Issue' #. Label of the company (Link) field in DocType 'Warranty Claim' #. Label of a Workspace Sidebar Item -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:81 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:82 #: banking/src/pages/BankStatementImporter.tsx:84 #: erpnext/accounts/dashboard_chart_source/account_balance_timeline/account_balance_timeline.js:8 #: erpnext/accounts/doctype/account/account.json @@ -11346,11 +11362,11 @@ msgstr "شركات" msgid "Company" msgstr "شركة" -#: erpnext/public/js/setup_wizard.js:36 +#: erpnext/public/js/setup_wizard.js:131 msgid "Company Abbreviation" msgstr "اختصار الشركة" -#: erpnext/public/js/setup_wizard.js:174 +#: erpnext/public/js/setup_wizard.js:269 msgid "Company Abbreviation cannot have more than 5 characters" msgstr "لا يمكن أن يحتوي اختصار الشركة على أكثر من 5 أحرف" @@ -11404,11 +11420,11 @@ msgstr "عرض عنوان الشركة" msgid "Company Address Name" msgstr "اسم عنوان الشركة" -#: erpnext/controllers/accounts_controller.py:4389 +#: erpnext/controllers/accounts_controller.py:4409 msgid "Company Address is missing. You don't have permission to create an Address. Please contact your System Manager." msgstr "" -#: erpnext/controllers/accounts_controller.py:4377 +#: erpnext/controllers/accounts_controller.py:4397 msgid "Company Address is missing. You don't have permission to update it. Please contact your System Manager." msgstr "عنوان الشركة غير موجود. ليس لديك صلاحية لتحديثه. يرجى الاتصال بمدير النظام." @@ -11484,7 +11500,7 @@ msgstr "" msgid "Company Logo" msgstr "شعار الشركة" -#: erpnext/public/js/setup_wizard.js:77 +#: erpnext/public/js/setup_wizard.js:172 msgid "Company Name cannot be Company" msgstr "اسم الشركة لا يمكن أن تكون شركة" @@ -11514,7 +11530,7 @@ msgid "Company currencies of both the companies should match for Inter Company T msgstr "يجب أن تتطابق عملات الشركة لكلتا الشركتين مع معاملات Inter Inter Company." #: erpnext/stock/doctype/material_request/material_request.js:380 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:851 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:856 msgid "Company field is required" msgstr "حقل الشركة مطلوب" @@ -11530,7 +11546,7 @@ msgstr "الشركة إلزامية لحساب الشركة" msgid "Company is mandatory for generating an invoice. Please set a default company in Global Defaults." msgstr "يُعدّ تحديد اسم الشركة أمراً إلزامياً لإصدار الفاتورة. يُرجى تحديد شركة افتراضية في الإعدادات الافتراضية العامة." -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:85 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:86 msgid "Company is required" msgstr "" @@ -11544,7 +11560,7 @@ msgstr "" msgid "Company name not same" msgstr "اسم الشركة ليس مماثل\\n
    \\nCompany name not same" -#: erpnext/assets/doctype/asset/asset.py:330 +#: erpnext/assets/doctype/asset/asset.py:334 msgid "Company of asset {0} and purchase document {1} doesn't matches." msgstr "شركة الأصل {0} ومستند الشراء {1} غير متطابقين." @@ -11673,7 +11689,7 @@ msgstr "المشاريع المنجزة" msgid "Completed Qty" msgstr "الكمية المكتملة" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1455 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1479 msgid "Completed Qty cannot be greater than 'Qty to Manufacture'" msgstr "لا يمكن أن تكون الكمية المكتملة أكبر من "الكمية إلى التصنيع"" @@ -11784,8 +11800,8 @@ msgstr "أمثلة على القواعد الشرطية" msgid "Conditions will be applied on all the selected items combined. " msgstr "سيتم تطبيق الشروط على جميع العناصر المختارة مجتمعة." -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:395 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:413 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:396 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:414 msgid "Configure Accounts" msgstr "" @@ -12065,7 +12081,7 @@ msgstr "تكلفة المواد المستهلكة" msgid "Consumed Qty" msgstr "تستهلك الكمية" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1866 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1881 msgid "Consumed Qty cannot be greater than Reserved Qty for item {0}" msgstr "لا يمكن أن تتجاوز الكمية المستهلكة الكمية المحجوزة للصنف {0}" @@ -12102,7 +12118,7 @@ msgstr "الكمية المستهلكة من العنصر {0} تتجاوز ال msgid "Consumer Products" msgstr "المنتجات الاستهلاكية" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:198 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:209 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:101 msgid "Consumption Rate" msgstr "معدل الاستهلاك" @@ -12222,7 +12238,7 @@ msgstr "" msgid "Contact Person" msgstr "الشخص الذي يمكن الاتصال به" -#: erpnext/controllers/accounts_controller.py:585 +#: erpnext/controllers/accounts_controller.py:605 msgid "Contact Person does not belong to the {0}" msgstr "جهة الاتصال لا تنتمي إلى {0}" @@ -12233,7 +12249,7 @@ msgstr "اتصال:" #. Option for the 'Check' (Select) field in DocType 'Bank Transaction Rule #. Description Conditions' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:200 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:201 #: erpnext/accounts/doctype/bank_transaction_rule_description_conditions/bank_transaction_rule_description_conditions.json msgid "Contains" msgstr "" @@ -12410,23 +12426,23 @@ msgstr "معامل التحويل" msgid "Conversion Rate" msgstr "معدل التحويل" -#: erpnext/stock/doctype/item/item.py:444 +#: erpnext/stock/doctype/item/item.py:445 msgid "Conversion factor for default Unit of Measure must be 1 in row {0}" msgstr "معامل التحويل الافتراضي لوحدة القياس يجب أن يكون 1 في الصف {0}" -#: erpnext/controllers/stock_controller.py:122 +#: erpnext/controllers/stock_controller.py:158 msgid "Conversion factor for item {0} has been reset to 1.0 as the uom {1} is same as stock uom {2}." msgstr "تمت إعادة تعيين عامل التحويل للعنصر {0} إلى 1.0 لأن وحدة القياس {1} هي نفسها وحدة قياس المخزون {2}." -#: erpnext/controllers/accounts_controller.py:2979 +#: erpnext/controllers/accounts_controller.py:2999 msgid "Conversion rate cannot be 0" msgstr "لا يمكن أن يكون معدل التحويل 0" -#: erpnext/controllers/accounts_controller.py:2986 +#: erpnext/controllers/accounts_controller.py:3006 msgid "Conversion rate is 1.00, but document currency is different from company currency" msgstr "معدل التحويل هو 1.00، لكن عملة المستند تختلف عن عملة الشركة." -#: erpnext/controllers/accounts_controller.py:2982 +#: erpnext/controllers/accounts_controller.py:3002 msgid "Conversion rate must be 1.00 if document currency is same as company currency" msgstr "يجب أن يكون معدل التحويل 1.00 إذا كانت عملة المستند هي نفسها عملة الشركة" @@ -12627,8 +12643,8 @@ msgstr "" #. Label of the cost_center (Link) field in DocType 'Subcontracting Receipt #. Supplied Item' #. Label of a Workspace Sidebar Item -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:591 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:650 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:567 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:626 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1179 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1223 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:593 @@ -12684,7 +12700,7 @@ msgstr "" #: erpnext/accounts/report/purchase_register/purchase_register.js:46 #: erpnext/accounts/report/sales_payment_summary/sales_payment_summary.py:29 #: erpnext/accounts/report/sales_register/sales_register.js:52 -#: erpnext/accounts/report/sales_register/sales_register.py:252 +#: erpnext/accounts/report/sales_register/sales_register.py:266 #: erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:79 #: erpnext/accounts/report/trial_balance/trial_balance.js:49 #: erpnext/assets/doctype/asset/asset.json @@ -12772,7 +12788,7 @@ msgid "Cost Center is required" msgstr "" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1472 -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:903 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:908 msgid "Cost Center is required in row {0} in Taxes table for type {1}" msgstr "مركز التكلفة مطلوب في الصف {0} في جدول الضرائب للنوع {1}\\n
    \\nCost Center is required in row {0} in Taxes table for type {1}" @@ -12792,11 +12808,11 @@ msgstr "مركز التكلفة مع المعاملات الحالية لا يم msgid "Cost Center {0} cannot be used for allocation as it is used as main cost center in other allocation record." msgstr "لا يمكن استخدام مركز التكلفة {0} للتخصيص لأنه يستخدم كمركز تكلفة رئيسي في سجل تخصيص آخر." -#: erpnext/assets/doctype/asset/asset.py:358 +#: erpnext/assets/doctype/asset/asset.py:362 msgid "Cost Center {} doesn't belong to Company {}" msgstr "مركز التكلفة {} لا ينتمي إلى الشركة {}" -#: erpnext/assets/doctype/asset/asset.py:365 +#: erpnext/assets/doctype/asset/asset.py:369 msgid "Cost Center {} is a group cost center and group cost centers cannot be used in transactions" msgstr "مركز التكلفة {} هو مركز تكلفة جماعي، ولا يمكن استخدام مراكز التكلفة الجماعية في المعاملات." @@ -12937,11 +12953,11 @@ msgstr "تعذر حذف بيانات العرض التوضيحي" msgid "Could not auto create Customer due to the following missing mandatory field(s):" msgstr "تعذر إنشاء العميل تلقائيًا بسبب الحقول الإلزامية التالية المفقودة:" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:655 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:656 msgid "Could not create Credit Note automatically, please uncheck 'Issue Credit Note' and submit again" msgstr "تعذر إنشاء إشعار دائن تلقائيًا ، يُرجى إلغاء تحديد "إشعار ائتمان الإصدار" وإرساله مرة أخرى" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:972 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:978 msgid "Could not detect any tables in this PDF. It may be a scanned or image-based statement, which is not supported (no OCR)." msgstr "" @@ -13064,7 +13080,7 @@ msgstr "" msgid "Create Asset Location" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:277 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:278 msgid "Create Bank Entry against" msgstr "" @@ -13242,7 +13258,7 @@ msgstr "إنشاء إدخال الدفع" msgid "Create Payment Entry for Consolidated POS Invoices." msgstr "إنشاء إدخال دفع لفواتير نقاط البيع المجمعة." -#: erpnext/public/js/controllers/transaction.js:543 +#: erpnext/public/js/controllers/transaction.js:565 msgid "Create Payment Request" msgstr "" @@ -13429,12 +13445,12 @@ msgstr "إنشاء صلاحية المستخدم" msgid "Create Users" msgstr "إنشاء المستخدمين" -#: erpnext/stock/doctype/item/item.js:1011 +#: erpnext/stock/doctype/item/item.js:1097 msgid "Create Variant" msgstr "إنشاء متغير" -#: erpnext/stock/doctype/item/item.js:816 -#: erpnext/stock/doctype/item/item.js:860 +#: erpnext/stock/doctype/item/item.js:909 +#: erpnext/stock/doctype/item/item.js:946 msgid "Create Variants" msgstr "إنشاء المتغيرات" @@ -13465,12 +13481,12 @@ msgstr "" msgid "Create a new rule to automatically classify transactions." msgstr "" -#: erpnext/stock/doctype/item/item.js:843 -#: erpnext/stock/doctype/item/item.js:1004 +#: erpnext/stock/doctype/item/item.js:929 +#: erpnext/stock/doctype/item/item.js:1090 msgid "Create a variant with the template image." msgstr "أنشئ نسخة بديلة باستخدام صورة القالب." -#: erpnext/stock/stock_ledger.py:2027 +#: erpnext/stock/stock_ledger.py:2033 msgid "Create an incoming stock transaction for the Item." msgstr "قم بإنشاء حركة مخزون واردة للصنف." @@ -13591,7 +13607,7 @@ msgstr "إنشاء إيصال التعاقد من الباطن ..." msgid "Creating User..." msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:36 +#: erpnext/setup/setup_wizard/setup_wizard.py:44 msgid "Creating demo data" msgstr "" @@ -13600,7 +13616,7 @@ msgid "Creating {} out of {} {}" msgstr "إنشاء {} من {} {}" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:141 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:154 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:165 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:46 msgid "Creation" msgstr "الخلق" @@ -13626,11 +13642,11 @@ msgstr "" #. Label of the credit_in_account_currency (Currency) field in DocType 'Journal #. Entry Account' #: banking/src/components/features/ActionLog/ActionLogDialogBody.tsx:199 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:594 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:693 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:570 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:669 #: banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx:133 #: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:140 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:404 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:405 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:596 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:711 #: erpnext/accounts/doctype/account/account.json @@ -13642,8 +13658,8 @@ msgstr "" #: erpnext/accounts/report/cheques_and_deposits_incorrectly_cleared/cheques_and_deposits_incorrectly_cleared.py:146 #: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:431 #: erpnext/accounts/report/general_ledger/general_ledger.html:167 -#: erpnext/accounts/report/purchase_register/purchase_register.py:241 -#: erpnext/accounts/report/sales_register/sales_register.py:277 +#: erpnext/accounts/report/purchase_register/purchase_register.py:257 +#: erpnext/accounts/report/sales_register/sales_register.py:291 #: erpnext/accounts/report/trial_balance/trial_balance.py:530 #: erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.py:212 #: erpnext/accounts/report/voucher_wise_balance/voucher_wise_balance.py:34 @@ -13658,7 +13674,7 @@ msgstr "الائتمان (المعاملة)" msgid "Credit ({0})" msgstr "الائتمان ({0})" -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:643 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:650 msgid "Credit Account" msgstr "حساب دائن" @@ -13735,7 +13751,7 @@ msgstr "الائتمان أيام" msgid "Credit Limit" msgstr "الحد الائتماني" -#: erpnext/selling/doctype/customer/customer.py:643 +#: erpnext/selling/doctype/customer/customer.py:645 msgid "Credit Limit Crossed" msgstr "تم تجاوز الحد الائتماني" @@ -13798,7 +13814,7 @@ msgstr "الائتمان مذكرة صادرة" msgid "Credit Note will update it's own outstanding amount, even if 'Return Against' is specified." msgstr "ستقوم مذكرة الائتمان بتحديث المبلغ المستحق الخاص بها، حتى في حالة تحديد \"الإرجاع مقابل\"." -#: erpnext/stock/doctype/delivery_note/delivery_note.py:652 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:653 msgid "Credit Note {0} has been created automatically" msgstr "تم إنشاء ملاحظة الائتمان {0} تلقائيًا" @@ -13806,7 +13822,7 @@ msgstr "تم إنشاء ملاحظة الائتمان {0} تلقائيًا" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:383 #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:391 -#: erpnext/controllers/accounts_controller.py:2383 +#: erpnext/controllers/accounts_controller.py:2403 msgid "Credit To" msgstr "دائن الى" @@ -13815,20 +13831,20 @@ msgstr "دائن الى" msgid "Credit in Company Currency" msgstr "المدين في عملة الشركة" -#: erpnext/selling/doctype/customer/customer.py:609 -#: erpnext/selling/doctype/customer/customer.py:664 +#: erpnext/selling/doctype/customer/customer.py:611 +#: erpnext/selling/doctype/customer/customer.py:666 msgid "Credit limit has been crossed for customer {0} ({1}/{2})" msgstr "تم تجاوز حد الائتمان للعميل {0} ({1} / {2})" -#: erpnext/selling/doctype/customer/customer.py:395 +#: erpnext/selling/doctype/customer/customer.py:396 msgid "Credit limit is already defined for the Company {0}" msgstr "تم تحديد حد الائتمان بالفعل للشركة {0}" -#: erpnext/selling/doctype/customer/customer.py:663 +#: erpnext/selling/doctype/customer/customer.py:665 msgid "Credit limit reached for customer {0}" msgstr "تم بلوغ حد الائتمان للعميل {0}" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:213 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:215 msgid "Creditor Turnover Ratio" msgstr "نسبة دوران الدائنين" @@ -14111,7 +14127,7 @@ msgstr "العقدة الحالية" msgid "Current Qty" msgstr "الكمية الحالية" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:152 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:154 msgid "Current Ratio" msgstr "نسبة التيار" @@ -14298,7 +14314,7 @@ msgstr "محددات مخصصة" #: erpnext/accounts/report/pos_register/pos_register.py:120 #: erpnext/accounts/report/pos_register/pos_register.py:181 #: erpnext/accounts/report/sales_register/sales_register.js:21 -#: erpnext/accounts/report/sales_register/sales_register.py:187 +#: erpnext/accounts/report/sales_register/sales_register.py:201 #: erpnext/assets/doctype/asset/asset.json #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/supplier/supplier.js:225 @@ -14362,7 +14378,7 @@ msgstr "محددات مخصصة" #: erpnext/stock/doctype/pick_list/pick_list.json #: erpnext/stock/doctype/serial_no/serial_no.json #: erpnext/stock/doctype/shipment/shipment.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:489 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:494 #: erpnext/stock/doctype/warehouse/warehouse.json #: erpnext/stock/report/delayed_item_report/delayed_item_report.js:36 #: erpnext/stock/report/delayed_item_report/delayed_item_report.py:121 @@ -14574,7 +14590,7 @@ msgstr "ملاحظات العميل" #: erpnext/accounts/report/gross_profit/gross_profit.py:423 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:208 #: erpnext/accounts/report/sales_register/sales_register.js:27 -#: erpnext/accounts/report/sales_register/sales_register.py:202 +#: erpnext/accounts/report/sales_register/sales_register.py:216 #: erpnext/crm/doctype/opportunity/opportunity.json #: erpnext/crm/doctype/prospect/prospect.json #: erpnext/crm/workspace/crm/crm.json @@ -14685,7 +14701,7 @@ msgstr "رقم محمول العميل" #: erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:35 #: erpnext/accounts/report/gross_profit/gross_profit.py:430 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:228 -#: erpnext/accounts/report/sales_register/sales_register.py:193 +#: erpnext/accounts/report/sales_register/sales_register.py:207 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/crm/doctype/opportunity/opportunity.json #: erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.json @@ -14784,7 +14800,7 @@ msgstr "العملاء المقدمة" msgid "Customer Provided Item Cost" msgstr "تكلفة السلعة المقدمة من العميل" -#: erpnext/setup/doctype/company/company.py:487 +#: erpnext/setup/doctype/company/company.py:488 msgid "Customer Service" msgstr "خدمة العملاء" @@ -14843,7 +14859,7 @@ msgstr "الزبون مطلوب للخصم المعني بالزبائن" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1190 #: erpnext/selling/doctype/sales_order/sales_order.py:436 -#: erpnext/stock/doctype/delivery_note/delivery_note.py:406 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:407 msgid "Customer {0} does not belong to project {1}" msgstr "العميل {0} لا ينتمي الى المشروع {1}\\n
    \\nCustomer {0} does not belong to project {1}" @@ -14944,7 +14960,7 @@ msgid "Cycle/Second" msgstr "دورة/ثانية" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:204 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:243 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:254 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:146 msgid "D - E" msgstr "د - هـ" @@ -15184,11 +15200,11 @@ msgstr "تاجر" #. Label of the debit_in_account_currency (Currency) field in DocType 'Journal #. Entry Account' #: banking/src/components/features/ActionLog/ActionLogDialogBody.tsx:198 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:593 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:673 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:569 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:649 #: banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx:126 #: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:133 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:403 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:404 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:595 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:696 #: erpnext/accounts/doctype/account/account.json @@ -15200,8 +15216,8 @@ msgstr "تاجر" #: erpnext/accounts/report/cheques_and_deposits_incorrectly_cleared/cheques_and_deposits_incorrectly_cleared.py:139 #: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:424 #: erpnext/accounts/report/general_ledger/general_ledger.html:166 -#: erpnext/accounts/report/purchase_register/purchase_register.py:240 -#: erpnext/accounts/report/sales_register/sales_register.py:276 +#: erpnext/accounts/report/purchase_register/purchase_register.py:256 +#: erpnext/accounts/report/sales_register/sales_register.py:290 #: erpnext/accounts/report/trial_balance/trial_balance.py:523 #: erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.py:205 #: erpnext/accounts/report/voucher_wise_balance/voucher_wise_balance.py:27 @@ -15222,7 +15238,7 @@ msgstr "مدين ({0})" msgid "Debit / Credit Note Posting Date" msgstr "تاريخ ترحيل إشعار الخصم / إشعار الدائن" -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:633 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:640 msgid "Debit Account" msgstr "حساب مدين" @@ -15294,7 +15310,7 @@ msgstr "ستقوم مذكرة الخصم بتحديث المبلغ المستح #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1061 #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1072 -#: erpnext/controllers/accounts_controller.py:2383 +#: erpnext/controllers/accounts_controller.py:2403 msgid "Debit To" msgstr "الخصم ل" @@ -15338,11 +15354,11 @@ msgstr "" msgid "Debits" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:170 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:172 msgid "Debt Equity Ratio" msgstr "نسبة الدين إلى حقوق الملكية" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:212 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:214 msgid "Debtor Turnover Ratio" msgstr "نسبة دوران المدينين" @@ -15451,14 +15467,14 @@ msgstr "الحساب الافتراضي المتقدم" #. Label of the default_advance_paid_account (Link) field in DocType 'Company' #: erpnext/setup/doctype/company/company.json -#: erpnext/setup/doctype/company/company.py:316 +#: erpnext/setup/doctype/company/company.py:317 msgid "Default Advance Paid Account" msgstr "الحساب المدفوع مقدماً الافتراضي" #. Label of the default_advance_received_account (Link) field in DocType #. 'Company' #: erpnext/setup/doctype/company/company.json -#: erpnext/setup/doctype/company/company.py:305 +#: erpnext/setup/doctype/company/company.py:306 msgid "Default Advance Received Account" msgstr "الحساب الافتراضي للمقدم المستلم" @@ -15473,19 +15489,19 @@ msgstr "نطاق العمر الافتراضي" msgid "Default BOM" msgstr "الافتراضي BOM" -#: erpnext/stock/doctype/item/item.py:487 +#: erpnext/stock/doctype/item/item.py:488 msgid "Default BOM ({0}) must be active for this item or its template" msgstr "يجب أن تكون قائمة المواد الافتراضية ({0}) نشطة لهذا الصنف أو قوالبه" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2458 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2473 msgid "Default BOM for {0} not found" msgstr "فاتورة المواد ل {0} غير موجودة\\n
    \\nDefault BOM for {0} not found" -#: erpnext/controllers/accounts_controller.py:3997 +#: erpnext/controllers/accounts_controller.py:4017 msgid "Default BOM not found for FG Item {0}" msgstr "لم يتم العثور على قائمة مكونات افتراضية لعنصر المنتج النهائي {0}" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2455 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2470 msgid "Default BOM not found for Item {0} and Project {1}" msgstr "لم يتم العثور على قائمة المواد الافتراضية للمادة {0} والمشروع {1}" @@ -15817,15 +15833,15 @@ msgstr "الإقليم الافتراضي" msgid "Default Unit of Measure" msgstr "وحدة القياس الافتراضية" -#: erpnext/stock/doctype/item/item.py:1376 +#: erpnext/stock/doctype/item/item.py:1396 msgid "Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You need to either cancel the linked documents or create a new Item." msgstr "لا يمكن تغيير وحدة القياس الافتراضية للعنصر {0} مباشرةً لأنك أجريتَ بالفعل بعض المعاملات بوحدة قياس أخرى. عليك إما إلغاء المستندات المرتبطة أو إنشاء عنصر جديد." -#: erpnext/stock/doctype/item/item.py:1359 +#: erpnext/stock/doctype/item/item.py:1379 msgid "Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You will need to create a new Item to use a different Default UOM." msgstr "لا يمكن تغيير وحدة القياس الافتراضية للبند {0} مباشرة لأنك قمت بالفعل ببعض المعاملات (المعاملة) مع UOM أخرى. ستحتاج إلى إنشاء عنصر جديد لاستخدام واجهة مستخدم افتراضية مختلفة.\\n
    \\nDefault Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You will need to create a new Item to use a different Default UOM." -#: erpnext/stock/doctype/item/item.py:1007 +#: erpnext/stock/doctype/item/item.py:1008 msgid "Default Unit of Measure for Variant '{0}' must be same as in Template '{1}'" msgstr "وحدة القياس الافتراضية للمتغير '{0}' يجب أن تكون كما في النمودج '{1}'" @@ -16121,7 +16137,7 @@ msgstr "" #. Order' #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/purchase_order/purchase_order_list.js:20 -#: erpnext/controllers/website_list_for_contact.py:212 +#: erpnext/controllers/website_list_for_contact.py:213 #: erpnext/stock/doctype/serial_no/serial_no.json #: erpnext/stock/doctype/shipment/shipment.json #: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.json @@ -16280,7 +16296,7 @@ msgstr "مدير التوصيل" #: erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.js:22 #: erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:21 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:291 -#: erpnext/accounts/report/sales_register/sales_register.py:245 +#: erpnext/accounts/report/sales_register/sales_register.py:259 #: erpnext/selling/doctype/sales_order/sales_order.js:1048 #: erpnext/selling/doctype/sales_order/sales_order_list.js:81 #: erpnext/selling/doctype/selling_settings/selling_settings.js:52 @@ -16507,7 +16523,7 @@ msgstr "تعتمد على المهام" #. Option for the 'Transaction Type' (Select) field in DocType 'Bank #. Transaction Rule' #: banking/src/components/features/BankReconciliation/BankTransactionList.tsx:95 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:162 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:163 #: banking/src/components/features/BankStatementImporter/CSV/StatementDetails.tsx:247 #: banking/src/components/features/BankStatementImporter/CSV/StatementDetails.tsx:314 #: banking/src/pages/BankStatementImporter.tsx:194 @@ -16556,7 +16572,7 @@ msgstr "إهلاك" #. Label of the depreciation_amount (Currency) field in DocType 'Depreciation #. Schedule' #: erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py:172 -#: erpnext/assets/doctype/asset/asset.js:379 +#: erpnext/assets/doctype/asset/asset.js:384 #: erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json msgid "Depreciation Amount" msgstr "قيمة الإهلاك" @@ -16587,7 +16603,7 @@ msgstr "تم إلغاء الإهلاك بسبب التخلص من الأصول" #: erpnext/accounts/doctype/journal_entry/journal_entry.json #: erpnext/accounts/doctype/journal_entry_template/journal_entry_template.json #: erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py:190 -#: erpnext/assets/doctype/asset/asset.js:122 +#: erpnext/assets/doctype/asset/asset.js:127 msgid "Depreciation Entry" msgstr "حركة الإهلاك" @@ -16596,7 +16612,7 @@ msgstr "حركة الإهلاك" msgid "Depreciation Entry Posting Status" msgstr "حالة ترحيل قيد الإهلاك" -#: erpnext/assets/doctype/asset/asset.py:1257 +#: erpnext/assets/doctype/asset/asset.py:1261 msgid "Depreciation Entry against asset {0}" msgstr "قيد استهلاك الأصل {0}" @@ -16639,15 +16655,15 @@ msgstr "خيارات الإهلاك" msgid "Depreciation Posting Date" msgstr "تاريخ ترحيل الإهلاك" -#: erpnext/assets/doctype/asset/asset.js:918 +#: erpnext/assets/doctype/asset/asset.js:927 msgid "Depreciation Posting Date cannot be before Available-for-use Date" msgstr "لا يمكن أن يكون تاريخ ترحيل الإهلاك قبل تاريخ الإتاحة للاستخدام" -#: erpnext/assets/doctype/asset/asset.py:387 +#: erpnext/assets/doctype/asset/asset.py:391 msgid "Depreciation Row {0}: Depreciation Posting Date cannot be before Available-for-use Date" msgstr "صف الإهلاك {0}: لا يمكن أن يكون تاريخ ترحيل الإهلاك قبل تاريخ الإتاحة للاستخدام" -#: erpnext/assets/doctype/asset/asset.py:717 +#: erpnext/assets/doctype/asset/asset.py:721 msgid "Depreciation Row {0}: Expected value after useful life must be greater than or equal to {1}" msgstr "صف الإهلاك {0}: يجب أن تكون القيمة المتوقعة بعد العمر الافتراضي أكبر من أو تساوي {1}" @@ -16675,7 +16691,7 @@ msgstr "جدول الاهلاك الزمني" msgid "Depreciation Schedule View" msgstr "عرض جدول الإهلاك" -#: erpnext/assets/doctype/asset/asset.py:482 +#: erpnext/assets/doctype/asset/asset.py:486 msgid "Depreciation cannot be calculated for fully depreciated assets" msgstr "لا يمكن حساب الإهلاك للأصول المستهلكة بالكامل" @@ -16770,7 +16786,7 @@ msgstr "ديزل" #. Label of the difference (Currency) field in DocType 'POS Closing Entry #. Detail' #: banking/src/components/features/BankReconciliation/BankBalance.tsx:106 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:792 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:768 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:871 #: erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.json #: erpnext/accounts/doctype/bisect_nodes/bisect_nodes.json @@ -17047,7 +17063,7 @@ msgstr "لا يمكن استخدام المستودع المعطل {0} لهذه msgid "Disabled items cannot be selected in any transaction." msgstr "" -#: erpnext/controllers/accounts_controller.py:911 +#: erpnext/controllers/accounts_controller.py:931 msgid "Disabled pricing rules since this {} is an internal transfer" msgstr "تم تعطيل قواعد التسعير لأن هذا {} عبارة عن تحويل داخلي" @@ -17056,7 +17072,7 @@ msgstr "تم تعطيل قواعد التسعير لأن هذا {} عبارة ع msgid "Disabled suppliers are hidden from selection in new transactions but remain in historical records" msgstr "" -#: erpnext/controllers/accounts_controller.py:925 +#: erpnext/controllers/accounts_controller.py:945 msgid "Disabled tax included prices since this {} is an internal transfer" msgstr "الأسعار تشمل الضريبة المعطلة لأن هذا {} عبارة عن تحويل داخلي" @@ -17073,8 +17089,8 @@ msgstr "يعطل الجلب التلقائي للكمية الموجودة" #. Option for the 'Purpose' (Select) field in DocType 'Stock Entry' #. Option for the 'Purpose' (Select) field in DocType 'Stock Entry Type' #: erpnext/manufacturing/doctype/work_order/work_order.js:1068 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:387 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:430 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:392 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:435 #: erpnext/stock/doctype/stock_entry/stock_entry.json #: erpnext/stock/doctype/stock_entry_type/stock_entry_type.json msgid "Disassemble" @@ -17358,7 +17374,7 @@ msgstr "سبب تقديري" msgid "Dislikes" msgstr "يكره" -#: erpnext/setup/doctype/company/company.py:481 +#: erpnext/setup/doctype/company/company.py:482 msgid "Dispatch" msgstr "ارسال" @@ -17608,7 +17624,7 @@ msgstr "لا تقم بتحديث المتغيرات عند الحفظ" msgid "Do not use Batch-wise Valuation" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:956 +#: erpnext/assets/doctype/asset/asset.js:965 msgid "Do you really want to restore this scrapped asset?" msgstr "هل تريد حقا استعادة هذه الأصول المخردة ؟" @@ -17945,7 +17961,7 @@ msgstr "" msgid "Duplicate Entry. Please check Authorization Rule {0}" msgstr "إدخال مكرر. يرجى التحقق من قاعدة التخويل {0}" -#: erpnext/assets/doctype/asset/asset.py:414 +#: erpnext/assets/doctype/asset/asset.py:418 msgid "Duplicate Finance Book" msgstr "دفتر التمويل المكرر" @@ -18560,7 +18576,7 @@ msgstr "" msgid "Ems(Pica)" msgstr "إيمز (بيكا)" -#: erpnext/public/js/controllers/transaction.js:2965 +#: erpnext/public/js/controllers/transaction.js:2981 msgid "Enable {0} on the Item master to proceed with {1} inspection." msgstr "" @@ -18586,7 +18602,7 @@ msgstr "تمكين جدولة موعد" msgid "Enable Auto Email" msgstr "تفعيل البريد الإلكتروني التلقائي" -#: erpnext/stock/doctype/item/item.py:1168 +#: erpnext/stock/doctype/item/item.py:1188 msgid "Enable Auto Re-Order" msgstr "تمكين إعادة الطلب التلقائي" @@ -18918,7 +18934,7 @@ msgstr "لا يمكن أن يكون تاريخ الانتهاء قبل تاري msgid "End Time" msgstr "" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:362 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:367 msgid "End Transit" msgstr "نهاية النقل" @@ -18965,7 +18981,7 @@ msgstr "نهاية فترة الاشتراك الحالية" msgid "Ends With" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:202 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:203 msgid "Ends with" msgstr "" @@ -19035,7 +19051,7 @@ msgstr "أدخل اسمًا لقائمة العطلات هذه." msgid "Enter amount to be redeemed." msgstr "أدخل المبلغ المراد استرداده." -#: erpnext/stock/doctype/item/item.js:1173 +#: erpnext/stock/doctype/item/item.js:1259 msgid "Enter an Item Code, the name will be auto-filled the same as Item Code on clicking inside the Item Name field." msgstr "أدخل رمز الصنف، وسيتم ملء الاسم تلقائيًا بنفس رمز الصنف عند النقر داخل حقل اسم الصنف." @@ -19047,11 +19063,11 @@ msgstr "أدخل البريد الإلكتروني الخاص بالعميل" msgid "Enter customer's phone number" msgstr "أدخل رقم هاتف العميل" -#: erpnext/assets/doctype/asset/asset.js:927 +#: erpnext/assets/doctype/asset/asset.js:936 msgid "Enter date to scrap asset" msgstr "أدخل التاريخ لإلغاء الأصل" -#: erpnext/assets/doctype/asset/asset.py:480 +#: erpnext/assets/doctype/asset/asset.py:484 msgid "Enter depreciation details" msgstr "أدخل تفاصيل الاستهلاك" @@ -19095,7 +19111,7 @@ msgstr "أدخل اسم المستفيد قبل الإرسال." msgid "Enter the name of the bank or lending institution before submitting." msgstr "أدخل اسم البنك أو المؤسسة المقرضة قبل الإرسال." -#: erpnext/stock/doctype/item/item.js:1199 +#: erpnext/stock/doctype/item/item.js:1285 msgid "Enter the opening stock units." msgstr "أدخل وحدات المخزون الافتتاحي." @@ -19126,7 +19142,7 @@ msgstr "نفقات الترفيه" msgid "Entity" msgstr "كيان" -#: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:190 +#: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:182 msgid "Entries below have a posting date after {0} but the clearance date is before {1}." msgstr "" @@ -19190,7 +19206,7 @@ msgstr "" msgid "Error in party matching for Bank Transaction {0}" msgstr "خطأ في مطابقة الأطراف للمعاملة المصرفية {0}" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:350 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:326 msgid "Error uploading attachments" msgstr "" @@ -19262,7 +19278,7 @@ msgstr "من المصنع" msgid "Example URL" msgstr "مثال على عنوان URL" -#: erpnext/stock/doctype/item/item.py:1099 +#: erpnext/stock/doctype/item/item.py:1100 msgid "Example of a linked document: {0}" msgstr "مثال على مستند مرتبط: {0}" @@ -19284,7 +19300,7 @@ msgstr "مثال: ABCD. #####. إذا تم ضبط المسلسل ولم يتم msgid "Example: If the transaction amount is 200, then this will be calculated as {} = {}" msgstr "" -#: erpnext/stock/stock_ledger.py:2290 +#: erpnext/stock/stock_ledger.py:2315 msgid "Example: Serial No {0} reserved in {1}." msgstr "مثال: الرقم التسلسلي {0} محجوز في {1}." @@ -19342,12 +19358,12 @@ msgstr "الربح أو الخسارة في الصرف" #: erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.json #: erpnext/accounts/doctype/purchase_invoice_advance/purchase_invoice_advance.json #: erpnext/accounts/doctype/sales_invoice_advance/sales_invoice_advance.json -#: erpnext/setup/doctype/company/company.py:674 +#: erpnext/setup/doctype/company/company.py:675 msgid "Exchange Gain/Loss" msgstr "أرباح / خسائر الناتجة عن صرف العملة" -#: erpnext/controllers/accounts_controller.py:1784 -#: erpnext/controllers/accounts_controller.py:1869 +#: erpnext/controllers/accounts_controller.py:1804 +#: erpnext/controllers/accounts_controller.py:1889 msgid "Exchange Gain/Loss amount has been booked through {0}" msgstr "تم تسجيل مبلغ الربح/الخسارة من خلال {0}" @@ -19444,7 +19460,7 @@ msgstr "يجب أن يكون سعر الصرف نفس {0} {1} ({2})" msgid "Excise Entry" msgstr "الدخول المكوس" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:1525 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:1530 msgid "Excise Invoice" msgstr "المكوس الفاتورة" @@ -19654,7 +19670,7 @@ msgstr "القيمة المتوقعة بعد حياة مفيدة" msgid "Expense" msgstr "نفقة" -#: erpnext/controllers/stock_controller.py:942 +#: erpnext/controllers/stock_controller.py:982 msgid "Expense / Difference account ({0}) must be a 'Profit or Loss' account" msgstr "حساب نفقات / قروق ({0}) يجب ان يكون حساب ارباح و خسائر" @@ -19700,7 +19716,7 @@ msgstr "حساب نفقات / قروق ({0}) يجب ان يكون حساب ار msgid "Expense Account" msgstr "حساب النفقات" -#: erpnext/controllers/stock_controller.py:922 +#: erpnext/controllers/stock_controller.py:962 msgid "Expense Account Missing" msgstr "حساب المصاريف مفقود" @@ -19752,7 +19768,7 @@ msgid "Expenses Included In Valuation" msgstr "المصروفات متضمنة في تقييم السعر" #: erpnext/stock/doctype/pick_list/pick_list.py:310 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:513 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:518 msgid "Expired Batches" msgstr "دفعات منتهية الصلاحية" @@ -19884,7 +19900,7 @@ msgid "FIFO Stock Queue (qty, rate)" msgstr "قائمة انتظار المخزون وفقًا لأسلوب FIFO (الكمية، السعر)" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:179 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:218 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:229 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:121 msgid "FIFO/LIFO Queue" msgstr "قائمة انتظار FIFO/LIFO" @@ -19907,8 +19923,8 @@ msgstr "الإدخالات الفاشلة" msgid "Failed to Authenticate the API key." msgstr "فشل مصادقة مفتاح API." -#: erpnext/setup/setup_wizard/setup_wizard.py:37 -#: erpnext/setup/setup_wizard/setup_wizard.py:38 +#: erpnext/setup/setup_wizard/setup_wizard.py:45 +#: erpnext/setup/setup_wizard/setup_wizard.py:46 msgid "Failed to create demo data" msgstr "" @@ -19924,8 +19940,8 @@ msgstr "" msgid "Failed to erase demo data, please delete the demo company manually." msgstr "فشل مسح البيانات التجريبية، يرجى حذف الشركة التجريبية يدوياً." -#: erpnext/setup/setup_wizard/setup_wizard.py:16 #: erpnext/setup/setup_wizard/setup_wizard.py:17 +#: erpnext/setup/setup_wizard/setup_wizard.py:18 msgid "Failed to install presets" msgstr "فشل في تثبيت الإعدادات المسبقة" @@ -19933,7 +19949,12 @@ msgstr "فشل في تثبيت الإعدادات المسبقة" msgid "Failed to parse MT940 format. Error: {0}" msgstr "فشل تحليل تنسيق MT940. الخطأ: {0}" -#: erpnext/assets/doctype/asset/asset.js:264 +#: erpnext/setup/setup_wizard/setup_wizard.py:34 +#: erpnext/setup/setup_wizard/setup_wizard.py:36 +msgid "Failed to personalize your setup" +msgstr "" + +#: erpnext/assets/doctype/asset/asset.js:269 msgid "Failed to post depreciation entries" msgstr "فشل في تسجيل قيود الإهلاك" @@ -19945,20 +19966,20 @@ msgstr "" msgid "Failed to send email for campaign {0} to {1}" msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:26 +#: erpnext/setup/setup_wizard/setup_wizard.py:27 msgid "Failed to set defaults" msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:21 #: erpnext/setup/setup_wizard/setup_wizard.py:22 +#: erpnext/setup/setup_wizard/setup_wizard.py:23 msgid "Failed to setup company" msgstr "أخفق إعداد الشركة" -#: erpnext/setup/setup_wizard/setup_wizard.py:28 +#: erpnext/setup/setup_wizard/setup_wizard.py:29 msgid "Failed to setup defaults" msgstr "فشل في إعداد الإعدادات الافتراضية" -#: erpnext/setup/doctype/company/company.py:856 +#: erpnext/setup/doctype/company/company.py:857 msgid "Failed to setup defaults for country {0}. Please contact support." msgstr "فشل إعداد الإعدادات الافتراضية للبلد {0}. يرجى الاتصال بالدعم." @@ -20070,7 +20091,7 @@ msgid "Fetch Value From" msgstr "استرجاع القيمة من" #: erpnext/stock/doctype/material_request/material_request.js:372 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:828 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:833 msgid "Fetch exploded BOM (including sub-assemblies)" msgstr "جلب BOM انفجرت (بما في ذلك المجالس الفرعية)" @@ -20098,7 +20119,7 @@ msgid "Fetching Sales Orders..." msgstr "جلب طلبات المبيعات..." #: erpnext/accounts/doctype/dunning/dunning.js:135 -#: erpnext/public/js/controllers/transaction.js:1611 +#: erpnext/public/js/controllers/transaction.js:1633 msgid "Fetching exchange rates ..." msgstr "جلب أسعار الصرف ..." @@ -20342,7 +20363,7 @@ msgstr "الخدمات المالية" msgid "Financial Statements" msgstr "البيانات المالية" -#: erpnext/public/js/setup_wizard.js:48 +#: erpnext/public/js/setup_wizard.js:143 msgid "Financial Year Begins On" msgstr "تبدأ السنة المالية في" @@ -20411,15 +20432,15 @@ msgstr "الكمية من المنتج النهائي" msgid "Finished Good Item Quantity" msgstr "المنتج النهائي الجيد الكمية" -#: erpnext/controllers/accounts_controller.py:3983 +#: erpnext/controllers/accounts_controller.py:4003 msgid "Finished Good Item is not specified for service item {0}" msgstr "لم يتم تحديد المنتج النهائي لعنصر الخدمة {0}" -#: erpnext/controllers/accounts_controller.py:4000 +#: erpnext/controllers/accounts_controller.py:4020 msgid "Finished Good Item {0} Qty can not be zero" msgstr "المنتج النهائي {0} لا يمكن أن تكون الكمية صفرًا" -#: erpnext/controllers/accounts_controller.py:3994 +#: erpnext/controllers/accounts_controller.py:4014 msgid "Finished Good Item {0} must be a sub-contracted item" msgstr "يجب أن يكون المنتج النهائي {0} منتجًا تم التعاقد عليه من الباطن" @@ -20465,7 +20486,7 @@ msgid "Finished Good {0} must be a sub-contracted item." msgstr "يجب أن يكون المنتج النهائي {0} عنصرًا تم التعاقد عليه من الباطن." #: erpnext/selling/doctype/sales_order/sales_order.js:1437 -#: erpnext/setup/doctype/company/company.py:386 +#: erpnext/setup/doctype/company/company.py:387 msgid "Finished Goods" msgstr "السلع تامة الصنع" @@ -20655,7 +20676,7 @@ msgstr "الأصول الثابتة" #. Capitalization Asset Item' #. Label of the fixed_asset_account (Link) field in DocType 'Asset Category #. Account' -#: erpnext/assets/doctype/asset/asset.py:899 +#: erpnext/assets/doctype/asset/asset.py:903 #: erpnext/assets/doctype/asset_capitalization_asset_item/asset_capitalization_asset_item.json #: erpnext/assets/doctype/asset_category_account/asset_category_account.json msgid "Fixed Asset Account" @@ -20666,7 +20687,7 @@ msgstr "حساب الأصول الثابتة" msgid "Fixed Asset Defaults" msgstr "حالات التخلف عن سداد الأصول الثابتة" -#: erpnext/stock/doctype/item/item.py:355 +#: erpnext/stock/doctype/item/item.py:356 msgid "Fixed Asset Item must be a non-stock item." msgstr "يجب أن يكون بند الأصول الثابتة عنصرا غير مخزون.
    \\nFixed Asset Item must be a non-stock item." @@ -20677,7 +20698,7 @@ msgstr "يجب أن يكون بند الأصول الثابتة عنصرا غي msgid "Fixed Asset Register" msgstr "سجل الأصول الثابتة" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:211 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:213 msgid "Fixed Asset Turnover Ratio" msgstr "نسبة دوران الأصول الثابتة" @@ -20759,7 +20780,7 @@ msgstr "اتبع التقويم الأشهر" msgid "Following Material Requests have been raised automatically based on Item's re-order level" msgstr "تم رفع طلبات المواد التالية تلقائيا بناء على مستوى اعادة الطلب للبنود" -#: erpnext/selling/doctype/customer/customer.py:834 +#: erpnext/selling/doctype/customer/customer.py:836 msgid "Following fields are mandatory to create address:" msgstr "الحقول التالية إلزامية لإنشاء العنوان:" @@ -20816,7 +20837,7 @@ msgstr "للشركة" msgid "For Item" msgstr "للمنتج" -#: erpnext/controllers/stock_controller.py:1645 +#: erpnext/controllers/stock_controller.py:1685 msgid "For Item {0} cannot be received more than {1} qty against the {2} {3}" msgstr "لا يمكن استلام أكثر من الكمية {1} من المنتج {0} مقابل الكمية {2} {3}" @@ -20860,7 +20881,7 @@ msgstr "للكمية (الكمية المصنعة) إلزامية\\n
    \\nFor Q msgid "For Raw Materials" msgstr "للمواد الخام" -#: erpnext/controllers/accounts_controller.py:1449 +#: erpnext/controllers/accounts_controller.py:1469 msgid "For Return Invoices with Stock effect, '0' qty Items are not allowed. Following rows are affected: {0}" msgstr "بالنسبة لفواتير الإرجاع ذات تأثير المخزون، لا يُسمح بوجود عناصر بكمية '0'. تتأثر الصفوف التالية: {0}" @@ -20944,7 +20965,7 @@ msgstr "" msgid "For operation {0} at row {1}, please add raw materials or set a BOM against it." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2837 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2852 msgid "For operation {0}: Quantity ({1}) can not be greater than pending quantity({2})" msgstr "بالنسبة للعملية {0}: لا يمكن أن تكون الكمية ({1}) أكبر من الكمية المعلقة ({2})." @@ -20998,12 +21019,12 @@ msgstr "لتسهيل الأمر على العملاء، يمكن استخدام msgid "For the item {0}, the consumed quantity should be {1} according to the BOM {2}." msgstr "" -#: erpnext/public/js/controllers/transaction.js:1421 +#: erpnext/public/js/controllers/transaction.js:1443 msgctxt "Clear payment terms template and/or payment schedule when due date is changed" msgid "For the new {0} to take effect, would you like to clear the current {1}?" msgstr "" -#: erpnext/controllers/stock_controller.py:443 +#: erpnext/controllers/stock_controller.py:483 msgid "For the {0}, no stock is available for the return in the warehouse {1}." msgstr "بالنسبة لـ {0}، لا يوجد مخزون متاح للإرجاع في المستودع {1}." @@ -21619,15 +21640,11 @@ msgstr "المدفوعات المستقبلية" msgid "Future date is not allowed" msgstr "التاريخ المستقبلي غير مسموح به" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:258 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:269 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:161 msgid "G - D" msgstr "جي - دي" -#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:16 -msgid "GENERAL LEDGER" -msgstr "دفتر الأستاذ العام" - #: banking/src/components/features/BankReconciliation/BankPicker.tsx:127 #: banking/src/components/features/BankReconciliation/SelectedTransactionDetails.tsx:64 msgid "GL Account" @@ -21702,7 +21719,7 @@ msgstr "الربح/الخسارة من إعادة التقييم" #: erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:134 #: erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:220 -#: erpnext/setup/doctype/company/company.py:682 +#: erpnext/setup/doctype/company/company.py:683 msgid "Gain/Loss on Asset Disposal" msgstr "الربح / الخسارة عند التخلص من الأصول" @@ -21791,7 +21808,7 @@ msgstr "" msgid "Generate Demand" msgstr "توليد الطلب" -#: erpnext/public/js/setup_wizard.js:54 +#: erpnext/public/js/setup_wizard.js:149 msgid "Generate Demo Data for Exploration" msgstr "إنشاء بيانات تجريبية للاستكشاف" @@ -21951,11 +21968,11 @@ msgstr "الحصول على مواقع البند" #: erpnext/stock/doctype/material_request/material_request.js:238 #: erpnext/stock/doctype/purchase_receipt/purchase_receipt.js:144 #: erpnext/stock/doctype/purchase_receipt/purchase_receipt.js:244 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:456 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:503 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:536 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:627 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:795 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:461 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:508 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:541 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:632 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:800 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:165 msgid "Get Items From" msgstr "الحصول على البنود من" @@ -21971,8 +21988,8 @@ msgid "Get Items for Purchase Only" msgstr "احصل على المنتجات للشراء فقط" #: erpnext/stock/doctype/material_request/material_request.js:346 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:831 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:844 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:836 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:849 msgid "Get Items from BOM" msgstr "تنزيل الاصناف من BOM" @@ -22067,7 +22084,7 @@ msgstr "الحصول على عناصر التجميع الفرعية" #: erpnext/buying/doctype/supplier/supplier.js:151 msgid "Get Supplier Group Details" -msgstr "" +msgstr "احصل على تفاصيل مجموعة الموردين" #: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:461 #: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:481 @@ -22156,7 +22173,7 @@ msgstr "الأهداف" msgid "Goods" msgstr "البضائع" -#: erpnext/setup/doctype/company/company.py:387 +#: erpnext/setup/doctype/company/company.py:388 #: erpnext/stock/doctype/stock_entry/stock_entry_list.js:34 msgid "Goods In Transit" msgstr "البضائع في العبور" @@ -22286,8 +22303,8 @@ msgstr "غرام/لتر" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json #: erpnext/accounts/doctype/subscription/subscription.json #: erpnext/accounts/report/pos_register/pos_register.py:202 -#: erpnext/accounts/report/purchase_register/purchase_register.py:275 -#: erpnext/accounts/report/sales_register/sales_register.py:305 +#: erpnext/accounts/report/purchase_register/purchase_register.py:291 +#: erpnext/accounts/report/sales_register/sales_register.py:319 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/supplier_quotation/supplier_quotation.json #: erpnext/manufacturing/doctype/production_plan_sales_order/production_plan_sales_order.json @@ -22409,7 +22426,7 @@ msgstr "الربح الإجمالي / الخسارة" msgid "Gross Profit Percent" msgstr "نسبة الربح الإجمالي" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:171 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:173 msgid "Gross Profit Ratio" msgstr "نسبة الربح الإجمالي" @@ -22519,7 +22536,7 @@ msgstr "مجموعات" msgid "Growth View" msgstr "منظور النمو" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:268 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:279 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:171 msgid "H - F" msgstr "H - F" @@ -22786,7 +22803,7 @@ msgstr "يساعدك ذلك على توزيع الميزانية/الهدف عل msgid "Here are the error logs for the aforementioned failed depreciation entries: {0}" msgstr "فيما يلي سجلات الأخطاء الخاصة بإدخالات الإهلاك الفاشلة المذكورة أعلاه: {0}" -#: erpnext/stock/stock_ledger.py:2012 +#: erpnext/stock/stock_ledger.py:2018 msgid "Here are the options to proceed:" msgstr "فيما يلي الخيارات المتاحة للمتابعة:" @@ -22974,6 +22991,10 @@ msgstr "الساعات التي تم قضاؤها" msgid "How Pricing Rule is applied?" msgstr "كيف يتم تطبيق قاعدة التسعير؟" +#: erpnext/public/js/setup_wizard.js:40 +msgid "How big is the team?" +msgstr "" + #. Label of the frequency (Select) field in DocType 'Email Digest' #: erpnext/setup/doctype/email_digest/email_digest.json msgid "How frequently?" @@ -23013,7 +23034,7 @@ msgstr "كيفية تنسيق وعرض القيم في التقرير المال msgid "Hrs" msgstr "ساعات" -#: erpnext/setup/doctype/company/company.py:493 +#: erpnext/setup/doctype/company/company.py:494 msgid "Human Resources" msgstr "الموارد البشرية" @@ -23027,12 +23048,12 @@ msgstr "هندردويت (المملكة المتحدة)" msgid "Hundredweight (US)" msgstr "وزن المئة (أمريكي)" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:283 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:294 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:186 msgid "I - J" msgstr "أنا - ي" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:293 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:304 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:196 msgid "I - K" msgstr "أنا - ك" @@ -23197,7 +23218,7 @@ msgstr "" msgid "If checked, updates inventory; stock and accounting entries are created together. Leave unchecked if a Purchase Receipt is created separately." msgstr "" -#: erpnext/public/js/setup_wizard.js:56 +#: erpnext/public/js/setup_wizard.js:151 msgid "If checked, we will create demo data for you to explore the system. This demo data can be erased later." msgstr "في حال تفعيل هذا الخيار، سنقوم بإنشاء بيانات تجريبية لتتمكن من استكشاف النظام. ويمكن حذف هذه البيانات التجريبية لاحقاً." @@ -23431,7 +23452,7 @@ msgstr "" msgid "If no taxes are set, and Taxes and Charges Template is selected, the system will automatically apply the taxes from the chosen template." msgstr "إذا لم يتم تحديد أي ضرائب، وتم اختيار نموذج الضرائب والرسوم، فسيقوم النظام تلقائيًا بتطبيق الضرائب من النموذج المختار." -#: erpnext/stock/stock_ledger.py:2022 +#: erpnext/stock/stock_ledger.py:2028 msgid "If not, you can Cancel / Submit this entry" msgstr "وإلا يمكنك إلغاء / إرسال هذا الإدخال" @@ -23449,7 +23470,7 @@ msgstr "" msgid "If rate is zero then item will be treated as \"Free Item\"" msgstr "إذا كان السعر صفرًا، فسيتم التعامل مع المنتج على أنه \"منتج مجاني\"." -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:258 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:259 msgid "If rule matches, then:" msgstr "" @@ -23477,7 +23498,7 @@ msgstr "إذا نتج عن قائمة المواد مواد خردة، فيجب msgid "If the account is frozen, entries are allowed to restricted users." msgstr "إذا الحساب مجمد، يسمح بالدخول إلى المستخدمين المحددين." -#: erpnext/stock/stock_ledger.py:2015 +#: erpnext/stock/stock_ledger.py:2021 msgid "If the item is transacting as a Zero Valuation Rate item in this entry, please enable 'Allow Zero Valuation Rate' in the {0} Item table." msgstr "إذا كان العنصر يتعامل كعنصر سعر تقييم صفري في هذا الإدخال ، فالرجاء تمكين "السماح بمعدل تقييم صفري" في جدول العناصر {0}." @@ -23564,7 +23585,7 @@ msgstr "إذا كانت مدة صلاحية نقاط الولاء غير محد msgid "If yes, then this warehouse will be used to store rejected materials" msgstr "إذا كانت الإجابة بنعم، فسيتم استخدام هذا المستودع لتخزين المواد المرفوضة" -#: erpnext/stock/doctype/item/item.js:1185 +#: erpnext/stock/doctype/item/item.js:1271 msgid "If you are maintaining stock of this Item in your Inventory, ERPNext will make a stock ledger entry for each transaction of this item." msgstr "إذا كنت تحتفظ بمخزون من هذا الصنف في مخزونك، فسيقوم نظام ERPNext بإجراء قيد في دفتر الأستاذ للمخزون لكل معاملة لهذا الصنف." @@ -23736,7 +23757,7 @@ msgstr "تجاهل تداخل وقت محطة العمل" msgid "Ignores legacy Is Opening field in GL Entry that allows adding opening balance post the system is in use while generating reports" msgstr "يتجاهل هذا النظام حقل \"هل الرصيد الافتتاحي\" القديم في إدخال دفتر الأستاذ العام، والذي يسمح بإضافة الرصيد الافتتاحي بعد استخدام النظام أثناء إنشاء التقارير." -#: erpnext/stock/doctype/item/item.py:253 +#: erpnext/stock/doctype/item/item.py:254 msgid "Image in the description has been removed. To disable this behavior, uncheck \"{0}\" in {1}." msgstr "" @@ -24029,7 +24050,7 @@ msgstr "في حالة البرنامج متعدد المستويات، سيتم msgid "In this case, the amount will be calculated as 25% of the transaction amount. If the transaction amount is 200, then this will be calculated as 200 * 0.25 = 50." msgstr "" -#: erpnext/stock/doctype/item/item.js:1218 +#: erpnext/stock/doctype/item/item.js:1304 msgid "In this section, you can define Company-wide transaction-related defaults for this Item. Eg. Default Warehouse, Default Price List, Supplier, etc." msgstr "في هذا القسم، يمكنك تحديد الإعدادات الافتراضية المتعلقة بالمعاملات على مستوى الشركة لهذا العنصر. على سبيل المثال: المستودع الافتراضي، وقائمة الأسعار الافتراضية، والمورد الافتراضي، وما إلى ذلك." @@ -24338,7 +24359,7 @@ msgstr "دفعة واردة" #: erpnext/stock/report/available_serial_no/available_serial_no.py:146 #: erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py:167 #: erpnext/stock/report/stock_ledger/stock_ledger.py:361 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:193 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:204 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:96 msgid "Incoming Rate" msgstr "معدل الواردة" @@ -24369,7 +24390,7 @@ msgstr "كمية الرصيد غير صحيحة بعد العملية" msgid "Incorrect Batch Consumed" msgstr "تم استهلاك دفعة غير صحيحة" -#: erpnext/stock/doctype/item/item.py:583 +#: erpnext/stock/doctype/item/item.py:584 msgid "Incorrect Check in (group) Warehouse for Reorder" msgstr "تسجيل دخول غير صحيح (مجموعة) إلى مستودع إعادة الطلب" @@ -24381,7 +24402,7 @@ msgstr "" msgid "Incorrect Component Quantity" msgstr "كمية المكونات غير صحيحة" -#: erpnext/assets/doctype/asset/asset.py:390 +#: erpnext/assets/doctype/asset/asset.py:394 #: erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.py:56 msgid "Incorrect Date" msgstr "تاريخ غير صحيح" @@ -24587,14 +24608,14 @@ msgstr "بدأت" msgid "Inspected By" msgstr "تفتيش من قبل" -#: erpnext/controllers/stock_controller.py:1539 +#: erpnext/controllers/stock_controller.py:1579 #: erpnext/manufacturing/doctype/job_card/job_card.py:834 msgid "Inspection Rejected" msgstr "تم رفض التفتيش" #. Label of the inspection_required (Check) field in DocType 'Stock Entry' -#: erpnext/controllers/stock_controller.py:1509 -#: erpnext/controllers/stock_controller.py:1511 +#: erpnext/controllers/stock_controller.py:1549 +#: erpnext/controllers/stock_controller.py:1551 #: erpnext/stock/doctype/stock_entry/stock_entry.json msgid "Inspection Required" msgstr "التفتيش مطلوب" @@ -24611,7 +24632,7 @@ msgstr "التفتيش المطلوبة قبل تسليم" msgid "Inspection Required before Purchase" msgstr "التفتيش المطلوبة قبل الشراء" -#: erpnext/controllers/stock_controller.py:1524 +#: erpnext/controllers/stock_controller.py:1564 #: erpnext/manufacturing/doctype/job_card/job_card.py:815 msgid "Inspection Submission" msgstr "طلب فحص" @@ -24642,7 +24663,7 @@ msgstr "ملاحظة التثبيت" msgid "Installation Note Item" msgstr "ملاحظة تثبيت الإغلاق" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:606 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:607 msgid "Installation Note {0} has already been submitted" msgstr "مذكرة التسليم {0} ارسلت\\n
    \\nInstallation Note {0} has already been submitted" @@ -24667,7 +24688,7 @@ msgstr "تاريخ التركيب لا يمكن أن يكون قبل تاريخ msgid "Installed Qty" msgstr "الكميات الثابتة" -#: erpnext/setup/setup_wizard/setup_wizard.py:15 +#: erpnext/setup/setup_wizard/setup_wizard.py:16 msgid "Installing presets" msgstr "تثبيت الإعدادات المسبقة" @@ -24681,11 +24702,11 @@ msgstr "تعليمات" msgid "Insufficient Capacity" msgstr "سعة غير كافية" -#: erpnext/controllers/accounts_controller.py:3879 -#: erpnext/controllers/accounts_controller.py:3901 -#: erpnext/controllers/accounts_controller.py:4419 -#: erpnext/controllers/accounts_controller.py:4425 -#: erpnext/controllers/accounts_controller.py:4447 +#: erpnext/controllers/accounts_controller.py:3899 +#: erpnext/controllers/accounts_controller.py:3921 +#: erpnext/controllers/accounts_controller.py:4439 +#: erpnext/controllers/accounts_controller.py:4445 +#: erpnext/controllers/accounts_controller.py:4467 msgid "Insufficient Permissions" msgstr "أذونات غير كافية" @@ -24694,12 +24715,12 @@ msgstr "أذونات غير كافية" #: erpnext/stock/doctype/pick_list/pick_list.py:166 #: erpnext/stock/doctype/pick_list/pick_list.py:1093 #: erpnext/stock/doctype/stock_entry/stock_entry.py:1235 -#: erpnext/stock/serial_batch_bundle.py:1225 erpnext/stock/stock_ledger.py:1703 -#: erpnext/stock/stock_ledger.py:2181 +#: erpnext/stock/serial_batch_bundle.py:1225 erpnext/stock/stock_ledger.py:1709 +#: erpnext/stock/stock_ledger.py:2206 msgid "Insufficient Stock" msgstr "المالية غير كافية" -#: erpnext/stock/stock_ledger.py:2196 +#: erpnext/stock/stock_ledger.py:2221 msgid "Insufficient Stock for Batch" msgstr "المخزون غير كافٍ للدفعة" @@ -24852,7 +24873,7 @@ msgstr "داخلي" msgid "Internal Customer Accounting" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:256 +#: erpnext/selling/doctype/customer/customer.py:257 msgid "Internal Customer for company {0} already exists" msgstr "يوجد بالفعل عميل داخلي للشركة {0}" @@ -24860,7 +24881,7 @@ msgstr "يوجد بالفعل عميل داخلي للشركة {0}" msgid "Internal Purchase Order" msgstr "أمر شراء داخلي" -#: erpnext/controllers/accounts_controller.py:811 +#: erpnext/controllers/accounts_controller.py:831 msgid "Internal Sale or Delivery Reference missing." msgstr "رقم مرجع البيع أو التسليم الداخلي مفقود." @@ -24868,7 +24889,7 @@ msgstr "رقم مرجع البيع أو التسليم الداخلي مفقود msgid "Internal Sales Order" msgstr "أمر بيع داخلي" -#: erpnext/controllers/accounts_controller.py:813 +#: erpnext/controllers/accounts_controller.py:833 msgid "Internal Sales Reference Missing" msgstr "رقم مرجع المبيعات الداخلي مفقود" @@ -24898,7 +24919,7 @@ msgstr "يوجد بالفعل مورد داخلي لشركة {0}" msgid "Internal Transfer" msgstr "نقل داخلي" -#: erpnext/controllers/accounts_controller.py:822 +#: erpnext/controllers/accounts_controller.py:842 msgid "Internal Transfer Reference Missing" msgstr "رقم مرجع التحويل الداخلي مفقود" @@ -24922,7 +24943,7 @@ msgstr "سجل العمل الداخلي" msgid "Internal notes about this customer. Not visible on transactions or the portal." msgstr "" -#: erpnext/controllers/stock_controller.py:1606 +#: erpnext/controllers/stock_controller.py:1646 msgid "Internal transfers can only be done in company's default currency" msgstr "لا يمكن إجراء التحويلات الداخلية إلا بالعملة الافتراضية للشركة" @@ -24942,8 +24963,8 @@ msgstr "يجب أن تكون الفترة الزمنية بين 1 و 59 دقيق #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1077 #: erpnext/assets/doctype/asset_category/asset_category.py:69 #: erpnext/assets/doctype/asset_category/asset_category.py:97 -#: erpnext/controllers/accounts_controller.py:3225 -#: erpnext/controllers/accounts_controller.py:3233 +#: erpnext/controllers/accounts_controller.py:3245 +#: erpnext/controllers/accounts_controller.py:3253 msgid "Invalid Account" msgstr "حساب غير صالح" @@ -24952,7 +24973,7 @@ msgid "Invalid Accounting Dimension" msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.py:402 -#: erpnext/accounts/doctype/payment_request/payment_request.py:1006 +#: erpnext/accounts/doctype/payment_request/payment_request.py:1007 msgid "Invalid Allocated Amount" msgstr "مبلغ مخصص غير صالح" @@ -24964,7 +24985,11 @@ msgstr "مبلغ غير صالح" msgid "Invalid Attribute" msgstr "خاصية غير صالحة" -#: erpnext/controllers/accounts_controller.py:625 +#: erpnext/stock/doctype/item/item.js:898 +msgid "Invalid Attribute Values" +msgstr "" + +#: erpnext/controllers/accounts_controller.py:645 msgid "Invalid Auto Repeat Date" msgstr "تاريخ التكرار التلقائي غير صالح" @@ -24977,7 +25002,7 @@ msgstr "" msgid "Invalid Barcode. There is no Item attached to this barcode." msgstr "الباركود غير صالح. لا يوجد عنصر مرفق بهذا الرمز الشريطي." -#: erpnext/public/js/controllers/transaction.js:3177 +#: erpnext/public/js/controllers/transaction.js:3202 msgid "Invalid Blanket Order for the selected Customer and Item" msgstr "طلب فارغ غير صالح للعميل والعنصر المحدد" @@ -24997,13 +25022,13 @@ msgstr "" msgid "Invalid Company for Inter Company Transaction." msgstr "شركة غير صالحة للمعاملات بين الشركات." -#: erpnext/assets/doctype/asset/asset.py:361 -#: erpnext/assets/doctype/asset/asset.py:368 -#: erpnext/controllers/accounts_controller.py:3248 +#: erpnext/assets/doctype/asset/asset.py:365 +#: erpnext/assets/doctype/asset/asset.py:372 +#: erpnext/controllers/accounts_controller.py:3268 msgid "Invalid Cost Center" msgstr "مركز تكلفة غير صالح" -#: erpnext/selling/doctype/customer/customer.py:369 +#: erpnext/selling/doctype/customer/customer.py:370 msgid "Invalid Customer Group" msgstr "" @@ -25044,8 +25069,8 @@ msgstr "" msgid "Invalid File Type" msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:325 -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:330 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:329 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:334 msgid "Invalid Formula" msgstr "صيغة غير صالحة" @@ -25058,7 +25083,7 @@ msgstr "تجميع غير صالح" msgid "Invalid Item" msgstr "عنصر غير صالح" -#: erpnext/stock/doctype/item/item.py:1514 +#: erpnext/stock/doctype/item/item.py:1534 msgid "Invalid Item Defaults" msgstr "القيم الافتراضية للعناصر غير صالحة" @@ -25067,12 +25092,12 @@ msgstr "القيم الافتراضية للعناصر غير صالحة" msgid "Invalid Ledger Entries" msgstr "إدخالات دفتر الأستاذ غير صالحة" -#: erpnext/assets/doctype/asset/asset.py:565 +#: erpnext/assets/doctype/asset/asset.py:569 msgid "Invalid Net Purchase Amount" msgstr "مبلغ الشراء الصافي غير صالح" #: erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.py:77 -#: erpnext/accounts/general_ledger.py:834 +#: erpnext/accounts/general_ledger.py:836 msgid "Invalid Opening Entry" msgstr "إدخال فتح غير صالح" @@ -25114,12 +25139,12 @@ msgstr "تكوين فقدان العملية غير صالح" msgid "Invalid Purchase Invoice" msgstr "فاتورة شراء غير صالحة" -#: erpnext/controllers/accounts_controller.py:3921 -#: erpnext/controllers/accounts_controller.py:3935 +#: erpnext/controllers/accounts_controller.py:3941 +#: erpnext/controllers/accounts_controller.py:3955 msgid "Invalid Qty" msgstr "كمية غير صالحة" -#: erpnext/controllers/accounts_controller.py:1467 +#: erpnext/controllers/accounts_controller.py:1487 msgid "Invalid Quantity" msgstr "كمية غير صحيحة" @@ -25135,8 +25160,8 @@ msgstr "إرجاع غير صالح" msgid "Invalid Sales Invoices" msgstr "فواتير مبيعات غير صالحة" -#: erpnext/assets/doctype/asset/asset.py:654 -#: erpnext/assets/doctype/asset/asset.py:682 +#: erpnext/assets/doctype/asset/asset.py:658 +#: erpnext/assets/doctype/asset/asset.py:686 msgid "Invalid Schedule" msgstr "جدول غير صالح" @@ -25178,6 +25203,13 @@ msgstr "مبلغ غير صالح في القيود المحاسبية لـ {} {} msgid "Invalid condition expression" msgstr "تعبير شرط غير صالح" +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:38 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:41 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:49 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:52 +msgid "Invalid debit/credit formula: {0}" +msgstr "" + #: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:1069 msgid "Invalid file URL" msgstr "" @@ -25190,7 +25222,7 @@ msgstr "صيغة التصفية غير صالحة. يرجى التحقق من ب msgid "Invalid lost reason {0}, please create a new lost reason" msgstr "سبب ضائع غير صالح {0} ، يرجى إنشاء سبب ضائع جديد" -#: erpnext/stock/doctype/item/item.py:459 +#: erpnext/stock/doctype/item/item.py:460 msgid "Invalid naming series (. missing) for {0}" msgstr "سلسلة تسمية غير صالحة (. مفقود) لـ {0}" @@ -25202,7 +25234,7 @@ msgstr "مُعامل غير صالح. يجب أن يكون نوع 'dn' سلسل msgid "Invalid reference {0} {1}" msgstr "مرجع غير صالح {0} {1}" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:96 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:143 msgid "Invalid regex pattern." msgstr "" @@ -25224,8 +25256,8 @@ msgstr "" #: erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:109 #: erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:119 -#: erpnext/accounts/general_ledger.py:882 -#: erpnext/accounts/general_ledger.py:892 +#: erpnext/accounts/general_ledger.py:884 +#: erpnext/accounts/general_ledger.py:894 msgid "Invalid value {0} for {1} against account {2}" msgstr "قيمة غير صالحة {0} للحساب {1} مقابل الحساب {2}" @@ -25278,7 +25310,7 @@ msgstr "مفتاح أبعاد المخزون" msgid "Inventory Settings" msgstr "إعدادات المخزون" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:214 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:216 msgid "Inventory Turnover Ratio" msgstr "معدل دوران المخزون" @@ -26144,11 +26176,11 @@ msgstr "قضايا" msgid "Issuing Date" msgstr "تاريخ الإصدار" -#: erpnext/stock/doctype/item/item.py:640 +#: erpnext/stock/doctype/item/item.py:641 msgid "It can take upto few hours for accurate stock values to be visible after merging items." msgstr "قد يستغرق الأمر بضع ساعات حتى تظهر قيم المخزون الدقيقة بعد دمج العناصر." -#: erpnext/public/js/controllers/transaction.js:2558 +#: erpnext/public/js/controllers/transaction.js:2580 msgid "It is needed to fetch Item Details." msgstr "هناك حاجة لجلب تفاصيل البند." @@ -26518,7 +26550,7 @@ msgstr "سلة التسوق" #: erpnext/manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:86 #: erpnext/manufacturing/report/work_order_stock_report/work_order_stock_report.py:119 #: erpnext/projects/doctype/timesheet/timesheet.js:214 -#: erpnext/public/js/controllers/transaction.js:2852 +#: erpnext/public/js/controllers/transaction.js:2874 #: erpnext/public/js/stock_reservation.js:112 #: erpnext/public/js/stock_reservation.js:318 erpnext/public/js/utils.js:596 #: erpnext/public/js/utils.js:753 @@ -26994,7 +27026,7 @@ msgstr "مادة المصنع" #: erpnext/manufacturing/report/production_planning_report/production_planning_report.py:371 #: erpnext/manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:92 #: erpnext/manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.py:138 -#: erpnext/public/js/controllers/transaction.js:2858 +#: erpnext/public/js/controllers/transaction.js:2880 #: erpnext/public/js/utils.js:849 #: erpnext/selling/doctype/quotation_item/quotation_item.json #: erpnext/selling/doctype/sales_order/sales_order.js:1286 @@ -27288,11 +27320,11 @@ msgstr "الصنف تفاصيل متغير" msgid "Item Variant Settings" msgstr "إعدادات متنوع السلعة" -#: erpnext/stock/doctype/item/item.js:1034 +#: erpnext/stock/doctype/item/item.js:1120 msgid "Item Variant {0} already exists with same attributes" msgstr "متغير الصنف {0} موجود بالفعل مع نفس الخصائص" -#: erpnext/stock/doctype/item/item.py:835 +#: erpnext/stock/doctype/item/item.py:836 msgid "Item Variants updated" msgstr "تم تحديث متغيرات العنصر" @@ -27396,7 +27428,7 @@ msgstr "البند والضمان تفاصيل" msgid "Item for row {0} does not match Material Request" msgstr "عنصر الصف {0} لا يتطابق مع طلب المواد" -#: erpnext/stock/doctype/item/item.py:894 +#: erpnext/stock/doctype/item/item.py:895 msgid "Item has variants." msgstr "البند لديه متغيرات." @@ -27422,7 +27454,7 @@ msgstr "اسم السلعة" msgid "Item operation" msgstr "عملية الصنف" -#: erpnext/controllers/accounts_controller.py:3975 +#: erpnext/controllers/accounts_controller.py:3995 msgid "Item qty can not be updated as raw materials are already processed." msgstr "" @@ -27445,7 +27477,7 @@ msgstr "يتم إعادة حساب معدل تقييم السلعة مع الأ msgid "Item valuation reposting in progress. Report might show incorrect item valuation." msgstr "جارٍ إعادة نشر تقييم الأصناف. قد يُظهر التقرير تقييمًا غير صحيح للأصناف." -#: erpnext/stock/doctype/item/item.py:1051 +#: erpnext/stock/doctype/item/item.py:1052 msgid "Item variant {0} exists with same attributes" msgstr "متغير العنصر {0} موجود بنفس السمات\\n
    \\nItem variant {0} exists with same attributes" @@ -27465,8 +27497,8 @@ msgstr "لا يمكن إضافة العنصر {0} كجزء فرعي من نفس msgid "Item {0} cannot be ordered more than {1} against Blanket Order {2}." msgstr "لا يمكن طلب أكثر من {0} من المنتج {1} ضمن طلب شامل {2}." -#: erpnext/assets/doctype/asset/asset.py:343 -#: erpnext/stock/doctype/item/item.py:686 +#: erpnext/assets/doctype/asset/asset.py:347 +#: erpnext/stock/doctype/item/item.py:687 msgid "Item {0} does not exist" msgstr "العنصر {0} غير موجود\\n
    \\nItem {0} does not exist" @@ -27474,7 +27506,7 @@ msgstr "العنصر {0} غير موجود\\n
    \\nItem {0} does not exist" msgid "Item {0} does not exist in the system or has expired" msgstr "الصنف{0} غير موجود في النظام أو انتهت صلاحيته" -#: erpnext/controllers/stock_controller.py:557 +#: erpnext/controllers/stock_controller.py:597 msgid "Item {0} does not exist." msgstr "العنصر {0} غير موجود\\n
    \\nItem {0} does not exist." @@ -27486,7 +27518,7 @@ msgstr "تم إدخال العنصر {0} عدة مرات." msgid "Item {0} has already been returned" msgstr "تمت إرجاع الصنف{0} من قبل" -#: erpnext/assets/doctype/asset/asset.py:345 +#: erpnext/assets/doctype/asset/asset.py:349 msgid "Item {0} has been disabled" msgstr "الصنف{0} تم تعطيله" @@ -27498,7 +27530,7 @@ msgstr "العنصر {0} ليس له رقم تسلسلي. يتم تسليم ال msgid "Item {0} has no changes in delivered quantity. Please unselect the row if you do not wish to update its quantity." msgstr "" -#: erpnext/stock/doctype/item/item.py:1230 +#: erpnext/stock/doctype/item/item.py:1250 msgid "Item {0} has reached its end of life on {1}" msgstr "الصنف{0} قد وصل إلى نهاية عمره في {1}" @@ -27510,11 +27542,11 @@ msgstr "تم تجاهل الصنف {0} لأنه ليس بند مخزون" msgid "Item {0} is already reserved/delivered against Sales Order {1}." msgstr "تم حجز/تسليم المنتج {0} بالفعل بموجب أمر البيع {1}." -#: erpnext/stock/doctype/item/item.py:1250 +#: erpnext/stock/doctype/item/item.py:1270 msgid "Item {0} is cancelled" msgstr "تم إلغاء العنصر {0}\\n
    \\nItem {0} is cancelled" -#: erpnext/stock/doctype/item/item.py:1234 +#: erpnext/stock/doctype/item/item.py:1254 msgid "Item {0} is disabled" msgstr "تم تعطيل البند {0}" @@ -27526,7 +27558,7 @@ msgstr "" msgid "Item {0} is not a serialized Item" msgstr "البند {0} ليس بند لديه رقم تسلسلي" -#: erpnext/stock/doctype/item/item.py:1242 +#: erpnext/stock/doctype/item/item.py:1262 msgid "Item {0} is not a stock Item" msgstr "العنصر {0} ليس عنصر مخزون\\n
    \\nItem {0} is not a stock Item" @@ -27534,7 +27566,7 @@ msgstr "العنصر {0} ليس عنصر مخزون\\n
    \\nItem {0} is not a s msgid "Item {0} is not a subcontracted item" msgstr "العنصر {0} ليس عنصرًا متعاقدًا عليه من الباطن" -#: erpnext/stock/doctype/item/item.py:852 +#: erpnext/stock/doctype/item/item.py:853 msgid "Item {0} is not a template item." msgstr "" @@ -27542,7 +27574,7 @@ msgstr "" msgid "Item {0} is not active or end of life has been reached" msgstr "البند {0} غير نشط أو تم التوصل إلى نهاية الحياة" -#: erpnext/assets/doctype/asset/asset.py:347 +#: erpnext/assets/doctype/asset/asset.py:351 msgid "Item {0} must be a Fixed Asset Item" msgstr "البند {0} يجب أن يكون بند أصول ثابتة" @@ -27554,7 +27586,7 @@ msgstr "يجب أن يكون العنصر {0} عنصرًا غير متوفر ف msgid "Item {0} must be a Sub-contracted Item" msgstr "البند {0} يجب أن يكون عنصر التعاقد الفرعي" -#: erpnext/assets/doctype/asset/asset.py:349 +#: erpnext/assets/doctype/asset/asset.py:353 msgid "Item {0} must be a non-stock item" msgstr "الصنف {0} يجب ألا يكون صنف مخزن
    Item {0} must be a non-stock item" @@ -27668,11 +27700,11 @@ msgstr "اصناف يمكن طلبه" msgid "Items and Pricing" msgstr "السلع والتسعيرات" -#: erpnext/controllers/accounts_controller.py:4233 +#: erpnext/controllers/accounts_controller.py:4253 msgid "Items cannot be updated as Subcontracting Inward Order(s) exist against this Subcontracted Sales Order." msgstr "لا يمكن تحديث العناصر لوجود أوامر واردة من الباطن مرتبطة بأمر البيع هذا." -#: erpnext/controllers/accounts_controller.py:4226 +#: erpnext/controllers/accounts_controller.py:4246 msgid "Items cannot be updated as Subcontracting Order is created against the Purchase Order {0}." msgstr "لا يمكن تحديث العناصر لأن أمر التعاقد من الباطن يتم إنشاؤه مقابل أمر الشراء {0}." @@ -27714,7 +27746,7 @@ msgstr "العناصر المراد حجزها" msgid "Items under this warehouse will be suggested" msgstr "وسيتم اقتراح العناصر الموجودة تحت هذا المستودع" -#: erpnext/controllers/stock_controller.py:166 +#: erpnext/controllers/stock_controller.py:202 msgid "Items {0} do not exist in the Item master." msgstr "العناصر {0} غير موجودة في قائمة العناصر الرئيسية." @@ -27902,7 +27934,7 @@ msgstr "اسم العامل" msgid "Job Worker Warehouse" msgstr "مستودع عامل التوظيف" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2892 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2907 msgid "Job card {0} created" msgstr "تم إنشاء بطاقة العمل {0}" @@ -27953,8 +27985,8 @@ msgstr "إدخالات قيد اليومية {0} غير مترابطة" #: erpnext/accounts/doctype/payment_reconciliation_invoice/payment_reconciliation_invoice.json #: erpnext/accounts/print_format/journal_auditing_voucher/journal_auditing_voucher.html:10 #: erpnext/accounts/workspace/invoicing/invoicing.json -#: erpnext/assets/doctype/asset/asset.js:385 -#: erpnext/assets/doctype/asset/asset.js:394 +#: erpnext/assets/doctype/asset/asset.js:390 +#: erpnext/assets/doctype/asset/asset.js:399 #: erpnext/assets/doctype/asset/asset.json #: erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.json #: erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json @@ -28005,7 +28037,7 @@ msgstr "يجب تحديد نوع قيد اليومية كقيد استهلاك msgid "Journal Entry {0} does not have account {1} or already matched against other voucher" msgstr "قيد دفتر اليومية {0} ليس لديه حساب {1} أو قد تم مطابقته مسبقا مع إيصال أخرى" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:394 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:395 msgid "Journal Template Accounts" msgstr "" @@ -28744,7 +28776,7 @@ msgstr "الفواتير المرتبطة" msgid "Linked Location" msgstr "الموقع المرتبط" -#: erpnext/stock/doctype/item/item.py:1103 +#: erpnext/stock/doctype/item/item.py:1104 msgid "Linked with submitted documents" msgstr "مرتبط بالوثائق المقدمة" @@ -28762,7 +28794,7 @@ msgid "Linking to Supplier Failed. Please try again." msgstr "فشل الاتصال بالمورد. يرجى المحاولة مرة أخرى." #: erpnext/accounts/report/financial_ratios/financial_ratios.js:55 -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:150 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:152 msgid "Liquidity Ratios" msgstr "نسب السيولة" @@ -29110,10 +29142,10 @@ msgstr "عطل الآلة" msgid "Machine operator errors" msgstr "أخطاء مشغل الآلة" -#: erpnext/setup/doctype/company/company.py:720 -#: erpnext/setup/doctype/company/company.py:735 +#: erpnext/setup/doctype/company/company.py:721 #: erpnext/setup/doctype/company/company.py:736 #: erpnext/setup/doctype/company/company.py:737 +#: erpnext/setup/doctype/company/company.py:738 msgid "Main" msgstr "رئيسي" @@ -29133,7 +29165,7 @@ msgstr "لا يمكن إدخال مركز التكلفة الرئيسي {0} في msgid "Main Item Code" msgstr "رمز المنتج الرئيسي" -#: erpnext/assets/doctype/asset/asset.js:138 +#: erpnext/assets/doctype/asset/asset.js:143 msgid "Maintain Asset" msgstr "صيانة الأصول" @@ -29431,11 +29463,11 @@ msgstr "إجراء مكالمة" msgid "Make project from a template." msgstr "جعل المشروع من قالب." -#: erpnext/stock/doctype/item/item.js:822 +#: erpnext/stock/doctype/item/item.js:915 msgid "Make {0} Variant" msgstr "إنشاء نسخة {0}" -#: erpnext/stock/doctype/item/item.js:824 +#: erpnext/stock/doctype/item/item.js:916 msgid "Make {0} Variants" msgstr "إنشاء متغيرات {0}" @@ -29458,7 +29490,7 @@ msgstr "" msgid "Manage your orders" msgstr "إدارة طلباتك" -#: erpnext/setup/doctype/company/company.py:499 +#: erpnext/setup/doctype/company/company.py:500 msgid "Management" msgstr "الإدارة" @@ -29675,6 +29707,7 @@ msgstr "الشركات المصنعة المستخدمة في المنتجات" #: erpnext/desktop_icon/manufacturing.json #: erpnext/manufacturing/doctype/production_plan_sub_assembly_item/production_plan_sub_assembly_item.json #: erpnext/manufacturing/workspace/manufacturing/manufacturing.json +#: erpnext/public/js/setup_wizard.js:94 #: erpnext/selling/doctype/sales_order/sales_order_dashboard.py:29 #: erpnext/setup/doctype/company/company.json erpnext/setup/install.py:414 #: erpnext/setup/setup_wizard/data/industry_type.txt:31 @@ -29905,7 +29938,7 @@ msgstr "" msgid "Market Segment" msgstr "سوق القطاع" -#: erpnext/setup/doctype/company/company.py:451 +#: erpnext/setup/doctype/company/company.py:452 msgid "Marketing" msgstr "التسويق" @@ -30001,7 +30034,7 @@ msgstr "اهلاك المواد" msgid "Material Consumption for Manufacture" msgstr "اهلاك المواد للتصنيع" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:683 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:688 msgid "Material Consumption is not set in Manufacturing Settings." msgstr "لم يتم تعيين اهلاك المواد في إعدادات التصنيع." @@ -30089,8 +30122,8 @@ msgstr "أستلام مواد" #: erpnext/stock/doctype/pick_list/pick_list.json #: erpnext/stock/doctype/pick_list_item/pick_list_item.json #: erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:304 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:460 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:309 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:465 #: erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json #: erpnext/stock/doctype/stock_settings/stock_settings.js:153 #: erpnext/stock/workspace/stock/stock.json @@ -30379,11 +30412,11 @@ msgstr "الحد الأقصى للخصم المسموح به لهذا المنت #: erpnext/manufacturing/doctype/work_order/work_order.js:1059 #: erpnext/manufacturing/doctype/work_order/work_order.js:1082 #: erpnext/stock/doctype/pick_list/pick_list.js:208 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:399 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:404 msgid "Max: {0}" msgstr "الحد الأقصى: {0}" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:63 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:64 msgid "Maximum Amount" msgstr "" @@ -30474,7 +30507,7 @@ msgstr "ميغا جول" msgid "Megawatt" msgstr "ميغاواط" -#: erpnext/stock/stock_ledger.py:2028 +#: erpnext/stock/stock_ledger.py:2034 msgid "Mention Valuation Rate in the Item master." msgstr "اذكر معدل التقييم في مدير السلعة." @@ -30754,15 +30787,15 @@ msgstr "الكمية الادنى لايمكن ان تكون اكبر من ال msgid "Min Qty should be greater than Recurse Over Qty" msgstr "يجب أن تكون الكمية الدنيا أكبر من الكمية المطلوبة للتكرار." -#: erpnext/stock/doctype/item/item.js:985 +#: erpnext/stock/doctype/item/item.js:1071 msgid "Min Value: {0}, Max Value: {1}, in Increments of: {2}" msgstr "القيمة الدنيا: {0}، القيمة القصوى: {1}، بزيادات قدرها: {2}" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:62 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:104 msgid "Min amount cannot be greater than max amount." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:58 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:59 msgid "Minimum Amount" msgstr "" @@ -30872,7 +30905,7 @@ msgid "Missing Asset" msgstr "أصل مفقود" #: erpnext/accounts/doctype/gl_entry/gl_entry.py:186 -#: erpnext/assets/doctype/asset/asset.py:377 +#: erpnext/assets/doctype/asset/asset.py:381 msgid "Missing Cost Center" msgstr "مركز التكلفة المفقود" @@ -30880,7 +30913,7 @@ msgstr "مركز التكلفة المفقود" msgid "Missing Default in Company" msgstr "غياب الوضع الافتراضي في الشركة" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:929 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:931 msgid "Missing Dependency" msgstr "" @@ -30888,7 +30921,7 @@ msgstr "" msgid "Missing Filters" msgstr "فلاتر مفقودة" -#: erpnext/assets/doctype/asset/asset.py:422 +#: erpnext/assets/doctype/asset/asset.py:426 msgid "Missing Finance Book" msgstr "كتاب التمويل المفقود" @@ -30896,7 +30929,7 @@ msgstr "كتاب التمويل المفقود" msgid "Missing Finished Good" msgstr "مفقود، تم الانتهاء منه، جيد" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:310 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:314 msgid "Missing Formula" msgstr "الصيغة المفقودة" @@ -30933,7 +30966,7 @@ msgid "Missing required filter: {0}" msgstr "الفلتر المطلوب مفقود: {0}" #: erpnext/manufacturing/doctype/bom/bom.py:1219 -#: erpnext/manufacturing/doctype/work_order/work_order.py:1563 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1587 msgid "Missing value" msgstr "قيمة مفقودة" @@ -30946,8 +30979,8 @@ msgstr "ظروف مختلطة" #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:216 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:248 -#: erpnext/accounts/report/purchase_register/purchase_register.py:201 -#: erpnext/accounts/report/sales_register/sales_register.py:224 +#: erpnext/accounts/report/purchase_register/purchase_register.py:217 +#: erpnext/accounts/report/sales_register/sales_register.py:238 msgid "Mode Of Payment" msgstr "طريقة الدفع" @@ -31174,11 +31207,11 @@ msgstr "منشئ قوائم المواد متعددة المستويات" msgid "Multiple Accounts" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:283 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:284 msgid "Multiple Accounts (Journal Template)" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:440 +#: erpnext/selling/doctype/customer/customer.py:441 msgid "Multiple Loyalty Programs found for Customer {}. Please select manually." msgstr "تم العثور على عدة برامج ولاء للعميل {}. يرجى الاختيار يدويًا." @@ -31204,7 +31237,7 @@ msgstr "متغيرات متعددة" msgid "Multiple company fields available: {0}. Please select manually." msgstr "" -#: erpnext/controllers/accounts_controller.py:1313 +#: erpnext/controllers/accounts_controller.py:1333 msgid "Multiple fiscal years exist for the date {0}. Please set company in Fiscal Year" msgstr "يوجد سنوات مالية متعددة لنفس التاريخ {0}. الرجاء تحديد الشركة لهذه السنة المالية\\n
    \\nMultiple fiscal years exist for the date {0}. Please set company in Fiscal Year" @@ -31217,7 +31250,7 @@ msgid "Music" msgstr "موسيقى" #. Label of the must_be_whole_number (Check) field in DocType 'UOM' -#: erpnext/manufacturing/doctype/work_order/work_order.py:1510 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1534 #: erpnext/setup/doctype/uom/uom.json #: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:267 #: erpnext/utilities/transaction_base.py:631 @@ -31356,7 +31389,7 @@ msgstr "الكمية السلبية غير مسموح بها\\n
    \\nnegative Q msgid "Negative Stock" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1608 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1658 #: erpnext/stock/serial_batch_bundle.py:1548 msgid "Negative Stock Error" msgstr "خطأ في المخزون السالب" @@ -31485,7 +31518,7 @@ msgstr "صافي سعر الساعة" msgid "Net Profit" msgstr "صافي الربح" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:172 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:174 msgid "Net Profit Ratio" msgstr "نسبة صافي الربح" @@ -31503,11 +31536,11 @@ msgstr "صافي الربح (الخسارة" msgid "Net Purchase Amount" msgstr "صافي مبلغ الشراء" -#: erpnext/assets/doctype/asset/asset.py:450 +#: erpnext/assets/doctype/asset/asset.py:454 msgid "Net Purchase Amount is mandatory" msgstr "مبلغ الشراء الصافي إلزامي" -#: erpnext/assets/doctype/asset/asset.py:560 +#: erpnext/assets/doctype/asset/asset.py:564 msgid "Net Purchase Amount should be equal to purchase amount of one single Asset." msgstr "" @@ -31596,8 +31629,8 @@ msgstr "صافي السعر ( بعملة الشركة )" #: erpnext/accounts/doctype/shipping_rule/shipping_rule.json #: erpnext/accounts/doctype/subscription/subscription.json #: erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.json -#: erpnext/accounts/report/purchase_register/purchase_register.py:253 -#: erpnext/accounts/report/sales_register/sales_register.py:285 +#: erpnext/accounts/report/purchase_register/purchase_register.py:269 +#: erpnext/accounts/report/sales_register/sales_register.py:299 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/supplier_quotation/supplier_quotation.json #: erpnext/selling/doctype/quotation/quotation.json @@ -31648,7 +31681,7 @@ msgstr "الوزن الصافي" msgid "Net Weight UOM" msgstr "الوزن الصافي لوحدة القياس" -#: erpnext/controllers/accounts_controller.py:1673 +#: erpnext/controllers/accounts_controller.py:1693 msgid "Net total calculation precision loss" msgstr "صافي إجمالي فقدان دقة الحساب" @@ -31825,7 +31858,7 @@ msgstr "اسم المخزن الجديد" msgid "New Workplace" msgstr "مكان العمل الجديد" -#: erpnext/selling/doctype/customer/customer.py:405 +#: erpnext/selling/doctype/customer/customer.py:406 msgid "New credit limit is less than current outstanding amount for the customer. Credit limit has to be atleast {0}" msgstr "حد الائتمان الجديد أقل من المبلغ المستحق الحالي للعميل. حد الائتمان يجب أن يكون على الأقل {0}\\n
    \\nNew credit limit is less than current outstanding amount for the customer. Credit limit has to be atleast {0}" @@ -31956,7 +31989,7 @@ msgstr "لم يتم العثور على ملف تعريف نقطة البيع. #: erpnext/accounts/doctype/journal_entry/journal_entry.py:1582 #: erpnext/accounts/doctype/journal_entry/journal_entry.py:1642 #: erpnext/accounts/doctype/journal_entry/journal_entry.py:1656 -#: erpnext/stock/doctype/item/item.py:1475 +#: erpnext/stock/doctype/item/item.py:1495 msgid "No Permission" msgstr "لا يوجد تصريح" @@ -31989,7 +32022,7 @@ msgstr "لا يوجد ملخص" msgid "No Supplier found for Inter Company Transactions which represents company {0}" msgstr "لم يتم العثور على مورد للمعاملات بين الشركات التي تمثل الشركة {0}" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:976 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:982 msgid "No Tables Detected" msgstr "" @@ -32001,7 +32034,7 @@ msgstr "لم يتم العثور على بيانات اقتطاع الضرائب msgid "No Tax withholding account set for Company {0} in Tax Withholding Category {1}." msgstr "لم يتم تعيين حساب اقتطاع ضريبي للشركة {0} في فئة اقتطاع الضرائب {1}." -#: erpnext/accounts/report/gross_profit/gross_profit.py:990 +#: erpnext/accounts/report/gross_profit/gross_profit.py:996 msgid "No Terms" msgstr "لا توجد شروط" @@ -32018,12 +32051,12 @@ msgstr "لم يتم العثور على أي مدفوعات غير مطابقة msgid "No Work Orders were created" msgstr "لم يتم إنشاء أي أوامر عمل" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:827 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:832 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:905 msgid "No accounting entries for the following warehouses" msgstr "لا القيود المحاسبية للمستودعات التالية" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:412 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:413 msgid "No accounts configured" msgstr "" @@ -32059,7 +32092,7 @@ msgstr "" msgid "No bank transactions found" msgstr "" -#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:495 +#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:497 msgid "No billing email found for customer: {0}" msgstr "لم يتم العثور على بريد إلكتروني للفواتير خاص بالعميل: {0}" @@ -32133,7 +32166,7 @@ msgstr "لم يتم العثور على العناصر. امسح الباركو msgid "No items in cart" msgstr "لا توجد عناصر في سلة التسوق" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1046 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1047 msgid "No matches occurred via auto reconciliation" msgstr "لم يتم العثور على أي تطابقات عبر التوفيق التلقائي" @@ -32257,7 +32290,7 @@ msgstr "" msgid "No pending Material Requests found to link for the given items." msgstr "لم يتم العثور على طلبات المواد المعلقة للربط للعناصر المحددة." -#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:502 +#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:504 msgid "No primary email found for customer: {0}" msgstr "لم يتم العثور على بريد إلكتروني أساسي للعميل: {0}" @@ -32277,7 +32310,7 @@ msgstr "" msgid "No reconciliation actions found" msgstr "" -#: erpnext/accounts/report/purchase_register/purchase_register.py:45 +#: erpnext/accounts/report/purchase_register/purchase_register.py:46 #: erpnext/accounts/report/sales_register/sales_register.py:46 #: erpnext/crm/report/lead_conversion_time/lead_conversion_time.py:18 msgid "No record found" @@ -32334,7 +32367,7 @@ msgstr "لا يمكن إنشاء أو تعديل أي معاملات أسهم ق msgid "No tables were extracted from this PDF." msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:40 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:41 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:48 #: banking/src/components/features/BankReconciliation/TransferModalContent.tsx:40 msgid "No transaction selected" @@ -32556,7 +32589,7 @@ msgstr "ملاحظة: إذا كنت ترغب في استخدام المنتج ا msgid "Note: Item {0} added multiple times" msgstr "ملاحظة: تمت إضافة العنصر {0} عدة مرات" -#: erpnext/controllers/accounts_controller.py:711 +#: erpnext/controllers/accounts_controller.py:731 msgid "Note: Payment Entry will not be created since 'Cash or Bank Account' was not specified" msgstr "ملاحظة : لن يتم إنشاء تدوين المدفوعات نظرا لأن \" حساب النقد او المصرف\" لم يتم تحديده" @@ -32564,7 +32597,7 @@ msgstr "ملاحظة : لن يتم إنشاء تدوين المدفوعات نظ msgid "Note: This Cost Center is a Group. Cannot make accounting entries against groups." msgstr "ملاحظة: مركز التكلفة هذا هو مجموعة. لا يمكن إجراء القيود المحاسبية مقابل المجموعات." -#: erpnext/stock/doctype/item/item.py:677 +#: erpnext/stock/doctype/item/item.py:678 msgid "Note: To merge the items, create a separate Stock Reconciliation for the old item {0}" msgstr "ملاحظة: لدمج الأصناف، أنشئ مطابقة مخزون منفصلة للصنف القديم {0}" @@ -33362,16 +33395,16 @@ msgstr "تم إنشاء فواتير المبيعات الافتتاحية." #. Label of the opening_stock (Float) field in DocType 'Item' #. Option for the 'Purpose' (Select) field in DocType 'Stock Reconciliation' -#: erpnext/stock/doctype/item/item.json erpnext/stock/doctype/item/item.py:334 +#: erpnext/stock/doctype/item/item.json erpnext/stock/doctype/item/item.py:335 #: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json msgid "Opening Stock" msgstr "مخزون أول المدة" -#: erpnext/stock/doctype/item/item.py:339 +#: erpnext/stock/doctype/item/item.py:340 msgid "Opening Stock entry created with zero valuation rate: {0}" msgstr "" -#: erpnext/stock/doctype/item/item.py:347 +#: erpnext/stock/doctype/item/item.py:348 msgid "Opening Stock entry created: {0}" msgstr "" @@ -33500,7 +33533,7 @@ msgstr "رقم صف العملية" msgid "Operation Time" msgstr "وقت العملية" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1572 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1596 msgid "Operation Time must be greater than 0 for Operation {0}" msgstr "زمن العملية يجب أن يكون أكبر من 0 للعملية {0}\\n
    \\nOperation Time must be greater than 0 for Operation {0}" @@ -33537,7 +33570,7 @@ msgstr "العملية {0} أطول من أي ساعات عمل متاحة في #: erpnext/manufacturing/doctype/bom/bom.json #: erpnext/manufacturing/doctype/work_order/work_order.js:325 #: erpnext/manufacturing/doctype/work_order/work_order.json -#: erpnext/setup/doctype/company/company.py:469 +#: erpnext/setup/doctype/company/company.py:470 #: erpnext/setup/doctype/email_digest/email_digest.json #: erpnext/templates/generators/bom.html:61 msgid "Operations" @@ -34074,8 +34107,8 @@ msgstr "الرصيد المستحق (عملة الشركة)" #: erpnext/accounts/report/accounts_receivable/accounts_receivable.html:141 #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1220 #: erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:167 -#: erpnext/accounts/report/purchase_register/purchase_register.py:289 -#: erpnext/accounts/report/sales_register/sales_register.py:319 +#: erpnext/accounts/report/purchase_register/purchase_register.py:305 +#: erpnext/accounts/report/sales_register/sales_register.py:333 msgid "Outstanding Amount" msgstr "المبلغ المستحق" @@ -34120,7 +34153,7 @@ msgstr "" msgid "Over Billing Allowance (%)" msgstr "نسبة السماح بالفواتير الزائدة (%)" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1343 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1377 msgid "Over Billing Allowance exceeded for Purchase Receipt Item {0} ({1}) by {2}%" msgstr "تم تجاوز حدّ السماح بالفواتير الزائدة لبند إيصال الشراء {0} ({1}) بنسبة {2}%" @@ -34143,7 +34176,7 @@ msgstr "" msgid "Over Picking Allowance (%)" msgstr "بدل الإفراط في الانتقاء (%)" -#: erpnext/controllers/stock_controller.py:1776 +#: erpnext/controllers/stock_controller.py:1816 msgid "Over Receipt" msgstr "إيصال زائد" @@ -34168,7 +34201,7 @@ msgstr "مبالغ محجوزة" msgid "Overbilling of {0} {1} ignored for item {2} because you have {3} role." msgstr "تم تجاهل الفوترة الزائدة لـ {0} {1} للعنصر {2} لأن لديك الدور {3} ." -#: erpnext/controllers/accounts_controller.py:2191 +#: erpnext/controllers/accounts_controller.py:2211 msgid "Overbilling of {} ignored because you have {} role." msgstr "تم تجاهل الفوترة الزائدة لـ {} لأن لديك دور {} ." @@ -34261,7 +34294,7 @@ msgstr "" #: erpnext/accounts/report/sales_payment_summary/sales_payment_summary.py:23 #: erpnext/accounts/report/sales_payment_summary/sales_payment_summary.py:39 #: erpnext/accounts/report/sales_register/sales_register.js:46 -#: erpnext/accounts/report/sales_register/sales_register.py:236 +#: erpnext/accounts/report/sales_register/sales_register.py:250 #: erpnext/crm/report/lead_details/lead_details.py:45 msgid "Owner" msgstr "مالك" @@ -34316,7 +34349,7 @@ msgstr "" msgid "PDF Tables" msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:928 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:930 msgid "PDF statement support requires the 'pdfplumber' library to be installed." msgstr "" @@ -34675,7 +34708,7 @@ msgstr "عنصر معبأ" msgid "Packed Items" msgstr "عناصر معبأة" -#: erpnext/controllers/stock_controller.py:1610 +#: erpnext/controllers/stock_controller.py:1650 msgid "Packed Items cannot be transferred internally" msgstr "لا يمكن نقل العناصر المعبأة داخلياً" @@ -34712,7 +34745,7 @@ msgstr "قائمة بمحتويات الشحنة" msgid "Packing Slip Item" msgstr "مادة كشف التعبئة" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:622 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:623 msgid "Packing Slip(s) cancelled" msgstr "تم إلغاء قائمة الشحنة" @@ -34915,7 +34948,7 @@ msgstr "دفعة الأم" msgid "Parent Company" msgstr "الشركة الام" -#: erpnext/setup/doctype/company/company.py:604 +#: erpnext/setup/doctype/company/company.py:605 msgid "Parent Company must be a group company" msgstr "يجب أن تكون الشركة الأم شركة مجموعة" @@ -35221,16 +35254,16 @@ msgstr "أجزاء في المليون" #. Label of the party (Dynamic Link) field in DocType 'Appointment' #. Label of the party_name (Dynamic Link) field in DocType 'Opportunity' #. Label of the party_name (Dynamic Link) field in DocType 'Quotation' -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:589 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:735 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:747 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:565 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:711 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:723 #: banking/src/components/features/BankReconciliation/MatchAndReconcile.tsx:752 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:185 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:197 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:552 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:562 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:359 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:369 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:360 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:370 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:591 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:776 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:788 @@ -35318,7 +35351,7 @@ msgstr "" msgid "Party Account No. (Bank Statement)" msgstr "رقم حساب الطرف (كشف حساب بنكي)" -#: erpnext/controllers/accounts_controller.py:2475 +#: erpnext/controllers/accounts_controller.py:2495 msgid "Party Account {0} currency ({1}) and document currency ({2}) should be same" msgstr "يجب أن تكون عملة حساب الطرف {0} ({1}) وعملة المستند ({2}) متطابقتين." @@ -35444,10 +35477,10 @@ msgstr "عنصر خاص بالحزب" #. Label of the party_type (Select) field in DocType 'Party Specific Item' #. Name of a DocType #. Label of the party_type (Link) field in DocType 'Party Type' -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:614 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:590 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:170 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:409 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:292 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:293 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:640 #: erpnext/accounts/doctype/bank_account/bank_account.json #: erpnext/accounts/doctype/bank_transaction/bank_transaction.json @@ -35500,7 +35533,7 @@ msgstr "" msgid "Party Type and Party is mandatory for {0} account" msgstr "نوع الطرف والحزب إلزامي لحساب {0}" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:177 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:178 msgid "Party Type and Party is required for Receivable / Payable account {0}" msgstr "نوع الطرف والطرف مطلوبان لحسابات القبض / الدفع {0}" @@ -35514,7 +35547,7 @@ msgstr "حقل نوع المستفيد إلزامي\\n
    \\nParty Type is manda msgid "Party User" msgstr "مستخدم الحزب" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:72 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:114 msgid "Party account is required to create a payment entry." msgstr "" @@ -35531,11 +35564,11 @@ msgstr "حقل المستفيد إلزامي\\n
    \\nParty is mandatory" msgid "Party is required" msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:69 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:111 msgid "Party is required create a payment entry." msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:66 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:108 msgid "Party type is required to create a payment entry." msgstr "" @@ -35562,7 +35595,7 @@ msgstr "تفاصيل جواز السفر" msgid "Passport Number" msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:941 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:947 msgid "Password Required" msgstr "" @@ -35639,8 +35672,8 @@ msgstr "واجب الدفع" #: erpnext/accounts/report/accounts_payable/accounts_payable.js:50 #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1157 #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:209 -#: erpnext/accounts/report/purchase_register/purchase_register.py:194 -#: erpnext/accounts/report/purchase_register/purchase_register.py:235 +#: erpnext/accounts/report/purchase_register/purchase_register.py:210 +#: erpnext/accounts/report/purchase_register/purchase_register.py:251 msgid "Payable Account" msgstr "حساب الدائنين" @@ -35774,7 +35807,7 @@ msgstr "تدوين مدفوعات {0} غير مترابطة" #. Order' #. Label of a Link in the Invoicing Workspace #. Label of a Workspace Sidebar Item -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:270 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:271 #: erpnext/accounts/doctype/accounts_settings/accounts_settings.js:59 #: erpnext/accounts/doctype/bank_clearance_detail/bank_clearance_detail.json #: erpnext/accounts/doctype/bank_transaction_payments/bank_transaction_payments.json @@ -35819,7 +35852,7 @@ msgstr "تم تعديل تدوين مدفوعات بعد سحبه. يرجى سح msgid "Payment Entry is already created" msgstr "تدوين المدفوعات تم انشاؤه بالفعل" -#: erpnext/controllers/accounts_controller.py:1624 +#: erpnext/controllers/accounts_controller.py:1644 msgid "Payment Entry {0} is linked against Order {1}, check if it should be pulled as advance in this invoice." msgstr "تم ربط إدخال الدفعة {0} بالطلب {1}، تحقق مما إذا كان يجب سحبه كدفعة مقدمة في هذه الفاتورة." @@ -36098,7 +36131,7 @@ msgstr "سيتم وضع طلبات الدفع المقدمة من فواتير #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json #: erpnext/buying/doctype/purchase_order/purchase_order.json -#: erpnext/controllers/accounts_controller.py:2757 +#: erpnext/controllers/accounts_controller.py:2777 #: erpnext/selling/doctype/quotation/quotation.json #: erpnext/selling/doctype/sales_order/sales_order.json msgid "Payment Schedule" @@ -36108,7 +36141,7 @@ msgstr "جدول الدفع" msgid "Payment Schedule based Payment Requests cannot be created because a Payment Entry already exists for this document." msgstr "" -#: erpnext/public/js/controllers/transaction.js:507 +#: erpnext/public/js/controllers/transaction.js:529 msgid "Payment Schedules" msgstr "" @@ -36130,7 +36163,7 @@ msgstr "" #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1210 #: erpnext/accounts/report/gross_profit/gross_profit.py:449 #: erpnext/accounts/workspace/invoicing/invoicing.json -#: erpnext/public/js/controllers/transaction.js:522 +#: erpnext/public/js/controllers/transaction.js:544 #: erpnext/selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py:30 #: erpnext/workspace_sidebar/accounts_setup.json msgid "Payment Term" @@ -36560,7 +36593,7 @@ msgstr "تحليل التصور" msgid "Period Based On" msgstr "الفترة على أساس" -#: erpnext/accounts/general_ledger.py:850 +#: erpnext/accounts/general_ledger.py:852 msgid "Period Closed" msgstr "فترة الإغلاق" @@ -36737,6 +36770,10 @@ msgstr "البيانات الشخصية" msgid "Personal Email" msgstr "البريد الالكتروني الشخصية" +#: erpnext/setup/setup_wizard/setup_wizard.py:33 +msgid "Personalizing your setup" +msgstr "" + #. Option for the 'Fuel Type' (Select) field in DocType 'Vehicle' #: erpnext/setup/doctype/vehicle/vehicle.json msgid "Petrol" @@ -37182,7 +37219,7 @@ msgstr "يرجى إضافة حساب الجذر لـ - {0}" msgid "Please add a Temporary Opening account in Chart of Accounts" msgstr "الرجاء إضافة حساب فتح مؤقت في مخطط الحسابات" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:77 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:119 msgid "Please add an account for the Bank Entry rule." msgstr "" @@ -37206,11 +37243,11 @@ msgstr "يرجى إضافة الحساب إلى مستوى الشركة الرئ msgid "Please add the account to root level Company - {}" msgstr "الرجاء إضافة الحساب إلى شركة على مستوى الجذر - {}" -#: erpnext/controllers/website_list_for_contact.py:301 +#: erpnext/controllers/website_list_for_contact.py:302 msgid "Please add {1} role to user {0}." msgstr "يرجى إضافة الدور {1} إلى المستخدم {0}." -#: erpnext/controllers/stock_controller.py:1787 +#: erpnext/controllers/stock_controller.py:1827 msgid "Please adjust the qty or edit {0} to proceed." msgstr "يرجى تعديل الكمية أو تحرير {0} للمتابعة." @@ -37232,7 +37269,7 @@ msgid "Please cancel related transaction." msgstr "يرجى إلغاء المعاملة ذات الصلة." #: erpnext/assets/doctype/asset/asset.js:86 -#: erpnext/assets/doctype/asset/asset.py:249 +#: erpnext/assets/doctype/asset/asset.py:253 msgid "Please capitalize this asset before submitting." msgstr "يرجى كتابة هذا الأصل بأحرف كبيرة قبل الإرسال." @@ -37281,11 +37318,11 @@ msgstr "الرجاء الضغط علي ' إنشاء الجدول ' للحصول msgid "Please complete the job first before entering Pending Quantity" msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:80 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:122 msgid "Please configure accounts for the Bank Entry rule." msgstr "" -#: erpnext/selling/doctype/customer/customer.py:635 +#: erpnext/selling/doctype/customer/customer.py:637 msgid "Please contact any of the following users to extend the credit limits for {0}: {1}" msgstr "يرجى الاتصال بأي من المستخدمين التاليين لتمديد حدود الائتمان لـ {0}: {1}" @@ -37293,7 +37330,7 @@ msgstr "يرجى الاتصال بأي من المستخدمين التاليي msgid "Please contact any of the following users to {} this transaction." msgstr "يرجى الاتصال بأي من المستخدمين التاليين لإتمام هذه المعاملة." -#: erpnext/selling/doctype/customer/customer.py:628 +#: erpnext/selling/doctype/customer/customer.py:630 msgid "Please contact your administrator to extend the credit limits for {0}." msgstr "يرجى الاتصال بمسؤول النظام لتمديد حدود الائتمان لـ {0}." @@ -37313,15 +37350,15 @@ msgstr "يرجى إنشاء قسائم تكلفة الشحن مقابل الفو msgid "Please create a new Accounting Dimension if required." msgstr "يرجى إنشاء بُعد محاسبي جديد إذا لزم الأمر." -#: erpnext/controllers/accounts_controller.py:812 +#: erpnext/controllers/accounts_controller.py:832 msgid "Please create purchase from internal sale or delivery document itself" msgstr "يرجى إنشاء عملية شراء من مستند البيع أو التسليم الداخلي نفسه" -#: erpnext/assets/doctype/asset/asset.py:460 +#: erpnext/assets/doctype/asset/asset.py:464 msgid "Please create purchase receipt or purchase invoice for the item {0}" msgstr "الرجاء إنشاء إيصال شراء أو فاتورة شراء للعنصر {0}" -#: erpnext/stock/doctype/item/item.py:705 +#: erpnext/stock/doctype/item/item.py:706 msgid "Please delete Product Bundle {0}, before merging {1} into {2}" msgstr "يرجى حذف حزمة المنتج {0}قبل دمج {1} في {2}" @@ -37329,7 +37366,7 @@ msgstr "يرجى حذف حزمة المنتج {0}قبل دمج {1} في {2}" msgid "Please disable workflow temporarily for Journal Entry {0}" msgstr "يرجى تعطيل سير العمل مؤقتًا لإدخال دفتر اليومية {0}" -#: erpnext/assets/doctype/asset/asset.py:564 +#: erpnext/assets/doctype/asset/asset.py:568 msgid "Please do not book expense of multiple assets against one single Asset." msgstr "يرجى عدم تسجيل مصروفات أصول متعددة مقابل أصل واحد." @@ -37415,7 +37452,7 @@ msgstr "الرجاء إدخال حساب النفقات\\n
    \\nPlease enter Ex msgid "Please enter Item Code to get Batch Number" msgstr "الرجاء إدخال رمز العنصر للحصول على رقم الدفعة\\n
    \\nPlease enter Item Code to get Batch Number" -#: erpnext/public/js/controllers/transaction.js:3034 +#: erpnext/public/js/controllers/transaction.js:3059 msgid "Please enter Item Code to get batch no" msgstr "الرجاء إدخال كود البند للحصول على رقم الدفعة" @@ -37496,7 +37533,7 @@ msgstr "يرجى إدخال تاريخ تسليم واحد على الأقل و msgid "Please enter company name first" msgstr "الرجاء إدخال اسم الشركة اولاً" -#: erpnext/controllers/accounts_controller.py:2976 +#: erpnext/controllers/accounts_controller.py:2996 msgid "Please enter default currency in Company Master" msgstr "الرجاء إدخال العملة الافتراضية في شركة الرئيسية" @@ -37540,7 +37577,7 @@ msgstr "الرجاء إدخال رقم الهاتف أولاً" msgid "Please enter the {schedule_date}." msgstr "الرجاء إدخال {schedule_date}." -#: erpnext/public/js/setup_wizard.js:97 +#: erpnext/public/js/setup_wizard.js:192 msgid "Please enter valid Financial Year Start and End Dates" msgstr "الرجاء إدخال تاريخ بداية السنة المالية وتاريخ النهاية" @@ -37596,7 +37633,7 @@ msgstr "" msgid "Please make sure you really want to delete all the transactions for {0}. Your master data will remain as it is. This action cannot be undone." msgstr "" -#: erpnext/stock/doctype/item/item.js:728 +#: erpnext/stock/doctype/item/item.js:735 msgid "Please mention 'Weight UOM' along with Weight." msgstr "يرجى ذكر \"وحدة قياس الوزن\" مع كلمة \"الوزن\"." @@ -37690,7 +37727,7 @@ msgstr "الرجاء اختيار شركة \\n
    \\nPlease select Company" msgid "Please select Company and Posting Date to getting entries" msgstr "يرجى تحديد الشركة وتاريخ النشر للحصول على إدخالات" -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:744 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:751 #: erpnext/manufacturing/doctype/plant_floor/plant_floor.js:28 msgid "Please select Company first" msgstr "الرجاء تحديد الشركة أولا\\n
    \\nPlease select Company first" @@ -37705,7 +37742,7 @@ msgstr "يرجى تحديد تاريخ الانتهاء لاستكمال سجل msgid "Please select Customer first" msgstr "يرجى اختيار العميل أولا" -#: erpnext/setup/doctype/company/company.py:535 +#: erpnext/setup/doctype/company/company.py:536 msgid "Please select Existing Company for creating Chart of Accounts" msgstr "الرجاء اختيار الشركة الحالية لإنشاء دليل الحسابات" @@ -37714,8 +37751,8 @@ msgstr "الرجاء اختيار الشركة الحالية لإنشاء دل msgid "Please select Finished Good Item for Service Item {0}" msgstr "يرجى تحديد \"المنتج النهائي\" لعنصر الخدمة {0}" -#: erpnext/assets/doctype/asset/asset.js:753 -#: erpnext/assets/doctype/asset/asset.js:768 +#: erpnext/assets/doctype/asset/asset.js:762 +#: erpnext/assets/doctype/asset/asset.js:777 msgid "Please select Item Code first" msgstr "يرجى اختيار رمز البند أولاً" @@ -37739,7 +37776,7 @@ msgstr "الرجاء تحديد حساب الفرق في إدخالات المح msgid "Please select Posting Date before selecting Party" msgstr "الرجاء تجديد تاريخ النشر قبل تحديد المستفيد\\n
    \\nPlease select Posting Date before selecting Party" -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:745 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:752 msgid "Please select Posting Date first" msgstr "الرجاء تحديد تاريخ النشر أولا\\n
    \\nPlease select Posting Date first" @@ -37751,7 +37788,7 @@ msgstr "الرجاء اختيار قائمة الأسعار\\n
    \\nPlease sele msgid "Please select Qty against item {0}" msgstr "الرجاء اختيار الكمية ضد العنصر {0}" -#: erpnext/stock/doctype/item/item.py:371 +#: erpnext/stock/doctype/item/item.py:372 msgid "Please select Sample Retention Warehouse in Stock Settings first" msgstr "يرجى تحديد نموذج الاحتفاظ مستودع في إعدادات المخزون أولا" @@ -37771,7 +37808,7 @@ msgstr "الرجاء تحديد حساب أصول الأسهم" msgid "Please select Subcontracting Order instead of Purchase Order {0}" msgstr "" -#: erpnext/controllers/accounts_controller.py:2832 +#: erpnext/controllers/accounts_controller.py:2852 msgid "Please select Unrealized Profit / Loss account or add default Unrealized Profit / Loss account account for company {0}" msgstr "يرجى تحديد حساب الأرباح/الخسائر غير المحققة أو إضافة حساب الأرباح/الخسائر غير المحققة الافتراضي للشركة {0}" @@ -37788,7 +37825,7 @@ msgstr "الرجاء اختيار الشركة" #: erpnext/manufacturing/doctype/bom/bom.js:730 #: erpnext/manufacturing/doctype/bom/bom.py:279 #: erpnext/public/js/controllers/accounts.js:274 -#: erpnext/public/js/controllers/transaction.js:3333 +#: erpnext/public/js/controllers/transaction.js:3358 msgid "Please select a Company first." msgstr "الرجاء تحديد شركة أولاً." @@ -37865,7 +37902,7 @@ msgstr "يرجى تحديد وتيرة جدول التسليم" msgid "Please select a row to create a Reposting Entry" msgstr "الرجاء تحديد صف لإنشاء إدخال إعادة نشر" -#: erpnext/accounts/report/purchase_register/purchase_register.py:35 +#: erpnext/accounts/report/purchase_register/purchase_register.py:36 msgid "Please select a supplier for fetching payments." msgstr "يرجى اختيار مورد لتحصيل المدفوعات." @@ -37901,11 +37938,11 @@ msgstr "" msgid "Please select at least one row to fix" msgstr "يرجى تحديد صف واحد على الأقل لإصلاحه" -#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.js:50 +#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.js:51 msgid "Please select at least one row with difference value" msgstr "يرجى تحديد صف واحد على الأقل بقيمة مختلفة" -#: erpnext/public/js/controllers/transaction.js:550 +#: erpnext/public/js/controllers/transaction.js:572 msgid "Please select at least one schedule." msgstr "" @@ -38005,7 +38042,7 @@ msgstr "الرجاء اختيار يوم العطلة الاسبوعي" msgid "Please select {0} first" msgstr "الرجاء تحديد {0} أولا\\n
    \\nPlease select {0} first" -#: erpnext/public/js/controllers/transaction.js:122 +#: erpnext/public/js/controllers/transaction.js:150 msgid "Please set 'Apply Additional Discount On'" msgstr "يرجى تحديد 'تطبيق خصم إضافي على'" @@ -38115,7 +38152,7 @@ msgstr "يرجى تحديد حسابات ضريبة القيمة المضافة msgid "Please set a Company" msgstr "الرجاء تعيين شركة" -#: erpnext/assets/doctype/asset/asset.py:374 +#: erpnext/assets/doctype/asset/asset.py:378 msgid "Please set a Cost Center for the Asset or set an Asset Depreciation Cost Center for the Company {}" msgstr "يرجى تحديد مركز تكلفة للأصل أو تحديد مركز تكلفة استهلاك الأصول للشركة {}" @@ -38140,7 +38177,7 @@ msgstr "يرجى تحديد الطلب الفعلي أو توقعات المبي msgid "Please set an Address on the Company '%s'" msgstr "يرجى تحديد عنوان في الشركة '%s'" -#: erpnext/controllers/stock_controller.py:917 +#: erpnext/controllers/stock_controller.py:957 msgid "Please set an Expense Account in the Items table" msgstr "يرجى تحديد حساب مصروفات في جدول البنود" @@ -38184,11 +38221,11 @@ msgstr "يرجى تعيين حساب المصروفات الافتراضي في msgid "Please set default UOM in Stock Settings" msgstr "يرجى تعيين الافتراضي UOM في إعدادات الأسهم" -#: erpnext/controllers/stock_controller.py:776 +#: erpnext/controllers/stock_controller.py:816 msgid "Please set default cost of goods sold account in company {0} for booking rounding gain and loss during stock transfer" msgstr "يرجى تحديد حساب تكلفة البضائع المباعة الافتراضي في الشركة {0} لتسجيل مكاسب وخسائر التقريب أثناء نقل المخزون" -#: erpnext/controllers/stock_controller.py:231 +#: erpnext/controllers/stock_controller.py:267 msgid "Please set default inventory account for item {0}, or their item group or brand." msgstr "يرجى تعيين حساب المخزون الافتراضي للعنصر {0}، أو مجموعة العناصر أو العلامة التجارية الخاصة به." @@ -38201,15 +38238,15 @@ msgstr "يرجى تعيين {0} الافتراضي للشركة {1}" msgid "Please set filter based on Item or Warehouse" msgstr "يرجى ضبط الفلتر على أساس البند أو المخزن" -#: erpnext/controllers/accounts_controller.py:2391 +#: erpnext/controllers/accounts_controller.py:2411 msgid "Please set one of the following:" msgstr "يرجى تحديد أحد الخيارات التالية:" -#: erpnext/assets/doctype/asset/asset.py:645 +#: erpnext/assets/doctype/asset/asset.py:649 msgid "Please set opening number of booked depreciations" msgstr "يرجى تحديد عدد الإهلاكات المحجوزة في بداية الفترة" -#: erpnext/public/js/controllers/transaction.js:2701 +#: erpnext/public/js/controllers/transaction.js:2723 msgid "Please set recurring after saving" msgstr "يرجى تحديد (تكرار) بعد الحفظ" @@ -38268,7 +38305,7 @@ msgstr "يرجى ضبط {0} في مُنشئ قائمة المواد {1}" msgid "Please set {0} in Company {1} to account for Exchange Gain / Loss" msgstr "يرجى تعيين {0} في الشركة {1} لحساب مكاسب/خسائر الصرف" -#: erpnext/controllers/accounts_controller.py:593 +#: erpnext/controllers/accounts_controller.py:613 msgid "Please set {0} to {1}, the same account that was used in the original invoice {2}." msgstr "يرجى تعيين {0} إلى {1}، وهو نفس الحساب الذي تم استخدامه في الفاتورة الأصلية {2}." @@ -38290,7 +38327,7 @@ msgstr "يرجى تحديد شركة" msgid "Please specify Company to proceed" msgstr "الرجاء تحديد الشركة للمضى قدما\\n
    \\nPlease specify Company to proceed" -#: erpnext/controllers/accounts_controller.py:3207 +#: erpnext/controllers/accounts_controller.py:3227 #: erpnext/public/js/controllers/accounts.js:114 msgid "Please specify a valid Row ID for row {0} in table {1}" msgstr "يرجى تحديد هوية الصف صالحة لصف {0} في الجدول {1}" @@ -38462,7 +38499,7 @@ msgstr "" #: banking/src/components/features/ActionLog/ActionLogDialogBody.tsx:398 #: banking/src/components/features/BankReconciliation/BankClearanceSummary.tsx:125 #: banking/src/components/features/BankReconciliation/BankClearanceSummary.tsx:319 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:390 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:366 #: banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx:86 #: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:147 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:459 @@ -38506,8 +38543,8 @@ msgstr "" #: erpnext/accounts/report/payment_ledger/payment_ledger.py:143 #: erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:94 #: erpnext/accounts/report/pos_register/pos_register.py:172 -#: erpnext/accounts/report/purchase_register/purchase_register.py:169 -#: erpnext/accounts/report/sales_register/sales_register.py:185 +#: erpnext/accounts/report/purchase_register/purchase_register.py:185 +#: erpnext/accounts/report/sales_register/sales_register.py:199 #: erpnext/assets/doctype/asset_capitalization/asset_capitalization.json #: erpnext/manufacturing/doctype/job_card/job_card.json #: erpnext/manufacturing/doctype/master_production_schedule/master_production_schedule.json @@ -38534,7 +38571,7 @@ msgstr "" #: erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py:86 #: erpnext/stock/report/serial_no_ledger/serial_no_ledger.py:25 #: erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:150 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:144 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:155 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:36 #: erpnext/templates/form_grid/bank_reconciliation_grid.html:6 msgid "Posting Date" @@ -38551,7 +38588,7 @@ msgstr "لا يمكن أن يكون تاريخ النشر تاريخا مستق msgid "Posting Date inheritance for exchange gain / loss" msgstr "" -#: erpnext/public/js/controllers/transaction.js:1131 +#: erpnext/public/js/controllers/transaction.js:1153 msgid "Posting Date will change to today's date as Edit Posting Date and Time is unchecked. Are you sure want to proceed?" msgstr "سيتم تغيير تاريخ النشر إلى تاريخ اليوم لأن خيار \"تعديل تاريخ ووقت النشر\" غير مُفعّل. هل أنت متأكد من رغبتك في المتابعة؟" @@ -38606,7 +38643,7 @@ msgstr "تاريخ ووقت النشر" #: erpnext/stock/report/serial_no_ledger/serial_no_ledger.js:63 #: erpnext/stock/report/serial_no_ledger/serial_no_ledger.py:26 #: erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:151 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:149 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:160 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:41 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json msgid "Posting Time" @@ -39710,7 +39747,7 @@ msgstr "معرف سعر المنتج" #. Label of a Card Break in the Manufacturing Workspace #: erpnext/manufacturing/doctype/workstation/workstation.json #: erpnext/manufacturing/workspace/manufacturing/manufacturing.json -#: erpnext/setup/doctype/company/company.py:475 +#: erpnext/setup/doctype/company/company.py:476 msgid "Production" msgstr "الإنتاج" @@ -39930,6 +39967,10 @@ msgstr "دعوة للمشاركة في المشاريع" msgid "Project Id" msgstr "هوية المشروع" +#: erpnext/public/js/setup_wizard.js:95 +msgid "Project Management" +msgstr "" + #: erpnext/setup/setup_wizard/data/designation.txt:26 msgid "Project Manager" msgstr "مدير المشروع" @@ -40258,7 +40299,7 @@ msgstr "تزويد بعنوان البريد الإلكتروني المسجل msgid "Providing" msgstr "توفير" -#: erpnext/setup/doctype/company/company.py:574 +#: erpnext/setup/doctype/company/company.py:575 msgid "Provisional Account" msgstr "الحساب المؤقت" @@ -40330,7 +40371,7 @@ msgstr "نشر" #: erpnext/accounts/doctype/tax_rule/tax_rule.json #: erpnext/manufacturing/doctype/material_request_plan_item/material_request_plan_item.json #: erpnext/projects/doctype/project/project_dashboard.py:16 -#: erpnext/setup/doctype/company/company.py:463 erpnext/setup/install.py:428 +#: erpnext/setup/doctype/company/company.py:464 erpnext/setup/install.py:428 #: erpnext/stock/doctype/item/item.json #: erpnext/stock/doctype/item/item_list.js:30 #: erpnext/stock/doctype/item_lead_time/item_lead_time.json @@ -40448,7 +40489,7 @@ msgstr "مصروفات شراء الصنف {0}" #: erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js:30 #: erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json #: erpnext/stock/doctype/quality_inspection/quality_inspection.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:441 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:446 #: erpnext/workspace_sidebar/buying.json #: erpnext/workspace_sidebar/invoicing.json msgid "Purchase Invoice" @@ -40488,7 +40529,7 @@ msgstr "" msgid "Purchase Invoice Trends" msgstr "اتجهات فاتورة الشراء" -#: erpnext/assets/doctype/asset/asset.py:336 +#: erpnext/assets/doctype/asset/asset.py:340 msgid "Purchase Invoice cannot be made against an existing asset {0}" msgstr "لا يمكن إجراء فاتورة الشراء مقابل أصل موجود {0}" @@ -40527,7 +40568,7 @@ msgstr "فواتير الشراء" #: erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json #: erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:237 -#: erpnext/accounts/report/purchase_register/purchase_register.py:216 +#: erpnext/accounts/report/purchase_register/purchase_register.py:232 #: erpnext/buying/doctype/buying_settings/buying_settings.js:47 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/purchase_receipt_item_supplied/purchase_receipt_item_supplied.json @@ -40686,7 +40727,7 @@ msgstr "أوامر الشراء إلى الفاتورة" msgid "Purchase Orders to Receive" msgstr "أوامر الشراء لتلقي" -#: erpnext/controllers/accounts_controller.py:2023 +#: erpnext/controllers/accounts_controller.py:2043 msgid "Purchase Orders {0} are un-linked" msgstr "أوامر الشراء {0} غير مرتبطة" @@ -40715,7 +40756,7 @@ msgstr "قائمة أسعار الشراء" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js:49 #: erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:244 -#: erpnext/accounts/report/purchase_register/purchase_register.py:223 +#: erpnext/accounts/report/purchase_register/purchase_register.py:239 #: erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.js:22 #: erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:21 #: erpnext/assets/doctype/asset/asset.json @@ -40921,7 +40962,7 @@ msgstr "المشتريات" #: erpnext/stock/doctype/item/item_list.js:41 #: erpnext/stock/doctype/material_request/material_request.json #: erpnext/stock/doctype/pick_list/pick_list.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:476 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:481 #: erpnext/stock/doctype/stock_entry/stock_entry.json #: erpnext/stock/doctype/stock_entry_type/stock_entry_type.json #: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json @@ -41119,7 +41160,7 @@ msgstr "الكمية بعد إتمام العملية" #: erpnext/stock/doctype/stock_closing_balance/stock_closing_balance.json #: erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.json #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:169 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:188 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:199 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:91 msgid "Qty Change" msgstr "تغيير الكمية" @@ -41152,7 +41193,7 @@ msgstr "الكمية لكل وحدة" msgid "Qty To Manufacture" msgstr "الكمية للتصنيع" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1506 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1530 msgid "Qty To Manufacture ({0}) cannot be a fraction for the UOM {2}. To allow this, disable '{1}' in the UOM {2}." msgstr "لا يمكن أن تكون كمية التصنيع ({0}) كسرًا في وحدة القياس {2}. للسماح بذلك، عطّل '{1}' في وحدة القياس {2}." @@ -41254,7 +41295,7 @@ msgstr "الكمية المطلوبة للبناء" msgid "Qty to Deliver" msgstr "الكمية للتسليم" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:396 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:401 msgid "Qty to Disassemble" msgstr "" @@ -41431,7 +41472,7 @@ msgstr "فحص الجودة" msgid "Quality Inspection Analysis" msgstr "تحليل فحص الجودة" -#: erpnext/public/js/controllers/transaction.js:2964 +#: erpnext/public/js/controllers/transaction.js:2980 msgid "Quality Inspection Not Configured" msgstr "" @@ -41510,8 +41551,8 @@ msgstr "" msgid "Quality Inspection {0} is rejected for the item: {1}" msgstr "" -#: erpnext/public/js/controllers/transaction.js:403 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:208 +#: erpnext/public/js/controllers/transaction.js:431 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:212 msgid "Quality Inspection(s)" msgstr "فحص الجودة" @@ -41520,7 +41561,7 @@ msgstr "فحص الجودة" msgid "Quality Inspections" msgstr "عمليات فحص الجودة" -#: erpnext/setup/doctype/company/company.py:505 +#: erpnext/setup/doctype/company/company.py:506 msgid "Quality Management" msgstr "إدارة الجودة" @@ -41663,7 +41704,7 @@ msgstr "" #: erpnext/stock/doctype/material_request_item/material_request_item.json #: erpnext/stock/doctype/packing_slip_item/packing_slip_item.json #: erpnext/stock/doctype/pick_list_item/pick_list_item.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:824 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:829 #: erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json #: erpnext/stock/doctype/stock_reconciliation_item/stock_reconciliation_item.json #: erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.py:36 @@ -41810,11 +41851,11 @@ msgstr "الكمية يجب أن تكون أبر من 0\\n
    \\nQuantity should msgid "Quantity to Manufacture" msgstr "كمية لتصنيع" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2830 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2845 msgid "Quantity to Manufacture can not be zero for the operation {0}" msgstr "لا يمكن أن تكون الكمية للتصنيع صفراً للتشغيل {0}" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1498 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1522 msgid "Quantity to Manufacture must be greater than 0." msgstr "\"الكمية لتصنيع\" يجب أن تكون أكبر من 0." @@ -41851,11 +41892,11 @@ msgstr "سلسلة مسار الاستعلام" msgid "Queue Size should be between 5 and 100" msgstr "يجب أن يتراوح حجم قائمة الانتظار بين 5 و 100" -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:627 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:634 msgid "Quick Journal Entry" msgstr "قيد دفتر يومية سريع" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:152 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:154 msgid "Quick Ratio" msgstr "نسبة السيولة السريعة" @@ -42258,7 +42299,7 @@ msgstr "المعدل الذي يتم تحويل العملة إلى عملة ا msgid "Rate at which this tax is applied" msgstr "السعر الذي يتم فيه تطبيق هذه الضريبة" -#: erpnext/controllers/accounts_controller.py:4101 +#: erpnext/controllers/accounts_controller.py:4121 msgid "Rate of '{}' items cannot be changed" msgstr "لا يمكن تغيير سعر العناصر '{}'" @@ -42498,7 +42539,7 @@ msgstr "إعادة ترتيب الكميه" msgid "Reached Root" msgstr "وصل إلى الجذر" -#: erpnext/accounts/general_ledger.py:831 +#: erpnext/accounts/general_ledger.py:833 msgid "Read the docs" msgstr "" @@ -42666,8 +42707,8 @@ msgstr "القبض / حساب الدائنة" #: erpnext/accounts/report/accounts_receivable/accounts_receivable.js:79 #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1155 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:241 -#: erpnext/accounts/report/sales_register/sales_register.py:217 -#: erpnext/accounts/report/sales_register/sales_register.py:271 +#: erpnext/accounts/report/sales_register/sales_register.py:231 +#: erpnext/accounts/report/sales_register/sales_register.py:285 msgid "Receivable Account" msgstr "حساب مدين" @@ -42786,7 +42827,7 @@ msgstr "الكمية المستلمة في المخزون وحدة القياس" msgid "Received Quantity" msgstr "الكمية المستلمة" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:372 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:377 msgid "Received Stock Entries" msgstr "تلقى إدخالات الأسهم" @@ -43119,11 +43160,11 @@ msgstr "مرجع #" msgid "Reference #{0} dated {1}" msgstr "المرجع # {0} بتاريخ {1}" -#: erpnext/public/js/controllers/transaction.js:2814 +#: erpnext/public/js/controllers/transaction.js:2836 msgid "Reference Date for Early Payment Discount" msgstr "تاريخ مرجعي لخصم الدفع المبكر" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:400 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:376 msgid "Reference Date is required" msgstr "" @@ -43231,7 +43272,7 @@ msgstr "" msgid "Reference for Reservation" msgstr "مرجع للحجز" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:406 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:382 msgid "Reference is required" msgstr "" @@ -43253,38 +43294,11 @@ msgstr "رقم مرجع الفاتورة من النظام السابق" msgid "Reference: {0}, Item Code: {1} and Customer: {2}" msgstr "المرجع: {0}، رمز العنصر: {1} والعميل: {2}" -#. Label of the edit_references (Section Break) field in DocType 'POS Invoice -#. Item' -#. Label of the references_section (Section Break) field in DocType 'POS -#. Invoice Merge Log' -#. Label of the edit_references (Section Break) field in DocType 'Sales Invoice -#. Label of the references_section (Section Break) field in DocType 'Purchase -#. Order Item' -#. Label of the sb_references (Section Break) field in DocType 'Contract' -#. Label of the references_section (Section Break) field in DocType 'Customer' -#. Label of the references_section (Section Break) field in DocType -#. 'Subcontracting Order Item' -#: erpnext/accounts/doctype/fiscal_year/fiscal_year_dashboard.py:10 -#: erpnext/accounts/doctype/pos_invoice_item/pos_invoice_item.json -#: erpnext/accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.json -#: erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template_dashboard.py:15 -#: erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json -#: erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template_dashboard.py:14 -#: erpnext/accounts/doctype/share_type/share_type_dashboard.py:7 -#: erpnext/accounts/doctype/subscription_plan/subscription_plan_dashboard.py:8 -#: erpnext/buying/doctype/purchase_order_item/purchase_order_item.json -#: erpnext/crm/doctype/contract/contract.json -#: erpnext/projects/doctype/timesheet/timesheet_dashboard.py:7 -#: erpnext/selling/doctype/customer/customer.json -#: erpnext/subcontracting/doctype/subcontracting_order_item/subcontracting_order_item.json -msgid "References" -msgstr "المراجع" - -#: erpnext/stock/doctype/delivery_note/delivery_note.py:373 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:374 msgid "References to Sales Invoices are Incomplete" msgstr "المراجع المتعلقة بفواتير المبيعات غير مكتملة" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:365 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:366 msgid "References to Sales Orders are Incomplete" msgstr "المراجع المتعلقة بأوامر البيع غير مكتملة" @@ -43316,7 +43330,7 @@ msgstr "إعادة إنشاء قيد إغلاق المخزون" #. Option for the 'Check' (Select) field in DocType 'Bank Transaction Rule #. Description Conditions' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:203 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:204 #: erpnext/accounts/doctype/bank_transaction_rule_description_conditions/bank_transaction_rule_description_conditions.json msgid "Regex" msgstr "" @@ -43451,7 +43465,7 @@ msgid "Remaining Balance" msgstr "الرصيد المتبقي" #. Label of the remark (Small Text) field in DocType 'Journal Entry' -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:657 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:664 #: erpnext/accounts/doctype/journal_entry/journal_entry.json #: erpnext/selling/page/point_of_sale/pos_payment.js:489 msgid "Remark" @@ -43478,9 +43492,9 @@ msgstr "كلام" #. Label of the remarks (Text) field in DocType 'Quality Inspection' #. Label of the remarks (Text) field in DocType 'Stock Entry' #. Label of the remarks (Small Text) field in DocType 'Subcontracting Receipt' -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:418 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:592 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:660 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:394 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:568 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:636 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1231 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:594 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:683 @@ -43507,8 +43521,8 @@ msgstr "كلام" #: erpnext/accounts/report/general_ledger/general_ledger.html:163 #: erpnext/accounts/report/general_ledger/general_ledger.py:818 #: erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:112 -#: erpnext/accounts/report/purchase_register/purchase_register.py:296 -#: erpnext/accounts/report/sales_register/sales_register.py:335 +#: erpnext/accounts/report/purchase_register/purchase_register.py:312 +#: erpnext/accounts/report/sales_register/sales_register.py:349 #: erpnext/manufacturing/doctype/bom_creator/bom_creator.json #: erpnext/manufacturing/doctype/downtime_entry/downtime_entry.json #: erpnext/manufacturing/doctype/job_card/job_card.json @@ -43854,7 +43868,7 @@ msgid "Reposting Vouchers Progress" msgstr "" #: erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:216 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:327 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:338 msgid "Reposting entries created: {0}" msgstr "إعادة نشر المشاركات التي تم إنشاؤها: {0}" @@ -44135,7 +44149,7 @@ msgstr "يتطلب وفاء" msgid "Research" msgstr "ابحاث" -#: erpnext/setup/doctype/company/company.py:511 +#: erpnext/setup/doctype/company/company.py:512 msgid "Research & Development" msgstr "البحث و التطوير" @@ -44223,7 +44237,7 @@ msgstr "مخصص للتجميع الفرعي" msgid "Reserved" msgstr "محجوز" -#: erpnext/controllers/stock_controller.py:1368 +#: erpnext/controllers/stock_controller.py:1408 msgid "Reserved Batch Conflict" msgstr "تعارض الدُفعات المحجوزة" @@ -44293,7 +44307,7 @@ msgstr "الكمية المحجوزة" msgid "Reserved Quantity for Production" msgstr "الكمية المحجوزة للإنتاج" -#: erpnext/stock/stock_ledger.py:2296 +#: erpnext/stock/stock_ledger.py:2321 msgid "Reserved Serial No." msgstr "رقم تسلسلي محجوز" @@ -44309,13 +44323,13 @@ msgstr "رقم تسلسلي محجوز" #: erpnext/stock/doctype/pick_list/pick_list.js:178 #: erpnext/stock/report/reserved_stock/reserved_stock.json #: erpnext/stock/report/stock_balance/stock_balance.py:569 -#: erpnext/stock/stock_ledger.py:2280 +#: erpnext/stock/stock_ledger.py:2305 #: erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js:205 #: erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js:333 msgid "Reserved Stock" msgstr "المخزون المحجوز" -#: erpnext/stock/stock_ledger.py:2325 +#: erpnext/stock/stock_ledger.py:2350 msgid "Reserved Stock for Batch" msgstr "المخزون المحجوز للدفعة" @@ -44532,7 +44546,7 @@ msgstr "إعادة تشغيل الإدخالات الفاشلة" msgid "Restart Subscription" msgstr "إعادة تشغيل الاشتراك" -#: erpnext/assets/doctype/asset/asset.js:178 +#: erpnext/assets/doctype/asset/asset.js:183 msgid "Restore Asset" msgstr "استعادة الأصول" @@ -44731,11 +44745,11 @@ msgstr "تم إلغاء فاتورة إرجاع الأصل" msgid "Return of Components" msgstr "إعادة المكونات" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:173 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:175 msgid "Return on Asset Ratio" msgstr "نسبة العائد على الأصول" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:174 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:176 msgid "Return on Equity Ratio" msgstr "نسبة العائد على حقوق الملكية" @@ -45124,8 +45138,8 @@ msgstr "" #: erpnext/accounts/doctype/pos_invoice/pos_invoice.json #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json -#: erpnext/accounts/report/purchase_register/purchase_register.py:282 -#: erpnext/accounts/report/sales_register/sales_register.py:312 +#: erpnext/accounts/report/purchase_register/purchase_register.py:298 +#: erpnext/accounts/report/sales_register/sales_register.py:326 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/supplier_quotation/supplier_quotation.json #: erpnext/selling/doctype/quotation/quotation.json @@ -45198,8 +45212,8 @@ msgstr "مخصص خسائر التقريب" msgid "Rounding Loss Allowance should be between 0 and 1" msgstr "يجب أن يكون بدل خسائر التقريب بين 0 و 1" -#: erpnext/controllers/stock_controller.py:788 -#: erpnext/controllers/stock_controller.py:803 +#: erpnext/controllers/stock_controller.py:828 +#: erpnext/controllers/stock_controller.py:843 msgid "Rounding gain/loss Entry for Stock Transfer" msgstr "قيد تقريب الربح/الخسارة لنقل الأسهم" @@ -45242,7 +45256,7 @@ msgstr "الصف # {0}: لا يمكن أن يكون المعدل أكبر من msgid "Row # {0}: Returned Item {1} does not exist in {2} {3}" msgstr "الصف رقم {0}: العنصر الذي تم إرجاعه {1} غير موجود في {2} {3}" -#: erpnext/manufacturing/doctype/work_order/work_order.py:349 +#: erpnext/manufacturing/doctype/work_order/work_order.py:350 msgid "Row #1: Sequence ID must be 1 for Operation {0}." msgstr "الصف رقم 1: يجب أن يكون معرف التسلسل 1 للعملية {0}." @@ -45256,15 +45270,15 @@ msgstr "الصف # {0} (جدول الدفع): يجب أن يكون المبلغ msgid "Row #{0} (Payment Table): Amount must be positive" msgstr "الصف رقم {0} (جدول الدفع): يجب أن يكون المبلغ موجبا" -#: erpnext/stock/doctype/item/item.py:564 +#: erpnext/stock/doctype/item/item.py:565 msgid "Row #{0}: A reorder entry already exists for warehouse {1} with reorder type {2}." msgstr "الصف #{0}: يوجد بالفعل إدخال إعادة طلب للمستودع {1} بنوع إعادة الطلب {2}." -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:329 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:333 msgid "Row #{0}: Acceptance Criteria Formula is incorrect." msgstr "الصف #{0}: صيغة معايير القبول غير صحيحة." -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:309 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:313 msgid "Row #{0}: Acceptance Criteria Formula is required." msgstr "الصف #{0}: صيغة معايير القبول مطلوبة." @@ -45277,7 +45291,7 @@ msgstr "الصف #{0}: لا يمكن أن يكون المستودع المقبو msgid "Row #{0}: Accepted Warehouse is mandatory for the accepted Item {1}" msgstr "الصف #{0}: المستودع المقبول إلزامي للصنف المقبول {1}" -#: erpnext/controllers/accounts_controller.py:1301 +#: erpnext/controllers/accounts_controller.py:1321 msgid "Row #{0}: Account {1} does not belong to company {2}" msgstr "الصف # {0}: الحساب {1} لا ينتمي إلى الشركة {2}" @@ -45342,27 +45356,27 @@ msgstr "الصف #{0}: لا يمكن إلغاء إدخال المخزون هذا msgid "Row #{0}: Cannot create entry with different taxable AND withholding document links." msgstr "الصف #{0}: لا يمكن إنشاء إدخال بروابط مستندات مختلفة للضرائب والحجز." -#: erpnext/controllers/accounts_controller.py:3804 +#: erpnext/controllers/accounts_controller.py:3824 msgid "Row #{0}: Cannot delete item {1} which has already been billed." msgstr "الصف # {0}: لا يمكن حذف العنصر {1} الذي تم تحرير فاتورة به بالفعل." -#: erpnext/controllers/accounts_controller.py:3778 +#: erpnext/controllers/accounts_controller.py:3798 msgid "Row #{0}: Cannot delete item {1} which has already been delivered" msgstr "الصف # {0}: لا يمكن حذف العنصر {1} الذي تم تسليمه بالفعل" -#: erpnext/controllers/accounts_controller.py:3797 +#: erpnext/controllers/accounts_controller.py:3817 msgid "Row #{0}: Cannot delete item {1} which has already been received" msgstr "الصف # {0}: لا يمكن حذف العنصر {1} الذي تم استلامه بالفعل" -#: erpnext/controllers/accounts_controller.py:3784 +#: erpnext/controllers/accounts_controller.py:3804 msgid "Row #{0}: Cannot delete item {1} which has work order assigned to it." msgstr "الصف # {0}: لا يمكن حذف العنصر {1} الذي تم تعيين ترتيب العمل إليه." -#: erpnext/controllers/accounts_controller.py:3790 +#: erpnext/controllers/accounts_controller.py:3810 msgid "Row #{0}: Cannot delete item {1} which is already ordered against this Sales Order." msgstr "الصف #{0}: لا يمكن حذف العنصر {1} الذي تم طلبه بالفعل مقابل أمر البيع هذا." -#: erpnext/controllers/accounts_controller.py:4111 +#: erpnext/controllers/accounts_controller.py:4131 msgid "Row #{0}: Cannot set Rate if the billed amount is greater than the amount for Item {1}." msgstr "الصف #{0}: لا يمكن تحديد السعر إذا كان المبلغ المطلوب دفعه أكبر من المبلغ الخاص بالعنصر {1}." @@ -45420,11 +45434,11 @@ msgstr "الصف #{0}: لا يمكن إضافة العنصر المقدم من msgid "Row #{0}: Customer Provided Item {1} cannot be added multiple times in the Subcontracting Inward process." msgstr "الصف #{0}: لا يمكن إضافة العنصر المقدم من العميل {1} عدة مرات في عملية التعاقد من الباطن الواردة." -#: erpnext/manufacturing/doctype/work_order/work_order.py:426 +#: erpnext/manufacturing/doctype/work_order/work_order.py:427 msgid "Row #{0}: Customer Provided Item {1} cannot be added multiple times." msgstr "الصف #{0}: لا يمكن إضافة العنصر المقدم من العميل {1} عدة مرات." -#: erpnext/manufacturing/doctype/work_order/work_order.py:451 +#: erpnext/manufacturing/doctype/work_order/work_order.py:452 msgid "Row #{0}: Customer Provided Item {1} does not exist in the Required Items table linked to the Subcontracting Inward Order." msgstr "الصف #{0}: العنصر المقدم من العميل {1} غير موجود في جدول العناصر المطلوبة المرتبط بأمر التوريد الداخلي للتعاقد من الباطن." @@ -45432,7 +45446,7 @@ msgstr "الصف #{0}: العنصر المقدم من العميل {1} غير م msgid "Row #{0}: Customer Provided Item {1} exceeds quantity available through Subcontracting Inward Order" msgstr "الصف #{0}: يتجاوز المنتج المقدم من العميل {1} الكمية المتاحة من خلال طلب الشراء الداخلي للتعاقد من الباطن" -#: erpnext/manufacturing/doctype/work_order/work_order.py:439 +#: erpnext/manufacturing/doctype/work_order/work_order.py:440 msgid "Row #{0}: Customer Provided Item {1} has insufficient quantity in the Subcontracting Inward Order. Available quantity is {2}." msgstr "الصف #{0}: الكمية المتوفرة من الصنف المقدم من العميل {1} غير كافية في طلب الشراء الداخلي للمقاول من الباطن. الكمية المتاحة هي {2}." @@ -45453,7 +45467,7 @@ msgstr "الصف #{0}: التواريخ المتداخلة مع صف آخر في msgid "Row #{0}: Default BOM not found for FG Item {1}" msgstr "الصف #{0}: لم يتم العثور على قائمة مكونات المنتج النهائية الافتراضية لعنصر المنتج النهائي {1}" -#: erpnext/assets/doctype/asset/asset.py:681 +#: erpnext/assets/doctype/asset/asset.py:685 msgid "Row #{0}: Depreciation Start Date is required" msgstr "الصف #{0}: تاريخ بداية الإهلاك مطلوب" @@ -45465,7 +45479,7 @@ msgstr "الصف # {0}: إدخال مكرر في المراجع {1} {2}" msgid "Row #{0}: Expected Delivery Date cannot be before Purchase Order Date" msgstr "الصف # {0}: تاريخ التسليم المتوقع لا يمكن أن يكون قبل تاريخ أمر الشراء" -#: erpnext/controllers/stock_controller.py:919 +#: erpnext/controllers/stock_controller.py:959 msgid "Row #{0}: Expense Account not set for the Item {1}. {2}" msgstr "الصف #{0}: لم يتم تعيين حساب المصروفات للعنصر {1}. {2}" @@ -45513,7 +45527,7 @@ msgstr "الصف #{0}: بالنسبة للصف {1}، يمكنك تحديد ال msgid "Row #{0}: For {1}, you can select reference document only if account gets debited" msgstr "الصف #{0}: بالنسبة للصف {1}، يمكنك تحديد المستند المرجعي فقط في حالة خصم الحساب." -#: erpnext/assets/doctype/asset/asset.py:664 +#: erpnext/assets/doctype/asset/asset.py:668 msgid "Row #{0}: Frequency of Depreciation must be greater than zero" msgstr "الصف #{0}: يجب أن يكون معدل الاستهلاك أكبر من الصفر" @@ -45545,7 +45559,7 @@ msgstr "الصف #{0}: تم اختيار العنصر {1} ، يرجى حجز ا msgid "Row #{0}: Item {1} has no stock in warehouse {2}." msgstr "الصف #{0}: العنصر {1} ليس لديه مخزون في المستودع {2}." -#: erpnext/controllers/stock_controller.py:148 +#: erpnext/controllers/stock_controller.py:184 msgid "Row #{0}: Item {1} has zero rate but '{2}' is not enabled." msgstr "" @@ -45594,11 +45608,11 @@ msgstr "" msgid "Row #{0}: Journal Entry {1} does not have account {2} or already matched against another voucher" msgstr "الصف {1} : قيد اليومية {1} لا يحتوى على الحساب {2} أو بالفعل يوجد في قسيمة مقابلة أخرى\\n
    \\nRow #{0}: Journal Entry {1} does not have account {2} or already matched against another voucher" -#: erpnext/assets/doctype/asset/asset.py:675 +#: erpnext/assets/doctype/asset/asset.py:679 msgid "Row #{0}: Next Depreciation Date cannot be before Available-for-use Date" msgstr "الصف #{0}: لا يمكن أن يكون تاريخ الاستهلاك التالي قبل تاريخ الإتاحة للاستخدام" -#: erpnext/assets/doctype/asset/asset.py:670 +#: erpnext/assets/doctype/asset/asset.py:674 msgid "Row #{0}: Next Depreciation Date cannot be before Purchase Date" msgstr "الصف #{0}: لا يمكن أن يكون تاريخ الاستهلاك التالي قبل تاريخ الشراء" @@ -45610,7 +45624,7 @@ msgstr "الصف رقم {0}: غير مسموح تغيير المورد لأن أ msgid "Row #{0}: Only {1} available to reserve for the Item {2}" msgstr "الصف #{0}: الصف {1} فقط متاح للحجز للعنصر {2}" -#: erpnext/assets/doctype/asset/asset.py:638 +#: erpnext/assets/doctype/asset/asset.py:642 msgid "Row #{0}: Opening Accumulated Depreciation must be less than or equal to {1}" msgstr "الصف #{0}: يجب أن يكون الاستهلاك المتراكم الافتتاحي أقل من أو يساوي {1}" @@ -45639,11 +45653,11 @@ msgstr "الصف #{0}: يرجى تحديد عنصر المنتج النهائي msgid "Row #{0}: Please select the Sub Assembly Warehouse" msgstr "الصف #{0}: الرجاء تحديد مستودع التجميع الفرعي" -#: erpnext/stock/doctype/item/item.py:571 +#: erpnext/stock/doctype/item/item.py:572 msgid "Row #{0}: Please set reorder quantity" msgstr "الصف # {0}: يرجى تعيين إعادة ترتيب الكمية\\n
    \\nRow #{0}: Please set reorder quantity" -#: erpnext/controllers/accounts_controller.py:616 +#: erpnext/controllers/accounts_controller.py:636 msgid "Row #{0}: Please update deferred revenue/expense account in item row or default account in company master" msgstr "الصف #{0}: يرجى تحديث حساب الإيرادات/المصروفات المؤجلة في صف البند أو الحساب الافتراضي في بيانات الشركة الرئيسية" @@ -45665,15 +45679,15 @@ msgstr "الصف #{0}: يجب أن تكون الكمية عددًا موجبًا msgid "Row #{0}: Qty should be less than or equal to Available Qty to Reserve (Actual Qty - Reserved Qty) {1} for Iem {2} against Batch {3} in Warehouse {4}." msgstr "الصف #{0}: يجب أن تكون الكمية أقل من أو تساوي الكمية المتاحة للحجز (الكمية الفعلية - الكمية المحجوزة) {1} للصنف {2} مقابل الدفعة {3} في المستودع {4}." -#: erpnext/controllers/stock_controller.py:1505 +#: erpnext/controllers/stock_controller.py:1545 msgid "Row #{0}: Quality Inspection is required for Item {1}" msgstr "الصف #{0}: يلزم فحص الجودة للعنصر {1}" -#: erpnext/controllers/stock_controller.py:1520 +#: erpnext/controllers/stock_controller.py:1560 msgid "Row #{0}: Quality Inspection {1} is not submitted for the item: {2}" msgstr "الصف #{0}: لم يتم تقديم فحص الجودة {1} للعنصر: {2}" -#: erpnext/controllers/stock_controller.py:1535 +#: erpnext/controllers/stock_controller.py:1575 msgid "Row #{0}: Quality Inspection {1} was rejected for item {2}" msgstr "الصف #{0}: تم رفض فحص الجودة {1} للعنصر {2}" @@ -45681,7 +45695,7 @@ msgstr "الصف #{0}: تم رفض فحص الجودة {1} للعنصر {2}" msgid "Row #{0}: Quantity cannot be a non-positive number. Please increase the quantity or remove the Item {1}" msgstr "الصف #{0}: لا يمكن أن تكون الكمية عددًا غير موجب. يُرجى زيادة الكمية أو إزالة العنصر {1}" -#: erpnext/controllers/accounts_controller.py:1464 +#: erpnext/controllers/accounts_controller.py:1484 msgid "Row #{0}: Quantity for Item {1} cannot be zero." msgstr "الصف # {0}: كمية البند {1} لا يمكن أن يكون صفرا" @@ -45693,8 +45707,8 @@ msgstr "الصف #{0}: لا يمكن أن تتجاوز كمية الصنف {1} msgid "Row #{0}: Quantity to reserve for the Item {1} should be greater than 0." msgstr "الصف #{0}: يجب أن تكون الكمية المراد حجزها للعنصر {1} أكبر من 0." -#: erpnext/controllers/accounts_controller.py:879 -#: erpnext/controllers/accounts_controller.py:891 +#: erpnext/controllers/accounts_controller.py:899 +#: erpnext/controllers/accounts_controller.py:911 #: erpnext/utilities/transaction_base.py:172 #: erpnext/utilities/transaction_base.py:178 msgid "Row #{0}: Rate must be same as {1}: {2} ({3} / {4})" @@ -45744,11 +45758,11 @@ msgid "" "\t\t\t\t\tthis validation." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:355 +#: erpnext/manufacturing/doctype/work_order/work_order.py:356 msgid "Row #{0}: Sequence ID must be {1} or {2} for Operation {3}." msgstr "الصف #{0}: يجب أن يكون معرف التسلسل {1} أو {2} للعملية {3}." -#: erpnext/controllers/stock_controller.py:303 +#: erpnext/controllers/stock_controller.py:339 msgid "Row #{0}: Serial No {1} does not belong to Batch {2}" msgstr "الصف # {0}: الرقم التسلسلي {1} لا ينتمي إلى الدُفعة {2}" @@ -45764,15 +45778,15 @@ msgstr "الصف #{0}: تم تحديد الرقم التسلسلي {1} بالف msgid "Row #{0}: Serial No(s) {1} are not a part of the linked Subcontracting Inward Order. Please select valid Serial No(s)." msgstr "الصف #{0}: الأرقام التسلسلية {1} ليست جزءًا من أمر التوريد الداخلي المرتبط بالتعاقد من الباطن. يرجى تحديد رقم تسلسلي صحيح." -#: erpnext/controllers/accounts_controller.py:644 +#: erpnext/controllers/accounts_controller.py:664 msgid "Row #{0}: Service End Date cannot be before Invoice Posting Date" msgstr "الصف # {0}: لا يمكن أن يكون تاريخ انتهاء الخدمة قبل تاريخ ترحيل الفاتورة" -#: erpnext/controllers/accounts_controller.py:638 +#: erpnext/controllers/accounts_controller.py:658 msgid "Row #{0}: Service Start Date cannot be greater than Service End Date" msgstr "الصف # {0}: لا يمكن أن يكون تاريخ بدء الخدمة أكبر من تاريخ انتهاء الخدمة" -#: erpnext/controllers/accounts_controller.py:632 +#: erpnext/controllers/accounts_controller.py:652 msgid "Row #{0}: Service Start and End Date is required for deferred accounting" msgstr "الصف # {0}: مطلوب بداية وتاريخ انتهاء الخدمة للمحاسبة المؤجلة" @@ -45788,11 +45802,11 @@ msgstr "الصف #{0}: بما أن خيار \"تتبع المنتجات نصف msgid "Row #{0}: Source Warehouse must be same as Customer Warehouse {1} from the linked Subcontracting Inward Order" msgstr "الصف #{0}: يجب أن يكون مستودع المصدر هو نفسه مستودع العميل {1} من أمر التوريد الداخلي المرتبط بالتعاقد من الباطن" -#: erpnext/manufacturing/doctype/work_order/work_order.py:460 +#: erpnext/manufacturing/doctype/work_order/work_order.py:461 msgid "Row #{0}: Source Warehouse {1} for item {2} cannot be a customer warehouse." msgstr "الصف #{0}: لا يمكن أن يكون مستودع المصدر {1} للعنصر {2} مستودع عميل." -#: erpnext/manufacturing/doctype/work_order/work_order.py:415 +#: erpnext/manufacturing/doctype/work_order/work_order.py:416 msgid "Row #{0}: Source Warehouse {1} for item {2} must be same as Source Warehouse {3} in the Work Order." msgstr "الصف #{0}: يجب أن يكون مستودع المصدر {1} للعنصر {2} هو نفسه مستودع المصدر {3} في أمر العمل." @@ -45808,7 +45822,7 @@ msgstr "الصف #{0}: لا يمكن أن تكون أبعاد المستودع msgid "Row #{0}: Start Time must be before End Time" msgstr "الصف #{0}: يجب أن يكون وقت البدء قبل وقت الانتهاء" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:209 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:213 msgid "Row #{0}: Status is mandatory" msgstr "الصف #{0}: الحالة إلزامية" @@ -45832,7 +45846,7 @@ msgstr "الصف #{0}: لا يمكن حجز المخزون في مستودع ا msgid "Row #{0}: Stock is already reserved for the Item {1}." msgstr "الصف #{0}: تم حجز المخزون بالفعل للصنف {1}." -#: erpnext/stock/doctype/delivery_note/delivery_note.py:527 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:528 msgid "Row #{0}: Stock is reserved for item {1} in warehouse {2}." msgstr "الصف #{0}: تم حجز المخزون للصنف {1} في المستودع {2}." @@ -45853,11 +45867,11 @@ msgstr "الصف #{0}: كمية المخزون {1} ({2}) للصنف {3} لا ي msgid "Row #{0}: Target Warehouse must be same as Customer Warehouse {1} from the linked Subcontracting Inward Order" msgstr "الصف #{0}: يجب أن يكون المستودع المستهدف هو نفسه مستودع العميل {1} من أمر الشراء الداخلي المرتبط بالتعاقد من الباطن" -#: erpnext/controllers/stock_controller.py:316 +#: erpnext/controllers/stock_controller.py:352 msgid "Row #{0}: The batch {1} has already expired." msgstr "الصف رقم {0}: انتهت صلاحية الدفعة {1} بالفعل." -#: erpnext/stock/doctype/item/item.py:580 +#: erpnext/stock/doctype/item/item.py:581 msgid "Row #{0}: The warehouse {1} is not a child warehouse of a group warehouse {2}" msgstr "الصف #{0}: المستودع {1} ليس مستودعًا فرعيًا لمستودع مجموعة {2}" @@ -45865,15 +45879,15 @@ msgstr "الصف #{0}: المستودع {1} ليس مستودعًا فرعيًا msgid "Row #{0}: Timings conflicts with row {1}" msgstr "الصف # {0}: التوقيت يتعارض مع الصف {1}" -#: erpnext/assets/doctype/asset/asset.py:651 +#: erpnext/assets/doctype/asset/asset.py:655 msgid "Row #{0}: Total Number of Depreciations cannot be less than or equal to Opening Number of Booked Depreciations" msgstr "الصف #{0}: لا يمكن أن يكون إجمالي عدد الإهلاكات أقل من أو يساوي عدد الإهلاكات المسجلة في بداية الفترة." -#: erpnext/assets/doctype/asset/asset.py:660 +#: erpnext/assets/doctype/asset/asset.py:664 msgid "Row #{0}: Total Number of Depreciations must be greater than zero" msgstr "الصف #{0}: يجب أن يكون إجمالي عدد الاستهلاكات أكبر من الصفر" -#: erpnext/controllers/stock_controller.py:100 +#: erpnext/controllers/stock_controller.py:136 msgid "Row #{0}: Warehouse {1} does not match with the warehouse {2} in Serial and Batch Bundle {3}." msgstr "" @@ -45901,11 +45915,11 @@ msgstr "" msgid "Row #{0}: {1} can not be negative for item {2}" msgstr "الصف # {0}: {1} لا يمكن أن يكون سالبا للبند {2}" -#: erpnext/controllers/stock_controller.py:1183 +#: erpnext/controllers/stock_controller.py:1223 msgid "Row #{0}: {1} is mandatory for the Inventory Dimension {2}." msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:322 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:326 msgid "Row #{0}: {1} is not a valid reading field. Please refer to the field description." msgstr "الصف #{0}: {1} ليس حقل قراءة صالحًا. يُرجى مراجعة وصف الحقل." @@ -45917,7 +45931,7 @@ msgstr "الصف رقم {0}: {1} مطلوب لإنشاء فواتير الافت msgid "Row #{0}: {1} of {2} should be {3}. Please update the {1} or select a different account." msgstr "الصف #{0}: {1} من {2} يجب أن يكون {3}. يرجى تحديث {1} أو اختيار حساب آخر." -#: erpnext/controllers/accounts_controller.py:3918 +#: erpnext/controllers/accounts_controller.py:3938 msgid "Row #{0}:Quantity for Item {1} cannot be zero." msgstr "" @@ -45965,7 +45979,7 @@ msgstr "الصف # {}: عملة {} - {} لا تطابق عملة الشركة." msgid "Row #{}: Either Party ID or Party Name is required" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:421 +#: erpnext/assets/doctype/asset/asset.py:425 msgid "Row #{}: Finance Book should not be empty since you're using multiple." msgstr "الصف رقم {}: يجب ألا يكون دفتر المالية فارغًا لأنك تستخدم عدة دفاتر." @@ -45989,7 +46003,7 @@ msgstr "" msgid "Row #{}: Please assign task to a member." msgstr "الصف رقم {}: يرجى إسناد المهمة إلى أحد الأعضاء." -#: erpnext/assets/doctype/asset/asset.py:413 +#: erpnext/assets/doctype/asset/asset.py:417 msgid "Row #{}: Please use a different Finance Book." msgstr "الصف رقم {}: يرجى استخدام كتاب مالي مختلف." @@ -46018,7 +46032,7 @@ msgstr "رقم الصف {}: {}" msgid "Row #{}: {} {} does not exist." msgstr "الصف رقم {}: {} {} غير موجود." -#: erpnext/stock/doctype/item/item.py:1507 +#: erpnext/stock/doctype/item/item.py:1527 msgid "Row #{}: {} {} doesn't belong to Company {}. Please select valid {}." msgstr "الصف رقم {}: {} {} لا ينتمي إلى الشركة {}. يرجى اختيار {} صحيح." @@ -46086,7 +46100,7 @@ msgstr "" msgid "Row {0}: Conversion Factor is mandatory" msgstr "الصف {0}: معامل التحويل إلزامي" -#: erpnext/controllers/accounts_controller.py:3245 +#: erpnext/controllers/accounts_controller.py:3265 msgid "Row {0}: Cost Center {1} does not belong to Company {2}" msgstr "الصف {0}: مركز التكلفة {1} لا ينتمي إلى الشركة {2}" @@ -46114,7 +46128,7 @@ msgstr "الصف {0}: لا يمكن أن يكون مستودع التسليم ({ msgid "Row {0}: Delivery Warehouse cannot be same as Customer Warehouse for Item {1}." msgstr "الصف {0}: لا يمكن أن يكون مستودع التسليم هو نفسه مستودع العميل بالنسبة للعنصر {1}." -#: erpnext/controllers/accounts_controller.py:2745 +#: erpnext/controllers/accounts_controller.py:2765 msgid "Row {0}: Due Date in the Payment Terms table cannot be before Posting Date" msgstr "الصف {0}: لا يمكن أن يكون تاريخ الاستحقاق في جدول شروط الدفع قبل تاريخ الترحيل" @@ -46127,11 +46141,11 @@ msgstr "الصف {0}: يجب أن يكون مرجع عنصر إشعار التس msgid "Row {0}: Exchange Rate is mandatory" msgstr "الصف {0}: سعر صرف إلزامي" -#: erpnext/assets/doctype/asset/asset.py:609 +#: erpnext/assets/doctype/asset/asset.py:613 msgid "Row {0}: Expected Value After Useful Life cannot be negative" msgstr "الصف {0}: لا يمكن أن تكون القيمة المتوقعة بعد العمر الإنتاجي سالبة" -#: erpnext/assets/doctype/asset/asset.py:612 +#: erpnext/assets/doctype/asset/asset.py:616 msgid "Row {0}: Expected Value After Useful Life must be less than Net Purchase Amount" msgstr "الصف {0}: يجب أن تكون القيمة المتوقعة بعد العمر الإنتاجي أقل من صافي مبلغ الشراء" @@ -46164,7 +46178,7 @@ msgstr "صف {0}: (من الوقت) و (إلى وقت) تكون إلزامية." msgid "Row {0}: From Time and To Time of {1} is overlapping with {2}" msgstr "الصف {0}: من وقت إلى وقت {1} يتداخل مع {2}" -#: erpnext/controllers/stock_controller.py:1601 +#: erpnext/controllers/stock_controller.py:1641 msgid "Row {0}: From Warehouse is mandatory for internal transfers" msgstr "الصف {0}: من المستودع إلزامي للتحويلات الداخلية" @@ -46208,7 +46222,7 @@ msgstr "الصف {0}: لا يمكن أن تكون كمية العنصر {1}أع msgid "Row {0}: Operation time should be greater than 0 for operation {1}" msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:584 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:585 msgid "Row {0}: Packed Qty must be equal to {1} Qty." msgstr "الصف {0}: يجب أن تكون الكمية المعبأة مساوية للكمية {1} ." @@ -46308,7 +46322,7 @@ msgstr "الصف {0}: لا يمكن تغيير المناوبة لأن عملي msgid "Row {0}: Subcontracted Item is mandatory for the raw material {1}" msgstr "الصف {0}: العنصر المتعاقد عليه من الباطن إلزامي للمادة الخام {1}" -#: erpnext/controllers/stock_controller.py:1592 +#: erpnext/controllers/stock_controller.py:1632 msgid "Row {0}: Target Warehouse is mandatory for internal transfers" msgstr "الصف {0}: المستودع المستهدف إلزامي للتحويلات الداخلية" @@ -46324,7 +46338,7 @@ msgstr "الصف {0}: تم تخصيص مبلغ المصروفات بالكامل msgid "Row {0}: The item {1}, quantity must be positive number" msgstr "الصف {0}: العنصر {1} ، يجب أن تكون الكمية رقمًا موجبًا" -#: erpnext/controllers/accounts_controller.py:3222 +#: erpnext/controllers/accounts_controller.py:3242 msgid "Row {0}: The {3} Account {1} does not belong to the company {2}" msgstr "الصف {0}: الحساب {3} {1} لا ينتمي إلى الشركة {2}" @@ -46353,11 +46367,11 @@ msgid "Row {0}: Warehouse {1} is linked to company {2}. Please select a warehous msgstr "" #: erpnext/manufacturing/doctype/bom/bom.py:1239 -#: erpnext/manufacturing/doctype/work_order/work_order.py:489 +#: erpnext/manufacturing/doctype/work_order/work_order.py:490 msgid "Row {0}: Workstation or Workstation Type is mandatory for an operation {1}" msgstr "الصف {0}: محطة العمل أو نوع محطة العمل إلزامي للعملية {1}" -#: erpnext/controllers/accounts_controller.py:1183 +#: erpnext/controllers/accounts_controller.py:1203 msgid "Row {0}: user has not applied the rule {1} on the item {2}" msgstr "الصف {0}: لم يطبق المستخدم القاعدة {1} على العنصر {2}" @@ -46369,7 +46383,7 @@ msgstr "الصف {0}: {1} تم تقديم طلب بالفعل للحساب في msgid "Row {0}: {1} must be greater than 0" msgstr "الصف {0}: يجب أن يكون {1} أكبر من 0" -#: erpnext/controllers/accounts_controller.py:789 +#: erpnext/controllers/accounts_controller.py:809 msgid "Row {0}: {1} {2} cannot be same as {3} (Party Account) {4}" msgstr "الصف {0}: {1} {2} لا يمكن أن يكون هو نفسه {3} (حساب الطرفية) {4}" @@ -46415,7 +46429,7 @@ msgstr "تمت إزالة الصفوف في {0}" msgid "Rows with Same Account heads will be merged on Ledger" msgstr "سيتم دمج الصفوف التي تحتوي على نفس رؤوس الحسابات في دفتر الأستاذ" -#: erpnext/controllers/accounts_controller.py:2756 +#: erpnext/controllers/accounts_controller.py:2776 msgid "Rows with duplicate due dates in other rows were found: {0}" msgstr "تم العثور على صفوف ذات تواريخ استحقاق مكررة في صفوف أخرى: {0}" @@ -46423,7 +46437,7 @@ msgstr "تم العثور على صفوف ذات تواريخ استحقاق م msgid "Rows: {0} have 'Payment Entry' as reference_type. This should not be set manually." msgstr "الصفوف: {0} تحتوي على \"إدخال الدفع\" كنوع مرجعي. لا ينبغي تعيين هذا يدويًا." -#: erpnext/controllers/accounts_controller.py:282 +#: erpnext/controllers/accounts_controller.py:302 msgid "Rows: {0} in {1} section are Invalid. Reference Name should point to a valid Payment Entry or Journal Entry." msgstr "الصفوف: {0} في القسم {1} غير صالحة. يجب أن يشير اسم المرجع إلى قيد دفع أو قيد يومية صالح." @@ -46438,7 +46452,7 @@ msgstr "تطبق القاعدة" #. Label of the rule_description (Small Text) field in DocType 'Promotional #. Scheme Price Discount' #. Scheme Product Discount' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:47 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:48 #: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.json #: erpnext/accounts/doctype/pricing_rule/pricing_rule.json #: erpnext/accounts/doctype/promotional_scheme_price_discount/promotional_scheme_price_discount.json @@ -46447,7 +46461,7 @@ msgid "Rule Description" msgstr "وصف القاعدة" #. Label of the rule_name (Data) field in DocType 'Bank Transaction Rule' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:28 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:29 #: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.json msgid "Rule Name" msgstr "اسم القاعدة" @@ -46464,7 +46478,7 @@ msgstr "" msgid "Rule matched based on transaction description and other criteria." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:39 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:40 msgid "Rule name is required" msgstr "" @@ -46484,7 +46498,7 @@ msgstr "" msgid "Rules evaluation started" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:189 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:190 msgid "Rules to match against the transaction description" msgstr "" @@ -46572,6 +46586,7 @@ msgstr "كمية طلبات الشراء" msgid "SO Total Qty" msgstr "إذن إجمالي الكمية" +#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:16 #: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:26 msgid "STATEMENT OF ACCOUNTS" msgstr "بيان الحسابات" @@ -46639,8 +46654,8 @@ msgstr "طريقة تحصيل الراتب" #: erpnext/regional/report/vat_audit_report/vat_audit_report.py:145 #: erpnext/selling/doctype/quotation/quotation.json #: erpnext/selling/doctype/sales_order/sales_order.json -#: erpnext/setup/doctype/company/company.py:457 -#: erpnext/setup/doctype/company/company.py:649 +#: erpnext/setup/doctype/company/company.py:458 +#: erpnext/setup/doctype/company/company.py:650 #: erpnext/setup/doctype/company/company_dashboard.py:9 #: erpnext/setup/doctype/sales_person/sales_person_dashboard.py:12 #: erpnext/setup/install.py:423 @@ -46655,7 +46670,7 @@ msgstr "مبيعات" msgid "Sales & Purchase" msgstr "" -#: erpnext/setup/doctype/company/company.py:649 +#: erpnext/setup/doctype/company/company.py:650 msgid "Sales Account" msgstr "حساب مبيعات" @@ -46850,7 +46865,7 @@ msgstr "لم يتم إنشاء فاتورة المبيعات بواسطة الم msgid "Sales Invoice mode is activated in POS. Please create Sales Invoice instead." msgstr "تم تفعيل وضع فاتورة المبيعات في نظام نقاط البيع. يرجى إنشاء فاتورة مبيعات بدلاً من ذلك." -#: erpnext/stock/doctype/delivery_note/delivery_note.py:597 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:598 msgid "Sales Invoice {0} has already been submitted" msgstr "سبق أن تم ترحيل فاتورة المبيعات {0}" @@ -46909,7 +46924,7 @@ msgstr "فرص المبيعات حسب المصدر" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.js:380 #: erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:284 -#: erpnext/accounts/report/sales_register/sales_register.py:238 +#: erpnext/accounts/report/sales_register/sales_register.py:252 #: erpnext/buying/doctype/purchase_order_item/purchase_order_item.json #: erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.json #: erpnext/controllers/selling_controller.py:494 @@ -47046,7 +47061,7 @@ msgstr "حالة طلب المبيعات" msgid "Sales Order Trends" msgstr "مجرى طلبات البيع" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:284 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:285 msgid "Sales Order required for Item {0}" msgstr "طلب البيع مطلوب للبند {0}\\n
    \\nSales Order required for Item {0}" @@ -47063,7 +47078,7 @@ msgstr "" msgid "Sales Order {0} is not submitted" msgstr "لا يتم اعتماد أمر التوريد {0}\\n
    \\nSales Order {0} is not submitted" -#: erpnext/manufacturing/doctype/work_order/work_order.py:565 +#: erpnext/manufacturing/doctype/work_order/work_order.py:566 msgid "Sales Order {0} is not valid" msgstr "أمر البيع {0} غير موجود\\n
    \\nSales Order {0} is not valid" @@ -47317,7 +47332,7 @@ msgstr "سجل مبيعات" msgid "Sales Representative" msgstr "مندوب مبيعات" -#: erpnext/accounts/report/gross_profit/gross_profit.py:989 +#: erpnext/accounts/report/gross_profit/gross_profit.py:995 #: erpnext/stock/doctype/delivery_note/delivery_note.js:270 msgid "Sales Return" msgstr "مبيعات المعاده" @@ -47480,7 +47495,7 @@ msgid "Sample Quantity" msgstr "كمية العينة" #: erpnext/stock/doctype/purchase_receipt/purchase_receipt.js:269 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:552 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:557 msgid "Sample Retention Stock Entry" msgstr "إدخال بيانات المخزون للاحتفاظ بالعينات" @@ -47492,7 +47507,7 @@ msgstr "مستودع الاحتفاظ بالعينات" #. Label of the sample_size (Float) field in DocType 'Quality Inspection' #: erpnext/manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:93 -#: erpnext/public/js/controllers/transaction.js:2871 +#: erpnext/public/js/controllers/transaction.js:2893 #: erpnext/stock/doctype/quality_inspection/quality_inspection.json msgid "Sample Size" msgstr "حجم العينة" @@ -47596,13 +47611,13 @@ msgstr "الكمية الممسوحة ضوئياً" #. Label of the schedule_date (Date) field in DocType 'Depreciation Schedule' #. Label of the schedule_date (Datetime) field in DocType 'Production Plan Sub #. Assembly Item' -#: erpnext/assets/doctype/asset/asset.js:378 +#: erpnext/assets/doctype/asset/asset.js:383 #: erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json #: erpnext/manufacturing/doctype/production_plan_sub_assembly_item/production_plan_sub_assembly_item.json msgid "Schedule Date" msgstr "جدول التسجيل" -#: erpnext/public/js/controllers/transaction.js:516 +#: erpnext/public/js/controllers/transaction.js:538 msgid "Schedule Name" msgstr "" @@ -47730,7 +47745,7 @@ msgstr "ترتيب الترتيب" msgid "Scrap" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:163 +#: erpnext/assets/doctype/asset/asset.js:168 msgid "Scrap Asset" msgstr "أصول خردة" @@ -47791,6 +47806,10 @@ msgstr "" msgid "Search transactions" msgstr "" +#: erpnext/stock/doctype/item/item.js:798 +msgid "Search values..." +msgstr "" + #. Name of a UOM #: erpnext/setup/setup_wizard/data/uom_data.json msgid "Second" @@ -47907,7 +47926,7 @@ msgstr "اختر البند البديل" msgid "Select Alternative Items for Sales Order" msgstr "اختر عناصر بديلة لطلب البيع" -#: erpnext/stock/doctype/item/item.js:838 +#: erpnext/stock/doctype/item/item.js:924 msgid "Select Attribute Values" msgstr "حدد قيم السمات" @@ -48010,7 +48029,7 @@ msgstr "اختيار العناصر" msgid "Select Items based on Delivery Date" msgstr "حدد العناصر بناءً على تاريخ التسليم" -#: erpnext/public/js/controllers/transaction.js:2912 +#: erpnext/public/js/controllers/transaction.js:2928 msgid "Select Items for Quality Inspection" msgstr "اختيار الأصناف لفحص الجودة" @@ -48040,7 +48059,7 @@ msgstr "حدد عنوان العامل" msgid "Select Loyalty Program" msgstr "اختر برنامج الولاء" -#: erpnext/public/js/controllers/transaction.js:502 +#: erpnext/public/js/controllers/transaction.js:524 msgid "Select Payment Schedule" msgstr "" @@ -48139,14 +48158,14 @@ msgstr "اختر شركة" msgid "Select a transaction to match and reconcile with vouchers" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:586 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:562 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:679 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1175 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:588 msgid "Select all" msgstr "" -#: erpnext/stock/doctype/item/item.js:1180 +#: erpnext/stock/doctype/item/item.js:1266 msgid "Select an Item Group." msgstr "حدد مجموعة عناصر." @@ -48162,7 +48181,7 @@ msgstr "حدد فاتورة لتحميل ملخص البيانات" msgid "Select an item from each set to be used in the Sales Order." msgstr "اختر عنصرًا واحدًا من كل مجموعة لاستخدامه في أمر البيع." -#: erpnext/stock/doctype/item/item.js:852 +#: erpnext/stock/doctype/item/item.js:938 msgid "Select at least one attribute value." msgstr "" @@ -48180,7 +48199,7 @@ msgstr "حدد اسم الشركة الأول." msgid "Select date" msgstr "" -#: erpnext/controllers/accounts_controller.py:2997 +#: erpnext/controllers/accounts_controller.py:3017 msgid "Select finance book for the item {0} at row {1}" msgstr "حدد دفتر تمويل للعنصر {0} في الصف {1}" @@ -48192,7 +48211,7 @@ msgstr "حدد مجموعة العناصر" msgid "Select number of days" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:605 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:581 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:699 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1192 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:632 @@ -48229,7 +48248,7 @@ msgstr "اختر المستودع" msgid "Select the customer or supplier." msgstr "حدد العميل أو المورد." -#: erpnext/assets/doctype/asset/asset.js:930 +#: erpnext/assets/doctype/asset/asset.js:939 msgid "Select the date" msgstr "حدد التاريخ" @@ -48243,6 +48262,10 @@ msgstr "حدد التاريخ والمنطقة الزمنية الخاصة بك" msgid "Select the group first to filter the applicable withholding categories below." msgstr "" +#: erpnext/public/js/setup_wizard.js:89 +msgid "Select the modules that you plan to implement" +msgstr "" + #: erpnext/manufacturing/doctype/bom/bom.js:1007 msgid "Select the raw materials (Items) required to manufacture the Item" msgstr "حدد المواد الخام (العناصر) المطلوبة لتصنيع العنصر" @@ -48302,22 +48325,22 @@ msgstr "يجب أن يكون المستند المحدد في حالة الإر msgid "Self delivery" msgstr "التوصيل الذاتي" -#: erpnext/assets/doctype/asset/asset.js:641 +#: erpnext/assets/doctype/asset/asset.js:646 #: erpnext/stock/doctype/batch/batch_dashboard.py:9 #: erpnext/stock/doctype/item/item_dashboard.py:20 msgid "Sell" msgstr "باع" -#: erpnext/assets/doctype/asset/asset.js:171 -#: erpnext/assets/doctype/asset/asset.js:630 +#: erpnext/assets/doctype/asset/asset.js:176 +#: erpnext/assets/doctype/asset/asset.js:635 msgid "Sell Asset" msgstr "بيع الأصل" -#: erpnext/assets/doctype/asset/asset.js:635 +#: erpnext/assets/doctype/asset/asset.js:640 msgid "Sell Qty" msgstr "بيع الكمية" -#: erpnext/assets/doctype/asset/asset.js:651 +#: erpnext/assets/doctype/asset/asset.js:656 msgid "Sell quantity cannot exceed the asset quantity" msgstr "لا يمكن أن تتجاوز كمية البيع كمية الأصل" @@ -48325,7 +48348,7 @@ msgstr "لا يمكن أن تتجاوز كمية البيع كمية الأصل" msgid "Sell quantity cannot exceed the asset quantity. Asset {0} has only {1} item(s)." msgstr "لا يمكن أن تتجاوز كمية البيع كمية الأصل. يحتوي الأصل {0} على {1} عنصر فقط." -#: erpnext/assets/doctype/asset/asset.js:647 +#: erpnext/assets/doctype/asset/asset.js:652 msgid "Sell quantity must be greater than zero" msgstr "يجب أن تكون كمية البيع أكبر من الصفر" @@ -48437,7 +48460,7 @@ msgid "Send Emails to Suppliers" msgstr "إرسال رسائل البريد الإلكتروني إلى الموردين" #. Label of the send_sms (Button) field in DocType 'SMS Center' -#: erpnext/public/js/controllers/transaction.js:721 +#: erpnext/public/js/controllers/transaction.js:743 #: erpnext/selling/doctype/sms_center/sms_center.json msgid "Send SMS" msgstr "SMS أرسل رسالة" @@ -48573,7 +48596,7 @@ msgstr "" #: erpnext/manufacturing/doctype/job_card/job_card.json #: erpnext/manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:74 #: erpnext/manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.py:114 -#: erpnext/public/js/controllers/transaction.js:2884 +#: erpnext/public/js/controllers/transaction.js:2906 #: erpnext/public/js/utils/serial_no_batch_selector.js:432 #: erpnext/selling/doctype/installation_note_item/installation_note_item.json #: erpnext/stock/doctype/delivery_note_item/delivery_note_item.json @@ -48634,11 +48657,11 @@ msgstr "دفتر الأستاذ ذو الرقم التسلسلي" msgid "Serial No Range" msgstr "نطاق الأرقام التسلسلية" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2675 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2725 msgid "Serial No Reserved" msgstr "الرقم التسلسلي محجوز" -#: erpnext/stock/doctype/item/item.py:477 +#: erpnext/stock/doctype/item/item.py:478 msgid "Serial No Series Overlap" msgstr "تداخل سلسلة الأرقام التسلسلية" @@ -48690,7 +48713,7 @@ msgstr "لا يمكن استخدام الرقم التسلسلي ومحدد ال msgid "Serial No and Batch Traceability" msgstr "إمكانية تتبع الرقم التسلسلي والدفعة" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1179 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1229 msgid "Serial No is mandatory" msgstr "الرقم التسلسلي إلزامي" @@ -48719,7 +48742,7 @@ msgstr "الرقم المتسلسل {0} لا ينتمي إلى البند {1}\\n msgid "Serial No {0} does not exist" msgstr "الرقم المتسلسل {0} غير موجود\\n
    \\nSerial No {0} does not exist" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:3464 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:3514 msgid "Serial No {0} does not exists" msgstr "الرقم التسلسلي {0} غير موجود" @@ -48773,11 +48796,11 @@ msgstr "الأرقام التسلسلية / أرقام الدفعات" msgid "Serial Nos / Batches" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1958 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2008 msgid "Serial Nos are created successfully" msgstr "تم إنشاء الأرقام التسلسلية بنجاح" -#: erpnext/stock/stock_ledger.py:2286 +#: erpnext/stock/stock_ledger.py:2311 msgid "Serial Nos are reserved in Stock Reservation Entries, you need to unreserve them before proceeding." msgstr "يتم حجز الأرقام التسلسلية في إدخالات حجز المخزون، لذا عليك إلغاء حجزها قبل المتابعة." @@ -48847,21 +48870,25 @@ msgstr "التسلسل والدفعة" #: erpnext/stock/report/incorrect_serial_and_batch_bundle/incorrect_serial_and_batch_bundle.py:31 #: erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py:80 #: erpnext/stock/report/stock_ledger/stock_ledger.py:411 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:177 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:188 #: erpnext/subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.json #: erpnext/workspace_sidebar/stock.json msgid "Serial and Batch Bundle" msgstr "حزمة التسلسل والدفعة" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2180 +#: erpnext/stock/doctype/item/item.py:1122 +msgid "Serial and Batch Bundle Exists" +msgstr "" + +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2230 msgid "Serial and Batch Bundle created" msgstr "تم إنشاء حزمة التسلسل والدفعة" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2274 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2324 msgid "Serial and Batch Bundle updated" msgstr "تم تحديث حزمة التسلسل والدفعة" -#: erpnext/controllers/stock_controller.py:196 +#: erpnext/controllers/stock_controller.py:232 msgid "Serial and Batch Bundle {0} is already used in {1} {2}." msgstr "تم استخدام حزمة Serial and Batch {0} بالفعل في {1} {2}." @@ -48869,7 +48896,7 @@ msgstr "تم استخدام حزمة Serial and Batch {0} بالفعل في {1} msgid "Serial and Batch Bundle {0} is not submitted" msgstr "لم يتم إرسال حزمة البيانات التسلسلية والدفعية {0}" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2250 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2300 msgid "Serial and Batch Bundle {0} is submitted and its entries cannot be modified." msgstr "" @@ -49123,12 +49150,12 @@ msgid "Service Stop Date" msgstr "تاريخ توقف الخدمة" #: erpnext/accounts/deferred_revenue.py:45 -#: erpnext/public/js/controllers/transaction.js:1793 +#: erpnext/public/js/controllers/transaction.js:1815 msgid "Service Stop Date cannot be after Service End Date" msgstr "لا يمكن أن يكون تاريخ إيقاف الخدمة بعد تاريخ انتهاء الخدمة" #: erpnext/accounts/deferred_revenue.py:42 -#: erpnext/public/js/controllers/transaction.js:1790 +#: erpnext/public/js/controllers/transaction.js:1812 msgid "Service Stop Date cannot be before Service Start Date" msgstr "لا يمكن أن يكون تاريخ إيقاف الخدمة قبل تاريخ بدء الخدمة" @@ -49338,11 +49365,11 @@ msgstr "تم تعيينه بواسطة قالب ضريبة الصنف" msgid "Set closing balance as per bank statement" msgstr "" -#: erpnext/setup/doctype/company/company.py:547 +#: erpnext/setup/doctype/company/company.py:548 msgid "Set default inventory account for perpetual inventory" msgstr "تعيين حساب المخزون الافتراضي للمخزون الدائم" -#: erpnext/setup/doctype/company/company.py:573 +#: erpnext/setup/doctype/company/company.py:574 msgid "Set default {0} account for non stock items" msgstr "قم بتعيين الحساب الافتراضي {0} للعناصر غير المخزنة" @@ -49409,15 +49436,15 @@ msgstr "" msgid "Set valuation rate for rejected Materials" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:898 +#: erpnext/assets/doctype/asset/asset.py:902 msgid "Set {0} in asset category {1} for company {2}" msgstr "قم بتعيين {0} في فئة الأصول {1} للشركة {2}" -#: erpnext/assets/doctype/asset/asset.py:1231 +#: erpnext/assets/doctype/asset/asset.py:1235 msgid "Set {0} in asset category {1} or company {2}" msgstr "تعيين {0} في فئة الأصول {1} أو الشركة {2}" -#: erpnext/assets/doctype/asset/asset.py:1228 +#: erpnext/assets/doctype/asset/asset.py:1232 msgid "Set {0} in company {1}" msgstr "قم بتعيين {0} في الشركة {1}" @@ -49470,7 +49497,7 @@ msgstr "وضع الأحداث إلى {0}، لأن الموظف المرفقة أ msgid "Setting Item Locations..." msgstr "تحديد مواقع العناصر..." -#: erpnext/setup/setup_wizard/setup_wizard.py:25 +#: erpnext/setup/setup_wizard/setup_wizard.py:26 msgid "Setting defaults" msgstr "تعيين الإعدادات الافتراضية" @@ -49480,12 +49507,12 @@ msgstr "تعيين الإعدادات الافتراضية" msgid "Setting the account as a Company Account is necessary for Bank Reconciliation" msgstr "يُعدّ تحديد الحساب كحساب شركة أمراً ضرورياً لإجراء مطابقة الحسابات المصرفية." -#: erpnext/setup/setup_wizard/setup_wizard.py:20 +#: erpnext/setup/setup_wizard/setup_wizard.py:21 msgid "Setting up company" msgstr "تأسيس شركة" #: erpnext/manufacturing/doctype/bom/bom.py:1218 -#: erpnext/manufacturing/doctype/work_order/work_order.py:1562 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1586 msgid "Setting {0} is required" msgstr "الإعداد {0} مطلوب" @@ -49543,7 +49570,7 @@ msgstr "" msgid "Setup Warehouse" msgstr "" -#: erpnext/public/js/setup_wizard.js:25 +#: erpnext/public/js/setup_wizard.js:120 msgid "Setup your organization" msgstr "قم بتأسيس مؤسستك" @@ -49625,7 +49652,7 @@ msgid "Shelf Life in Days" msgstr "مدة الصلاحية بالأيام" #. Label of the shift (Link) field in DocType 'Depreciation Schedule' -#: erpnext/assets/doctype/asset/asset.js:391 +#: erpnext/assets/doctype/asset/asset.js:396 #: erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json msgid "Shift" msgstr "يحول" @@ -49697,7 +49724,7 @@ msgstr "نوع الشحنة" msgid "Shipment details" msgstr "تفاصيل الشحنة" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:768 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:769 msgid "Shipments" msgstr "شحنات" @@ -49732,7 +49759,7 @@ msgstr "الشحن العنوان الاسم" msgid "Shipping Address Template" msgstr "نموذج عنوان الشحن" -#: erpnext/controllers/accounts_controller.py:575 +#: erpnext/controllers/accounts_controller.py:595 msgid "Shipping Address does not belong to the {0}" msgstr "عنوان الشحن لا ينتمي إلى {0}" @@ -50231,7 +50258,7 @@ msgstr "أعزب" #. Option for the 'Bank Entry Type' (Select) field in DocType 'Bank Transaction #. Rule' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:282 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:283 #: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.json msgid "Single Account" msgstr "" @@ -50316,11 +50343,11 @@ msgid "Sold by" msgstr "يباع بواسطة" #: erpnext/accounts/report/financial_ratios/financial_ratios.js:55 -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:168 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:170 msgid "Solvency Ratios" msgstr "نسب الملاءة المالية" -#: erpnext/controllers/accounts_controller.py:4369 +#: erpnext/controllers/accounts_controller.py:4389 msgid "Some required Company details are missing. You don't have permission to update them. Please contact your System Manager." msgstr "بعض بيانات الشركة المطلوبة مفقودة. ليس لديك صلاحية لتحديثها. يرجى الاتصال بمدير النظام." @@ -50435,7 +50462,7 @@ msgstr "نوع المصدر" #: erpnext/selling/doctype/sales_order_item/sales_order_item.json #: erpnext/stock/dashboard/item_dashboard.js:227 #: erpnext/stock/doctype/material_request_item/material_request_item.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:815 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:820 #: erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json msgid "Source Warehouse" msgstr "مصدر مستودع" @@ -50455,7 +50482,7 @@ msgstr "رابط عنوان مستودع المصدر" msgid "Source Warehouse is mandatory for the Item {0}." msgstr "يُعد مستودع المصدر إلزاميًا للعنصر {0}." -#: erpnext/manufacturing/doctype/work_order/work_order.py:374 +#: erpnext/manufacturing/doctype/work_order/work_order.py:375 msgid "Source Warehouse {0} must be same as Customer Warehouse {1} in the Subcontracting Inward Order." msgstr "يجب أن يكون مستودع المصدر {0} هو نفسه مستودع العميل {1} في أمر التوريد الداخلي للتعاقد من الباطن." @@ -50525,15 +50552,15 @@ msgstr "تجاوز الإنفاق على الحساب {0} ({1}) بين {2} و {3 msgid "Spent" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:691 +#: erpnext/assets/doctype/asset/asset.js:696 #: erpnext/stock/doctype/batch/batch.js:104 #: erpnext/stock/doctype/batch/batch.js:185 #: erpnext/support/doctype/issue/issue.js:114 msgid "Split" msgstr "انشق، مزق" -#: erpnext/assets/doctype/asset/asset.js:147 -#: erpnext/assets/doctype/asset/asset.js:675 +#: erpnext/assets/doctype/asset/asset.js:152 +#: erpnext/assets/doctype/asset/asset.js:680 msgid "Split Asset" msgstr "تقسيم الأصول" @@ -50557,11 +50584,11 @@ msgstr "انفصل عن" msgid "Split Issue" msgstr "تقسيم القضية" -#: erpnext/assets/doctype/asset/asset.js:681 +#: erpnext/assets/doctype/asset/asset.js:686 msgid "Split Qty" msgstr "تقسيم الكمية" -#: erpnext/assets/doctype/asset/asset.py:1370 +#: erpnext/assets/doctype/asset/asset.py:1374 msgid "Split Quantity must be less than Asset Quantity" msgstr "يجب أن تكون كمية التقسيم أقل من كمية الأصل" @@ -50647,7 +50674,7 @@ msgstr "المصاريف الخاضعة للضريبة القياسية" #: erpnext/setup/setup_wizard/operations/defaults_setup.py:70 #: erpnext/setup/setup_wizard/operations/install_fixtures.py:493 -#: erpnext/stock/doctype/item/item.py:275 erpnext/tests/utils.py:283 +#: erpnext/stock/doctype/item/item.py:276 erpnext/tests/utils.py:283 #: erpnext/tests/utils.py:2518 msgid "Standard Selling" msgstr "البيع القياسية" @@ -50786,7 +50813,7 @@ msgstr "بدءا من موقف من أعلى الحافة" msgid "Starts With" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:201 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:202 msgid "Starts with" msgstr "" @@ -50846,7 +50873,7 @@ msgstr "يجب إلغاء الحالة أو إكمالها" msgid "Status must be one of {0}" msgstr "يجب أن تكون حالة واحدة من {0}" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:275 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:279 msgid "Status set to rejected as there are one or more rejected readings." msgstr "تم تعيين الحالة إلى مرفوض لوجود قراءة واحدة أو أكثر مرفوضة." @@ -50861,6 +50888,7 @@ msgstr "تم تعيين الحالة إلى مرفوض لوجود قراءة و #: erpnext/accounts/report/account_balance/account_balance.js:57 #: erpnext/desktop_icon/stock.json #: erpnext/manufacturing/doctype/bom/bom_dashboard.py:14 +#: erpnext/public/js/setup_wizard.js:92 #: erpnext/setup/doctype/incoterm/incoterm.json #: erpnext/setup/workspace/home/home.json #: erpnext/stock/doctype/item/item_list.js:21 @@ -51094,7 +51122,7 @@ msgstr "يتم إعادة ترحيل قيود دفتر الأستاذ العام #. Name of a DocType #: erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.json #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:113 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:138 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:149 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:30 msgid "Stock Ledger Entry" msgstr "حركة سجل المخزن" @@ -51248,7 +51276,7 @@ msgstr "المخزون المتلقي ولكن غير مفوتر" #. Label of a Link in the Stock Workspace #. Label of a Workspace Sidebar Item #: erpnext/setup/workspace/home/home.json -#: erpnext/stock/doctype/item/item.py:668 +#: erpnext/stock/doctype/item/item.py:669 #: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json #: erpnext/stock/doctype/stock_settings/stock_settings.js:155 #: erpnext/stock/workspace/stock/stock.json @@ -51261,7 +51289,7 @@ msgstr "جرد المخزون" msgid "Stock Reconciliation Item" msgstr "جرد عناصر المخزون" -#: erpnext/stock/doctype/item/item.py:668 +#: erpnext/stock/doctype/item/item.py:669 msgid "Stock Reconciliations" msgstr "تسويات المخزون" @@ -51326,7 +51354,7 @@ msgstr "تم إلغاء إدخالات حجز المخزون" #: erpnext/controllers/subcontracting_inward_controller.py:1037 #: erpnext/manufacturing/doctype/production_plan/production_plan.py:2245 -#: erpnext/manufacturing/doctype/work_order/work_order.py:2338 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2353 #: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1777 msgid "Stock Reservation Entries Created" msgstr "تم إنشاء قيود حجز المخزون" @@ -51354,7 +51382,7 @@ msgstr "لا يمكن تحديث إدخال حجز المخزون لأنه تم msgid "Stock Reservation Entry created against a Pick List cannot be updated. If you need to make changes, we recommend canceling the existing entry and creating a new one." msgstr "لا يمكن تعديل إدخال حجز المخزون المُنشأ مقابل قائمة الاختيار. إذا كنت ترغب في إجراء تغييرات، فننصحك بإلغاء الإدخال الحالي وإنشاء إدخال جديد." -#: erpnext/stock/doctype/delivery_note/delivery_note.py:537 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:538 msgid "Stock Reservation Warehouse Mismatch" msgstr "عدم تطابق مستودع حجز المخزون" @@ -51692,14 +51720,14 @@ msgstr "حجر" msgid "Stop Reason" msgstr "توقف السبب" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1170 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1177 msgid "Stopped Work Order cannot be cancelled, Unstop it first to cancel" msgstr "لا يمكن إلغاء طلب العمل المتوقف ، قم بإلغاء إيقافه أولاً للإلغاء" -#: erpnext/setup/doctype/company/company.py:384 +#: erpnext/setup/doctype/company/company.py:385 #: erpnext/setup/setup_wizard/operations/defaults_setup.py:33 #: erpnext/setup/setup_wizard/operations/install_fixtures.py:537 -#: erpnext/stock/doctype/item/item.py:312 erpnext/tests/utils.py:248 +#: erpnext/stock/doctype/item/item.py:313 erpnext/tests/utils.py:248 msgid "Stores" msgstr "مخازن" @@ -52294,7 +52322,7 @@ msgstr "تمت التسوية بنجاح\\n
    \\nSuccessfully Reconciled" msgid "Successfully Set Supplier" msgstr "بنجاح تعيين المورد" -#: erpnext/stock/doctype/item/item.py:390 +#: erpnext/stock/doctype/item/item.py:391 msgid "Successfully changed Stock UOM, please redefine conversion factors for new UOM." msgstr "تم تغيير وحدة قياس المخزون بنجاح، يرجى إعادة تعريف عوامل التحويل لوحدة القياس الجديدة." @@ -52342,7 +52370,7 @@ msgstr "تم تحديث {0} سجل بنجاح من أصل {1}. انقر على \ msgid "Successfully updated {0} records." msgstr "تم تحديث سجلات {0} بنجاح." -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:263 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:264 msgid "Suggest creating a" msgstr "" @@ -52450,7 +52478,7 @@ msgstr "الموردة الكمية" #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.js:34 #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:189 #: erpnext/accounts/report/purchase_register/purchase_register.js:21 -#: erpnext/accounts/report/purchase_register/purchase_register.py:171 +#: erpnext/accounts/report/purchase_register/purchase_register.py:187 #: erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:29 #: erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:37 #: erpnext/assets/doctype/asset/asset.json @@ -52592,7 +52620,7 @@ msgstr "تفاصيل المورد" #: erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:198 #: erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py:178 #: erpnext/accounts/report/purchase_register/purchase_register.js:27 -#: erpnext/accounts/report/purchase_register/purchase_register.py:186 +#: erpnext/accounts/report/purchase_register/purchase_register.py:202 #: erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:55 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:503 @@ -52691,7 +52719,7 @@ msgstr "ملخص دفتر الأستاذ" #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1172 #: erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:156 #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:196 -#: erpnext/accounts/report/purchase_register/purchase_register.py:177 +#: erpnext/accounts/report/purchase_register/purchase_register.py:193 #: erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:35 #: erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:73 #: erpnext/buying/doctype/buying_settings/buying_settings.json @@ -53039,7 +53067,7 @@ msgstr "" msgid "System will fetch all the entries if limit value is zero." msgstr "سيقوم النظام بجلب كل الإدخالات إذا كانت قيمة الحد صفرا." -#: erpnext/controllers/accounts_controller.py:2236 +#: erpnext/controllers/accounts_controller.py:2256 msgid "System will not check over billing since amount for Item {0} in {1} is zero" msgstr "لن يتحقق النظام من الفواتير الزائدة لأن مبلغ العنصر {0} في {1} يساوي صفرًا" @@ -53213,7 +53241,7 @@ msgstr "الهدف الكمية" #: erpnext/stock/dashboard/item_dashboard.js:234 #: erpnext/stock/doctype/delivery_note_item/delivery_note_item.json #: erpnext/stock/doctype/material_request_item/material_request_item.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:821 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:826 #: erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json msgid "Target Warehouse" msgstr "المخزن المستهدف" @@ -53229,7 +53257,7 @@ msgstr "عنوان المستودع المستهدف" msgid "Target Warehouse Address Link" msgstr "رابط عنوان مستودع تارجت" -#: erpnext/manufacturing/doctype/work_order/work_order.py:319 +#: erpnext/manufacturing/doctype/work_order/work_order.py:320 msgid "Target Warehouse Reservation Error" msgstr "خطأ في حجز مستودع تارجت" @@ -53237,7 +53265,7 @@ msgstr "خطأ في حجز مستودع تارجت" msgid "Target Warehouse for Finished Good must be same as Finished Good Warehouse {1} in Work Order {2} linked to the Subcontracting Inward Order." msgstr "يجب أن يكون المستودع المستهدف للمنتج النهائي هو نفسه مستودع المنتج النهائي {1} في أمر العمل {2} المرتبط بأمر التوريد الداخلي للمقاول من الباطن." -#: erpnext/manufacturing/doctype/work_order/work_order.py:858 +#: erpnext/manufacturing/doctype/work_order/work_order.py:865 msgid "Target Warehouse is required before Submit" msgstr "يلزم وجود مستودع Target قبل الإرسال" @@ -53245,7 +53273,7 @@ msgstr "يلزم وجود مستودع Target قبل الإرسال" msgid "Target Warehouse is set for some items but the customer is not an internal customer." msgstr "تم إعداد مستودع Target لبعض المنتجات، لكن العميل ليس عميلاً داخلياً." -#: erpnext/manufacturing/doctype/work_order/work_order.py:390 +#: erpnext/manufacturing/doctype/work_order/work_order.py:391 msgid "Target Warehouse {0} must be same as Delivery Warehouse {1} in the Subcontracting Inward Order Item." msgstr "يجب أن يكون المستودع المستهدف {0} هو نفسه مستودع التسليم {1} في بند أمر التوريد الداخلي للتعاقد من الباطن." @@ -53465,8 +53493,8 @@ msgstr "الرقم الضريبي" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json #: erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.js:86 #: erpnext/accounts/report/general_ledger/general_ledger.js:142 -#: erpnext/accounts/report/purchase_register/purchase_register.py:192 -#: erpnext/accounts/report/sales_register/sales_register.py:215 +#: erpnext/accounts/report/purchase_register/purchase_register.py:208 +#: erpnext/accounts/report/sales_register/sales_register.py:229 #: erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:67 #: erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py:205 #: erpnext/accounts/report/tds_computation_summary/tds_computation_summary.py:57 @@ -53555,7 +53583,7 @@ msgstr "" msgid "Tax Template is mandatory." msgstr "قالب الضرائب إلزامي." -#: erpnext/accounts/report/sales_register/sales_register.py:295 +#: erpnext/accounts/report/sales_register/sales_register.py:309 msgid "Tax Total" msgstr "مجموع الضرائب" @@ -53847,7 +53875,7 @@ msgstr "خصم الضرائب والرسوم" msgid "Taxes and Charges Deducted (Company Currency)" msgstr "الضرائب والرسوم مقطوعة (عملة الشركة)" -#: erpnext/stock/doctype/item/item.py:403 +#: erpnext/stock/doctype/item/item.py:404 msgid "Taxes row #{0}: {1} cannot be smaller than {2}" msgstr "لا يمكن أن يكون صف الضرائب #{0}: {1} أصغر من {2}" @@ -54115,7 +54143,7 @@ msgstr "قالب الشروط والأحكام" #: erpnext/accounts/report/inactive_sales_items/inactive_sales_items.js:8 #: erpnext/accounts/report/inactive_sales_items/inactive_sales_items.py:22 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:259 -#: erpnext/accounts/report/sales_register/sales_register.py:209 +#: erpnext/accounts/report/sales_register/sales_register.py:223 #: erpnext/crm/doctype/lead/lead.json #: erpnext/crm/doctype/opportunity/opportunity.json #: erpnext/crm/doctype/prospect/prospect.json @@ -54246,7 +54274,7 @@ msgstr "سيتم إلغاء إدخالات دفتر الأستاذ العام ف msgid "The Loyalty Program isn't valid for the selected company" msgstr "برنامج الولاء غير صالح للشركة المختارة" -#: erpnext/accounts/doctype/payment_request/payment_request.py:1108 +#: erpnext/accounts/doctype/payment_request/payment_request.py:1109 msgid "The Payment Request {0} is already paid, cannot process payment twice" msgstr "تم دفع طلب الدفع {0} بالفعل، ولا يمكن معالجة الدفع مرتين." @@ -54270,7 +54298,7 @@ msgstr "يرتبط مندوب المبيعات بـ {0}" msgid "The Serial No at Row #{0}: {1} is not available in warehouse {2}." msgstr "الرقم التسلسلي في الصف #{0}: {1} غير متوفر في المستودع {2}." -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2672 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2722 msgid "The Serial No {0} is reserved against the {1} {2} and cannot be used for any other transaction." msgstr "الرقم التسلسلي {0} محجوز مقابل {1} {2} ولا يمكن استخدامه لأي معاملة أخرى." @@ -54288,7 +54316,7 @@ msgstr "يُعرف إدخال المخزون من نوع "التصنيع&qu msgid "The account head under Liability or Equity, in which Profit/Loss will be booked" msgstr "رئيس الحساب تحت المسؤولية أو الأسهم، والتي سيتم حجز الربح / الخسارة" -#: erpnext/accounts/doctype/payment_request/payment_request.py:1003 +#: erpnext/accounts/doctype/payment_request/payment_request.py:1004 msgid "The allocated amount is greater than the outstanding amount of Payment Request {0}" msgstr "المبلغ المخصص أكبر من المبلغ المستحق لطلب الدفع {0}" @@ -54310,7 +54338,7 @@ msgstr "" msgid "The bank account is not a company account. Please select a company account" msgstr "" -#: erpnext/controllers/stock_controller.py:1357 +#: erpnext/controllers/stock_controller.py:1397 msgid "The batch {0} is already reserved in {1} {2}. So, cannot proceed with the {3} {4}, which is created against the {5} {6}." msgstr "تم حجز الدفعة {0} بالفعل في {1} {2}. لذا، لا يمكن المتابعة مع {3} {4}، والتي تم إنشاؤها مقابل {5} {6}." @@ -54375,7 +54403,7 @@ msgstr "لا يمكن ترك الحقل من المساهمين فارغا" msgid "The field To Shareholder cannot be blank" msgstr "لا يمكن ترك الحقل للمساهم فارغا" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:387 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:388 msgid "The field {0} in row {1} is not set" msgstr "الحقل {0} في الصف {1} غير مُعيّن" @@ -54416,11 +54444,11 @@ msgstr "فشلت الأصول التالية في تسجيل قيود الإهل msgid "The following batches are expired, please restock them:
    {0}" msgstr "" -#: erpnext/controllers/accounts_controller.py:426 +#: erpnext/controllers/accounts_controller.py:446 msgid "The following cancelled repost entries exist for {0}:

    {1}

    Kindly delete these entries before continuing." msgstr "" -#: erpnext/stock/doctype/item/item.py:948 +#: erpnext/stock/doctype/item/item.py:949 msgid "The following deleted attributes exist in Variants but not in the Template. You can either delete the Variants or keep the attribute(s) in template." msgstr "توجد السمات المحذوفة التالية في المتغيرات ولكن ليس في القالب. يمكنك إما حذف المتغيرات أو الاحتفاظ بالسمة (السمات) في القالب." @@ -54469,7 +54497,7 @@ msgstr "" msgid "The item {item} is not marked as {type_of} item. You can enable it as {type_of} item from its Item master." msgstr "العنصر {item} غير مُصنّف كعنصر {type_of} . يمكنك تفعيله كعنصر {type_of} من قائمة العناصر الرئيسية." -#: erpnext/stock/doctype/item/item.py:670 +#: erpnext/stock/doctype/item/item.py:671 msgid "The items {0} and {1} are present in the following {2} :" msgstr "العنصران {0} و {1} موجودان في العنصر التالي {2} :" @@ -54485,7 +54513,7 @@ msgstr "بطاقة الوظيفة {0} في حالة {1} ولا يمكنك إكم msgid "The job card {0} is in {1} state and you cannot start it again." msgstr "بطاقة العمل {0} في حالة {1} ولا يمكنك تشغيلها مرة أخرى." -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:87 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:129 msgid "The last account row must not have any debit or credit amounts set." msgstr "" @@ -54527,7 +54555,7 @@ msgstr "لا يمكن أن تكون العملية {0} عملية فرعية" msgid "The original invoice should be consolidated before or along with the return invoice." msgstr "ينبغي تجميع الفاتورة الأصلية قبل أو مع فاتورة الإرجاع." -#: erpnext/controllers/accounts_controller.py:204 +#: erpnext/controllers/accounts_controller.py:224 msgid "The outstanding amount {0} in {1} is lesser than {2}. Updating the outstanding to this invoice." msgstr "" @@ -54602,7 +54630,7 @@ msgstr "حساب التغيير المحدد {} لا ينتمي إلى الشر msgid "The selected item cannot have Batch" msgstr "العنصر المحدد لا يمكن أن يكون دفعة" -#: erpnext/assets/doctype/asset/asset.js:656 +#: erpnext/assets/doctype/asset/asset.js:661 msgid "The sell quantity is less than the total asset quantity. The remaining quantity will be split into a new asset. This action cannot be undone.

    Do you want to continue?" msgstr "كمية البيع أقل من إجمالي كمية الأصل. سيتم تقسيم الكمية المتبقية إلى أصل جديد. لا يمكن التراجع عن هذا الإجراء.

    هل تريد المتابعة؟" @@ -54729,11 +54757,11 @@ msgstr "" msgid "The {0} ({1}) must be equal to {2} ({3})" msgstr "يجب أن يكون {0} ({1}) مساويًا لـ {2} ({3})" -#: erpnext/public/js/controllers/transaction.js:3373 +#: erpnext/public/js/controllers/transaction.js:3398 msgid "The {0} contains Unit Price Items." msgstr "يحتوي {0} على عناصر سعر الوحدة." -#: erpnext/stock/doctype/item/item.py:474 +#: erpnext/stock/doctype/item/item.py:475 msgid "The {0} prefix '{1}' already exists. Please change the Serial No Series, otherwise you will get a Duplicate Entry error." msgstr "البادئة {0} '{1}' موجودة بالفعل. يُرجى تغيير رقم التسلسل، وإلا ستظهر لك رسالة خطأ \"إدخال مكرر\"." @@ -54753,7 +54781,7 @@ msgstr "يتم استخدام {0} {1} لحساب تكلفة التقييم لل msgid "Then Pricing Rules are filtered out based on Customer, Customer Group, Territory, Supplier, Supplier Type, Campaign, Sales Partner etc." msgstr "ثم يتم تصفية قواعد التسعير بناءً على العميل، ومجموعة العملاء، والمنطقة، والمورد، ونوع المورد، والحملة، وشريك المبيعات، وما إلى ذلك." -#: erpnext/assets/doctype/asset/asset.py:727 +#: erpnext/assets/doctype/asset/asset.py:731 msgid "There are active maintenance or repairs against the asset. You must complete all of them before cancelling the asset." msgstr "هناك صيانة نشطة أو إصلاحات ضد الأصل. يجب عليك إكمالها جميعًا قبل إلغاء الأصل." @@ -54790,7 +54818,7 @@ msgstr "لا توجد مواعيد متاحة في هذا التاريخ" msgid "There are no transactions in the system for the selected bank account and dates that match the filters." msgstr "" -#: erpnext/stock/doctype/item/item.js:1204 +#: erpnext/stock/doctype/item/item.js:1290 msgid "There are two options to maintain valuation of stock. FIFO (first in - first out) and Moving Average. To understand this topic in detail please visit Item Valuation, FIFO and Moving Average." msgstr "هناك خياران لتقييم المخزون: طريقة الوارد أولاً يُصرف أولاً (FIFO) وطريقة المتوسط المتحرك. لفهم هذا الموضوع بالتفصيل، يُرجى زيارة تقييم الأصناف، وطريقة الوارد أولاً يُصرف أولاً، وطريقة المتوسط المتحرك." @@ -54890,7 +54918,7 @@ msgstr "هذا العنصر هو متغير {0} (قالب)." msgid "This Month's Summary" msgstr "ملخص هذا الشهر" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:937 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:943 msgid "This PDF is password protected. Please set the correct statement password on the Bank Account and try again." msgstr "" @@ -54924,7 +54952,7 @@ msgstr "سيؤدي هذا الإجراء إلى إلغاء ربط هذا الح msgid "This allows creation of sales orders from quotations that have passed their expiration date, providing flexibility in processing orders despite outdated quotes." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:431 +#: erpnext/assets/doctype/asset/asset.py:435 msgid "This asset category is marked as non-depreciable. Please disable depreciation calculation or choose a different category." msgstr "تم تصنيف هذه الفئة من الأصول على أنها غير قابلة للاستهلاك. يرجى تعطيل حساب الاستهلاك أو اختيار فئة أخرى." @@ -55021,7 +55049,7 @@ msgstr "هذه مجموعة مورِّد جذر ولا يمكن تحريرها." msgid "This is a root territory and cannot be edited." msgstr "هذا هو الجذر الأرض والتي لا يمكن تحريرها." -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:424 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:425 msgid "This is auto computed to balance the journal entry." msgstr "" @@ -55049,7 +55077,7 @@ msgstr "يتم إجراء ذلك للتعامل مع محاسبة الحالات msgid "This is enabled by default. If you want to plan materials for sub-assemblies of the Item you're manufacturing leave this enabled. If you plan and manufacture the sub-assemblies separately, you can disable this checkbox." msgstr "هذا الخيار مُفعّل افتراضيًا. إذا كنت ترغب في تخطيط المواد اللازمة لتجميعات فرعية للمنتج الذي تقوم بتصنيعه، فاترك هذا الخيار مُفعّلًا. أما إذا كنت تخطط وتُصنّع التجميعات الفرعية بشكل منفصل، فيمكنك تعطيل هذا الخيار." -#: erpnext/stock/doctype/item/item.js:1192 +#: erpnext/stock/doctype/item/item.js:1278 msgid "This is for raw material Items that'll be used to create finished goods. If the Item is an additional service like 'washing' that'll be used in the BOM, keep this unchecked." msgstr "هذا الخيار مخصص للمواد الخام التي ستُستخدم في تصنيع المنتجات النهائية. إذا كانت المادة خدمة إضافية مثل \"الغسيل\" التي ستُستخدم في قائمة المواد، فاترك هذا الخيار غير مُحدد." @@ -55057,13 +55085,13 @@ msgstr "هذا الخيار مخصص للمواد الخام التي ستُست msgid "This is not a valid formula. Check the variable used in the formula." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:198 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:266 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:279 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:199 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:267 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:280 msgid "This is required" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:599 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:575 msgid "This is the bank account entry. You cannot edit it." msgstr "" @@ -55112,7 +55140,7 @@ msgstr "يمكن تحديد هذا الخيار لتعديل حقلي \"تاري msgid "This option is useful if you want to ensure a constant supply of raw materials/products and avoid shortage. A Material Request will be raised automatically when stock reached the re-order level defined in the Item form." msgstr "" -#: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:185 +#: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:180 msgid "This report shows all entries in the system where the clearance date is before the posting date which is incorrect." msgstr "" @@ -55148,7 +55176,7 @@ msgstr "تم إنشاء هذا الجدول عندما تم إرجاع الأص msgid "This schedule was created when Asset {0} was scrapped." msgstr "تم إنشاء هذا الجدول عندما تم إلغاء الأصل {0} ." -#: erpnext/assets/doctype/asset/asset.py:1505 +#: erpnext/assets/doctype/asset/asset.py:1509 msgid "This schedule was created when Asset {0} was {1} into new Asset {2}." msgstr "تم إنشاء هذا الجدول عندما تم تحويل الأصل {0} إلى الأصل الجديد {2}{1} ." @@ -55174,11 +55202,11 @@ msgstr "" msgid "This section allows the user to set the Body and Closing text of the Dunning Letter for the Dunning Type based on language, which can be used in Print." msgstr "يسمح هذا القسم للمستخدم بتعيين النص الأساسي ونص الإغلاق لحرف المطالبة لنوع المطالبة بناءً على اللغة ، والتي يمكن استخدامها في الطباعة." -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1184 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1205 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1257 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1291 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1310 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1190 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1211 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1263 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1297 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1316 msgid "This statement has already been imported." msgstr "" @@ -55225,7 +55253,7 @@ msgstr "" msgid "This will be auto-populated if not set." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:264 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:265 msgid "This will just suggest creating a new entry, and will not automatically create it." msgstr "" @@ -55460,7 +55488,7 @@ msgstr "على فاتورة" msgid "To Currency" msgstr "إلى العملات" -#: erpnext/controllers/accounts_controller.py:625 +#: erpnext/controllers/accounts_controller.py:645 #: erpnext/setup/doctype/holiday_list/holiday_list.py:121 msgid "To Date cannot be before From Date" msgstr "(الى تاريخ) لا يمكن ان يكون قبل (من تاريخ)" @@ -55730,11 +55758,11 @@ msgid "To include sub-assembly costs and secondary items in Finished Goods on a msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.py:2268 -#: erpnext/controllers/accounts_controller.py:3255 +#: erpnext/controllers/accounts_controller.py:3275 msgid "To include tax in row {0} in Item rate, taxes in rows {1} must also be included" msgstr "ل تشمل الضريبة في الصف {0} في معدل الإغلاق ، {1} ويجب أيضا تضمين الضرائب في الصفوف" -#: erpnext/stock/doctype/item/item.py:692 +#: erpnext/stock/doctype/item/item.py:693 msgid "To merge, following properties must be same for both items" msgstr "لدمج ، يجب أن يكون نفس الخصائص التالية ل كلا البندين" @@ -56085,7 +56113,7 @@ msgid "Total Costing Amount (via Timesheet)" msgstr "إجمالي مبلغ التكلفة (عبر الجداول الزمنية)" #. Label of the total_credit (Currency) field in DocType 'Journal Entry' -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:788 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:764 #: erpnext/accounts/doctype/journal_entry/journal_entry.json msgid "Total Credit" msgstr "إجمالي الائتمان" @@ -56108,7 +56136,7 @@ msgid "Total Credits" msgstr "" #. Label of the total_debit (Currency) field in DocType 'Journal Entry' -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:784 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:760 #: erpnext/accounts/doctype/journal_entry/journal_entry.json msgid "Total Debit" msgstr "مجموع الخصم" @@ -56343,7 +56371,7 @@ msgstr "إجمالي المبلغ المستحق" msgid "Total Paid Amount" msgstr "إجمالي المبلغ المدفوع" -#: erpnext/controllers/accounts_controller.py:2810 +#: erpnext/controllers/accounts_controller.py:2830 msgid "Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total" msgstr "يجب أن يكون إجمالي مبلغ الدفع في جدول الدفع مساويا للمجموع الكبير / المستدير" @@ -56477,7 +56505,7 @@ msgid "Total Tasks" msgstr "إجمالي المهام" #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:621 -#: erpnext/accounts/report/purchase_register/purchase_register.py:263 +#: erpnext/accounts/report/purchase_register/purchase_register.py:279 msgid "Total Tax" msgstr "مجموع الضرائب" @@ -56630,7 +56658,7 @@ msgstr "إجمالي وقت العمل على محطة العمل (بالساع msgid "Total allocated percentage for sales team should be 100" msgstr "مجموع النسبة المئوية المخصصة ل فريق المبيعات يجب أن يكون 100" -#: erpnext/selling/doctype/customer/customer.py:194 +#: erpnext/selling/doctype/customer/customer.py:195 msgid "Total contribution percentage should be equal to 100" msgstr "يجب أن تكون نسبة المساهمة الإجمالية مساوية 100" @@ -56781,7 +56809,7 @@ msgstr "تاريخ المعاملة" msgid "Transaction Dates" msgstr "" -#: erpnext/setup/doctype/company/company.py:1090 +#: erpnext/setup/doctype/company/company.py:1091 msgid "Transaction Deletion Document {0} has been triggered for company {1}" msgstr "" @@ -56873,7 +56901,7 @@ msgstr "عتبة المعاملة" #. Label of the transaction_type (Data) field in DocType 'Bank Transaction' #. Label of the transaction_type (Select) field in DocType 'Bank Transaction #. Rule' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:106 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:107 #: erpnext/accounts/doctype/bank_statement_import_log_column_map/bank_statement_import_log_column_map.json #: erpnext/accounts/doctype/bank_transaction/bank_transaction.json #: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.json @@ -56942,7 +56970,7 @@ msgstr "" #. Group in Bank Account's connections #: erpnext/accounts/doctype/bank_account/bank_account.json -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1057 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1058 #: erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template_dashboard.py:12 #: erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template_dashboard.py:13 #: erpnext/manufacturing/doctype/job_card/job_card_dashboard.py:9 @@ -56985,7 +57013,7 @@ msgstr "تم تعطيل المعاملات التي تستخدم فاتورة ا #: banking/src/components/features/ActionLog/ActionLogDialogBody.tsx:301 #: banking/src/components/features/BankReconciliation/MatchAndReconcile.tsx:515 #: banking/src/components/features/BankReconciliation/MatchAndReconcile.tsx:589 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:271 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:272 #: banking/src/components/features/BankReconciliation/TransferModal.tsx:17 #: banking/src/components/features/BankReconciliation/TransferModalContent.tsx:124 #: banking/src/components/features/BankReconciliation/TransferModalContent.tsx:361 @@ -57005,7 +57033,7 @@ msgstr "نقل" msgid "Transfer Account" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:155 +#: erpnext/assets/doctype/asset/asset.js:160 msgid "Transfer Asset" msgstr "نقل الأصول" @@ -57102,7 +57130,7 @@ msgstr "" msgid "Transit" msgstr "عبور" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:606 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:611 msgid "Transit Entry" msgstr "مدخل النقل" @@ -57240,7 +57268,7 @@ msgid "Try the {0} for a better experience." msgstr "" #: erpnext/accounts/report/financial_ratios/financial_ratios.js:55 -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:198 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:200 msgid "Turnover Ratios" msgstr "معدلات دوران الموظفين" @@ -57282,7 +57310,7 @@ msgstr "نوع الدفع" msgid "Type of Transaction" msgstr "نوع المعاملة" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:194 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:195 msgid "Type of check" msgstr "" @@ -57584,7 +57612,7 @@ msgstr "تعذر العثور على سعر الصرف من {0} إلى {1} لت msgid "Unable to find score starting at {0}. You need to have standing scores covering 0 to 100" msgstr "تعذر العثور على النتيجة بدءا من {0}. يجب أن يكون لديك درجات دائمة تغطي 0 إلى 100" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1128 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1135 msgid "Unable to find the time slot in the next {0} days for the operation {1}. Please increase the 'Capacity Planning For (Days)' in the {2}." msgstr "لم يتم العثور على الفترة الزمنية المناسبة للعملية {1}خلال الأيام {0} القادمة. يرجى زيادة \"تخطيط السعة لـ (أيام)\" في {2}." @@ -57690,7 +57718,7 @@ msgstr "وحدة" msgid "Unit Of Measure" msgstr "" -#: erpnext/controllers/accounts_controller.py:4101 +#: erpnext/controllers/accounts_controller.py:4121 msgid "Unit Price" msgstr "سعر الوحدة" @@ -57707,7 +57735,7 @@ msgstr "وحدة القياس" msgid "Unit of Measure (UOM)" msgstr "وحدة القياس" -#: erpnext/stock/doctype/item/item.py:435 +#: erpnext/stock/doctype/item/item.py:436 msgid "Unit of Measure {0} has been entered more than once in Conversion Factor Table" msgstr "وحدة القياس {0} تم إدخال أكثر من مرة واحدة في معامل التحويل الجدول" @@ -57979,7 +58007,7 @@ msgstr "تحديث بوم التكلفة تلقائيا" msgid "Update BOM cost automatically via scheduler, based on the latest Valuation Rate/Price List Rate/Last Purchase Rate of raw materials" msgstr "قم بتحديث تكلفة قائمة المواد تلقائيًا عبر المجدول ، استنادًا إلى أحدث معدل تقييم / سعر قائمة الأسعار / آخر سعر شراء للمواد الخام" -#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.js:31 +#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.js:32 msgid "Update Batch Qty" msgstr "تحديث كمية الدفعة" @@ -58058,7 +58086,7 @@ msgstr "تحديث العناصر" #. Label of the update_outstanding_for_self (Check) field in DocType 'Sales #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json -#: erpnext/controllers/accounts_controller.py:197 +#: erpnext/controllers/accounts_controller.py:217 msgid "Update Outstanding for Self" msgstr "تحديث رائع للذات" @@ -58109,7 +58137,7 @@ msgstr "" msgid "Update latest price in all BOMs" msgstr "تحديث آخر الأسعار في جميع بومس" -#: erpnext/assets/doctype/asset/asset.py:471 +#: erpnext/assets/doctype/asset/asset.py:475 msgid "Update stock must be enabled for the purchase invoice {0}" msgstr "يجب تفعيل خيار تحديث المخزون لفاتورة الشراء {0}" @@ -58142,7 +58170,7 @@ msgstr "تم تحديث صف (صفوف) التقرير المالي {0} باسم msgid "Updating Costing and Billing fields against this Project..." msgstr "تحديث حقول التكاليف والفواتير لهذا المشروع..." -#: erpnext/stock/doctype/item/item.py:1491 +#: erpnext/stock/doctype/item/item.py:1511 msgid "Updating Variants..." msgstr "جارٍ تحديث المتغيرات ..." @@ -58357,11 +58385,6 @@ msgstr "" msgid "Use prices from Default Price List as fallback" msgstr "" -#. Label of the used (Int) field in DocType 'Coupon Code' -#: erpnext/accounts/doctype/coupon_code/coupon_code.json -msgid "Used" -msgstr "مستخدم" - #. Description of the 'Sales Order Date' (Date) field in DocType 'Sales Order #. Item' #: erpnext/selling/doctype/sales_order_item/sales_order_item.json @@ -58742,15 +58765,15 @@ msgstr "سعر التقييم" msgid "Valuation Rate (In / Out)" msgstr "معدل التقييم (داخل / خارج)" -#: erpnext/stock/stock_ledger.py:2031 +#: erpnext/stock/stock_ledger.py:2037 msgid "Valuation Rate Missing" msgstr "معدل التقييم مفقود" -#: erpnext/stock/stock_ledger.py:2009 +#: erpnext/stock/stock_ledger.py:2015 msgid "Valuation Rate for the Item {0}, is required to do accounting entries for {1} {2}." msgstr "معدل التقييم للعنصر {0} ، مطلوب لإجراء إدخالات محاسبية لـ {1} {2}." -#: erpnext/stock/doctype/item/item.py:296 +#: erpnext/stock/doctype/item/item.py:297 msgid "Valuation Rate is mandatory if Opening Stock entered" msgstr "معدل التقييم إلزامي إذا ادخلت قيمة مبدئية للمخزون\\n
    \\nValuation Rate is mandatory if Opening Stock entered" @@ -58777,7 +58800,7 @@ msgid "Valuation rate for the item as per Sales Invoice (Only for Internal Trans msgstr "معدل تقييم السلعة وفقًا لفاتورة المبيعات (للتحويلات الداخلية فقط)" #: erpnext/accounts/doctype/payment_entry/payment_entry.py:2292 -#: erpnext/controllers/accounts_controller.py:3279 +#: erpnext/controllers/accounts_controller.py:3299 msgid "Valuation type charges can not be marked as Inclusive" msgstr "لا يمكن تحديد رسوم نوع التقييم على أنها شاملة" @@ -58912,7 +58935,7 @@ msgstr "التباين ({})" msgid "Variant" msgstr "مختلف" -#: erpnext/stock/doctype/item/item.py:963 +#: erpnext/stock/doctype/item/item.py:964 msgid "Variant Attribute Error" msgstr "خطأ في سمة المتغير" @@ -58931,7 +58954,7 @@ msgstr "المتغير BOM" msgid "Variant Based On" msgstr "البديل القائم على" -#: erpnext/stock/doctype/item/item.py:991 +#: erpnext/stock/doctype/item/item.py:992 msgid "Variant Based On cannot be changed" msgstr "لا يمكن تغيير المتغير بناءً على" @@ -58949,7 +58972,7 @@ msgstr "الحقل البديل" msgid "Variant Item" msgstr "عنصر متغير" -#: erpnext/stock/doctype/item/item.py:961 +#: erpnext/stock/doctype/item/item.py:962 msgid "Variant Items" msgstr "العناصر المتغيرة" @@ -58960,7 +58983,7 @@ msgstr "العناصر المتغيرة" msgid "Variant Of" msgstr "البديل من" -#: erpnext/stock/doctype/item/item.js:875 +#: erpnext/stock/doctype/item/item.js:963 msgid "Variant creation has been queued." msgstr "وقد وضعت قائمة الانتظار في قائمة الانتظار." @@ -59087,7 +59110,7 @@ msgstr "عرض سجل تحديثات قائمة المواد" msgid "View Balance Sheet" msgstr "" -#: erpnext/public/js/setup_wizard.js:47 +#: erpnext/public/js/setup_wizard.js:142 msgid "View Chart of Accounts" msgstr "عرض الرسم البياني للحسابات" @@ -59250,8 +59273,8 @@ msgstr "إعدادات المكالمات الصوتية" msgid "Volt-Ampere" msgstr "فولت أمبير" -#: erpnext/accounts/report/purchase_register/purchase_register.py:163 -#: erpnext/accounts/report/sales_register/sales_register.py:179 +#: erpnext/accounts/report/purchase_register/purchase_register.py:179 +#: erpnext/accounts/report/sales_register/sales_register.py:193 msgid "Voucher" msgstr "" @@ -59352,12 +59375,12 @@ msgstr "" #: erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py:112 #: erpnext/stock/report/serial_no_ledger/serial_no_ledger.py:34 #: erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:154 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:165 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:176 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:74 msgid "Voucher No" msgstr "رقم السند" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1419 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1469 msgid "Voucher No is mandatory" msgstr "رقم القسيمة إلزامي" @@ -59402,8 +59425,8 @@ msgstr "نوع القسيمة الفرعي" #: erpnext/accounts/report/general_ledger/general_ledger.py:760 #: erpnext/accounts/report/invalid_ledger_entries/invalid_ledger_entries.py:31 #: erpnext/accounts/report/payment_ledger/payment_ledger.py:165 -#: erpnext/accounts/report/purchase_register/purchase_register.py:158 -#: erpnext/accounts/report/sales_register/sales_register.py:174 +#: erpnext/accounts/report/purchase_register/purchase_register.py:174 +#: erpnext/accounts/report/sales_register/sales_register.py:188 #: erpnext/accounts/report/voucher_wise_balance/voucher_wise_balance.py:17 #: erpnext/public/js/utils/unreconcile.js:71 #: erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.json @@ -59425,7 +59448,7 @@ msgstr "نوع القسيمة الفرعي" #: erpnext/stock/report/serial_no_ledger/serial_no_ledger.py:28 #: erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:152 #: erpnext/stock/report/stock_ledger/stock_ledger.py:402 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:159 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:170 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:68 msgid "Voucher Type" msgstr "نوع السند" @@ -59604,7 +59627,7 @@ msgid "Warehouse not found against the account {0}" msgstr "لم يتم العثور على المستودع مقابل الحساب {0}" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1263 -#: erpnext/stock/doctype/delivery_note/delivery_note.py:414 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:415 msgid "Warehouse required for stock Item {0}" msgstr "مستودع الأسهم المطلوبة لل تفاصيل {0}" @@ -59629,11 +59652,11 @@ msgstr "مستودع {0} لا تنتمي إلى شركة {1}" msgid "Warehouse {0} does not exist" msgstr "المستودع {0} غير موجود" -#: erpnext/manufacturing/doctype/work_order/work_order.py:316 +#: erpnext/manufacturing/doctype/work_order/work_order.py:317 msgid "Warehouse {0} is not allowed for Sales Order {1}, it should be {2}" msgstr "لا يُسمح باستخدام المستودع {0} في أمر البيع {1}، بل يجب أن يكون {2}" -#: erpnext/controllers/stock_controller.py:816 +#: erpnext/controllers/stock_controller.py:856 msgid "Warehouse {0} is not linked to any account, please mention the account in the warehouse record or set default inventory account in company {1}." msgstr "المستودع {0} غير مرتبط بأي حساب، يرجى ذكر الحساب في سجل المستودع أو تعيين حساب المخزون الافتراضي في الشركة {1}." @@ -59761,7 +59784,7 @@ msgstr "تحذير: {0} أخر # {1} موجود في مدخل المخزن {2}\\ msgid "Warning: Material Requested Qty is less than Minimum Order Qty" msgstr "تحذير : كمية المواد المطلوبة هي أقل من الحد الأدنى للطلب الكمية" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1547 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1571 msgid "Warning: Quantity exceeds maximum producible quantity based on quantity of raw materials received through the Subcontracting Inward Order {0}." msgstr "تحذير: الكمية تتجاوز الحد الأقصى للكمية القابلة للإنتاج بناءً على كمية المواد الخام المستلمة من خلال أمر التوريد الداخلي للتعاقد من الباطن {0}." @@ -59855,7 +59878,7 @@ msgstr "الطول الموجي بالكيلومترات" msgid "Wavelength In Megametres" msgstr "الطول الموجي بالميغامتر" -#: erpnext/controllers/accounts_controller.py:192 +#: erpnext/controllers/accounts_controller.py:212 msgid "We can see {0} is made against {1}. If you want {1}'s outstanding to be updated, uncheck the '{2}' checkbox." msgstr "" @@ -60008,6 +60031,14 @@ msgstr "وظيفة الترجيح" msgid "What do you need help with?" msgstr "ما الذى تحتاج المساعدة به؟" +#: erpnext/public/js/setup_wizard.js:69 +msgid "What do you use today?" +msgstr "" + +#: erpnext/public/js/setup_wizard.js:47 +msgid "What kind of work do you do?" +msgstr "" + #: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.js:82 msgid "What will be deleted:" msgstr "" @@ -60048,7 +60079,7 @@ msgstr "عند التحديد، سيتم تطبيق حد المعاملة فقط msgid "When checked, the system will use the posting datetime of the document for naming the document instead of the creation datetime of the document." msgstr "" -#: erpnext/stock/doctype/item/item.js:1211 +#: erpnext/stock/doctype/item/item.js:1297 msgid "When creating an Item, entering a value for this field will automatically create an Item Price at the backend." msgstr "عند إنشاء عنصر، سيؤدي إدخال قيمة لهذا الحقل إلى إنشاء سعر العنصر تلقائيًا في الواجهة الخلفية." @@ -60087,6 +60118,10 @@ msgstr "أثناء إنشاء حساب Child Company {0} ، لم يتم العث msgid "While making Purchase Invoice from Purchase Order, use Exchange Rate on Invoice's transaction date rather than inheriting it from Purchase Order. Only applies for Purchase Invoice." msgstr "عند إنشاء فاتورة شراء من أمر شراء، استخدم سعر الصرف في تاريخ معاملة الفاتورة بدلاً من استيراده من أمر الشراء. ينطبق هذا فقط على فواتير الشراء." +#: erpnext/public/js/setup_wizard.js:31 +msgid "Who are you setting this up for?" +msgstr "" + #. Option for the 'Marital Status' (Select) field in DocType 'Employee' #: erpnext/setup/doctype/employee/employee.json msgid "Widowed" @@ -60141,7 +60176,7 @@ msgstr "مع قيد إقفال الفترة للأرصدة الافتتاحية" #. Option for the 'Transaction Type' (Select) field in DocType 'Bank #. Transaction Rule' #: banking/src/components/features/BankReconciliation/BankTransactionList.tsx:88 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:145 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:146 #: banking/src/components/features/BankStatementImporter/CSV/StatementDetails.tsx:246 #: banking/src/components/features/BankStatementImporter/CSV/StatementDetails.tsx:313 #: banking/src/pages/BankStatementImporter.tsx:194 @@ -60218,7 +60253,7 @@ msgstr "العمل المنجز" #: erpnext/assets/doctype/asset/asset_list.js:12 #: erpnext/manufacturing/doctype/job_card/job_card.json #: erpnext/manufacturing/doctype/job_card_operation/job_card_operation.json -#: erpnext/setup/doctype/company/company.py:385 +#: erpnext/setup/doctype/company/company.py:386 #: erpnext/support/doctype/warranty_claim/warranty_claim.json msgid "Work In Progress" msgstr "التقدم في العمل" @@ -60339,12 +60374,12 @@ msgstr "" msgid "Work Order cannot be created for following reason:
    {0}" msgstr "لا يمكن إنشاء أمر العمل للسبب التالي:
    {0}" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1491 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1515 msgid "Work Order cannot be raised against a Item Template" msgstr "لا يمكن رفع أمر العمل مقابل قالب العنصر" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2694 -#: erpnext/manufacturing/doctype/work_order/work_order.py:2774 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2709 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2789 msgid "Work Order has been {0}" msgstr "تم عمل الطلب {0}" @@ -60390,7 +60425,7 @@ msgstr "التقدم في العمل" msgid "Work-in-Progress Warehouse" msgstr "مستودع العمل قيد التنفيذ" -#: erpnext/manufacturing/doctype/work_order/work_order.py:856 +#: erpnext/manufacturing/doctype/work_order/work_order.py:863 msgid "Work-in-Progress Warehouse is required before Submit" msgstr "مستودع أعمال جارية مطلوب قبل التسجيل\\n
    \\nWork-in-Progress Warehouse is required before Submit" @@ -60535,7 +60570,7 @@ msgstr "محطات العمل" #: erpnext/accounts/doctype/pos_profile/pos_profile.json #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json -#: erpnext/setup/doctype/company/company.py:667 +#: erpnext/setup/doctype/company/company.py:668 msgid "Write Off" msgstr "لا تصلح" @@ -60685,11 +60720,11 @@ msgstr "تاريخ البدء أو تاريخ الانتهاء العام يتد msgid "You are importing data for the code list:" msgstr "أنت بصدد استيراد بيانات لقائمة الرموز:" -#: erpnext/controllers/accounts_controller.py:3898 +#: erpnext/controllers/accounts_controller.py:3918 msgid "You are not allowed to update as per the conditions set in {} Workflow." msgstr "غير مسموح لك بالتحديث وفقًا للشروط المحددة في {} سير العمل." -#: erpnext/accounts/general_ledger.py:818 +#: erpnext/accounts/general_ledger.py:820 msgid "You are not authorized to add or update entries before {0}" msgstr "غير مصرح لك باضافه إدخالات أو تحديثها قبل {0}\\n
    \\nYou are not authorized to add or update entries before {0}" @@ -60758,7 +60793,7 @@ msgstr "يمكنك تعيينه كاسم للآلة أو نوع العملية. msgid "You can set up the rule to split the transaction across multiple accounts." msgstr "" -#: erpnext/controllers/accounts_controller.py:213 +#: erpnext/controllers/accounts_controller.py:233 msgid "You can use {0} to reconcile against {1} later." msgstr "" @@ -60786,7 +60821,7 @@ msgstr "لا يمكنك إنشاء {0} خلال الفترة المحاسبية msgid "You cannot create or cancel any accounting entries with in the closed Accounting Period {0}" msgstr "لا يمكنك إنشاء أو إلغاء أي قيود محاسبية في فترة المحاسبة المغلقة {0}" -#: erpnext/accounts/general_ledger.py:849 +#: erpnext/accounts/general_ledger.py:851 msgid "You cannot create/amend any accounting entries till this date." msgstr "لا يمكنك إنشاء/تعديل أي قيود محاسبية حتى هذا التاريخ." @@ -60843,7 +60878,7 @@ msgstr "" msgid "You do not have permission to import bank transactions" msgstr "" -#: erpnext/controllers/accounts_controller.py:3876 +#: erpnext/controllers/accounts_controller.py:3896 msgid "You do not have permissions to {} items in a {}." msgstr "ليس لديك أذونات لـ {} من العناصر في {}." @@ -60855,11 +60890,11 @@ msgstr "ليس لديك ما يكفي من نقاط الولاء لاستردا msgid "You don't have enough points to redeem." msgstr "ليس لديك ما يكفي من النقاط لاستردادها." -#: erpnext/controllers/accounts_controller.py:4444 +#: erpnext/controllers/accounts_controller.py:4464 msgid "You don't have permission to create a Company Address. Please contact your System Manager." msgstr "" -#: erpnext/controllers/accounts_controller.py:4424 +#: erpnext/controllers/accounts_controller.py:4444 msgid "You don't have permission to update Company details. Please contact your System Manager." msgstr "" @@ -60867,7 +60902,7 @@ msgstr "" msgid "You don't have permission to update Received Qty DocField for item {0}" msgstr "" -#: erpnext/controllers/accounts_controller.py:4418 +#: erpnext/controllers/accounts_controller.py:4438 msgid "You don't have permission to update this document. Please contact your System Manager." msgstr "" @@ -60903,7 +60938,7 @@ msgstr "" msgid "You have not performed any reconciliations in this session yet." msgstr "" -#: erpnext/stock/doctype/item/item.py:1167 +#: erpnext/stock/doctype/item/item.py:1187 msgid "You have to enable auto re-order in Stock Settings to maintain re-order levels." msgstr "يجب عليك تمكين الطلب التلقائي في إعدادات الأسهم للحفاظ على مستويات إعادة الطلب." @@ -60919,7 +60954,7 @@ msgstr "يجب عليك تحديد عميل قبل إضافة عنصر." msgid "You need to cancel POS Closing Entry {} to be able to cancel this document." msgstr "يجب عليك إلغاء إدخال إغلاق نقطة البيع {} لتتمكن من إلغاء هذا المستند." -#: erpnext/controllers/accounts_controller.py:3230 +#: erpnext/controllers/accounts_controller.py:3250 msgid "You selected the account group {1} as {2} Account in row {0}. Please select a single account." msgstr "لقد اخترت مجموعة الحسابات {1} كحساب {2} في الصف {0}. يرجى اختيار حساب واحد." @@ -61001,7 +61036,7 @@ msgstr "[هام] [ERPNext] إعادة ترتيب الأخطاء تلقائيًا msgid "`Allow Negative rates for Items`" msgstr "السماح بأسعار سلبية للعناصر" -#: erpnext/stock/stock_ledger.py:2023 +#: erpnext/stock/stock_ledger.py:2029 msgid "after" msgstr "بعد" @@ -61021,7 +61056,7 @@ msgstr "كعنوان" msgid "as a percentage of finished item quantity" msgstr "كنسبة مئوية من كمية المنتج النهائي" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1589 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1639 msgid "as of {0}" msgstr "" @@ -61073,7 +61108,7 @@ msgstr "نوع المستند" msgid "e.g. \"Summer Holiday 2019 Offer 20\"" msgstr "مثال: "Summer Holiday 2019 Offer 20"" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:663 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:639 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1233 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:685 msgid "e.g. Bank Charges" @@ -61192,7 +61227,7 @@ msgstr "تطبيق الدفع غير مثبت. يرجى تثبيته من {} أ msgid "per hour" msgstr "كل ساعة" -#: erpnext/stock/stock_ledger.py:2024 +#: erpnext/stock/stock_ledger.py:2030 msgid "performing either one below:" msgstr "أداء أحد الخيارين التاليين:" @@ -61336,7 +61371,7 @@ msgstr "عبر أداة تحديث قائمة المواد" msgid "you must select Capital Work in Progress Account in accounts table" msgstr "يجب عليك تحديد حساب رأس المال قيد التقدم في جدول الحسابات" -#: erpnext/controllers/accounts_controller.py:1293 +#: erpnext/controllers/accounts_controller.py:1313 msgid "{0} '{1}' is disabled" msgstr "{0} '{1}' معطل" @@ -61344,7 +61379,7 @@ msgstr "{0} '{1}' معطل" msgid "{0} '{1}' not in Fiscal Year {2}" msgstr "{0} '{1}' ليس في السنة المالية {2}" -#: erpnext/manufacturing/doctype/work_order/work_order.py:742 +#: erpnext/manufacturing/doctype/work_order/work_order.py:749 msgid "{0} ({1}) cannot be greater than planned quantity ({2}) in Work Order {3}" msgstr "{0} ({1}) لا يمكن أن يكون أكبر من الكمية المخطط لها ({2}) في أمر العمل {3}" @@ -61352,7 +61387,7 @@ msgstr "{0} ({1}) لا يمكن أن يكون أكبر من الكمية الم msgid "{0} {1} has submitted Assets. Remove Item {2} from table to continue." msgstr "قام كل من {0} و و{1}و بإرسال الأصول. للمتابعة، قم بإزالة العنصر و{2}و من الجدول." -#: erpnext/controllers/accounts_controller.py:2390 +#: erpnext/controllers/accounts_controller.py:2410 msgid "{0} Account not found against Customer {1}." msgstr "{0} لم يتم العثور على حساب مقابل العميل {1}." @@ -61392,11 +61427,11 @@ msgstr "{0} العمليات: {1}" msgid "{0} Request for {1}" msgstr "{0} طلب {1}" -#: erpnext/stock/doctype/item/item.py:374 +#: erpnext/stock/doctype/item/item.py:375 msgid "{0} Retain Sample is based on batch, please check Has Batch No to retain sample of item" msgstr "{0} يعتمد الاحتفاظ بالعينة على الدُفعة ، يُرجى تحديد "رقم الدُفعة" للاحتفاظ بعينة من العنصر" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1051 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1052 msgid "{0} Transaction(s) Reconciled" msgstr "{0} تمت مطابقة المعاملة (المعاملات)" @@ -61472,7 +61507,7 @@ msgstr "{0} تم انشاؤه" msgid "{0} creation for the following records will be skipped." msgstr "سيتم تخطي إنشاء السجلات التالية {0} ." -#: erpnext/setup/doctype/company/company.py:292 +#: erpnext/setup/doctype/company/company.py:293 msgid "{0} currency must be same as company's default currency. Please select another account." msgstr "" @@ -61488,7 +61523,7 @@ msgstr "{0} لديه حاليا {1} بطاقة أداء بطاقة المورد msgid "{0} does not belong to Company {1}" msgstr "{0} لا تنتمي إلى شركة {1}" -#: erpnext/controllers/accounts_controller.py:352 +#: erpnext/controllers/accounts_controller.py:372 msgid "{0} does not belong to the Company {1}." msgstr "لا ينتمي {0} إلى الشركة {1}." @@ -61497,7 +61532,7 @@ msgid "{0} entered twice in Item Tax" msgstr "{0} ادخل مرتين في ضريبة البند" #: erpnext/setup/doctype/item_group/item_group.py:48 -#: erpnext/stock/doctype/item/item.py:505 +#: erpnext/stock/doctype/item/item.py:506 msgid "{0} entered twice {1} in Item Taxes" msgstr "تم إدخال {0} مرتين {1} في ضرائب الأصناف" @@ -61522,7 +61557,7 @@ msgstr "{0} تم التقديم بنجاح" msgid "{0} hours" msgstr "{0} ساعات" -#: erpnext/controllers/accounts_controller.py:2750 +#: erpnext/controllers/accounts_controller.py:2770 msgid "{0} in row {1}" msgstr "{0} في الحقل {1}" @@ -61544,11 +61579,11 @@ msgstr "" msgid "{0} is already running for {1}" msgstr "{0} قيد التشغيل بالفعل لـ {1}" -#: erpnext/controllers/accounts_controller.py:174 +#: erpnext/controllers/accounts_controller.py:194 msgid "{0} is blocked so this transaction cannot proceed" msgstr "تم حظر {0} حتى لا تتم متابعة هذه المعاملة" -#: erpnext/assets/doctype/asset/asset.py:505 +#: erpnext/assets/doctype/asset/asset.py:509 msgid "{0} is in Draft. Submit it before creating the Asset." msgstr "{0} في وضع المسودة. يرجى إرساله قبل إنشاء الأصل." @@ -61557,7 +61592,7 @@ msgid "{0} is mandatory for Item {1}" msgstr "{0} إلزامي للصنف {1}\\n
    \\n{0} is mandatory for Item {1}" #: erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:100 -#: erpnext/accounts/general_ledger.py:873 +#: erpnext/accounts/general_ledger.py:875 msgid "{0} is mandatory for account {1}" msgstr "{0} إلزامي للحساب {1}" @@ -61565,15 +61600,15 @@ msgstr "{0} إلزامي للحساب {1}" msgid "{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}" msgstr "{0} إلزامي. ربما لم يتم إنشاء سجل صرف العملات من {1} إلى {2}" -#: erpnext/controllers/accounts_controller.py:3187 +#: erpnext/controllers/accounts_controller.py:3207 msgid "{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}." msgstr "{0} إلزامي. ربما لم يتم إنشاء سجل سعر صرف العملة ل{1} إلى {2}." -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1813 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1863 msgid "{0} is not a CSV file." msgstr "" -#: erpnext/selling/doctype/customer/customer.py:236 +#: erpnext/selling/doctype/customer/customer.py:237 msgid "{0} is not a company bank account" msgstr "{0} ليس حسابًا مصرفيًا للشركة" @@ -61665,7 +61700,7 @@ msgstr "{0} المعلمة غير صالحة" msgid "{0} payment entries can not be filtered by {1}" msgstr "{0} لا يمكن فلترة المدفوعات المدخلة {1}" -#: erpnext/controllers/stock_controller.py:1779 +#: erpnext/controllers/stock_controller.py:1819 msgid "{0} qty of Item {1} is being received into Warehouse {2} with capacity {3}." msgstr "يتم استلام كمية {0} من الصنف {1} في المستودع {2} بسعة {3}." @@ -61694,16 +61729,16 @@ msgstr "" msgid "{0} units of {1} are required in {2} with the inventory dimension: {3} on {4} {5} for {6} to complete the transaction." msgstr "يلزم {0} وحدة من {1} في {2} مع بُعد المخزون: {3} على {4} {5} لـ {6} لإكمال المعاملة." -#: erpnext/stock/stock_ledger.py:1676 erpnext/stock/stock_ledger.py:2172 -#: erpnext/stock/stock_ledger.py:2186 +#: erpnext/stock/stock_ledger.py:1682 erpnext/stock/stock_ledger.py:2197 +#: erpnext/stock/stock_ledger.py:2211 msgid "{0} units of {1} needed in {2} on {3} {4} for {5} to complete this transaction." msgstr "{0} وحدات من {1} لازمة ل {2} في {3} {4} ل {5} لإكمال هذه المعاملة." -#: erpnext/stock/stock_ledger.py:2273 erpnext/stock/stock_ledger.py:2318 +#: erpnext/stock/stock_ledger.py:2298 erpnext/stock/stock_ledger.py:2343 msgid "{0} units of {1} needed in {2} on {3} {4} to complete this transaction." msgstr "{0} وحدة من {1} مطلوبة في {2} على {3} {4} لإكمال هذه المعاملة." -#: erpnext/stock/stock_ledger.py:1670 +#: erpnext/stock/stock_ledger.py:1676 msgid "{0} units of {1} needed in {2} to complete this transaction." msgstr "{0} وحدات من {1} لازمة في {2} لإكمال هذه المعاملة." @@ -61715,7 +61750,7 @@ msgstr "{0} حتى {1}" msgid "{0} valid serial nos for Item {1}" msgstr "{0} أرقام تسلسلية صالحة للبند {1}" -#: erpnext/stock/doctype/item/item.js:880 +#: erpnext/stock/doctype/item/item.js:968 msgid "{0} variants created." msgstr "تم إنشاء المتغيرات {0}." @@ -61739,7 +61774,7 @@ msgstr "{0} {1}" msgid "{0} {1} Manually" msgstr "{0} {1} يدويًا" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1055 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1056 msgid "{0} {1} Partially Reconciled" msgstr "{0} {1} مُوَحَّد جزئيًا" @@ -61880,7 +61915,7 @@ msgstr "{0} {1}: الحساب {2} غير فعال \\n
    \\n{0} {1}: Account {2} msgid "{0} {1}: Accounting Entry for {2} can only be made in currency: {3}" msgstr "{0} {1}: قيد محاسبي ل {2} يمكن ان يتم فقط بالعملة : {3}" -#: erpnext/controllers/stock_controller.py:948 +#: erpnext/controllers/stock_controller.py:988 msgid "{0} {1}: Cost Center is mandatory for Item {2}" msgstr "{0} {1}: مركز التكلفة إلزامي للبند {2}" @@ -61912,11 +61947,11 @@ msgstr "{0} {1}: المورد مطلوب لحساب الدفع {2}\\n
    \\n{0} msgid "{0}%" msgstr "" -#: erpnext/controllers/website_list_for_contact.py:206 +#: erpnext/controllers/website_list_for_contact.py:207 msgid "{0}% Billed" msgstr "{0}% تم تحصيلها" -#: erpnext/controllers/website_list_for_contact.py:214 +#: erpnext/controllers/website_list_for_contact.py:215 msgid "{0}% Delivered" msgstr "" @@ -61954,7 +61989,15 @@ msgstr "" msgid "{0}: Virtual DocType (no database table)" msgstr "" -#: erpnext/controllers/accounts_controller.py:542 +#: erpnext/stock/doctype/item/item.js:884 +msgid "{0}: remove invalid value(s) {1}" +msgstr "" + +#: erpnext/stock/doctype/item/item.js:891 +msgid "{0}: select the typed value {1} from the list or clear it" +msgstr "" + +#: erpnext/controllers/accounts_controller.py:562 msgid "{0}: {1} does not belong to the Company: {2}" msgstr "{0}: {1} لا ينتمي إلى الشركة: {2}" @@ -61962,7 +62005,7 @@ msgstr "{0}: {1} لا ينتمي إلى الشركة: {2}" msgid "{0}: {1} does not exist" msgstr "" -#: erpnext/setup/doctype/company/company.py:279 +#: erpnext/setup/doctype/company/company.py:280 msgid "{0}: {1} is a group account." msgstr "{0}: {1} هو حساب جماعي." @@ -61982,11 +62025,11 @@ msgstr "{doctype} {name} تم إلغائه أو مغلق." msgid "{field_label} is mandatory for sub-contracted {doctype}." msgstr "" -#: erpnext/controllers/stock_controller.py:2240 +#: erpnext/controllers/stock_controller.py:2283 msgid "{item_name}'s Sample Size ({sample_size}) cannot be greater than the Accepted Quantity ({accepted_quantity})" msgstr "لا يمكن أن يكون حجم العينة {item_name}({sample_size}) أكبر من الكمية المقبولة ({accepted_quantity})" -#: erpnext/controllers/stock_controller.py:2005 +#: erpnext/controllers/stock_controller.py:2048 msgid "{ref_doctype} {ref_name} status is {status}." msgstr "{ref_doctype} {ref_name} الحالة {status}." diff --git a/erpnext/locale/bg.po b/erpnext/locale/bg.po index 3cc1c64420b..e57f8dc30ab 100644 --- a/erpnext/locale/bg.po +++ b/erpnext/locale/bg.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: frappe\n" "Report-Msgid-Bugs-To: hello@frappe.io\n" -"POT-Creation-Date: 2026-06-28 10:20+0000\n" +"POT-Creation-Date: 2026-07-05 10:19+0000\n" "PO-Revision-Date: 2026-06-29 11:40+0000\n" "Last-Translator: hello@frappe.io\n" "Language: bg_BG\n" @@ -14,7 +14,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.16.0\n" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1591 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1641 msgid "" "\n" "\t\t\tThe Batch {0} of an item {1} has negative stock in the warehouse {2}{3}.\n" @@ -92,15 +92,15 @@ msgstr "" msgid " Summary" msgstr "" -#: erpnext/stock/doctype/item/item.py:265 +#: erpnext/stock/doctype/item/item.py:266 msgid "\"Customer Provided Item\" cannot be Purchase Item also" msgstr "" -#: erpnext/stock/doctype/item/item.py:267 +#: erpnext/stock/doctype/item/item.py:268 msgid "\"Customer Provided Item\" cannot have Valuation Rate" msgstr "" -#: erpnext/stock/doctype/item/item.py:366 +#: erpnext/stock/doctype/item/item.py:367 msgid "\"Is Fixed Asset\" cannot be unchecked, as Asset record exists against the item" msgstr "" @@ -265,7 +265,7 @@ msgstr "" msgid "% of materials delivered against this Sales Order" msgstr "" -#: erpnext/controllers/accounts_controller.py:2394 +#: erpnext/controllers/accounts_controller.py:2414 msgid "'Account' in the Accounting section of Customer {0}" msgstr "" @@ -281,7 +281,7 @@ msgstr "" msgid "'Days Since Last Order' must be greater than or equal to zero" msgstr "" -#: erpnext/controllers/accounts_controller.py:2399 +#: erpnext/controllers/accounts_controller.py:2419 msgid "'Default {0} Account' in Company {1}" msgstr "" @@ -299,15 +299,15 @@ msgstr "" msgid "'From Date' must be after 'To Date'" msgstr "" -#: erpnext/stock/doctype/item/item.py:449 +#: erpnext/stock/doctype/item/item.py:450 msgid "'Has Serial No' can not be 'Yes' for non-stock item" msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:143 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:147 msgid "'Inspection Required before Delivery' has disabled for the item {0}, no need to create the QI" msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:134 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:138 msgid "'Inspection Required before Purchase' has disabled for the item {0}, no need to create the QI" msgstr "" @@ -343,23 +343,23 @@ msgstr "" msgid "'{0}' has been already added." msgstr "" -#: erpnext/setup/doctype/company/company.py:304 -#: erpnext/setup/doctype/company/company.py:315 +#: erpnext/setup/doctype/company/company.py:305 +#: erpnext/setup/doctype/company/company.py:316 msgid "'{0}' should be in company currency {1}." msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:174 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:203 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:214 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:106 msgid "(A) Qty After Transaction" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:208 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:219 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:111 msgid "(B) Expected Qty After Transaction" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:223 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:234 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:126 msgid "(C) Total Qty in Queue" msgstr "" @@ -369,7 +369,7 @@ msgid "(C) Total qty in queue" msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:194 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:233 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:244 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:136 msgid "(D) Balance Stock Value" msgstr "" @@ -380,12 +380,12 @@ msgid "(Daily Yield * No of Units Produced) / 100" msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:199 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:238 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:249 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:141 msgid "(E) Balance Stock Value in Queue" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:248 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:259 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:151 msgid "(F) Change in Stock Value" msgstr "" @@ -394,7 +394,7 @@ msgstr "" msgid "(Forecast)" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:253 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:264 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:156 msgid "(G) Sum of Change in Stock Value" msgstr "" @@ -405,7 +405,7 @@ msgstr "" msgid "(Good Units Produced / Total Units Produced) × 100" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:263 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:274 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:166 msgid "(H) Change in Stock Value (FIFO Queue)" msgstr "" @@ -420,17 +420,17 @@ msgstr "" msgid "(Hour Rate / 60) * Actual Operation Time" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:273 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:284 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:176 msgid "(I) Valuation Rate" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:278 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:289 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:181 msgid "(J) Valuation Rate as per FIFO" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:288 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:299 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:191 msgid "(K) Valuation = Value (D) ÷ Qty (A)" msgstr "" @@ -614,7 +614,7 @@ msgstr "" msgid "<0" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:541 +#: erpnext/assets/doctype/asset/asset.py:545 msgid "Cannot create asset.

    You're trying to create {0} asset(s) from {2} {3}.
    However, only {1} item(s) were purchased and {4} asset(s) already exist against {5}." msgstr "" @@ -790,7 +790,7 @@ msgstr "" msgid "
  • Clearance date must be after cheque date for row(s): {0}
  • " msgstr "" -#: erpnext/controllers/accounts_controller.py:2277 +#: erpnext/controllers/accounts_controller.py:2297 msgid "
  • Item {0} in row(s) {1} billed more than {2}
  • " msgstr "" @@ -807,7 +807,7 @@ msgstr "" msgid "
  • {}
  • " msgstr "" -#: erpnext/controllers/accounts_controller.py:2274 +#: erpnext/controllers/accounts_controller.py:2294 msgid "

    Cannot overbill for the following Items:

    " msgstr "" @@ -852,7 +852,7 @@ msgstr "" msgid "

    Price List Rate has not been set as editable in Selling Settings. In this scenario, setting Update Price List Based On to Price List Rate will prevent auto-updation of Item Price.

    Are you sure you want to continue?" msgstr "" -#: erpnext/controllers/accounts_controller.py:2286 +#: erpnext/controllers/accounts_controller.py:2306 msgid "

    To allow over-billing, please set allowance in Accounts Settings.

    " msgstr "" @@ -937,11 +937,11 @@ msgstr "" msgid "Your Shortcuts" msgstr "" -#: erpnext/accounts/doctype/payment_request/payment_request.py:1135 +#: erpnext/accounts/doctype/payment_request/payment_request.py:1136 msgid "Grand Total: {0}" msgstr "" -#: erpnext/accounts/doctype/payment_request/payment_request.py:1136 +#: erpnext/accounts/doctype/payment_request/payment_request.py:1137 msgid "Outstanding Amount: {0}" msgstr "" @@ -985,18 +985,18 @@ msgid "" "\n" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:213 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:224 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:116 msgid "A - B" msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:189 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:228 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:239 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:131 msgid "A - C" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:355 +#: erpnext/selling/doctype/customer/customer.py:356 msgid "A Customer Group exists with same name please change the Customer name or rename the Customer Group" msgstr "" @@ -1012,7 +1012,7 @@ msgstr "" msgid "A Packing Slip can only be created for Draft Delivery Note." msgstr "" -#: erpnext/accounts/general_ledger.py:827 +#: erpnext/accounts/general_ledger.py:829 msgid "A Period Closing Voucher is already submitted and an Opening Entry can no longer be created. {0} to learn more." msgstr "" @@ -1054,6 +1054,14 @@ msgstr "" msgid "A driver must be set to submit." msgstr "" +#: erpnext/public/js/setup_wizard.js:27 +msgid "A few quick questions so we can set things up the way you work." +msgstr "" + +#: erpnext/public/js/setup_wizard.js:25 +msgid "A little about you" +msgstr "" + #. Description of a DocType #: erpnext/stock/doctype/warehouse/warehouse.json msgid "A logical Warehouse against which stock entries are made." @@ -1169,11 +1177,11 @@ msgstr "" msgid "Abbreviation" msgstr "" -#: erpnext/setup/doctype/company/company.py:239 +#: erpnext/setup/doctype/company/company.py:240 msgid "Abbreviation already used for another company" msgstr "" -#: erpnext/setup/doctype/company/company.py:236 +#: erpnext/setup/doctype/company/company.py:237 msgid "Abbreviation is mandatory" msgstr "" @@ -1235,7 +1243,7 @@ msgid "Accepted Qty in Stock UOM" msgstr "" #. Label of the qty (Float) field in DocType 'Purchase Receipt Item' -#: erpnext/public/js/controllers/transaction.js:2864 +#: erpnext/public/js/controllers/transaction.js:2886 #: erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json msgid "Accepted Quantity" msgstr "" @@ -1392,7 +1400,7 @@ msgid "Account Manager" msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1057 -#: erpnext/controllers/accounts_controller.py:2403 +#: erpnext/controllers/accounts_controller.py:2423 msgid "Account Missing" msgstr "" @@ -1486,8 +1494,8 @@ msgstr "" msgid "Account balance already in Debit, you are not allowed to set 'Balance Must Be' as 'Credit'" msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:101 -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:107 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:148 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:154 msgid "Account company does not match with the rule company." msgstr "" @@ -1513,15 +1521,15 @@ msgstr "" msgid "Account is not set for the dashboard chart {0}" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:635 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:611 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:217 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1201 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:315 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:316 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:659 msgid "Account is required" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:903 +#: erpnext/assets/doctype/asset/asset.py:907 msgid "Account not Found" msgstr "" @@ -1586,7 +1594,7 @@ msgstr "" msgid "Account {0} does not belong to company {1}" msgstr "" -#: erpnext/setup/doctype/company/company.py:286 +#: erpnext/setup/doctype/company/company.py:287 msgid "Account {0} does not belong to company: {1}" msgstr "" @@ -1618,7 +1626,7 @@ msgstr "" msgid "Account {0} is added in the child company {1}" msgstr "" -#: erpnext/setup/doctype/company/company.py:275 +#: erpnext/setup/doctype/company/company.py:276 msgid "Account {0} is disabled." msgstr "" @@ -1626,7 +1634,7 @@ msgstr "" msgid "Account {0} is frozen" msgstr "" -#: erpnext/controllers/accounts_controller.py:1478 +#: erpnext/controllers/accounts_controller.py:1498 msgid "Account {0} is invalid. Account Currency must be {1}" msgstr "" @@ -1662,7 +1670,7 @@ msgstr "" msgid "Account: {0} is not permitted under Payment Entry" msgstr "" -#: erpnext/controllers/accounts_controller.py:3287 +#: erpnext/controllers/accounts_controller.py:3307 msgid "Account: {0} with currency: {1} can not be selected" msgstr "" @@ -1688,7 +1696,7 @@ msgstr "" #: erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json #: erpnext/accounts/doctype/shipping_rule/shipping_rule.json #: erpnext/buying/doctype/supplier/supplier.json -#: erpnext/desktop_icon/accounting.json +#: erpnext/desktop_icon/accounting.json erpnext/public/js/setup_wizard.js:91 #: erpnext/selling/doctype/customer/customer.json #: erpnext/setup/setup_wizard/data/industry_type.txt:1 #: erpnext/setup/workspace/home/home.json erpnext/stock/doctype/item/item.json @@ -1890,8 +1898,8 @@ msgstr "" msgid "Accounting Entries" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:937 -#: erpnext/assets/doctype/asset/asset.py:952 +#: erpnext/assets/doctype/asset/asset.py:941 +#: erpnext/assets/doctype/asset/asset.py:956 #: erpnext/assets/doctype/asset_capitalization/asset_capitalization.py:546 msgid "Accounting Entry for Asset" msgstr "" @@ -1905,7 +1913,7 @@ msgstr "" msgid "Accounting Entry for Landed Cost Voucher for SCR {0}" msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:838 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:843 msgid "Accounting Entry for Service" msgstr "" @@ -1918,25 +1926,25 @@ msgstr "" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1267 #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1506 #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1528 -#: erpnext/controllers/stock_controller.py:728 -#: erpnext/controllers/stock_controller.py:745 -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:935 +#: erpnext/controllers/stock_controller.py:768 +#: erpnext/controllers/stock_controller.py:785 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:940 #: erpnext/stock/doctype/stock_entry/stock_entry.py:2265 #: erpnext/stock/doctype/stock_entry/stock_entry.py:2279 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:753 msgid "Accounting Entry for Stock" msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:735 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:740 msgid "Accounting Entry for {0}" msgstr "" -#: erpnext/controllers/accounts_controller.py:2444 +#: erpnext/controllers/accounts_controller.py:2464 msgid "Accounting Entry for {0}: {1} can only be made in currency: {2}" msgstr "" #: erpnext/accounts/doctype/invoice_discounting/invoice_discounting.js:193 -#: erpnext/assets/doctype/asset/asset.js:185 +#: erpnext/assets/doctype/asset/asset.js:190 #: erpnext/assets/doctype/asset_repair/asset_repair.js:92 #: erpnext/buying/doctype/supplier/supplier.js:123 #: erpnext/public/js/controllers/stock_controller.js:88 @@ -2001,7 +2009,7 @@ msgstr "" #: erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.json #: erpnext/assets/doctype/asset_category/asset_category.json #: erpnext/setup/doctype/company/company.json -#: erpnext/setup/doctype/company/company.py:445 +#: erpnext/setup/doctype/company/company.py:446 #: erpnext/setup/doctype/customer_group/customer_group.json #: erpnext/setup/doctype/email_digest/email_digest.json #: erpnext/setup/doctype/incoterm/incoterm.json @@ -2162,7 +2170,7 @@ msgstr "" #. Label of the accumulated_depreciation_amount (Currency) field in DocType #. 'Depreciation Schedule' #: erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py:178 -#: erpnext/assets/doctype/asset/asset.js:380 +#: erpnext/assets/doctype/asset/asset.js:385 #: erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json msgid "Accumulated Depreciation Amount" msgstr "" @@ -2434,7 +2442,7 @@ msgstr "" msgid "Actual End Date (via Timesheet)" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:299 +#: erpnext/manufacturing/doctype/work_order/work_order.py:300 msgid "Actual End Date cannot be before Actual Start Date" msgstr "" @@ -2660,13 +2668,13 @@ msgstr "" msgid "Add Raw Materials" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:711 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:687 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1260 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:728 msgid "Add Row" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:227 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:228 #: banking/src/components/features/Settings/MatchingRules.tsx:30 msgid "Add Rule" msgstr "" @@ -2751,7 +2759,7 @@ msgstr "" msgid "Add a charge to the payment entry with the unallocated amount" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:800 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:776 msgid "Add a row with the difference amount" msgstr "" @@ -2817,7 +2825,7 @@ msgstr "" msgid "Added Supplier Role to User {0}." msgstr "" -#: erpnext/controllers/website_list_for_contact.py:307 +#: erpnext/controllers/website_list_for_contact.py:308 msgid "Added {1} Role to User {0}." msgstr "" @@ -3061,7 +3069,7 @@ msgstr "" msgid "Additional Transferred Qty" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:775 +#: erpnext/manufacturing/doctype/work_order/work_order.py:782 msgid "" "Additional Transferred Qty {0}\n" "\t\t\t\t\tcannot be greater than {1}.\n" @@ -3215,7 +3223,7 @@ msgstr "" msgid "Adjustment Against" msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:660 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:664 msgid "Adjustment based on Purchase Invoice rate" msgstr "" @@ -3291,7 +3299,7 @@ msgstr "" #: erpnext/accounts/doctype/pos_invoice/pos_invoice.json #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json -#: erpnext/controllers/accounts_controller.py:286 +#: erpnext/controllers/accounts_controller.py:306 #: erpnext/setup/doctype/company/company.json msgid "Advance Payments" msgstr "" @@ -3660,7 +3668,7 @@ msgstr "" #: erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:165 #: erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js:185 #: erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.py:169 -#: erpnext/accounts/utils.py:1632 erpnext/public/js/setup_wizard.js:184 +#: erpnext/accounts/utils.py:1632 erpnext/public/js/setup_wizard.js:279 msgid "All Accounts" msgstr "" @@ -3711,21 +3719,21 @@ msgstr "" #: erpnext/patches/v11_0/update_department_lft_rgt.py:9 #: erpnext/patches/v11_0/update_department_lft_rgt.py:11 #: erpnext/patches/v11_0/update_department_lft_rgt.py:16 -#: erpnext/setup/doctype/company/company.py:438 -#: erpnext/setup/doctype/company/company.py:441 -#: erpnext/setup/doctype/company/company.py:446 -#: erpnext/setup/doctype/company/company.py:452 -#: erpnext/setup/doctype/company/company.py:458 -#: erpnext/setup/doctype/company/company.py:464 -#: erpnext/setup/doctype/company/company.py:470 -#: erpnext/setup/doctype/company/company.py:476 -#: erpnext/setup/doctype/company/company.py:482 -#: erpnext/setup/doctype/company/company.py:488 -#: erpnext/setup/doctype/company/company.py:494 -#: erpnext/setup/doctype/company/company.py:500 -#: erpnext/setup/doctype/company/company.py:506 -#: erpnext/setup/doctype/company/company.py:512 -#: erpnext/setup/doctype/company/company.py:518 +#: erpnext/setup/doctype/company/company.py:439 +#: erpnext/setup/doctype/company/company.py:442 +#: erpnext/setup/doctype/company/company.py:447 +#: erpnext/setup/doctype/company/company.py:453 +#: erpnext/setup/doctype/company/company.py:459 +#: erpnext/setup/doctype/company/company.py:465 +#: erpnext/setup/doctype/company/company.py:471 +#: erpnext/setup/doctype/company/company.py:477 +#: erpnext/setup/doctype/company/company.py:483 +#: erpnext/setup/doctype/company/company.py:489 +#: erpnext/setup/doctype/company/company.py:495 +#: erpnext/setup/doctype/company/company.py:501 +#: erpnext/setup/doctype/company/company.py:507 +#: erpnext/setup/doctype/company/company.py:513 +#: erpnext/setup/doctype/company/company.py:519 msgid "All Departments" msgstr "" @@ -3805,7 +3813,7 @@ msgstr "" msgid "All Territories" msgstr "" -#: erpnext/setup/doctype/company/company.py:383 +#: erpnext/setup/doctype/company/company.py:384 msgid "All Warehouses" msgstr "" @@ -3832,11 +3840,11 @@ msgstr "" msgid "All items are already requested" msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1486 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1520 msgid "All items have already been Invoiced/Returned" msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:1193 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:1201 msgid "All items have already been received" msgstr "" @@ -3844,7 +3852,7 @@ msgstr "" msgid "All items have already been transferred for this Work Order." msgstr "" -#: erpnext/public/js/controllers/transaction.js:2993 +#: erpnext/public/js/controllers/transaction.js:3009 msgid "All items in this document already have a linked Quality Inspection." msgstr "" @@ -3870,7 +3878,7 @@ msgstr "" msgid "All the required items (raw materials) will be fetched from BOM and populated in this table. Here you can also change the Source Warehouse for any item. And during the production, you can track transferred raw materials from this table." msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:833 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:836 msgid "All these items have already been Invoiced/Returned" msgstr "" @@ -4440,11 +4448,11 @@ msgstr "" msgid "Allows users to submit Supplier Quotations with zero quantity. Useful when rates are fixed but the quantities are not. Eg. Rate Contracts." msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1184 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1205 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1257 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1291 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1310 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1190 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1211 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1263 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1297 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1316 msgid "Already Imported" msgstr "" @@ -4472,7 +4480,7 @@ msgstr "" #: erpnext/manufacturing/doctype/work_order/work_order.js:158 #: erpnext/manufacturing/doctype/work_order/work_order.js:173 #: erpnext/public/js/utils.js:604 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:339 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:344 msgid "Alternate Item" msgstr "" @@ -4611,7 +4619,7 @@ msgstr "" #: erpnext/accounts/doctype/bank_statement_import_log_column_map/bank_statement_import_log_column_map.json #: erpnext/accounts/doctype/budget_distribution/budget_distribution.json #: erpnext/accounts/doctype/cashier_closing_payments/cashier_closing_payments.json -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:629 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:636 #: erpnext/accounts/doctype/journal_entry_account/journal_entry_account.json #: erpnext/accounts/doctype/payment_entry/payment_entry.json #: erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.json @@ -4667,7 +4675,7 @@ msgstr "" #: erpnext/manufacturing/doctype/bom_item/bom_item.json #: erpnext/manufacturing/doctype/work_order_additional_item/work_order_additional_item.json #: erpnext/manufacturing/doctype/work_order_item/work_order_item.json -#: erpnext/public/js/controllers/transaction.js:536 +#: erpnext/public/js/controllers/transaction.js:558 #: erpnext/selling/doctype/quotation/quotation.js:315 #: erpnext/selling/doctype/quotation_item/quotation_item.json #: erpnext/selling/doctype/sales_order_item/sales_order_item.json @@ -4968,7 +4976,7 @@ msgstr "" msgid "Any" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:49 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:50 msgid "Any debit transaction with the keyword 'Bank Fee'." msgstr "" @@ -5430,7 +5438,7 @@ msgstr "" msgid "As the field {0} is enabled, the value of the field {1} should be more than 1." msgstr "" -#: erpnext/stock/doctype/item/item.py:1093 +#: erpnext/stock/doctype/item/item.py:1094 msgid "As there are existing submitted transactions against item {0}, you can not change the value of {1}." msgstr "" @@ -5580,7 +5588,7 @@ msgstr "" msgid "Asset Category Name" msgstr "" -#: erpnext/stock/doctype/item/item.py:358 +#: erpnext/stock/doctype/item/item.py:359 msgid "Asset Category is mandatory for Fixed Asset item" msgstr "" @@ -5620,7 +5628,7 @@ msgstr "" msgid "Asset Depreciation Schedule {0} for Asset {1} and Finance Book {2} already exists." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:235 +#: erpnext/assets/doctype/asset/asset.py:239 msgid "Asset Depreciation Schedules created/updated:
    {0}

    Please check, edit if needed, and submit the Asset." msgstr "" @@ -5712,7 +5720,7 @@ msgstr "" msgid "Asset Movement Item" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1183 +#: erpnext/assets/doctype/asset/asset.py:1187 msgid "Asset Movement record {0} created" msgstr "" @@ -5774,7 +5782,7 @@ msgstr "" #. Batch Bundle' #. Label of the asset_repair (Link) field in DocType 'Stock Entry' #. Label of a Workspace Sidebar Item -#: erpnext/assets/doctype/asset/asset.js:108 +#: erpnext/assets/doctype/asset/asset.js:113 #: erpnext/assets/doctype/asset_repair/asset_repair.json #: erpnext/assets/workspace/assets/assets.json #: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.json @@ -5826,7 +5834,7 @@ msgstr "" #. Label of the asset_value (Currency) field in DocType 'Asset Capitalization #. Asset Item' #: erpnext/assets/dashboard_fixtures.py:180 -#: erpnext/assets/doctype/asset/asset.js:512 +#: erpnext/assets/doctype/asset/asset.js:517 #: erpnext/assets/doctype/asset_capitalization_asset_item/asset_capitalization_asset_item.json #: erpnext/assets/report/fixed_asset_register/fixed_asset_register.py:209 #: erpnext/assets/report/fixed_asset_register/fixed_asset_register.py:460 @@ -5837,7 +5845,7 @@ msgstr "" #. Name of a DocType #. Label of a Link in the Assets Workspace #. Label of a Workspace Sidebar Item -#: erpnext/assets/doctype/asset/asset.js:100 +#: erpnext/assets/doctype/asset/asset.js:105 #: erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.json #: erpnext/assets/workspace/assets/assets.json #: erpnext/workspace_sidebar/assets.json @@ -5854,11 +5862,11 @@ msgstr "" msgid "Asset Value Analytics" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:277 +#: erpnext/assets/doctype/asset/asset.py:281 msgid "Asset cancelled" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:732 +#: erpnext/assets/doctype/asset/asset.py:736 msgid "Asset cannot be cancelled, as it is already {0}" msgstr "" @@ -5870,15 +5878,15 @@ msgstr "" msgid "Asset capitalized after Asset Capitalization {0} was submitted" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:286 +#: erpnext/assets/doctype/asset/asset.py:290 msgid "Asset created" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1424 +#: erpnext/assets/doctype/asset/asset.py:1428 msgid "Asset created after being split from Asset {0}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:289 +#: erpnext/assets/doctype/asset/asset.py:293 msgid "Asset deleted" msgstr "" @@ -5919,7 +5927,7 @@ msgstr "" msgid "Asset sold" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:264 +#: erpnext/assets/doctype/asset/asset.py:268 msgid "Asset submitted" msgstr "" @@ -5927,7 +5935,7 @@ msgstr "" msgid "Asset transferred to Location {0}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1433 +#: erpnext/assets/doctype/asset/asset.py:1437 msgid "Asset updated after being split into Asset {0}" msgstr "" @@ -6036,6 +6044,10 @@ msgstr "" msgid "Assign to Name" msgstr "" +#: erpnext/templates/pages/projects.html:48 +msgid "Assignment" +msgstr "" + #. Label of the filters_section (Section Break) field in DocType 'Service Level #. Agreement' #: erpnext/support/doctype/service_level_agreement/service_level_agreement.json @@ -6054,7 +6066,7 @@ msgstr "" msgid "At Row #{0}: The picked quantity {1} for the item {2} is greater than available stock {3} in the warehouse {4}." msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1436 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1486 msgid "At Row {0}: In Serial and Batch Bundle {1} must have docstatus as 1 and not 0" msgstr "" @@ -6062,7 +6074,7 @@ msgstr "" msgid "At least one account with exchange gain or loss is required" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1289 +#: erpnext/assets/doctype/asset/asset.py:1293 msgid "At least one asset has to be selected." msgstr "" @@ -6111,7 +6123,7 @@ msgstr "" msgid "At row #{0}: you have selected the Difference Account {1}, which is a Cost of Goods Sold type account. Please select a different account" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1184 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1234 msgid "At row {0}: Batch No is mandatory for Item {1}" msgstr "" @@ -6119,15 +6131,15 @@ msgstr "" msgid "At row {0}: Parent Row No cannot be set for item {1}" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1169 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1219 msgid "At row {0}: Qty is mandatory for the batch {1}" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1176 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1226 msgid "At row {0}: Serial No is mandatory for Item {1}" msgstr "" -#: erpnext/controllers/stock_controller.py:676 +#: erpnext/controllers/stock_controller.py:716 msgid "At row {0}: Serial and Batch Bundle {1} has already created. Please remove the values from the serial no or batch no fields." msgstr "" @@ -6191,11 +6203,11 @@ msgstr "" msgid "Attribute Value" msgstr "" -#: erpnext/stock/doctype/item/item.py:883 +#: erpnext/stock/doctype/item/item.py:884 msgid "Attribute Value {0} is not valid for the selected attribute {1}." msgstr "" -#: erpnext/stock/doctype/item/item.py:1029 +#: erpnext/stock/doctype/item/item.py:1030 msgid "Attribute table is mandatory" msgstr "" @@ -6203,19 +6215,19 @@ msgstr "" msgid "Attribute value: {0} must appear only once" msgstr "" -#: erpnext/stock/doctype/item/item.py:872 +#: erpnext/stock/doctype/item/item.py:873 msgid "Attribute {0} is disabled." msgstr "" -#: erpnext/stock/doctype/item/item.py:860 +#: erpnext/stock/doctype/item/item.py:861 msgid "Attribute {0} is not valid for the selected template." msgstr "" -#: erpnext/stock/doctype/item/item.py:1033 +#: erpnext/stock/doctype/item/item.py:1034 msgid "Attribute {0} selected multiple times in Attributes Table" msgstr "" -#: erpnext/stock/doctype/item/item.py:961 +#: erpnext/stock/doctype/item/item.py:962 msgid "Attributes" msgstr "" @@ -6325,11 +6337,11 @@ msgstr "" msgid "Auto Reconcile" msgstr "" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1037 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1038 msgid "Auto Reconciliation" msgstr "" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:985 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:986 msgid "Auto Reconciliation has started in the background" msgstr "" @@ -6622,7 +6634,7 @@ msgstr "" msgid "Available for Use Date" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:382 +#: erpnext/assets/doctype/asset/asset.py:386 msgid "Available for use date is required" msgstr "" @@ -6634,7 +6646,7 @@ msgstr "" msgid "Available {0}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:488 +#: erpnext/assets/doctype/asset/asset.py:492 msgid "Available-for-use Date should be after purchase date" msgstr "" @@ -6760,7 +6772,7 @@ msgstr "" #: erpnext/selling/doctype/sales_order/sales_order.js:1458 #: erpnext/stock/doctype/material_request/material_request.js:351 #: erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:805 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:810 #: erpnext/stock/report/bom_search/bom_search.py:38 #: erpnext/subcontracting/doctype/subcontracting_inward_order_item/subcontracting_inward_order_item.json #: erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js:525 @@ -7029,7 +7041,7 @@ msgid "BOM and Production" msgstr "" #: erpnext/stock/doctype/material_request/material_request.js:386 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:857 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:862 msgid "BOM does not contain any stock item" msgstr "" @@ -7120,8 +7132,8 @@ msgstr "" #: erpnext/accounts/doctype/bank_statement_import_log_column_map/bank_statement_import_log_column_map.json #: erpnext/accounts/report/account_balance/account_balance.py:36 #: erpnext/accounts/report/general_ledger/general_ledger.html:168 -#: erpnext/accounts/report/purchase_register/purchase_register.py:242 -#: erpnext/accounts/report/sales_register/sales_register.py:278 +#: erpnext/accounts/report/purchase_register/purchase_register.py:258 +#: erpnext/accounts/report/sales_register/sales_register.py:292 #: erpnext/stock/report/incorrect_serial_no_valuation/incorrect_serial_no_valuation.py:71 msgid "Balance" msgstr "" @@ -7385,7 +7397,7 @@ msgstr "" msgid "Bank Charges Account" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:34 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:35 msgid "Bank Charges, Salary, etc." msgstr "" @@ -7427,7 +7439,7 @@ msgstr "" msgid "Bank Draft" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:97 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:98 msgid "Bank Entries Created" msgstr "" @@ -7441,7 +7453,7 @@ msgstr "" #: banking/src/components/features/BankReconciliation/BankEntryModal.tsx:17 #: banking/src/components/features/BankReconciliation/MatchAndReconcile.tsx:478 #: banking/src/components/features/BankReconciliation/MatchAndReconcile.tsx:571 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:269 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:270 #: banking/src/components/features/Settings/KeyboardShortcuts.tsx:14 #: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.json #: erpnext/accounts/doctype/journal_entry/journal_entry.json @@ -7449,7 +7461,7 @@ msgstr "" msgid "Bank Entry" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:319 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:295 msgid "Bank Entry Created" msgstr "" @@ -7459,7 +7471,7 @@ msgstr "" msgid "Bank Entry Type" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:212 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:213 msgid "Bank Fee, Salary, etc." msgstr "" @@ -7608,11 +7620,11 @@ msgstr "" msgid "Bank account cannot be named as {0}" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:700 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:676 msgid "Bank account credit for withdrawal" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:683 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:659 msgid "Bank account debit for deposit" msgstr "" @@ -7663,11 +7675,11 @@ msgstr "" msgid "Barcode Type" msgstr "" -#: erpnext/stock/doctype/item/item.py:526 +#: erpnext/stock/doctype/item/item.py:527 msgid "Barcode {0} already used in Item {1}" msgstr "" -#: erpnext/stock/doctype/item/item.py:541 +#: erpnext/stock/doctype/item/item.py:542 msgid "Barcode {0} is not a valid {1} code" msgstr "" @@ -7789,7 +7801,7 @@ msgstr "" msgid "Based On Value" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:427 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:428 msgid "Based on the above entries, the balance amount (debit or credit) will be set for the last row to balance the journal entry." msgstr "" @@ -7825,7 +7837,7 @@ msgstr "" #: erpnext/stock/report/batch_wise_balance_history/batch_wise_balance_history.py:80 #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:158 #: erpnext/stock/report/stock_ledger/stock_ledger.py:419 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:171 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:182 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:80 #: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.js:19 #: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.py:32 @@ -7905,7 +7917,7 @@ msgstr "" #: erpnext/manufacturing/doctype/job_card/job_card.json #: erpnext/manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:89 #: erpnext/manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.py:115 -#: erpnext/public/js/controllers/transaction.js:2890 +#: erpnext/public/js/controllers/transaction.js:2912 #: erpnext/public/js/utils/barcode_scanner.js:281 #: erpnext/public/js/utils/serial_no_batch_selector.js:449 #: erpnext/stock/doctype/delivery_note_item/delivery_note_item.json @@ -7936,11 +7948,11 @@ msgstr "" msgid "Batch No" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1187 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1237 msgid "Batch No is mandatory" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:3470 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:3520 msgid "Batch No {0} does not exists" msgstr "" @@ -7963,7 +7975,7 @@ msgstr "" msgid "Batch Nos" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2009 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2059 msgid "Batch Nos are created successfully" msgstr "" @@ -7981,7 +7993,7 @@ msgstr "" msgid "Batch Qty" msgstr "" -#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.py:125 +#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.py:126 msgid "Batch Qty updated successfully" msgstr "" @@ -8017,7 +8029,7 @@ msgstr "" msgid "Batch and Serial No" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1002 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1009 msgid "Batch not created for item {} since it does not have a batch series." msgstr "" @@ -8059,7 +8071,7 @@ msgid "Batch-Wise Balance History" msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:164 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:183 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:194 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:86 msgid "Batchwise Valuation" msgstr "" @@ -8085,15 +8097,15 @@ msgstr "" msgid "Below Subscription Plans are of different currency to the party default billing currency/Company currency: {0}" msgstr "" -#: banking/src/components/features/BankReconciliation/BankClearanceSummary.tsx:211 +#: banking/src/components/features/BankReconciliation/BankClearanceSummary.tsx:206 msgid "Below is a list of all accounting entries posted against the bank account {0} between {1} and {2}." msgstr "" -#: banking/src/components/features/BankReconciliation/BankTransactionList.tsx:251 +#: banking/src/components/features/BankReconciliation/BankTransactionList.tsx:246 msgid "Below is a list of all bank transactions imported in the system for the bank account {0} between {1} and {2}." msgstr "" -#: banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx:197 +#: banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx:192 msgid "Below is a list of all entries posted against the bank account {0} which have not been cleared till {1}." msgstr "" @@ -8101,7 +8113,7 @@ msgstr "" #. Label of the bill_date (Date) field in DocType 'Subcontracting Receipt' #: erpnext/accounts/doctype/journal_entry/journal_entry.json #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1207 -#: erpnext/accounts/report/purchase_register/purchase_register.py:214 +#: erpnext/accounts/report/purchase_register/purchase_register.py:230 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json msgid "Bill Date" msgstr "" @@ -8110,7 +8122,7 @@ msgstr "" #. Label of the bill_no (Data) field in DocType 'Subcontracting Receipt' #: erpnext/accounts/doctype/journal_entry/journal_entry.json #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1206 -#: erpnext/accounts/report/purchase_register/purchase_register.py:213 +#: erpnext/accounts/report/purchase_register/purchase_register.py:229 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json msgid "Bill No" msgstr "" @@ -8127,13 +8139,13 @@ msgstr "" #: erpnext/manufacturing/doctype/bom/bom.py:1373 #: erpnext/manufacturing/workspace/manufacturing/manufacturing.json #: erpnext/stock/doctype/material_request/material_request.js:139 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:791 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:796 #: erpnext/workspace_sidebar/subcontracting.json msgid "Bill of Materials" msgstr "" #. Option for the 'Status' (Select) field in DocType 'Timesheet' -#: erpnext/controllers/website_list_for_contact.py:206 +#: erpnext/controllers/website_list_for_contact.py:207 #: erpnext/projects/doctype/timesheet/timesheet.json #: erpnext/projects/doctype/timesheet/timesheet_list.js:9 msgid "Billed" @@ -8224,7 +8236,7 @@ msgstr "" msgid "Billing Address Name" msgstr "" -#: erpnext/controllers/accounts_controller.py:573 +#: erpnext/controllers/accounts_controller.py:593 msgid "Billing Address does not belong to the {0}" msgstr "" @@ -8569,7 +8581,7 @@ msgstr "" msgid "Booked Fixed Asset" msgstr "" -#: erpnext/accounts/general_ledger.py:847 +#: erpnext/accounts/general_ledger.py:849 msgid "Books have been closed till the period ending on {0}" msgstr "" @@ -9308,7 +9320,7 @@ msgstr "" msgid "Can be approved by {0}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2767 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2782 msgid "Can not close Work Order. Since {0} Job Cards are in Work In Progress state." msgstr "" @@ -9342,12 +9354,12 @@ msgid "Can only make payment against unbilled {0}" msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.js:1510 -#: erpnext/controllers/accounts_controller.py:3196 +#: erpnext/controllers/accounts_controller.py:3216 #: erpnext/public/js/controllers/accounts.js:100 msgid "Can refer row only if the charge type is 'On Previous Row Amount' or 'Previous Row Total'" msgstr "" -#: erpnext/setup/doctype/company/company.py:207 +#: erpnext/setup/doctype/company/company.py:208 #: erpnext/stock/doctype/stock_settings/stock_settings.py:183 msgid "Can't change the valuation method, as there are transactions against some items which do not have its own valuation method" msgstr "" @@ -9393,7 +9405,7 @@ msgstr "" msgid "Cannot Calculate Arrival Time as Driver Address is Missing." msgstr "" -#: erpnext/setup/doctype/company/company.py:226 +#: erpnext/setup/doctype/company/company.py:227 msgid "Cannot Change Inventory Account Setting" msgstr "" @@ -9401,9 +9413,9 @@ msgstr "" msgid "Cannot Create Return" msgstr "" -#: erpnext/stock/doctype/item/item.py:681 -#: erpnext/stock/doctype/item/item.py:694 -#: erpnext/stock/doctype/item/item.py:708 +#: erpnext/stock/doctype/item/item.py:682 +#: erpnext/stock/doctype/item/item.py:695 +#: erpnext/stock/doctype/item/item.py:709 msgid "Cannot Merge" msgstr "" @@ -9431,7 +9443,7 @@ msgstr "" msgid "Cannot apply TDS against multiple parties in one entry" msgstr "" -#: erpnext/stock/doctype/item/item.py:361 +#: erpnext/stock/doctype/item/item.py:362 msgid "Cannot be a fixed asset item as Stock Ledger is created." msgstr "" @@ -9451,7 +9463,7 @@ msgstr "" msgid "Cannot cancel as processing of cancelled documents is pending." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1180 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1187 msgid "Cannot cancel because submitted Stock Entry {0} exists" msgstr "" @@ -9475,10 +9487,14 @@ msgstr "" msgid "Cannot cancel transaction for Completed Work Order." msgstr "" -#: erpnext/stock/doctype/item/item.py:981 +#: erpnext/stock/doctype/item/item.py:982 msgid "Cannot change Attributes after stock transaction. Make a new Item and transfer stock to the new Item" msgstr "" +#: erpnext/stock/doctype/item/item.py:1119 +msgid "Cannot change Item {0} from serialized to non-serialized because a Serial and Batch Bundle exists for it. Please delete or cancel the Serial and Batch Bundle first." +msgstr "" + #: erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py:74 msgid "Cannot change Reference Document Type." msgstr "" @@ -9487,11 +9503,11 @@ msgstr "" msgid "Cannot change Service Stop Date for item in row {0}" msgstr "" -#: erpnext/stock/doctype/item/item.py:972 +#: erpnext/stock/doctype/item/item.py:973 msgid "Cannot change Variant properties after stock transaction. You will have to make a new Item to do this." msgstr "" -#: erpnext/setup/doctype/company/company.py:331 +#: erpnext/setup/doctype/company/company.py:332 msgid "Cannot change company's default currency, because there are existing transactions. Transactions must be cancelled to change the default currency." msgstr "" @@ -9519,7 +9535,7 @@ msgstr "" msgid "Cannot create Intercompany {0}. All items in the source {1} have already been fully invoiced. Please check the existing linked {2}s." msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1016 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1021 msgid "Cannot create Stock Reservation Entries for future dated Purchase Receipts." msgstr "" @@ -9557,7 +9573,7 @@ msgstr "" msgid "Cannot delete Serial No {0}, as it is used in stock transactions" msgstr "" -#: erpnext/controllers/accounts_controller.py:3811 +#: erpnext/controllers/accounts_controller.py:3831 msgid "Cannot delete an item which has been ordered" msgstr "" @@ -9574,7 +9590,7 @@ msgstr "" msgid "Cannot disable Serial and Batch No for Item, as there are existing records for serial / batch." msgstr "" -#: erpnext/setup/doctype/company/company.py:561 +#: erpnext/setup/doctype/company/company.py:562 msgid "Cannot disable perpetual inventory, as there are existing Stock Ledger Entries for the company {0}. Please cancel the stock transactions first and try again." msgstr "" @@ -9582,7 +9598,7 @@ msgstr "" msgid "Cannot disable {0} as it may lead to incorrect stock valuation." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:792 +#: erpnext/manufacturing/doctype/work_order/work_order.py:799 msgid "Cannot disassemble more than produced quantity." msgstr "" @@ -9590,7 +9606,7 @@ msgstr "" msgid "Cannot disassemble {0} qty against Stock Entry {1}. Only {2} qty available to disassemble." msgstr "" -#: erpnext/setup/doctype/company/company.py:223 +#: erpnext/setup/doctype/company/company.py:224 msgid "Cannot enable Item-wise Inventory Account, as there are existing Stock Ledger Entries for the company {0} with Warehouse-wise Inventory Account. Please cancel the stock transactions first and try again." msgstr "" @@ -9615,7 +9631,7 @@ msgstr "" msgid "Cannot find Item with this Barcode" msgstr "" -#: erpnext/controllers/accounts_controller.py:3763 +#: erpnext/controllers/accounts_controller.py:3783 msgid "Cannot find a default warehouse for item {0}. Please set one in the Item Master or in Stock Settings." msgstr "" @@ -9623,15 +9639,15 @@ msgstr "" msgid "Cannot merge {0} '{1}' into '{2}' as both have existing accounting entries in different currencies for company '{3}'." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:642 +#: erpnext/manufacturing/doctype/work_order/work_order.py:643 msgid "Cannot produce more Item {0} than Sales Order quantity {1} {2}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1537 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1561 msgid "Cannot produce more item for {0}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1541 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1565 msgid "Cannot produce more than {0} items for {1}" msgstr "" @@ -9639,12 +9655,12 @@ msgstr "" msgid "Cannot receive from customer against negative outstanding" msgstr "" -#: erpnext/controllers/accounts_controller.py:3959 +#: erpnext/controllers/accounts_controller.py:3979 msgid "Cannot reduce quantity than ordered or purchased quantity" msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.js:1523 -#: erpnext/controllers/accounts_controller.py:3211 +#: erpnext/controllers/accounts_controller.py:3231 #: erpnext/public/js/controllers/accounts.js:117 msgid "Cannot refer row number greater than or equal to current row number for this Charge type" msgstr "" @@ -9657,14 +9673,14 @@ msgstr "" msgid "Cannot retrieve link token. Check Error Log for more information" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:368 +#: erpnext/selling/doctype/customer/customer.py:369 msgid "Cannot select a Group type Customer Group. Please select a non-group Customer Group." msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.js:1516 #: erpnext/accounts/doctype/payment_entry/payment_entry.js:1694 #: erpnext/accounts/doctype/payment_entry/payment_entry.py:1848 -#: erpnext/controllers/accounts_controller.py:3201 +#: erpnext/controllers/accounts_controller.py:3221 #: erpnext/public/js/controllers/accounts.js:109 #: erpnext/public/js/controllers/taxes_and_totals.js:555 msgid "Cannot select charge type as 'On Previous Row Amount' or 'On Previous Row Total' for first row" @@ -9678,15 +9694,15 @@ msgstr "" msgid "Cannot set authorization on basis of Discount for {0}" msgstr "" -#: erpnext/stock/doctype/item/item.py:772 +#: erpnext/stock/doctype/item/item.py:773 msgid "Cannot set multiple Item Defaults for a company." msgstr "" -#: erpnext/controllers/accounts_controller.py:3925 +#: erpnext/controllers/accounts_controller.py:3945 msgid "Cannot set quantity less than delivered quantity." msgstr "" -#: erpnext/controllers/accounts_controller.py:3926 +#: erpnext/controllers/accounts_controller.py:3946 msgid "Cannot set quantity less than received quantity." msgstr "" @@ -9702,7 +9718,7 @@ msgstr "" msgid "Cannot submit Job Card {0} while it is On Hold. Please resume and complete the job before submission." msgstr "" -#: erpnext/controllers/accounts_controller.py:3953 +#: erpnext/controllers/accounts_controller.py:3973 msgid "Cannot update rate as item {0} is already ordered or purchased against this quotation" msgstr "" @@ -9735,7 +9751,7 @@ msgstr "" msgid "Capacity Planning" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1166 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1173 msgid "Capacity Planning Error, planned start time can not be same as end time" msgstr "" @@ -9779,7 +9795,7 @@ msgstr "" msgid "Capital Work in Progress" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:223 +#: erpnext/assets/doctype/asset/asset.js:228 msgid "Capitalize Asset" msgstr "" @@ -9788,7 +9804,7 @@ msgstr "" msgid "Capitalize Repair Cost" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:221 +#: erpnext/assets/doctype/asset/asset.js:226 msgid "Capitalize this asset before submitting." msgstr "" @@ -10091,7 +10107,7 @@ msgstr "" msgid "Change this date manually to setup the next synchronization start date" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:158 +#: erpnext/selling/doctype/customer/customer.py:159 msgid "Changed customer name to '{}' as '{}' already exists." msgstr "" @@ -10120,7 +10136,7 @@ msgid "Channel Partner" msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.py:2277 -#: erpnext/controllers/accounts_controller.py:3264 +#: erpnext/controllers/accounts_controller.py:3284 msgid "Charge of type 'Actual' in row {0} cannot be included in Item Rate or Paid Amount" msgstr "" @@ -10170,7 +10186,7 @@ msgstr "" #: erpnext/accounts/doctype/accounts_settings/accounts_settings.json #: erpnext/accounts/doctype/cost_center/cost_center_tree.js:52 #: erpnext/accounts/workspace/invoicing/invoicing.json -#: erpnext/public/js/setup_wizard.js:43 +#: erpnext/public/js/setup_wizard.js:138 #: erpnext/setup/doctype/company/company.js:123 #: erpnext/setup/doctype/company/company.json #: erpnext/setup/workspace/home/home.json @@ -10314,7 +10330,7 @@ msgstr "" #. Label of the reference_date (Date) field in DocType 'Payment Entry' #: erpnext/accounts/doctype/payment_entry/payment_entry.json -#: erpnext/public/js/controllers/transaction.js:2801 +#: erpnext/public/js/controllers/transaction.js:2823 msgid "Cheque/Reference Date" msgstr "" @@ -10372,7 +10388,7 @@ msgstr "" #. Label of the child_row_reference (Data) field in DocType 'Quality #. Inspection' -#: erpnext/public/js/controllers/transaction.js:2896 +#: erpnext/public/js/controllers/transaction.js:2918 #: erpnext/stock/doctype/quality_inspection/quality_inspection.json msgid "Child Row Reference" msgstr "" @@ -10575,7 +10591,7 @@ msgstr "" msgid "Closed Documents" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2690 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2705 msgid "Closed Work Order can not be stopped or Re-opened" msgstr "" @@ -11036,7 +11052,7 @@ msgstr "" #. Label of the company (Link) field in DocType 'Issue' #. Label of the company (Link) field in DocType 'Warranty Claim' #. Label of a Workspace Sidebar Item -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:81 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:82 #: banking/src/pages/BankStatementImporter.tsx:84 #: erpnext/accounts/dashboard_chart_source/account_balance_timeline/account_balance_timeline.js:8 #: erpnext/accounts/doctype/account/account.json @@ -11346,11 +11362,11 @@ msgstr "" msgid "Company" msgstr "" -#: erpnext/public/js/setup_wizard.js:36 +#: erpnext/public/js/setup_wizard.js:131 msgid "Company Abbreviation" msgstr "" -#: erpnext/public/js/setup_wizard.js:174 +#: erpnext/public/js/setup_wizard.js:269 msgid "Company Abbreviation cannot have more than 5 characters" msgstr "" @@ -11404,11 +11420,11 @@ msgstr "" msgid "Company Address Name" msgstr "" -#: erpnext/controllers/accounts_controller.py:4389 +#: erpnext/controllers/accounts_controller.py:4409 msgid "Company Address is missing. You don't have permission to create an Address. Please contact your System Manager." msgstr "" -#: erpnext/controllers/accounts_controller.py:4377 +#: erpnext/controllers/accounts_controller.py:4397 msgid "Company Address is missing. You don't have permission to update it. Please contact your System Manager." msgstr "" @@ -11484,7 +11500,7 @@ msgstr "" msgid "Company Logo" msgstr "" -#: erpnext/public/js/setup_wizard.js:77 +#: erpnext/public/js/setup_wizard.js:172 msgid "Company Name cannot be Company" msgstr "" @@ -11514,7 +11530,7 @@ msgid "Company currencies of both the companies should match for Inter Company T msgstr "" #: erpnext/stock/doctype/material_request/material_request.js:380 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:851 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:856 msgid "Company field is required" msgstr "" @@ -11530,7 +11546,7 @@ msgstr "" msgid "Company is mandatory for generating an invoice. Please set a default company in Global Defaults." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:85 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:86 msgid "Company is required" msgstr "" @@ -11544,7 +11560,7 @@ msgstr "" msgid "Company name not same" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:330 +#: erpnext/assets/doctype/asset/asset.py:334 msgid "Company of asset {0} and purchase document {1} doesn't matches." msgstr "" @@ -11673,7 +11689,7 @@ msgstr "" msgid "Completed Qty" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1455 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1479 msgid "Completed Qty cannot be greater than 'Qty to Manufacture'" msgstr "" @@ -11784,8 +11800,8 @@ msgstr "" msgid "Conditions will be applied on all the selected items combined. " msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:395 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:413 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:396 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:414 msgid "Configure Accounts" msgstr "" @@ -12065,7 +12081,7 @@ msgstr "" msgid "Consumed Qty" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1866 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1881 msgid "Consumed Qty cannot be greater than Reserved Qty for item {0}" msgstr "" @@ -12102,7 +12118,7 @@ msgstr "" msgid "Consumer Products" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:198 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:209 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:101 msgid "Consumption Rate" msgstr "" @@ -12222,7 +12238,7 @@ msgstr "" msgid "Contact Person" msgstr "" -#: erpnext/controllers/accounts_controller.py:585 +#: erpnext/controllers/accounts_controller.py:605 msgid "Contact Person does not belong to the {0}" msgstr "" @@ -12233,7 +12249,7 @@ msgstr "" #. Option for the 'Check' (Select) field in DocType 'Bank Transaction Rule #. Description Conditions' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:200 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:201 #: erpnext/accounts/doctype/bank_transaction_rule_description_conditions/bank_transaction_rule_description_conditions.json msgid "Contains" msgstr "" @@ -12410,23 +12426,23 @@ msgstr "" msgid "Conversion Rate" msgstr "" -#: erpnext/stock/doctype/item/item.py:444 +#: erpnext/stock/doctype/item/item.py:445 msgid "Conversion factor for default Unit of Measure must be 1 in row {0}" msgstr "" -#: erpnext/controllers/stock_controller.py:122 +#: erpnext/controllers/stock_controller.py:158 msgid "Conversion factor for item {0} has been reset to 1.0 as the uom {1} is same as stock uom {2}." msgstr "" -#: erpnext/controllers/accounts_controller.py:2979 +#: erpnext/controllers/accounts_controller.py:2999 msgid "Conversion rate cannot be 0" msgstr "" -#: erpnext/controllers/accounts_controller.py:2986 +#: erpnext/controllers/accounts_controller.py:3006 msgid "Conversion rate is 1.00, but document currency is different from company currency" msgstr "" -#: erpnext/controllers/accounts_controller.py:2982 +#: erpnext/controllers/accounts_controller.py:3002 msgid "Conversion rate must be 1.00 if document currency is same as company currency" msgstr "" @@ -12627,8 +12643,8 @@ msgstr "" #. Label of the cost_center (Link) field in DocType 'Subcontracting Receipt #. Supplied Item' #. Label of a Workspace Sidebar Item -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:591 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:650 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:567 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:626 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1179 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1223 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:593 @@ -12684,7 +12700,7 @@ msgstr "" #: erpnext/accounts/report/purchase_register/purchase_register.js:46 #: erpnext/accounts/report/sales_payment_summary/sales_payment_summary.py:29 #: erpnext/accounts/report/sales_register/sales_register.js:52 -#: erpnext/accounts/report/sales_register/sales_register.py:252 +#: erpnext/accounts/report/sales_register/sales_register.py:266 #: erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:79 #: erpnext/accounts/report/trial_balance/trial_balance.js:49 #: erpnext/assets/doctype/asset/asset.json @@ -12772,7 +12788,7 @@ msgid "Cost Center is required" msgstr "" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:1472 -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:903 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:908 msgid "Cost Center is required in row {0} in Taxes table for type {1}" msgstr "" @@ -12792,11 +12808,11 @@ msgstr "" msgid "Cost Center {0} cannot be used for allocation as it is used as main cost center in other allocation record." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:358 +#: erpnext/assets/doctype/asset/asset.py:362 msgid "Cost Center {} doesn't belong to Company {}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:365 +#: erpnext/assets/doctype/asset/asset.py:369 msgid "Cost Center {} is a group cost center and group cost centers cannot be used in transactions" msgstr "" @@ -12937,11 +12953,11 @@ msgstr "" msgid "Could not auto create Customer due to the following missing mandatory field(s):" msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:655 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:656 msgid "Could not create Credit Note automatically, please uncheck 'Issue Credit Note' and submit again" msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:972 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:978 msgid "Could not detect any tables in this PDF. It may be a scanned or image-based statement, which is not supported (no OCR)." msgstr "" @@ -13064,7 +13080,7 @@ msgstr "" msgid "Create Asset Location" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:277 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:278 msgid "Create Bank Entry against" msgstr "" @@ -13242,7 +13258,7 @@ msgstr "" msgid "Create Payment Entry for Consolidated POS Invoices." msgstr "" -#: erpnext/public/js/controllers/transaction.js:543 +#: erpnext/public/js/controllers/transaction.js:565 msgid "Create Payment Request" msgstr "" @@ -13429,12 +13445,12 @@ msgstr "" msgid "Create Users" msgstr "" -#: erpnext/stock/doctype/item/item.js:1011 +#: erpnext/stock/doctype/item/item.js:1097 msgid "Create Variant" msgstr "" -#: erpnext/stock/doctype/item/item.js:816 -#: erpnext/stock/doctype/item/item.js:860 +#: erpnext/stock/doctype/item/item.js:909 +#: erpnext/stock/doctype/item/item.js:946 msgid "Create Variants" msgstr "" @@ -13465,12 +13481,12 @@ msgstr "" msgid "Create a new rule to automatically classify transactions." msgstr "" -#: erpnext/stock/doctype/item/item.js:843 -#: erpnext/stock/doctype/item/item.js:1004 +#: erpnext/stock/doctype/item/item.js:929 +#: erpnext/stock/doctype/item/item.js:1090 msgid "Create a variant with the template image." msgstr "" -#: erpnext/stock/stock_ledger.py:2027 +#: erpnext/stock/stock_ledger.py:2033 msgid "Create an incoming stock transaction for the Item." msgstr "" @@ -13591,7 +13607,7 @@ msgstr "" msgid "Creating User..." msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:36 +#: erpnext/setup/setup_wizard/setup_wizard.py:44 msgid "Creating demo data" msgstr "" @@ -13600,7 +13616,7 @@ msgid "Creating {} out of {} {}" msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:141 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:154 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:165 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:46 msgid "Creation" msgstr "" @@ -13626,11 +13642,11 @@ msgstr "" #. Label of the credit_in_account_currency (Currency) field in DocType 'Journal #. Entry Account' #: banking/src/components/features/ActionLog/ActionLogDialogBody.tsx:199 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:594 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:693 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:570 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:669 #: banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx:133 #: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:140 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:404 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:405 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:596 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:711 #: erpnext/accounts/doctype/account/account.json @@ -13642,8 +13658,8 @@ msgstr "" #: erpnext/accounts/report/cheques_and_deposits_incorrectly_cleared/cheques_and_deposits_incorrectly_cleared.py:146 #: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:431 #: erpnext/accounts/report/general_ledger/general_ledger.html:167 -#: erpnext/accounts/report/purchase_register/purchase_register.py:241 -#: erpnext/accounts/report/sales_register/sales_register.py:277 +#: erpnext/accounts/report/purchase_register/purchase_register.py:257 +#: erpnext/accounts/report/sales_register/sales_register.py:291 #: erpnext/accounts/report/trial_balance/trial_balance.py:530 #: erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.py:212 #: erpnext/accounts/report/voucher_wise_balance/voucher_wise_balance.py:34 @@ -13658,7 +13674,7 @@ msgstr "" msgid "Credit ({0})" msgstr "" -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:643 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:650 msgid "Credit Account" msgstr "" @@ -13735,7 +13751,7 @@ msgstr "" msgid "Credit Limit" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:643 +#: erpnext/selling/doctype/customer/customer.py:645 msgid "Credit Limit Crossed" msgstr "" @@ -13798,7 +13814,7 @@ msgstr "" msgid "Credit Note will update it's own outstanding amount, even if 'Return Against' is specified." msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:652 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:653 msgid "Credit Note {0} has been created automatically" msgstr "" @@ -13806,7 +13822,7 @@ msgstr "" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:383 #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py:391 -#: erpnext/controllers/accounts_controller.py:2383 +#: erpnext/controllers/accounts_controller.py:2403 msgid "Credit To" msgstr "" @@ -13815,20 +13831,20 @@ msgstr "" msgid "Credit in Company Currency" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:609 -#: erpnext/selling/doctype/customer/customer.py:664 +#: erpnext/selling/doctype/customer/customer.py:611 +#: erpnext/selling/doctype/customer/customer.py:666 msgid "Credit limit has been crossed for customer {0} ({1}/{2})" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:395 +#: erpnext/selling/doctype/customer/customer.py:396 msgid "Credit limit is already defined for the Company {0}" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:663 +#: erpnext/selling/doctype/customer/customer.py:665 msgid "Credit limit reached for customer {0}" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:213 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:215 msgid "Creditor Turnover Ratio" msgstr "" @@ -14111,7 +14127,7 @@ msgstr "" msgid "Current Qty" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:152 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:154 msgid "Current Ratio" msgstr "" @@ -14298,7 +14314,7 @@ msgstr "" #: erpnext/accounts/report/pos_register/pos_register.py:120 #: erpnext/accounts/report/pos_register/pos_register.py:181 #: erpnext/accounts/report/sales_register/sales_register.js:21 -#: erpnext/accounts/report/sales_register/sales_register.py:187 +#: erpnext/accounts/report/sales_register/sales_register.py:201 #: erpnext/assets/doctype/asset/asset.json #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/supplier/supplier.js:225 @@ -14362,7 +14378,7 @@ msgstr "" #: erpnext/stock/doctype/pick_list/pick_list.json #: erpnext/stock/doctype/serial_no/serial_no.json #: erpnext/stock/doctype/shipment/shipment.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:489 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:494 #: erpnext/stock/doctype/warehouse/warehouse.json #: erpnext/stock/report/delayed_item_report/delayed_item_report.js:36 #: erpnext/stock/report/delayed_item_report/delayed_item_report.py:121 @@ -14574,7 +14590,7 @@ msgstr "" #: erpnext/accounts/report/gross_profit/gross_profit.py:423 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:208 #: erpnext/accounts/report/sales_register/sales_register.js:27 -#: erpnext/accounts/report/sales_register/sales_register.py:202 +#: erpnext/accounts/report/sales_register/sales_register.py:216 #: erpnext/crm/doctype/opportunity/opportunity.json #: erpnext/crm/doctype/prospect/prospect.json #: erpnext/crm/workspace/crm/crm.json @@ -14685,7 +14701,7 @@ msgstr "" #: erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:35 #: erpnext/accounts/report/gross_profit/gross_profit.py:430 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:228 -#: erpnext/accounts/report/sales_register/sales_register.py:193 +#: erpnext/accounts/report/sales_register/sales_register.py:207 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/crm/doctype/opportunity/opportunity.json #: erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.json @@ -14784,7 +14800,7 @@ msgstr "" msgid "Customer Provided Item Cost" msgstr "" -#: erpnext/setup/doctype/company/company.py:487 +#: erpnext/setup/doctype/company/company.py:488 msgid "Customer Service" msgstr "" @@ -14843,7 +14859,7 @@ msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1190 #: erpnext/selling/doctype/sales_order/sales_order.py:436 -#: erpnext/stock/doctype/delivery_note/delivery_note.py:406 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:407 msgid "Customer {0} does not belong to project {1}" msgstr "" @@ -14944,7 +14960,7 @@ msgid "Cycle/Second" msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:204 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:243 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:254 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:146 msgid "D - E" msgstr "" @@ -15184,11 +15200,11 @@ msgstr "" #. Label of the debit_in_account_currency (Currency) field in DocType 'Journal #. Entry Account' #: banking/src/components/features/ActionLog/ActionLogDialogBody.tsx:198 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:593 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:673 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:569 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:649 #: banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx:126 #: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:133 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:403 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:404 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:595 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:696 #: erpnext/accounts/doctype/account/account.json @@ -15200,8 +15216,8 @@ msgstr "" #: erpnext/accounts/report/cheques_and_deposits_incorrectly_cleared/cheques_and_deposits_incorrectly_cleared.py:139 #: erpnext/accounts/report/consolidated_trial_balance/consolidated_trial_balance.py:424 #: erpnext/accounts/report/general_ledger/general_ledger.html:166 -#: erpnext/accounts/report/purchase_register/purchase_register.py:240 -#: erpnext/accounts/report/sales_register/sales_register.py:276 +#: erpnext/accounts/report/purchase_register/purchase_register.py:256 +#: erpnext/accounts/report/sales_register/sales_register.py:290 #: erpnext/accounts/report/trial_balance/trial_balance.py:523 #: erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.py:205 #: erpnext/accounts/report/voucher_wise_balance/voucher_wise_balance.py:27 @@ -15222,7 +15238,7 @@ msgstr "" msgid "Debit / Credit Note Posting Date" msgstr "" -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:633 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:640 msgid "Debit Account" msgstr "" @@ -15294,7 +15310,7 @@ msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1061 #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1072 -#: erpnext/controllers/accounts_controller.py:2383 +#: erpnext/controllers/accounts_controller.py:2403 msgid "Debit To" msgstr "" @@ -15338,11 +15354,11 @@ msgstr "" msgid "Debits" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:170 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:172 msgid "Debt Equity Ratio" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:212 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:214 msgid "Debtor Turnover Ratio" msgstr "" @@ -15451,14 +15467,14 @@ msgstr "" #. Label of the default_advance_paid_account (Link) field in DocType 'Company' #: erpnext/setup/doctype/company/company.json -#: erpnext/setup/doctype/company/company.py:316 +#: erpnext/setup/doctype/company/company.py:317 msgid "Default Advance Paid Account" msgstr "" #. Label of the default_advance_received_account (Link) field in DocType #. 'Company' #: erpnext/setup/doctype/company/company.json -#: erpnext/setup/doctype/company/company.py:305 +#: erpnext/setup/doctype/company/company.py:306 msgid "Default Advance Received Account" msgstr "" @@ -15473,19 +15489,19 @@ msgstr "" msgid "Default BOM" msgstr "" -#: erpnext/stock/doctype/item/item.py:487 +#: erpnext/stock/doctype/item/item.py:488 msgid "Default BOM ({0}) must be active for this item or its template" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2458 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2473 msgid "Default BOM for {0} not found" msgstr "" -#: erpnext/controllers/accounts_controller.py:3997 +#: erpnext/controllers/accounts_controller.py:4017 msgid "Default BOM not found for FG Item {0}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2455 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2470 msgid "Default BOM not found for Item {0} and Project {1}" msgstr "" @@ -15817,15 +15833,15 @@ msgstr "" msgid "Default Unit of Measure" msgstr "" -#: erpnext/stock/doctype/item/item.py:1376 +#: erpnext/stock/doctype/item/item.py:1396 msgid "Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You need to either cancel the linked documents or create a new Item." msgstr "" -#: erpnext/stock/doctype/item/item.py:1359 +#: erpnext/stock/doctype/item/item.py:1379 msgid "Default Unit of Measure for Item {0} cannot be changed directly because you have already made some transaction(s) with another UOM. You will need to create a new Item to use a different Default UOM." msgstr "" -#: erpnext/stock/doctype/item/item.py:1007 +#: erpnext/stock/doctype/item/item.py:1008 msgid "Default Unit of Measure for Variant '{0}' must be same as in Template '{1}'" msgstr "" @@ -16121,7 +16137,7 @@ msgstr "" #. Order' #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/purchase_order/purchase_order_list.js:20 -#: erpnext/controllers/website_list_for_contact.py:212 +#: erpnext/controllers/website_list_for_contact.py:213 #: erpnext/stock/doctype/serial_no/serial_no.json #: erpnext/stock/doctype/shipment/shipment.json #: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.json @@ -16280,7 +16296,7 @@ msgstr "" #: erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.js:22 #: erpnext/accounts/report/delivered_items_to_be_billed/delivered_items_to_be_billed.py:21 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:291 -#: erpnext/accounts/report/sales_register/sales_register.py:245 +#: erpnext/accounts/report/sales_register/sales_register.py:259 #: erpnext/selling/doctype/sales_order/sales_order.js:1048 #: erpnext/selling/doctype/sales_order/sales_order_list.js:81 #: erpnext/selling/doctype/selling_settings/selling_settings.js:52 @@ -16507,7 +16523,7 @@ msgstr "" #. Option for the 'Transaction Type' (Select) field in DocType 'Bank #. Transaction Rule' #: banking/src/components/features/BankReconciliation/BankTransactionList.tsx:95 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:162 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:163 #: banking/src/components/features/BankStatementImporter/CSV/StatementDetails.tsx:247 #: banking/src/components/features/BankStatementImporter/CSV/StatementDetails.tsx:314 #: banking/src/pages/BankStatementImporter.tsx:194 @@ -16556,7 +16572,7 @@ msgstr "" #. Label of the depreciation_amount (Currency) field in DocType 'Depreciation #. Schedule' #: erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py:172 -#: erpnext/assets/doctype/asset/asset.js:379 +#: erpnext/assets/doctype/asset/asset.js:384 #: erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json msgid "Depreciation Amount" msgstr "" @@ -16587,7 +16603,7 @@ msgstr "" #: erpnext/accounts/doctype/journal_entry/journal_entry.json #: erpnext/accounts/doctype/journal_entry_template/journal_entry_template.json #: erpnext/accounts/report/asset_depreciation_ledger/asset_depreciation_ledger.py:190 -#: erpnext/assets/doctype/asset/asset.js:122 +#: erpnext/assets/doctype/asset/asset.js:127 msgid "Depreciation Entry" msgstr "" @@ -16596,7 +16612,7 @@ msgstr "" msgid "Depreciation Entry Posting Status" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1257 +#: erpnext/assets/doctype/asset/asset.py:1261 msgid "Depreciation Entry against asset {0}" msgstr "" @@ -16639,15 +16655,15 @@ msgstr "" msgid "Depreciation Posting Date" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:918 +#: erpnext/assets/doctype/asset/asset.js:927 msgid "Depreciation Posting Date cannot be before Available-for-use Date" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:387 +#: erpnext/assets/doctype/asset/asset.py:391 msgid "Depreciation Row {0}: Depreciation Posting Date cannot be before Available-for-use Date" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:717 +#: erpnext/assets/doctype/asset/asset.py:721 msgid "Depreciation Row {0}: Expected value after useful life must be greater than or equal to {1}" msgstr "" @@ -16675,7 +16691,7 @@ msgstr "" msgid "Depreciation Schedule View" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:482 +#: erpnext/assets/doctype/asset/asset.py:486 msgid "Depreciation cannot be calculated for fully depreciated assets" msgstr "" @@ -16770,7 +16786,7 @@ msgstr "" #. Label of the difference (Currency) field in DocType 'POS Closing Entry #. Detail' #: banking/src/components/features/BankReconciliation/BankBalance.tsx:106 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:792 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:768 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:871 #: erpnext/accounts/doctype/bisect_accounting_statements/bisect_accounting_statements.json #: erpnext/accounts/doctype/bisect_nodes/bisect_nodes.json @@ -17047,7 +17063,7 @@ msgstr "" msgid "Disabled items cannot be selected in any transaction." msgstr "" -#: erpnext/controllers/accounts_controller.py:911 +#: erpnext/controllers/accounts_controller.py:931 msgid "Disabled pricing rules since this {} is an internal transfer" msgstr "" @@ -17056,7 +17072,7 @@ msgstr "" msgid "Disabled suppliers are hidden from selection in new transactions but remain in historical records" msgstr "" -#: erpnext/controllers/accounts_controller.py:925 +#: erpnext/controllers/accounts_controller.py:945 msgid "Disabled tax included prices since this {} is an internal transfer" msgstr "" @@ -17073,8 +17089,8 @@ msgstr "" #. Option for the 'Purpose' (Select) field in DocType 'Stock Entry' #. Option for the 'Purpose' (Select) field in DocType 'Stock Entry Type' #: erpnext/manufacturing/doctype/work_order/work_order.js:1068 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:387 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:430 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:392 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:435 #: erpnext/stock/doctype/stock_entry/stock_entry.json #: erpnext/stock/doctype/stock_entry_type/stock_entry_type.json msgid "Disassemble" @@ -17358,7 +17374,7 @@ msgstr "" msgid "Dislikes" msgstr "" -#: erpnext/setup/doctype/company/company.py:481 +#: erpnext/setup/doctype/company/company.py:482 msgid "Dispatch" msgstr "" @@ -17608,7 +17624,7 @@ msgstr "" msgid "Do not use Batch-wise Valuation" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:956 +#: erpnext/assets/doctype/asset/asset.js:965 msgid "Do you really want to restore this scrapped asset?" msgstr "" @@ -17945,7 +17961,7 @@ msgstr "" msgid "Duplicate Entry. Please check Authorization Rule {0}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:414 +#: erpnext/assets/doctype/asset/asset.py:418 msgid "Duplicate Finance Book" msgstr "" @@ -18560,7 +18576,7 @@ msgstr "" msgid "Ems(Pica)" msgstr "" -#: erpnext/public/js/controllers/transaction.js:2965 +#: erpnext/public/js/controllers/transaction.js:2981 msgid "Enable {0} on the Item master to proceed with {1} inspection." msgstr "" @@ -18586,7 +18602,7 @@ msgstr "" msgid "Enable Auto Email" msgstr "" -#: erpnext/stock/doctype/item/item.py:1168 +#: erpnext/stock/doctype/item/item.py:1188 msgid "Enable Auto Re-Order" msgstr "" @@ -18918,7 +18934,7 @@ msgstr "" msgid "End Time" msgstr "" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:362 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:367 msgid "End Transit" msgstr "" @@ -18965,7 +18981,7 @@ msgstr "" msgid "Ends With" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:202 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:203 msgid "Ends with" msgstr "" @@ -19035,7 +19051,7 @@ msgstr "" msgid "Enter amount to be redeemed." msgstr "" -#: erpnext/stock/doctype/item/item.js:1173 +#: erpnext/stock/doctype/item/item.js:1259 msgid "Enter an Item Code, the name will be auto-filled the same as Item Code on clicking inside the Item Name field." msgstr "" @@ -19047,11 +19063,11 @@ msgstr "" msgid "Enter customer's phone number" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:927 +#: erpnext/assets/doctype/asset/asset.js:936 msgid "Enter date to scrap asset" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:480 +#: erpnext/assets/doctype/asset/asset.py:484 msgid "Enter depreciation details" msgstr "" @@ -19092,7 +19108,7 @@ msgstr "" msgid "Enter the name of the bank or lending institution before submitting." msgstr "" -#: erpnext/stock/doctype/item/item.js:1199 +#: erpnext/stock/doctype/item/item.js:1285 msgid "Enter the opening stock units." msgstr "" @@ -19123,7 +19139,7 @@ msgstr "" msgid "Entity" msgstr "" -#: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:190 +#: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:182 msgid "Entries below have a posting date after {0} but the clearance date is before {1}." msgstr "" @@ -19187,7 +19203,7 @@ msgstr "" msgid "Error in party matching for Bank Transaction {0}" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:350 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:326 msgid "Error uploading attachments" msgstr "" @@ -19256,7 +19272,7 @@ msgstr "" msgid "Example URL" msgstr "" -#: erpnext/stock/doctype/item/item.py:1099 +#: erpnext/stock/doctype/item/item.py:1100 msgid "Example of a linked document: {0}" msgstr "" @@ -19276,7 +19292,7 @@ msgstr "" msgid "Example: If the transaction amount is 200, then this will be calculated as {} = {}" msgstr "" -#: erpnext/stock/stock_ledger.py:2290 +#: erpnext/stock/stock_ledger.py:2315 msgid "Example: Serial No {0} reserved in {1}." msgstr "" @@ -19334,12 +19350,12 @@ msgstr "" #: erpnext/accounts/doctype/payment_entry_reference/payment_entry_reference.json #: erpnext/accounts/doctype/purchase_invoice_advance/purchase_invoice_advance.json #: erpnext/accounts/doctype/sales_invoice_advance/sales_invoice_advance.json -#: erpnext/setup/doctype/company/company.py:674 +#: erpnext/setup/doctype/company/company.py:675 msgid "Exchange Gain/Loss" msgstr "" -#: erpnext/controllers/accounts_controller.py:1784 -#: erpnext/controllers/accounts_controller.py:1869 +#: erpnext/controllers/accounts_controller.py:1804 +#: erpnext/controllers/accounts_controller.py:1889 msgid "Exchange Gain/Loss amount has been booked through {0}" msgstr "" @@ -19436,7 +19452,7 @@ msgstr "" msgid "Excise Entry" msgstr "" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:1525 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:1530 msgid "Excise Invoice" msgstr "" @@ -19646,7 +19662,7 @@ msgstr "" msgid "Expense" msgstr "" -#: erpnext/controllers/stock_controller.py:942 +#: erpnext/controllers/stock_controller.py:982 msgid "Expense / Difference account ({0}) must be a 'Profit or Loss' account" msgstr "" @@ -19692,7 +19708,7 @@ msgstr "" msgid "Expense Account" msgstr "" -#: erpnext/controllers/stock_controller.py:922 +#: erpnext/controllers/stock_controller.py:962 msgid "Expense Account Missing" msgstr "" @@ -19744,7 +19760,7 @@ msgid "Expenses Included In Valuation" msgstr "" #: erpnext/stock/doctype/pick_list/pick_list.py:310 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:513 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:518 msgid "Expired Batches" msgstr "" @@ -19876,7 +19892,7 @@ msgid "FIFO Stock Queue (qty, rate)" msgstr "" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:179 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:218 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:229 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:121 msgid "FIFO/LIFO Queue" msgstr "" @@ -19899,8 +19915,8 @@ msgstr "" msgid "Failed to Authenticate the API key." msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:37 -#: erpnext/setup/setup_wizard/setup_wizard.py:38 +#: erpnext/setup/setup_wizard/setup_wizard.py:45 +#: erpnext/setup/setup_wizard/setup_wizard.py:46 msgid "Failed to create demo data" msgstr "" @@ -19916,8 +19932,8 @@ msgstr "" msgid "Failed to erase demo data, please delete the demo company manually." msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:16 #: erpnext/setup/setup_wizard/setup_wizard.py:17 +#: erpnext/setup/setup_wizard/setup_wizard.py:18 msgid "Failed to install presets" msgstr "" @@ -19925,7 +19941,12 @@ msgstr "" msgid "Failed to parse MT940 format. Error: {0}" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:264 +#: erpnext/setup/setup_wizard/setup_wizard.py:34 +#: erpnext/setup/setup_wizard/setup_wizard.py:36 +msgid "Failed to personalize your setup" +msgstr "" + +#: erpnext/assets/doctype/asset/asset.js:269 msgid "Failed to post depreciation entries" msgstr "" @@ -19937,20 +19958,20 @@ msgstr "" msgid "Failed to send email for campaign {0} to {1}" msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:26 +#: erpnext/setup/setup_wizard/setup_wizard.py:27 msgid "Failed to set defaults" msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:21 #: erpnext/setup/setup_wizard/setup_wizard.py:22 +#: erpnext/setup/setup_wizard/setup_wizard.py:23 msgid "Failed to setup company" msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:28 +#: erpnext/setup/setup_wizard/setup_wizard.py:29 msgid "Failed to setup defaults" msgstr "" -#: erpnext/setup/doctype/company/company.py:856 +#: erpnext/setup/doctype/company/company.py:857 msgid "Failed to setup defaults for country {0}. Please contact support." msgstr "" @@ -20062,7 +20083,7 @@ msgid "Fetch Value From" msgstr "" #: erpnext/stock/doctype/material_request/material_request.js:372 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:828 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:833 msgid "Fetch exploded BOM (including sub-assemblies)" msgstr "" @@ -20090,7 +20111,7 @@ msgid "Fetching Sales Orders..." msgstr "" #: erpnext/accounts/doctype/dunning/dunning.js:135 -#: erpnext/public/js/controllers/transaction.js:1611 +#: erpnext/public/js/controllers/transaction.js:1633 msgid "Fetching exchange rates ..." msgstr "" @@ -20334,7 +20355,7 @@ msgstr "" msgid "Financial Statements" msgstr "" -#: erpnext/public/js/setup_wizard.js:48 +#: erpnext/public/js/setup_wizard.js:143 msgid "Financial Year Begins On" msgstr "" @@ -20403,15 +20424,15 @@ msgstr "" msgid "Finished Good Item Quantity" msgstr "" -#: erpnext/controllers/accounts_controller.py:3983 +#: erpnext/controllers/accounts_controller.py:4003 msgid "Finished Good Item is not specified for service item {0}" msgstr "" -#: erpnext/controllers/accounts_controller.py:4000 +#: erpnext/controllers/accounts_controller.py:4020 msgid "Finished Good Item {0} Qty can not be zero" msgstr "" -#: erpnext/controllers/accounts_controller.py:3994 +#: erpnext/controllers/accounts_controller.py:4014 msgid "Finished Good Item {0} must be a sub-contracted item" msgstr "" @@ -20457,7 +20478,7 @@ msgid "Finished Good {0} must be a sub-contracted item." msgstr "" #: erpnext/selling/doctype/sales_order/sales_order.js:1437 -#: erpnext/setup/doctype/company/company.py:386 +#: erpnext/setup/doctype/company/company.py:387 msgid "Finished Goods" msgstr "" @@ -20647,7 +20668,7 @@ msgstr "" #. Capitalization Asset Item' #. Label of the fixed_asset_account (Link) field in DocType 'Asset Category #. Account' -#: erpnext/assets/doctype/asset/asset.py:899 +#: erpnext/assets/doctype/asset/asset.py:903 #: erpnext/assets/doctype/asset_capitalization_asset_item/asset_capitalization_asset_item.json #: erpnext/assets/doctype/asset_category_account/asset_category_account.json msgid "Fixed Asset Account" @@ -20658,7 +20679,7 @@ msgstr "" msgid "Fixed Asset Defaults" msgstr "" -#: erpnext/stock/doctype/item/item.py:355 +#: erpnext/stock/doctype/item/item.py:356 msgid "Fixed Asset Item must be a non-stock item." msgstr "" @@ -20669,7 +20690,7 @@ msgstr "" msgid "Fixed Asset Register" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:211 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:213 msgid "Fixed Asset Turnover Ratio" msgstr "" @@ -20751,7 +20772,7 @@ msgstr "" msgid "Following Material Requests have been raised automatically based on Item's re-order level" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:834 +#: erpnext/selling/doctype/customer/customer.py:836 msgid "Following fields are mandatory to create address:" msgstr "" @@ -20808,7 +20829,7 @@ msgstr "" msgid "For Item" msgstr "" -#: erpnext/controllers/stock_controller.py:1645 +#: erpnext/controllers/stock_controller.py:1685 msgid "For Item {0} cannot be received more than {1} qty against the {2} {3}" msgstr "" @@ -20852,7 +20873,7 @@ msgstr "" msgid "For Raw Materials" msgstr "" -#: erpnext/controllers/accounts_controller.py:1449 +#: erpnext/controllers/accounts_controller.py:1469 msgid "For Return Invoices with Stock effect, '0' qty Items are not allowed. Following rows are affected: {0}" msgstr "" @@ -20936,7 +20957,7 @@ msgstr "" msgid "For operation {0} at row {1}, please add raw materials or set a BOM against it." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2837 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2852 msgid "For operation {0}: Quantity ({1}) can not be greater than pending quantity({2})" msgstr "" @@ -20990,12 +21011,12 @@ msgstr "" msgid "For the item {0}, the consumed quantity should be {1} according to the BOM {2}." msgstr "" -#: erpnext/public/js/controllers/transaction.js:1421 +#: erpnext/public/js/controllers/transaction.js:1443 msgctxt "Clear payment terms template and/or payment schedule when due date is changed" msgid "For the new {0} to take effect, would you like to clear the current {1}?" msgstr "" -#: erpnext/controllers/stock_controller.py:443 +#: erpnext/controllers/stock_controller.py:483 msgid "For the {0}, no stock is available for the return in the warehouse {1}." msgstr "" @@ -21611,15 +21632,11 @@ msgstr "" msgid "Future date is not allowed" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:258 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:269 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:161 msgid "G - D" msgstr "" -#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:16 -msgid "GENERAL LEDGER" -msgstr "" - #: banking/src/components/features/BankReconciliation/BankPicker.tsx:127 #: banking/src/components/features/BankReconciliation/SelectedTransactionDetails.tsx:64 msgid "GL Account" @@ -21694,7 +21711,7 @@ msgstr "" #: erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts.py:134 #: erpnext/accounts/doctype/account/chart_of_accounts/verified/standard_chart_of_accounts_with_account_number.py:220 -#: erpnext/setup/doctype/company/company.py:682 +#: erpnext/setup/doctype/company/company.py:683 msgid "Gain/Loss on Asset Disposal" msgstr "" @@ -21783,7 +21800,7 @@ msgstr "" msgid "Generate Demand" msgstr "" -#: erpnext/public/js/setup_wizard.js:54 +#: erpnext/public/js/setup_wizard.js:149 msgid "Generate Demo Data for Exploration" msgstr "" @@ -21943,11 +21960,11 @@ msgstr "" #: erpnext/stock/doctype/material_request/material_request.js:238 #: erpnext/stock/doctype/purchase_receipt/purchase_receipt.js:144 #: erpnext/stock/doctype/purchase_receipt/purchase_receipt.js:244 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:456 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:503 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:536 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:627 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:795 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:461 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:508 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:541 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:632 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:800 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.js:165 msgid "Get Items From" msgstr "" @@ -21963,8 +21980,8 @@ msgid "Get Items for Purchase Only" msgstr "" #: erpnext/stock/doctype/material_request/material_request.js:346 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:831 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:844 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:836 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:849 msgid "Get Items from BOM" msgstr "" @@ -22148,7 +22165,7 @@ msgstr "" msgid "Goods" msgstr "" -#: erpnext/setup/doctype/company/company.py:387 +#: erpnext/setup/doctype/company/company.py:388 #: erpnext/stock/doctype/stock_entry/stock_entry_list.js:34 msgid "Goods In Transit" msgstr "" @@ -22278,8 +22295,8 @@ msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json #: erpnext/accounts/doctype/subscription/subscription.json #: erpnext/accounts/report/pos_register/pos_register.py:202 -#: erpnext/accounts/report/purchase_register/purchase_register.py:275 -#: erpnext/accounts/report/sales_register/sales_register.py:305 +#: erpnext/accounts/report/purchase_register/purchase_register.py:291 +#: erpnext/accounts/report/sales_register/sales_register.py:319 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/supplier_quotation/supplier_quotation.json #: erpnext/manufacturing/doctype/production_plan_sales_order/production_plan_sales_order.json @@ -22401,7 +22418,7 @@ msgstr "" msgid "Gross Profit Percent" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:171 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:173 msgid "Gross Profit Ratio" msgstr "" @@ -22511,7 +22528,7 @@ msgstr "" msgid "Growth View" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:268 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:279 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:171 msgid "H - F" msgstr "" @@ -22778,7 +22795,7 @@ msgstr "" msgid "Here are the error logs for the aforementioned failed depreciation entries: {0}" msgstr "" -#: erpnext/stock/stock_ledger.py:2012 +#: erpnext/stock/stock_ledger.py:2018 msgid "Here are the options to proceed:" msgstr "" @@ -22966,6 +22983,10 @@ msgstr "" msgid "How Pricing Rule is applied?" msgstr "" +#: erpnext/public/js/setup_wizard.js:40 +msgid "How big is the team?" +msgstr "" + #. Label of the frequency (Select) field in DocType 'Email Digest' #: erpnext/setup/doctype/email_digest/email_digest.json msgid "How frequently?" @@ -23005,7 +23026,7 @@ msgstr "" msgid "Hrs" msgstr "" -#: erpnext/setup/doctype/company/company.py:493 +#: erpnext/setup/doctype/company/company.py:494 msgid "Human Resources" msgstr "" @@ -23019,12 +23040,12 @@ msgstr "" msgid "Hundredweight (US)" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:283 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:294 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:186 msgid "I - J" msgstr "" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:293 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:304 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:196 msgid "I - K" msgstr "" @@ -23189,7 +23210,7 @@ msgstr "" msgid "If checked, updates inventory; stock and accounting entries are created together. Leave unchecked if a Purchase Receipt is created separately." msgstr "" -#: erpnext/public/js/setup_wizard.js:56 +#: erpnext/public/js/setup_wizard.js:151 msgid "If checked, we will create demo data for you to explore the system. This demo data can be erased later." msgstr "" @@ -23421,7 +23442,7 @@ msgstr "" msgid "If no taxes are set, and Taxes and Charges Template is selected, the system will automatically apply the taxes from the chosen template." msgstr "" -#: erpnext/stock/stock_ledger.py:2022 +#: erpnext/stock/stock_ledger.py:2028 msgid "If not, you can Cancel / Submit this entry" msgstr "" @@ -23439,7 +23460,7 @@ msgstr "" msgid "If rate is zero then item will be treated as \"Free Item\"" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:258 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:259 msgid "If rule matches, then:" msgstr "" @@ -23467,7 +23488,7 @@ msgstr "" msgid "If the account is frozen, entries are allowed to restricted users." msgstr "" -#: erpnext/stock/stock_ledger.py:2015 +#: erpnext/stock/stock_ledger.py:2021 msgid "If the item is transacting as a Zero Valuation Rate item in this entry, please enable 'Allow Zero Valuation Rate' in the {0} Item table." msgstr "" @@ -23554,7 +23575,7 @@ msgstr "" msgid "If yes, then this warehouse will be used to store rejected materials" msgstr "" -#: erpnext/stock/doctype/item/item.js:1185 +#: erpnext/stock/doctype/item/item.js:1271 msgid "If you are maintaining stock of this Item in your Inventory, ERPNext will make a stock ledger entry for each transaction of this item." msgstr "" @@ -23726,7 +23747,7 @@ msgstr "" msgid "Ignores legacy Is Opening field in GL Entry that allows adding opening balance post the system is in use while generating reports" msgstr "" -#: erpnext/stock/doctype/item/item.py:253 +#: erpnext/stock/doctype/item/item.py:254 msgid "Image in the description has been removed. To disable this behavior, uncheck \"{0}\" in {1}." msgstr "" @@ -24019,7 +24040,7 @@ msgstr "" msgid "In this case, the amount will be calculated as 25% of the transaction amount. If the transaction amount is 200, then this will be calculated as 200 * 0.25 = 50." msgstr "" -#: erpnext/stock/doctype/item/item.js:1218 +#: erpnext/stock/doctype/item/item.js:1304 msgid "In this section, you can define Company-wide transaction-related defaults for this Item. Eg. Default Warehouse, Default Price List, Supplier, etc." msgstr "" @@ -24328,7 +24349,7 @@ msgstr "" #: erpnext/stock/report/available_serial_no/available_serial_no.py:146 #: erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py:167 #: erpnext/stock/report/stock_ledger/stock_ledger.py:361 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:193 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:204 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:96 msgid "Incoming Rate" msgstr "" @@ -24359,7 +24380,7 @@ msgstr "" msgid "Incorrect Batch Consumed" msgstr "" -#: erpnext/stock/doctype/item/item.py:583 +#: erpnext/stock/doctype/item/item.py:584 msgid "Incorrect Check in (group) Warehouse for Reorder" msgstr "" @@ -24371,7 +24392,7 @@ msgstr "" msgid "Incorrect Component Quantity" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:390 +#: erpnext/assets/doctype/asset/asset.py:394 #: erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.py:56 msgid "Incorrect Date" msgstr "" @@ -24577,14 +24598,14 @@ msgstr "" msgid "Inspected By" msgstr "" -#: erpnext/controllers/stock_controller.py:1539 +#: erpnext/controllers/stock_controller.py:1579 #: erpnext/manufacturing/doctype/job_card/job_card.py:834 msgid "Inspection Rejected" msgstr "" #. Label of the inspection_required (Check) field in DocType 'Stock Entry' -#: erpnext/controllers/stock_controller.py:1509 -#: erpnext/controllers/stock_controller.py:1511 +#: erpnext/controllers/stock_controller.py:1549 +#: erpnext/controllers/stock_controller.py:1551 #: erpnext/stock/doctype/stock_entry/stock_entry.json msgid "Inspection Required" msgstr "" @@ -24601,7 +24622,7 @@ msgstr "" msgid "Inspection Required before Purchase" msgstr "" -#: erpnext/controllers/stock_controller.py:1524 +#: erpnext/controllers/stock_controller.py:1564 #: erpnext/manufacturing/doctype/job_card/job_card.py:815 msgid "Inspection Submission" msgstr "" @@ -24632,7 +24653,7 @@ msgstr "" msgid "Installation Note Item" msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:606 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:607 msgid "Installation Note {0} has already been submitted" msgstr "" @@ -24657,7 +24678,7 @@ msgstr "" msgid "Installed Qty" msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:15 +#: erpnext/setup/setup_wizard/setup_wizard.py:16 msgid "Installing presets" msgstr "" @@ -24671,11 +24692,11 @@ msgstr "" msgid "Insufficient Capacity" msgstr "" -#: erpnext/controllers/accounts_controller.py:3879 -#: erpnext/controllers/accounts_controller.py:3901 -#: erpnext/controllers/accounts_controller.py:4419 -#: erpnext/controllers/accounts_controller.py:4425 -#: erpnext/controllers/accounts_controller.py:4447 +#: erpnext/controllers/accounts_controller.py:3899 +#: erpnext/controllers/accounts_controller.py:3921 +#: erpnext/controllers/accounts_controller.py:4439 +#: erpnext/controllers/accounts_controller.py:4445 +#: erpnext/controllers/accounts_controller.py:4467 msgid "Insufficient Permissions" msgstr "" @@ -24684,12 +24705,12 @@ msgstr "" #: erpnext/stock/doctype/pick_list/pick_list.py:166 #: erpnext/stock/doctype/pick_list/pick_list.py:1093 #: erpnext/stock/doctype/stock_entry/stock_entry.py:1235 -#: erpnext/stock/serial_batch_bundle.py:1225 erpnext/stock/stock_ledger.py:1703 -#: erpnext/stock/stock_ledger.py:2181 +#: erpnext/stock/serial_batch_bundle.py:1225 erpnext/stock/stock_ledger.py:1709 +#: erpnext/stock/stock_ledger.py:2206 msgid "Insufficient Stock" msgstr "" -#: erpnext/stock/stock_ledger.py:2196 +#: erpnext/stock/stock_ledger.py:2221 msgid "Insufficient Stock for Batch" msgstr "" @@ -24842,7 +24863,7 @@ msgstr "" msgid "Internal Customer Accounting" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:256 +#: erpnext/selling/doctype/customer/customer.py:257 msgid "Internal Customer for company {0} already exists" msgstr "" @@ -24850,7 +24871,7 @@ msgstr "" msgid "Internal Purchase Order" msgstr "" -#: erpnext/controllers/accounts_controller.py:811 +#: erpnext/controllers/accounts_controller.py:831 msgid "Internal Sale or Delivery Reference missing." msgstr "" @@ -24858,7 +24879,7 @@ msgstr "" msgid "Internal Sales Order" msgstr "" -#: erpnext/controllers/accounts_controller.py:813 +#: erpnext/controllers/accounts_controller.py:833 msgid "Internal Sales Reference Missing" msgstr "" @@ -24888,7 +24909,7 @@ msgstr "" msgid "Internal Transfer" msgstr "" -#: erpnext/controllers/accounts_controller.py:822 +#: erpnext/controllers/accounts_controller.py:842 msgid "Internal Transfer Reference Missing" msgstr "" @@ -24912,7 +24933,7 @@ msgstr "" msgid "Internal notes about this customer. Not visible on transactions or the portal." msgstr "" -#: erpnext/controllers/stock_controller.py:1606 +#: erpnext/controllers/stock_controller.py:1646 msgid "Internal transfers can only be done in company's default currency" msgstr "" @@ -24932,8 +24953,8 @@ msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1077 #: erpnext/assets/doctype/asset_category/asset_category.py:69 #: erpnext/assets/doctype/asset_category/asset_category.py:97 -#: erpnext/controllers/accounts_controller.py:3225 -#: erpnext/controllers/accounts_controller.py:3233 +#: erpnext/controllers/accounts_controller.py:3245 +#: erpnext/controllers/accounts_controller.py:3253 msgid "Invalid Account" msgstr "" @@ -24942,7 +24963,7 @@ msgid "Invalid Accounting Dimension" msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.py:402 -#: erpnext/accounts/doctype/payment_request/payment_request.py:1006 +#: erpnext/accounts/doctype/payment_request/payment_request.py:1007 msgid "Invalid Allocated Amount" msgstr "" @@ -24954,7 +24975,11 @@ msgstr "" msgid "Invalid Attribute" msgstr "" -#: erpnext/controllers/accounts_controller.py:625 +#: erpnext/stock/doctype/item/item.js:898 +msgid "Invalid Attribute Values" +msgstr "" + +#: erpnext/controllers/accounts_controller.py:645 msgid "Invalid Auto Repeat Date" msgstr "" @@ -24967,7 +24992,7 @@ msgstr "" msgid "Invalid Barcode. There is no Item attached to this barcode." msgstr "" -#: erpnext/public/js/controllers/transaction.js:3177 +#: erpnext/public/js/controllers/transaction.js:3202 msgid "Invalid Blanket Order for the selected Customer and Item" msgstr "" @@ -24987,13 +25012,13 @@ msgstr "" msgid "Invalid Company for Inter Company Transaction." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:361 -#: erpnext/assets/doctype/asset/asset.py:368 -#: erpnext/controllers/accounts_controller.py:3248 +#: erpnext/assets/doctype/asset/asset.py:365 +#: erpnext/assets/doctype/asset/asset.py:372 +#: erpnext/controllers/accounts_controller.py:3268 msgid "Invalid Cost Center" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:369 +#: erpnext/selling/doctype/customer/customer.py:370 msgid "Invalid Customer Group" msgstr "" @@ -25034,8 +25059,8 @@ msgstr "" msgid "Invalid File Type" msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:325 -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:330 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:329 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:334 msgid "Invalid Formula" msgstr "" @@ -25048,7 +25073,7 @@ msgstr "" msgid "Invalid Item" msgstr "" -#: erpnext/stock/doctype/item/item.py:1514 +#: erpnext/stock/doctype/item/item.py:1534 msgid "Invalid Item Defaults" msgstr "" @@ -25057,12 +25082,12 @@ msgstr "" msgid "Invalid Ledger Entries" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:565 +#: erpnext/assets/doctype/asset/asset.py:569 msgid "Invalid Net Purchase Amount" msgstr "" #: erpnext/accounts/doctype/pos_closing_entry/pos_closing_entry.py:77 -#: erpnext/accounts/general_ledger.py:834 +#: erpnext/accounts/general_ledger.py:836 msgid "Invalid Opening Entry" msgstr "" @@ -25104,12 +25129,12 @@ msgstr "" msgid "Invalid Purchase Invoice" msgstr "" -#: erpnext/controllers/accounts_controller.py:3921 -#: erpnext/controllers/accounts_controller.py:3935 +#: erpnext/controllers/accounts_controller.py:3941 +#: erpnext/controllers/accounts_controller.py:3955 msgid "Invalid Qty" msgstr "" -#: erpnext/controllers/accounts_controller.py:1467 +#: erpnext/controllers/accounts_controller.py:1487 msgid "Invalid Quantity" msgstr "" @@ -25125,8 +25150,8 @@ msgstr "" msgid "Invalid Sales Invoices" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:654 -#: erpnext/assets/doctype/asset/asset.py:682 +#: erpnext/assets/doctype/asset/asset.py:658 +#: erpnext/assets/doctype/asset/asset.py:686 msgid "Invalid Schedule" msgstr "" @@ -25168,6 +25193,13 @@ msgstr "" msgid "Invalid condition expression" msgstr "" +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:38 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:41 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:49 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:52 +msgid "Invalid debit/credit formula: {0}" +msgstr "" + #: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.py:1069 msgid "Invalid file URL" msgstr "" @@ -25180,7 +25212,7 @@ msgstr "" msgid "Invalid lost reason {0}, please create a new lost reason" msgstr "" -#: erpnext/stock/doctype/item/item.py:459 +#: erpnext/stock/doctype/item/item.py:460 msgid "Invalid naming series (. missing) for {0}" msgstr "" @@ -25192,7 +25224,7 @@ msgstr "" msgid "Invalid reference {0} {1}" msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:96 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:143 msgid "Invalid regex pattern." msgstr "" @@ -25214,8 +25246,8 @@ msgstr "" #: erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:109 #: erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:119 -#: erpnext/accounts/general_ledger.py:882 -#: erpnext/accounts/general_ledger.py:892 +#: erpnext/accounts/general_ledger.py:884 +#: erpnext/accounts/general_ledger.py:894 msgid "Invalid value {0} for {1} against account {2}" msgstr "" @@ -25268,7 +25300,7 @@ msgstr "" msgid "Inventory Settings" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:214 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:216 msgid "Inventory Turnover Ratio" msgstr "" @@ -26134,11 +26166,11 @@ msgstr "" msgid "Issuing Date" msgstr "" -#: erpnext/stock/doctype/item/item.py:640 +#: erpnext/stock/doctype/item/item.py:641 msgid "It can take upto few hours for accurate stock values to be visible after merging items." msgstr "" -#: erpnext/public/js/controllers/transaction.js:2558 +#: erpnext/public/js/controllers/transaction.js:2580 msgid "It is needed to fetch Item Details." msgstr "" @@ -26508,7 +26540,7 @@ msgstr "" #: erpnext/manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:86 #: erpnext/manufacturing/report/work_order_stock_report/work_order_stock_report.py:119 #: erpnext/projects/doctype/timesheet/timesheet.js:214 -#: erpnext/public/js/controllers/transaction.js:2852 +#: erpnext/public/js/controllers/transaction.js:2874 #: erpnext/public/js/stock_reservation.js:112 #: erpnext/public/js/stock_reservation.js:318 erpnext/public/js/utils.js:596 #: erpnext/public/js/utils.js:753 @@ -26984,7 +27016,7 @@ msgstr "" #: erpnext/manufacturing/report/production_planning_report/production_planning_report.py:371 #: erpnext/manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:92 #: erpnext/manufacturing/report/work_order_consumed_materials/work_order_consumed_materials.py:138 -#: erpnext/public/js/controllers/transaction.js:2858 +#: erpnext/public/js/controllers/transaction.js:2880 #: erpnext/public/js/utils.js:849 #: erpnext/selling/doctype/quotation_item/quotation_item.json #: erpnext/selling/doctype/sales_order/sales_order.js:1286 @@ -27278,11 +27310,11 @@ msgstr "" msgid "Item Variant Settings" msgstr "" -#: erpnext/stock/doctype/item/item.js:1034 +#: erpnext/stock/doctype/item/item.js:1120 msgid "Item Variant {0} already exists with same attributes" msgstr "" -#: erpnext/stock/doctype/item/item.py:835 +#: erpnext/stock/doctype/item/item.py:836 msgid "Item Variants updated" msgstr "" @@ -27386,7 +27418,7 @@ msgstr "" msgid "Item for row {0} does not match Material Request" msgstr "" -#: erpnext/stock/doctype/item/item.py:894 +#: erpnext/stock/doctype/item/item.py:895 msgid "Item has variants." msgstr "" @@ -27412,7 +27444,7 @@ msgstr "" msgid "Item operation" msgstr "" -#: erpnext/controllers/accounts_controller.py:3975 +#: erpnext/controllers/accounts_controller.py:3995 msgid "Item qty can not be updated as raw materials are already processed." msgstr "" @@ -27435,7 +27467,7 @@ msgstr "" msgid "Item valuation reposting in progress. Report might show incorrect item valuation." msgstr "" -#: erpnext/stock/doctype/item/item.py:1051 +#: erpnext/stock/doctype/item/item.py:1052 msgid "Item variant {0} exists with same attributes" msgstr "" @@ -27455,8 +27487,8 @@ msgstr "" msgid "Item {0} cannot be ordered more than {1} against Blanket Order {2}." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:343 -#: erpnext/stock/doctype/item/item.py:686 +#: erpnext/assets/doctype/asset/asset.py:347 +#: erpnext/stock/doctype/item/item.py:687 msgid "Item {0} does not exist" msgstr "" @@ -27464,7 +27496,7 @@ msgstr "" msgid "Item {0} does not exist in the system or has expired" msgstr "" -#: erpnext/controllers/stock_controller.py:557 +#: erpnext/controllers/stock_controller.py:597 msgid "Item {0} does not exist." msgstr "" @@ -27476,7 +27508,7 @@ msgstr "" msgid "Item {0} has already been returned" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:345 +#: erpnext/assets/doctype/asset/asset.py:349 msgid "Item {0} has been disabled" msgstr "" @@ -27488,7 +27520,7 @@ msgstr "" msgid "Item {0} has no changes in delivered quantity. Please unselect the row if you do not wish to update its quantity." msgstr "" -#: erpnext/stock/doctype/item/item.py:1230 +#: erpnext/stock/doctype/item/item.py:1250 msgid "Item {0} has reached its end of life on {1}" msgstr "" @@ -27500,11 +27532,11 @@ msgstr "" msgid "Item {0} is already reserved/delivered against Sales Order {1}." msgstr "" -#: erpnext/stock/doctype/item/item.py:1250 +#: erpnext/stock/doctype/item/item.py:1270 msgid "Item {0} is cancelled" msgstr "" -#: erpnext/stock/doctype/item/item.py:1234 +#: erpnext/stock/doctype/item/item.py:1254 msgid "Item {0} is disabled" msgstr "" @@ -27516,7 +27548,7 @@ msgstr "" msgid "Item {0} is not a serialized Item" msgstr "" -#: erpnext/stock/doctype/item/item.py:1242 +#: erpnext/stock/doctype/item/item.py:1262 msgid "Item {0} is not a stock Item" msgstr "" @@ -27524,7 +27556,7 @@ msgstr "" msgid "Item {0} is not a subcontracted item" msgstr "" -#: erpnext/stock/doctype/item/item.py:852 +#: erpnext/stock/doctype/item/item.py:853 msgid "Item {0} is not a template item." msgstr "" @@ -27532,7 +27564,7 @@ msgstr "" msgid "Item {0} is not active or end of life has been reached" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:347 +#: erpnext/assets/doctype/asset/asset.py:351 msgid "Item {0} must be a Fixed Asset Item" msgstr "" @@ -27544,7 +27576,7 @@ msgstr "" msgid "Item {0} must be a Sub-contracted Item" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:349 +#: erpnext/assets/doctype/asset/asset.py:353 msgid "Item {0} must be a non-stock item" msgstr "" @@ -27658,11 +27690,11 @@ msgstr "" msgid "Items and Pricing" msgstr "" -#: erpnext/controllers/accounts_controller.py:4233 +#: erpnext/controllers/accounts_controller.py:4253 msgid "Items cannot be updated as Subcontracting Inward Order(s) exist against this Subcontracted Sales Order." msgstr "" -#: erpnext/controllers/accounts_controller.py:4226 +#: erpnext/controllers/accounts_controller.py:4246 msgid "Items cannot be updated as Subcontracting Order is created against the Purchase Order {0}." msgstr "" @@ -27704,7 +27736,7 @@ msgstr "" msgid "Items under this warehouse will be suggested" msgstr "" -#: erpnext/controllers/stock_controller.py:166 +#: erpnext/controllers/stock_controller.py:202 msgid "Items {0} do not exist in the Item master." msgstr "" @@ -27892,7 +27924,7 @@ msgstr "" msgid "Job Worker Warehouse" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2892 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2907 msgid "Job card {0} created" msgstr "" @@ -27943,8 +27975,8 @@ msgstr "" #: erpnext/accounts/doctype/payment_reconciliation_invoice/payment_reconciliation_invoice.json #: erpnext/accounts/print_format/journal_auditing_voucher/journal_auditing_voucher.html:10 #: erpnext/accounts/workspace/invoicing/invoicing.json -#: erpnext/assets/doctype/asset/asset.js:385 -#: erpnext/assets/doctype/asset/asset.js:394 +#: erpnext/assets/doctype/asset/asset.js:390 +#: erpnext/assets/doctype/asset/asset.js:399 #: erpnext/assets/doctype/asset/asset.json #: erpnext/assets/doctype/asset_value_adjustment/asset_value_adjustment.json #: erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json @@ -27995,7 +28027,7 @@ msgstr "" msgid "Journal Entry {0} does not have account {1} or already matched against other voucher" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:394 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:395 msgid "Journal Template Accounts" msgstr "" @@ -28732,7 +28764,7 @@ msgstr "" msgid "Linked Location" msgstr "" -#: erpnext/stock/doctype/item/item.py:1103 +#: erpnext/stock/doctype/item/item.py:1104 msgid "Linked with submitted documents" msgstr "" @@ -28750,7 +28782,7 @@ msgid "Linking to Supplier Failed. Please try again." msgstr "" #: erpnext/accounts/report/financial_ratios/financial_ratios.js:55 -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:150 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:152 msgid "Liquidity Ratios" msgstr "" @@ -29098,10 +29130,10 @@ msgstr "" msgid "Machine operator errors" msgstr "" -#: erpnext/setup/doctype/company/company.py:720 -#: erpnext/setup/doctype/company/company.py:735 +#: erpnext/setup/doctype/company/company.py:721 #: erpnext/setup/doctype/company/company.py:736 #: erpnext/setup/doctype/company/company.py:737 +#: erpnext/setup/doctype/company/company.py:738 msgid "Main" msgstr "" @@ -29121,7 +29153,7 @@ msgstr "" msgid "Main Item Code" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:138 +#: erpnext/assets/doctype/asset/asset.js:143 msgid "Maintain Asset" msgstr "" @@ -29419,11 +29451,11 @@ msgstr "" msgid "Make project from a template." msgstr "" -#: erpnext/stock/doctype/item/item.js:822 +#: erpnext/stock/doctype/item/item.js:915 msgid "Make {0} Variant" msgstr "" -#: erpnext/stock/doctype/item/item.js:824 +#: erpnext/stock/doctype/item/item.js:916 msgid "Make {0} Variants" msgstr "" @@ -29446,7 +29478,7 @@ msgstr "" msgid "Manage your orders" msgstr "" -#: erpnext/setup/doctype/company/company.py:499 +#: erpnext/setup/doctype/company/company.py:500 msgid "Management" msgstr "" @@ -29663,6 +29695,7 @@ msgstr "" #: erpnext/desktop_icon/manufacturing.json #: erpnext/manufacturing/doctype/production_plan_sub_assembly_item/production_plan_sub_assembly_item.json #: erpnext/manufacturing/workspace/manufacturing/manufacturing.json +#: erpnext/public/js/setup_wizard.js:94 #: erpnext/selling/doctype/sales_order/sales_order_dashboard.py:29 #: erpnext/setup/doctype/company/company.json erpnext/setup/install.py:414 #: erpnext/setup/setup_wizard/data/industry_type.txt:31 @@ -29893,7 +29926,7 @@ msgstr "" msgid "Market Segment" msgstr "" -#: erpnext/setup/doctype/company/company.py:451 +#: erpnext/setup/doctype/company/company.py:452 msgid "Marketing" msgstr "" @@ -29989,7 +30022,7 @@ msgstr "" msgid "Material Consumption for Manufacture" msgstr "" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:683 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:688 msgid "Material Consumption is not set in Manufacturing Settings." msgstr "" @@ -30077,8 +30110,8 @@ msgstr "" #: erpnext/stock/doctype/pick_list/pick_list.json #: erpnext/stock/doctype/pick_list_item/pick_list_item.json #: erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:304 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:460 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:309 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:465 #: erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json #: erpnext/stock/doctype/stock_settings/stock_settings.js:153 #: erpnext/stock/workspace/stock/stock.json @@ -30367,11 +30400,11 @@ msgstr "" #: erpnext/manufacturing/doctype/work_order/work_order.js:1059 #: erpnext/manufacturing/doctype/work_order/work_order.js:1082 #: erpnext/stock/doctype/pick_list/pick_list.js:208 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:399 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:404 msgid "Max: {0}" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:63 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:64 msgid "Maximum Amount" msgstr "" @@ -30462,7 +30495,7 @@ msgstr "" msgid "Megawatt" msgstr "" -#: erpnext/stock/stock_ledger.py:2028 +#: erpnext/stock/stock_ledger.py:2034 msgid "Mention Valuation Rate in the Item master." msgstr "" @@ -30742,15 +30775,15 @@ msgstr "" msgid "Min Qty should be greater than Recurse Over Qty" msgstr "" -#: erpnext/stock/doctype/item/item.js:985 +#: erpnext/stock/doctype/item/item.js:1071 msgid "Min Value: {0}, Max Value: {1}, in Increments of: {2}" msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:62 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:104 msgid "Min amount cannot be greater than max amount." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:58 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:59 msgid "Minimum Amount" msgstr "" @@ -30860,7 +30893,7 @@ msgid "Missing Asset" msgstr "" #: erpnext/accounts/doctype/gl_entry/gl_entry.py:186 -#: erpnext/assets/doctype/asset/asset.py:377 +#: erpnext/assets/doctype/asset/asset.py:381 msgid "Missing Cost Center" msgstr "" @@ -30868,7 +30901,7 @@ msgstr "" msgid "Missing Default in Company" msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:929 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:931 msgid "Missing Dependency" msgstr "" @@ -30876,7 +30909,7 @@ msgstr "" msgid "Missing Filters" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:422 +#: erpnext/assets/doctype/asset/asset.py:426 msgid "Missing Finance Book" msgstr "" @@ -30884,7 +30917,7 @@ msgstr "" msgid "Missing Finished Good" msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:310 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:314 msgid "Missing Formula" msgstr "" @@ -30921,7 +30954,7 @@ msgid "Missing required filter: {0}" msgstr "" #: erpnext/manufacturing/doctype/bom/bom.py:1219 -#: erpnext/manufacturing/doctype/work_order/work_order.py:1563 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1587 msgid "Missing value" msgstr "" @@ -30934,8 +30967,8 @@ msgstr "" #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:216 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:248 -#: erpnext/accounts/report/purchase_register/purchase_register.py:201 -#: erpnext/accounts/report/sales_register/sales_register.py:224 +#: erpnext/accounts/report/purchase_register/purchase_register.py:217 +#: erpnext/accounts/report/sales_register/sales_register.py:238 msgid "Mode Of Payment" msgstr "" @@ -31162,11 +31195,11 @@ msgstr "" msgid "Multiple Accounts" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:283 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:284 msgid "Multiple Accounts (Journal Template)" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:440 +#: erpnext/selling/doctype/customer/customer.py:441 msgid "Multiple Loyalty Programs found for Customer {}. Please select manually." msgstr "" @@ -31192,7 +31225,7 @@ msgstr "" msgid "Multiple company fields available: {0}. Please select manually." msgstr "" -#: erpnext/controllers/accounts_controller.py:1313 +#: erpnext/controllers/accounts_controller.py:1333 msgid "Multiple fiscal years exist for the date {0}. Please set company in Fiscal Year" msgstr "" @@ -31205,7 +31238,7 @@ msgid "Music" msgstr "" #. Label of the must_be_whole_number (Check) field in DocType 'UOM' -#: erpnext/manufacturing/doctype/work_order/work_order.py:1510 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1534 #: erpnext/setup/doctype/uom/uom.json #: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:267 #: erpnext/utilities/transaction_base.py:631 @@ -31344,7 +31377,7 @@ msgstr "" msgid "Negative Stock" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1608 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1658 #: erpnext/stock/serial_batch_bundle.py:1548 msgid "Negative Stock Error" msgstr "" @@ -31473,7 +31506,7 @@ msgstr "" msgid "Net Profit" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:172 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:174 msgid "Net Profit Ratio" msgstr "" @@ -31491,11 +31524,11 @@ msgstr "" msgid "Net Purchase Amount" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:450 +#: erpnext/assets/doctype/asset/asset.py:454 msgid "Net Purchase Amount is mandatory" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:560 +#: erpnext/assets/doctype/asset/asset.py:564 msgid "Net Purchase Amount should be equal to purchase amount of one single Asset." msgstr "" @@ -31584,8 +31617,8 @@ msgstr "" #: erpnext/accounts/doctype/shipping_rule/shipping_rule.json #: erpnext/accounts/doctype/subscription/subscription.json #: erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.json -#: erpnext/accounts/report/purchase_register/purchase_register.py:253 -#: erpnext/accounts/report/sales_register/sales_register.py:285 +#: erpnext/accounts/report/purchase_register/purchase_register.py:269 +#: erpnext/accounts/report/sales_register/sales_register.py:299 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/supplier_quotation/supplier_quotation.json #: erpnext/selling/doctype/quotation/quotation.json @@ -31636,7 +31669,7 @@ msgstr "" msgid "Net Weight UOM" msgstr "" -#: erpnext/controllers/accounts_controller.py:1673 +#: erpnext/controllers/accounts_controller.py:1693 msgid "Net total calculation precision loss" msgstr "" @@ -31813,7 +31846,7 @@ msgstr "" msgid "New Workplace" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:405 +#: erpnext/selling/doctype/customer/customer.py:406 msgid "New credit limit is less than current outstanding amount for the customer. Credit limit has to be atleast {0}" msgstr "" @@ -31944,7 +31977,7 @@ msgstr "" #: erpnext/accounts/doctype/journal_entry/journal_entry.py:1582 #: erpnext/accounts/doctype/journal_entry/journal_entry.py:1642 #: erpnext/accounts/doctype/journal_entry/journal_entry.py:1656 -#: erpnext/stock/doctype/item/item.py:1475 +#: erpnext/stock/doctype/item/item.py:1495 msgid "No Permission" msgstr "" @@ -31977,7 +32010,7 @@ msgstr "" msgid "No Supplier found for Inter Company Transactions which represents company {0}" msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:976 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:982 msgid "No Tables Detected" msgstr "" @@ -31989,7 +32022,7 @@ msgstr "" msgid "No Tax withholding account set for Company {0} in Tax Withholding Category {1}." msgstr "" -#: erpnext/accounts/report/gross_profit/gross_profit.py:990 +#: erpnext/accounts/report/gross_profit/gross_profit.py:996 msgid "No Terms" msgstr "" @@ -32006,12 +32039,12 @@ msgstr "" msgid "No Work Orders were created" msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:827 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:832 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.py:905 msgid "No accounting entries for the following warehouses" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:412 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:413 msgid "No accounts configured" msgstr "" @@ -32047,7 +32080,7 @@ msgstr "" msgid "No bank transactions found" msgstr "" -#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:495 +#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:497 msgid "No billing email found for customer: {0}" msgstr "" @@ -32121,7 +32154,7 @@ msgstr "" msgid "No items in cart" msgstr "" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1046 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1047 msgid "No matches occurred via auto reconciliation" msgstr "" @@ -32245,7 +32278,7 @@ msgstr "" msgid "No pending Material Requests found to link for the given items." msgstr "" -#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:502 +#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.py:504 msgid "No primary email found for customer: {0}" msgstr "" @@ -32265,7 +32298,7 @@ msgstr "" msgid "No reconciliation actions found" msgstr "" -#: erpnext/accounts/report/purchase_register/purchase_register.py:45 +#: erpnext/accounts/report/purchase_register/purchase_register.py:46 #: erpnext/accounts/report/sales_register/sales_register.py:46 #: erpnext/crm/report/lead_conversion_time/lead_conversion_time.py:18 msgid "No record found" @@ -32322,7 +32355,7 @@ msgstr "" msgid "No tables were extracted from this PDF." msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:40 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:41 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:48 #: banking/src/components/features/BankReconciliation/TransferModalContent.tsx:40 msgid "No transaction selected" @@ -32544,7 +32577,7 @@ msgstr "" msgid "Note: Item {0} added multiple times" msgstr "" -#: erpnext/controllers/accounts_controller.py:711 +#: erpnext/controllers/accounts_controller.py:731 msgid "Note: Payment Entry will not be created since 'Cash or Bank Account' was not specified" msgstr "" @@ -32552,7 +32585,7 @@ msgstr "" msgid "Note: This Cost Center is a Group. Cannot make accounting entries against groups." msgstr "" -#: erpnext/stock/doctype/item/item.py:677 +#: erpnext/stock/doctype/item/item.py:678 msgid "Note: To merge the items, create a separate Stock Reconciliation for the old item {0}" msgstr "" @@ -33348,16 +33381,16 @@ msgstr "" #. Label of the opening_stock (Float) field in DocType 'Item' #. Option for the 'Purpose' (Select) field in DocType 'Stock Reconciliation' -#: erpnext/stock/doctype/item/item.json erpnext/stock/doctype/item/item.py:334 +#: erpnext/stock/doctype/item/item.json erpnext/stock/doctype/item/item.py:335 #: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json msgid "Opening Stock" msgstr "" -#: erpnext/stock/doctype/item/item.py:339 +#: erpnext/stock/doctype/item/item.py:340 msgid "Opening Stock entry created with zero valuation rate: {0}" msgstr "" -#: erpnext/stock/doctype/item/item.py:347 +#: erpnext/stock/doctype/item/item.py:348 msgid "Opening Stock entry created: {0}" msgstr "" @@ -33486,7 +33519,7 @@ msgstr "" msgid "Operation Time" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1572 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1596 msgid "Operation Time must be greater than 0 for Operation {0}" msgstr "" @@ -33523,7 +33556,7 @@ msgstr "" #: erpnext/manufacturing/doctype/bom/bom.json #: erpnext/manufacturing/doctype/work_order/work_order.js:325 #: erpnext/manufacturing/doctype/work_order/work_order.json -#: erpnext/setup/doctype/company/company.py:469 +#: erpnext/setup/doctype/company/company.py:470 #: erpnext/setup/doctype/email_digest/email_digest.json #: erpnext/templates/generators/bom.html:61 msgid "Operations" @@ -34060,8 +34093,8 @@ msgstr "" #: erpnext/accounts/report/accounts_receivable/accounts_receivable.html:141 #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1220 #: erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:167 -#: erpnext/accounts/report/purchase_register/purchase_register.py:289 -#: erpnext/accounts/report/sales_register/sales_register.py:319 +#: erpnext/accounts/report/purchase_register/purchase_register.py:305 +#: erpnext/accounts/report/sales_register/sales_register.py:333 msgid "Outstanding Amount" msgstr "" @@ -34106,7 +34139,7 @@ msgstr "" msgid "Over Billing Allowance (%)" msgstr "" -#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1343 +#: erpnext/stock/doctype/purchase_receipt/purchase_receipt.py:1377 msgid "Over Billing Allowance exceeded for Purchase Receipt Item {0} ({1}) by {2}%" msgstr "" @@ -34129,7 +34162,7 @@ msgstr "" msgid "Over Picking Allowance (%)" msgstr "" -#: erpnext/controllers/stock_controller.py:1776 +#: erpnext/controllers/stock_controller.py:1816 msgid "Over Receipt" msgstr "" @@ -34154,7 +34187,7 @@ msgstr "" msgid "Overbilling of {0} {1} ignored for item {2} because you have {3} role." msgstr "" -#: erpnext/controllers/accounts_controller.py:2191 +#: erpnext/controllers/accounts_controller.py:2211 msgid "Overbilling of {} ignored because you have {} role." msgstr "" @@ -34247,7 +34280,7 @@ msgstr "" #: erpnext/accounts/report/sales_payment_summary/sales_payment_summary.py:23 #: erpnext/accounts/report/sales_payment_summary/sales_payment_summary.py:39 #: erpnext/accounts/report/sales_register/sales_register.js:46 -#: erpnext/accounts/report/sales_register/sales_register.py:236 +#: erpnext/accounts/report/sales_register/sales_register.py:250 #: erpnext/crm/report/lead_details/lead_details.py:45 msgid "Owner" msgstr "" @@ -34302,7 +34335,7 @@ msgstr "" msgid "PDF Tables" msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:928 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:930 msgid "PDF statement support requires the 'pdfplumber' library to be installed." msgstr "" @@ -34661,7 +34694,7 @@ msgstr "" msgid "Packed Items" msgstr "" -#: erpnext/controllers/stock_controller.py:1610 +#: erpnext/controllers/stock_controller.py:1650 msgid "Packed Items cannot be transferred internally" msgstr "" @@ -34698,7 +34731,7 @@ msgstr "" msgid "Packing Slip Item" msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:622 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:623 msgid "Packing Slip(s) cancelled" msgstr "" @@ -34901,7 +34934,7 @@ msgstr "" msgid "Parent Company" msgstr "" -#: erpnext/setup/doctype/company/company.py:604 +#: erpnext/setup/doctype/company/company.py:605 msgid "Parent Company must be a group company" msgstr "" @@ -35207,16 +35240,16 @@ msgstr "" #. Label of the party (Dynamic Link) field in DocType 'Appointment' #. Label of the party_name (Dynamic Link) field in DocType 'Opportunity' #. Label of the party_name (Dynamic Link) field in DocType 'Quotation' -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:589 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:735 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:747 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:565 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:711 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:723 #: banking/src/components/features/BankReconciliation/MatchAndReconcile.tsx:752 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:185 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:197 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:552 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:562 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:359 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:369 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:360 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:370 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:591 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:776 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:788 @@ -35304,7 +35337,7 @@ msgstr "" msgid "Party Account No. (Bank Statement)" msgstr "" -#: erpnext/controllers/accounts_controller.py:2475 +#: erpnext/controllers/accounts_controller.py:2495 msgid "Party Account {0} currency ({1}) and document currency ({2}) should be same" msgstr "" @@ -35430,10 +35463,10 @@ msgstr "" #. Label of the party_type (Select) field in DocType 'Party Specific Item' #. Name of a DocType #. Label of the party_type (Link) field in DocType 'Party Type' -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:614 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:590 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:170 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:409 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:292 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:293 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:640 #: erpnext/accounts/doctype/bank_account/bank_account.json #: erpnext/accounts/doctype/bank_transaction/bank_transaction.json @@ -35486,7 +35519,7 @@ msgstr "" msgid "Party Type and Party is mandatory for {0} account" msgstr "" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:177 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:178 msgid "Party Type and Party is required for Receivable / Payable account {0}" msgstr "" @@ -35500,7 +35533,7 @@ msgstr "" msgid "Party User" msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:72 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:114 msgid "Party account is required to create a payment entry." msgstr "" @@ -35517,11 +35550,11 @@ msgstr "" msgid "Party is required" msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:69 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:111 msgid "Party is required create a payment entry." msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:66 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:108 msgid "Party type is required to create a payment entry." msgstr "" @@ -35548,7 +35581,7 @@ msgstr "" msgid "Passport Number" msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:941 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:947 msgid "Password Required" msgstr "" @@ -35625,8 +35658,8 @@ msgstr "" #: erpnext/accounts/report/accounts_payable/accounts_payable.js:50 #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1157 #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:209 -#: erpnext/accounts/report/purchase_register/purchase_register.py:194 -#: erpnext/accounts/report/purchase_register/purchase_register.py:235 +#: erpnext/accounts/report/purchase_register/purchase_register.py:210 +#: erpnext/accounts/report/purchase_register/purchase_register.py:251 msgid "Payable Account" msgstr "" @@ -35760,7 +35793,7 @@ msgstr "" #. Order' #. Label of a Link in the Invoicing Workspace #. Label of a Workspace Sidebar Item -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:270 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:271 #: erpnext/accounts/doctype/accounts_settings/accounts_settings.js:59 #: erpnext/accounts/doctype/bank_clearance_detail/bank_clearance_detail.json #: erpnext/accounts/doctype/bank_transaction_payments/bank_transaction_payments.json @@ -35805,7 +35838,7 @@ msgstr "" msgid "Payment Entry is already created" msgstr "" -#: erpnext/controllers/accounts_controller.py:1624 +#: erpnext/controllers/accounts_controller.py:1644 msgid "Payment Entry {0} is linked against Order {1}, check if it should be pulled as advance in this invoice." msgstr "" @@ -36084,7 +36117,7 @@ msgstr "" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json #: erpnext/buying/doctype/purchase_order/purchase_order.json -#: erpnext/controllers/accounts_controller.py:2757 +#: erpnext/controllers/accounts_controller.py:2777 #: erpnext/selling/doctype/quotation/quotation.json #: erpnext/selling/doctype/sales_order/sales_order.json msgid "Payment Schedule" @@ -36094,7 +36127,7 @@ msgstr "" msgid "Payment Schedule based Payment Requests cannot be created because a Payment Entry already exists for this document." msgstr "" -#: erpnext/public/js/controllers/transaction.js:507 +#: erpnext/public/js/controllers/transaction.js:529 msgid "Payment Schedules" msgstr "" @@ -36116,7 +36149,7 @@ msgstr "" #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1210 #: erpnext/accounts/report/gross_profit/gross_profit.py:449 #: erpnext/accounts/workspace/invoicing/invoicing.json -#: erpnext/public/js/controllers/transaction.js:522 +#: erpnext/public/js/controllers/transaction.js:544 #: erpnext/selling/report/payment_terms_status_for_sales_order/payment_terms_status_for_sales_order.py:30 #: erpnext/workspace_sidebar/accounts_setup.json msgid "Payment Term" @@ -36544,7 +36577,7 @@ msgstr "" msgid "Period Based On" msgstr "" -#: erpnext/accounts/general_ledger.py:850 +#: erpnext/accounts/general_ledger.py:852 msgid "Period Closed" msgstr "" @@ -36721,6 +36754,10 @@ msgstr "" msgid "Personal Email" msgstr "" +#: erpnext/setup/setup_wizard/setup_wizard.py:33 +msgid "Personalizing your setup" +msgstr "" + #. Option for the 'Fuel Type' (Select) field in DocType 'Vehicle' #: erpnext/setup/doctype/vehicle/vehicle.json msgid "Petrol" @@ -37166,7 +37203,7 @@ msgstr "" msgid "Please add a Temporary Opening account in Chart of Accounts" msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:77 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:119 msgid "Please add an account for the Bank Entry rule." msgstr "" @@ -37190,11 +37227,11 @@ msgstr "" msgid "Please add the account to root level Company - {}" msgstr "" -#: erpnext/controllers/website_list_for_contact.py:301 +#: erpnext/controllers/website_list_for_contact.py:302 msgid "Please add {1} role to user {0}." msgstr "" -#: erpnext/controllers/stock_controller.py:1787 +#: erpnext/controllers/stock_controller.py:1827 msgid "Please adjust the qty or edit {0} to proceed." msgstr "" @@ -37216,7 +37253,7 @@ msgid "Please cancel related transaction." msgstr "" #: erpnext/assets/doctype/asset/asset.js:86 -#: erpnext/assets/doctype/asset/asset.py:249 +#: erpnext/assets/doctype/asset/asset.py:253 msgid "Please capitalize this asset before submitting." msgstr "" @@ -37265,11 +37302,11 @@ msgstr "" msgid "Please complete the job first before entering Pending Quantity" msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:80 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:122 msgid "Please configure accounts for the Bank Entry rule." msgstr "" -#: erpnext/selling/doctype/customer/customer.py:635 +#: erpnext/selling/doctype/customer/customer.py:637 msgid "Please contact any of the following users to extend the credit limits for {0}: {1}" msgstr "" @@ -37277,7 +37314,7 @@ msgstr "" msgid "Please contact any of the following users to {} this transaction." msgstr "" -#: erpnext/selling/doctype/customer/customer.py:628 +#: erpnext/selling/doctype/customer/customer.py:630 msgid "Please contact your administrator to extend the credit limits for {0}." msgstr "" @@ -37297,15 +37334,15 @@ msgstr "" msgid "Please create a new Accounting Dimension if required." msgstr "" -#: erpnext/controllers/accounts_controller.py:812 +#: erpnext/controllers/accounts_controller.py:832 msgid "Please create purchase from internal sale or delivery document itself" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:460 +#: erpnext/assets/doctype/asset/asset.py:464 msgid "Please create purchase receipt or purchase invoice for the item {0}" msgstr "" -#: erpnext/stock/doctype/item/item.py:705 +#: erpnext/stock/doctype/item/item.py:706 msgid "Please delete Product Bundle {0}, before merging {1} into {2}" msgstr "" @@ -37313,7 +37350,7 @@ msgstr "" msgid "Please disable workflow temporarily for Journal Entry {0}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:564 +#: erpnext/assets/doctype/asset/asset.py:568 msgid "Please do not book expense of multiple assets against one single Asset." msgstr "" @@ -37399,7 +37436,7 @@ msgstr "" msgid "Please enter Item Code to get Batch Number" msgstr "" -#: erpnext/public/js/controllers/transaction.js:3034 +#: erpnext/public/js/controllers/transaction.js:3059 msgid "Please enter Item Code to get batch no" msgstr "" @@ -37480,7 +37517,7 @@ msgstr "" msgid "Please enter company name first" msgstr "" -#: erpnext/controllers/accounts_controller.py:2976 +#: erpnext/controllers/accounts_controller.py:2996 msgid "Please enter default currency in Company Master" msgstr "" @@ -37524,7 +37561,7 @@ msgstr "" msgid "Please enter the {schedule_date}." msgstr "" -#: erpnext/public/js/setup_wizard.js:97 +#: erpnext/public/js/setup_wizard.js:192 msgid "Please enter valid Financial Year Start and End Dates" msgstr "" @@ -37580,7 +37617,7 @@ msgstr "" msgid "Please make sure you really want to delete all the transactions for {0}. Your master data will remain as it is. This action cannot be undone." msgstr "" -#: erpnext/stock/doctype/item/item.js:728 +#: erpnext/stock/doctype/item/item.js:735 msgid "Please mention 'Weight UOM' along with Weight." msgstr "" @@ -37674,7 +37711,7 @@ msgstr "" msgid "Please select Company and Posting Date to getting entries" msgstr "" -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:744 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:751 #: erpnext/manufacturing/doctype/plant_floor/plant_floor.js:28 msgid "Please select Company first" msgstr "" @@ -37689,7 +37726,7 @@ msgstr "" msgid "Please select Customer first" msgstr "" -#: erpnext/setup/doctype/company/company.py:535 +#: erpnext/setup/doctype/company/company.py:536 msgid "Please select Existing Company for creating Chart of Accounts" msgstr "" @@ -37698,8 +37735,8 @@ msgstr "" msgid "Please select Finished Good Item for Service Item {0}" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:753 -#: erpnext/assets/doctype/asset/asset.js:768 +#: erpnext/assets/doctype/asset/asset.js:762 +#: erpnext/assets/doctype/asset/asset.js:777 msgid "Please select Item Code first" msgstr "" @@ -37723,7 +37760,7 @@ msgstr "" msgid "Please select Posting Date before selecting Party" msgstr "" -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:745 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:752 msgid "Please select Posting Date first" msgstr "" @@ -37735,7 +37772,7 @@ msgstr "" msgid "Please select Qty against item {0}" msgstr "" -#: erpnext/stock/doctype/item/item.py:371 +#: erpnext/stock/doctype/item/item.py:372 msgid "Please select Sample Retention Warehouse in Stock Settings first" msgstr "" @@ -37755,7 +37792,7 @@ msgstr "" msgid "Please select Subcontracting Order instead of Purchase Order {0}" msgstr "" -#: erpnext/controllers/accounts_controller.py:2832 +#: erpnext/controllers/accounts_controller.py:2852 msgid "Please select Unrealized Profit / Loss account or add default Unrealized Profit / Loss account account for company {0}" msgstr "" @@ -37772,7 +37809,7 @@ msgstr "" #: erpnext/manufacturing/doctype/bom/bom.js:730 #: erpnext/manufacturing/doctype/bom/bom.py:279 #: erpnext/public/js/controllers/accounts.js:274 -#: erpnext/public/js/controllers/transaction.js:3333 +#: erpnext/public/js/controllers/transaction.js:3358 msgid "Please select a Company first." msgstr "" @@ -37849,7 +37886,7 @@ msgstr "" msgid "Please select a row to create a Reposting Entry" msgstr "" -#: erpnext/accounts/report/purchase_register/purchase_register.py:35 +#: erpnext/accounts/report/purchase_register/purchase_register.py:36 msgid "Please select a supplier for fetching payments." msgstr "" @@ -37885,11 +37922,11 @@ msgstr "" msgid "Please select at least one row to fix" msgstr "" -#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.js:50 +#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.js:51 msgid "Please select at least one row with difference value" msgstr "" -#: erpnext/public/js/controllers/transaction.js:550 +#: erpnext/public/js/controllers/transaction.js:572 msgid "Please select at least one schedule." msgstr "" @@ -37989,7 +38026,7 @@ msgstr "" msgid "Please select {0} first" msgstr "" -#: erpnext/public/js/controllers/transaction.js:122 +#: erpnext/public/js/controllers/transaction.js:150 msgid "Please set 'Apply Additional Discount On'" msgstr "" @@ -38099,7 +38136,7 @@ msgstr "" msgid "Please set a Company" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:374 +#: erpnext/assets/doctype/asset/asset.py:378 msgid "Please set a Cost Center for the Asset or set an Asset Depreciation Cost Center for the Company {}" msgstr "" @@ -38124,7 +38161,7 @@ msgstr "" msgid "Please set an Address on the Company '%s'" msgstr "" -#: erpnext/controllers/stock_controller.py:917 +#: erpnext/controllers/stock_controller.py:957 msgid "Please set an Expense Account in the Items table" msgstr "" @@ -38168,11 +38205,11 @@ msgstr "" msgid "Please set default UOM in Stock Settings" msgstr "" -#: erpnext/controllers/stock_controller.py:776 +#: erpnext/controllers/stock_controller.py:816 msgid "Please set default cost of goods sold account in company {0} for booking rounding gain and loss during stock transfer" msgstr "" -#: erpnext/controllers/stock_controller.py:231 +#: erpnext/controllers/stock_controller.py:267 msgid "Please set default inventory account for item {0}, or their item group or brand." msgstr "" @@ -38185,15 +38222,15 @@ msgstr "" msgid "Please set filter based on Item or Warehouse" msgstr "" -#: erpnext/controllers/accounts_controller.py:2391 +#: erpnext/controllers/accounts_controller.py:2411 msgid "Please set one of the following:" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:645 +#: erpnext/assets/doctype/asset/asset.py:649 msgid "Please set opening number of booked depreciations" msgstr "" -#: erpnext/public/js/controllers/transaction.js:2701 +#: erpnext/public/js/controllers/transaction.js:2723 msgid "Please set recurring after saving" msgstr "" @@ -38252,7 +38289,7 @@ msgstr "" msgid "Please set {0} in Company {1} to account for Exchange Gain / Loss" msgstr "" -#: erpnext/controllers/accounts_controller.py:593 +#: erpnext/controllers/accounts_controller.py:613 msgid "Please set {0} to {1}, the same account that was used in the original invoice {2}." msgstr "" @@ -38274,7 +38311,7 @@ msgstr "" msgid "Please specify Company to proceed" msgstr "" -#: erpnext/controllers/accounts_controller.py:3207 +#: erpnext/controllers/accounts_controller.py:3227 #: erpnext/public/js/controllers/accounts.js:114 msgid "Please specify a valid Row ID for row {0} in table {1}" msgstr "" @@ -38446,7 +38483,7 @@ msgstr "" #: banking/src/components/features/ActionLog/ActionLogDialogBody.tsx:398 #: banking/src/components/features/BankReconciliation/BankClearanceSummary.tsx:125 #: banking/src/components/features/BankReconciliation/BankClearanceSummary.tsx:319 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:390 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:366 #: banking/src/components/features/BankReconciliation/BankReconciliationStatement.tsx:86 #: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:147 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:459 @@ -38490,8 +38527,8 @@ msgstr "" #: erpnext/accounts/report/payment_ledger/payment_ledger.py:143 #: erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:94 #: erpnext/accounts/report/pos_register/pos_register.py:172 -#: erpnext/accounts/report/purchase_register/purchase_register.py:169 -#: erpnext/accounts/report/sales_register/sales_register.py:185 +#: erpnext/accounts/report/purchase_register/purchase_register.py:185 +#: erpnext/accounts/report/sales_register/sales_register.py:199 #: erpnext/assets/doctype/asset_capitalization/asset_capitalization.json #: erpnext/manufacturing/doctype/job_card/job_card.json #: erpnext/manufacturing/doctype/master_production_schedule/master_production_schedule.json @@ -38518,7 +38555,7 @@ msgstr "" #: erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py:86 #: erpnext/stock/report/serial_no_ledger/serial_no_ledger.py:25 #: erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:150 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:144 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:155 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:36 #: erpnext/templates/form_grid/bank_reconciliation_grid.html:6 msgid "Posting Date" @@ -38535,7 +38572,7 @@ msgstr "" msgid "Posting Date inheritance for exchange gain / loss" msgstr "" -#: erpnext/public/js/controllers/transaction.js:1131 +#: erpnext/public/js/controllers/transaction.js:1153 msgid "Posting Date will change to today's date as Edit Posting Date and Time is unchecked. Are you sure want to proceed?" msgstr "" @@ -38590,7 +38627,7 @@ msgstr "" #: erpnext/stock/report/serial_no_ledger/serial_no_ledger.js:63 #: erpnext/stock/report/serial_no_ledger/serial_no_ledger.py:26 #: erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:151 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:149 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:160 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:41 #: erpnext/subcontracting/doctype/subcontracting_receipt/subcontracting_receipt.json msgid "Posting Time" @@ -39694,7 +39731,7 @@ msgstr "" #. Label of a Card Break in the Manufacturing Workspace #: erpnext/manufacturing/doctype/workstation/workstation.json #: erpnext/manufacturing/workspace/manufacturing/manufacturing.json -#: erpnext/setup/doctype/company/company.py:475 +#: erpnext/setup/doctype/company/company.py:476 msgid "Production" msgstr "" @@ -39914,6 +39951,10 @@ msgstr "" msgid "Project Id" msgstr "" +#: erpnext/public/js/setup_wizard.js:95 +msgid "Project Management" +msgstr "" + #: erpnext/setup/setup_wizard/data/designation.txt:26 msgid "Project Manager" msgstr "" @@ -40242,7 +40283,7 @@ msgstr "" msgid "Providing" msgstr "" -#: erpnext/setup/doctype/company/company.py:574 +#: erpnext/setup/doctype/company/company.py:575 msgid "Provisional Account" msgstr "" @@ -40314,7 +40355,7 @@ msgstr "" #: erpnext/accounts/doctype/tax_rule/tax_rule.json #: erpnext/manufacturing/doctype/material_request_plan_item/material_request_plan_item.json #: erpnext/projects/doctype/project/project_dashboard.py:16 -#: erpnext/setup/doctype/company/company.py:463 erpnext/setup/install.py:428 +#: erpnext/setup/doctype/company/company.py:464 erpnext/setup/install.py:428 #: erpnext/stock/doctype/item/item.json #: erpnext/stock/doctype/item/item_list.js:30 #: erpnext/stock/doctype/item_lead_time/item_lead_time.json @@ -40432,7 +40473,7 @@ msgstr "" #: erpnext/stock/doctype/purchase_receipt/purchase_receipt_list.js:30 #: erpnext/stock/doctype/purchase_receipt_item/purchase_receipt_item.json #: erpnext/stock/doctype/quality_inspection/quality_inspection.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:441 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:446 #: erpnext/workspace_sidebar/buying.json #: erpnext/workspace_sidebar/invoicing.json msgid "Purchase Invoice" @@ -40472,7 +40513,7 @@ msgstr "" msgid "Purchase Invoice Trends" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:336 +#: erpnext/assets/doctype/asset/asset.py:340 msgid "Purchase Invoice cannot be made against an existing asset {0}" msgstr "" @@ -40511,7 +40552,7 @@ msgstr "" #: erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json #: erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:237 -#: erpnext/accounts/report/purchase_register/purchase_register.py:216 +#: erpnext/accounts/report/purchase_register/purchase_register.py:232 #: erpnext/buying/doctype/buying_settings/buying_settings.js:47 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/purchase_receipt_item_supplied/purchase_receipt_item_supplied.json @@ -40670,7 +40711,7 @@ msgstr "" msgid "Purchase Orders to Receive" msgstr "" -#: erpnext/controllers/accounts_controller.py:2023 +#: erpnext/controllers/accounts_controller.py:2043 msgid "Purchase Orders {0} are un-linked" msgstr "" @@ -40699,7 +40740,7 @@ msgstr "" #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice_list.js:49 #: erpnext/accounts/doctype/purchase_invoice_item/purchase_invoice_item.json #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:244 -#: erpnext/accounts/report/purchase_register/purchase_register.py:223 +#: erpnext/accounts/report/purchase_register/purchase_register.py:239 #: erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.js:22 #: erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:21 #: erpnext/assets/doctype/asset/asset.json @@ -40905,7 +40946,7 @@ msgstr "" #: erpnext/stock/doctype/item/item_list.js:41 #: erpnext/stock/doctype/material_request/material_request.json #: erpnext/stock/doctype/pick_list/pick_list.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:476 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:481 #: erpnext/stock/doctype/stock_entry/stock_entry.json #: erpnext/stock/doctype/stock_entry_type/stock_entry_type.json #: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json @@ -41103,7 +41144,7 @@ msgstr "" #: erpnext/stock/doctype/stock_closing_balance/stock_closing_balance.json #: erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.json #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:169 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:188 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:199 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:91 msgid "Qty Change" msgstr "" @@ -41136,7 +41177,7 @@ msgstr "" msgid "Qty To Manufacture" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1506 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1530 msgid "Qty To Manufacture ({0}) cannot be a fraction for the UOM {2}. To allow this, disable '{1}' in the UOM {2}." msgstr "" @@ -41238,7 +41279,7 @@ msgstr "" msgid "Qty to Deliver" msgstr "" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:396 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:401 msgid "Qty to Disassemble" msgstr "" @@ -41415,7 +41456,7 @@ msgstr "" msgid "Quality Inspection Analysis" msgstr "" -#: erpnext/public/js/controllers/transaction.js:2964 +#: erpnext/public/js/controllers/transaction.js:2980 msgid "Quality Inspection Not Configured" msgstr "" @@ -41494,8 +41535,8 @@ msgstr "" msgid "Quality Inspection {0} is rejected for the item: {1}" msgstr "" -#: erpnext/public/js/controllers/transaction.js:403 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:208 +#: erpnext/public/js/controllers/transaction.js:431 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:212 msgid "Quality Inspection(s)" msgstr "" @@ -41504,7 +41545,7 @@ msgstr "" msgid "Quality Inspections" msgstr "" -#: erpnext/setup/doctype/company/company.py:505 +#: erpnext/setup/doctype/company/company.py:506 msgid "Quality Management" msgstr "" @@ -41647,7 +41688,7 @@ msgstr "" #: erpnext/stock/doctype/material_request_item/material_request_item.json #: erpnext/stock/doctype/packing_slip_item/packing_slip_item.json #: erpnext/stock/doctype/pick_list_item/pick_list_item.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:824 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:829 #: erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json #: erpnext/stock/doctype/stock_reconciliation_item/stock_reconciliation_item.json #: erpnext/stock/report/batch_item_expiry_status/batch_item_expiry_status.py:36 @@ -41794,11 +41835,11 @@ msgstr "" msgid "Quantity to Manufacture" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2830 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2845 msgid "Quantity to Manufacture can not be zero for the operation {0}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1498 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1522 msgid "Quantity to Manufacture must be greater than 0." msgstr "" @@ -41835,11 +41876,11 @@ msgstr "" msgid "Queue Size should be between 5 and 100" msgstr "" -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:627 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:634 msgid "Quick Journal Entry" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:152 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:154 msgid "Quick Ratio" msgstr "" @@ -42242,7 +42283,7 @@ msgstr "" msgid "Rate at which this tax is applied" msgstr "" -#: erpnext/controllers/accounts_controller.py:4101 +#: erpnext/controllers/accounts_controller.py:4121 msgid "Rate of '{}' items cannot be changed" msgstr "" @@ -42482,7 +42523,7 @@ msgstr "" msgid "Reached Root" msgstr "" -#: erpnext/accounts/general_ledger.py:831 +#: erpnext/accounts/general_ledger.py:833 msgid "Read the docs" msgstr "" @@ -42650,8 +42691,8 @@ msgstr "" #: erpnext/accounts/report/accounts_receivable/accounts_receivable.js:79 #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1155 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:241 -#: erpnext/accounts/report/sales_register/sales_register.py:217 -#: erpnext/accounts/report/sales_register/sales_register.py:271 +#: erpnext/accounts/report/sales_register/sales_register.py:231 +#: erpnext/accounts/report/sales_register/sales_register.py:285 msgid "Receivable Account" msgstr "" @@ -42770,7 +42811,7 @@ msgstr "" msgid "Received Quantity" msgstr "" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:372 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:377 msgid "Received Stock Entries" msgstr "" @@ -43103,11 +43144,11 @@ msgstr "" msgid "Reference #{0} dated {1}" msgstr "" -#: erpnext/public/js/controllers/transaction.js:2814 +#: erpnext/public/js/controllers/transaction.js:2836 msgid "Reference Date for Early Payment Discount" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:400 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:376 msgid "Reference Date is required" msgstr "" @@ -43215,7 +43256,7 @@ msgstr "" msgid "Reference for Reservation" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:406 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:382 msgid "Reference is required" msgstr "" @@ -43237,38 +43278,11 @@ msgstr "" msgid "Reference: {0}, Item Code: {1} and Customer: {2}" msgstr "" -#. Label of the edit_references (Section Break) field in DocType 'POS Invoice -#. Item' -#. Label of the references_section (Section Break) field in DocType 'POS -#. Invoice Merge Log' -#. Label of the edit_references (Section Break) field in DocType 'Sales Invoice -#. Label of the references_section (Section Break) field in DocType 'Purchase -#. Order Item' -#. Label of the sb_references (Section Break) field in DocType 'Contract' -#. Label of the references_section (Section Break) field in DocType 'Customer' -#. Label of the references_section (Section Break) field in DocType -#. 'Subcontracting Order Item' -#: erpnext/accounts/doctype/fiscal_year/fiscal_year_dashboard.py:10 -#: erpnext/accounts/doctype/pos_invoice_item/pos_invoice_item.json -#: erpnext/accounts/doctype/pos_invoice_merge_log/pos_invoice_merge_log.json -#: erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template_dashboard.py:15 -#: erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json -#: erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template_dashboard.py:14 -#: erpnext/accounts/doctype/share_type/share_type_dashboard.py:7 -#: erpnext/accounts/doctype/subscription_plan/subscription_plan_dashboard.py:8 -#: erpnext/buying/doctype/purchase_order_item/purchase_order_item.json -#: erpnext/crm/doctype/contract/contract.json -#: erpnext/projects/doctype/timesheet/timesheet_dashboard.py:7 -#: erpnext/selling/doctype/customer/customer.json -#: erpnext/subcontracting/doctype/subcontracting_order_item/subcontracting_order_item.json -msgid "References" -msgstr "" - -#: erpnext/stock/doctype/delivery_note/delivery_note.py:373 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:374 msgid "References to Sales Invoices are Incomplete" msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:365 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:366 msgid "References to Sales Orders are Incomplete" msgstr "" @@ -43300,7 +43314,7 @@ msgstr "" #. Option for the 'Check' (Select) field in DocType 'Bank Transaction Rule #. Description Conditions' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:203 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:204 #: erpnext/accounts/doctype/bank_transaction_rule_description_conditions/bank_transaction_rule_description_conditions.json msgid "Regex" msgstr "" @@ -43435,7 +43449,7 @@ msgid "Remaining Balance" msgstr "" #. Label of the remark (Small Text) field in DocType 'Journal Entry' -#: erpnext/accounts/doctype/journal_entry/journal_entry.js:657 +#: erpnext/accounts/doctype/journal_entry/journal_entry.js:664 #: erpnext/accounts/doctype/journal_entry/journal_entry.json #: erpnext/selling/page/point_of_sale/pos_payment.js:489 msgid "Remark" @@ -43462,9 +43476,9 @@ msgstr "" #. Label of the remarks (Text) field in DocType 'Quality Inspection' #. Label of the remarks (Text) field in DocType 'Stock Entry' #. Label of the remarks (Small Text) field in DocType 'Subcontracting Receipt' -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:418 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:592 -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:660 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:394 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:568 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:636 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1231 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:594 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:683 @@ -43491,8 +43505,8 @@ msgstr "" #: erpnext/accounts/report/general_ledger/general_ledger.html:163 #: erpnext/accounts/report/general_ledger/general_ledger.py:818 #: erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.py:112 -#: erpnext/accounts/report/purchase_register/purchase_register.py:296 -#: erpnext/accounts/report/sales_register/sales_register.py:335 +#: erpnext/accounts/report/purchase_register/purchase_register.py:312 +#: erpnext/accounts/report/sales_register/sales_register.py:349 #: erpnext/manufacturing/doctype/bom_creator/bom_creator.json #: erpnext/manufacturing/doctype/downtime_entry/downtime_entry.json #: erpnext/manufacturing/doctype/job_card/job_card.json @@ -43836,7 +43850,7 @@ msgid "Reposting Vouchers Progress" msgstr "" #: erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:216 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:327 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:338 msgid "Reposting entries created: {0}" msgstr "" @@ -44117,7 +44131,7 @@ msgstr "" msgid "Research" msgstr "" -#: erpnext/setup/doctype/company/company.py:511 +#: erpnext/setup/doctype/company/company.py:512 msgid "Research & Development" msgstr "" @@ -44205,7 +44219,7 @@ msgstr "" msgid "Reserved" msgstr "" -#: erpnext/controllers/stock_controller.py:1368 +#: erpnext/controllers/stock_controller.py:1408 msgid "Reserved Batch Conflict" msgstr "" @@ -44275,7 +44289,7 @@ msgstr "" msgid "Reserved Quantity for Production" msgstr "" -#: erpnext/stock/stock_ledger.py:2296 +#: erpnext/stock/stock_ledger.py:2321 msgid "Reserved Serial No." msgstr "" @@ -44291,13 +44305,13 @@ msgstr "" #: erpnext/stock/doctype/pick_list/pick_list.js:178 #: erpnext/stock/report/reserved_stock/reserved_stock.json #: erpnext/stock/report/stock_balance/stock_balance.py:569 -#: erpnext/stock/stock_ledger.py:2280 +#: erpnext/stock/stock_ledger.py:2305 #: erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js:205 #: erpnext/subcontracting/doctype/subcontracting_order/subcontracting_order.js:333 msgid "Reserved Stock" msgstr "" -#: erpnext/stock/stock_ledger.py:2325 +#: erpnext/stock/stock_ledger.py:2350 msgid "Reserved Stock for Batch" msgstr "" @@ -44514,7 +44528,7 @@ msgstr "" msgid "Restart Subscription" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:178 +#: erpnext/assets/doctype/asset/asset.js:183 msgid "Restore Asset" msgstr "" @@ -44713,11 +44727,11 @@ msgstr "" msgid "Return of Components" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:173 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:175 msgid "Return on Asset Ratio" msgstr "" -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:174 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:176 msgid "Return on Equity Ratio" msgstr "" @@ -45106,8 +45120,8 @@ msgstr "" #: erpnext/accounts/doctype/pos_invoice/pos_invoice.json #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json -#: erpnext/accounts/report/purchase_register/purchase_register.py:282 -#: erpnext/accounts/report/sales_register/sales_register.py:312 +#: erpnext/accounts/report/purchase_register/purchase_register.py:298 +#: erpnext/accounts/report/sales_register/sales_register.py:326 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/supplier_quotation/supplier_quotation.json #: erpnext/selling/doctype/quotation/quotation.json @@ -45180,8 +45194,8 @@ msgstr "" msgid "Rounding Loss Allowance should be between 0 and 1" msgstr "" -#: erpnext/controllers/stock_controller.py:788 -#: erpnext/controllers/stock_controller.py:803 +#: erpnext/controllers/stock_controller.py:828 +#: erpnext/controllers/stock_controller.py:843 msgid "Rounding gain/loss Entry for Stock Transfer" msgstr "" @@ -45224,7 +45238,7 @@ msgstr "" msgid "Row # {0}: Returned Item {1} does not exist in {2} {3}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:349 +#: erpnext/manufacturing/doctype/work_order/work_order.py:350 msgid "Row #1: Sequence ID must be 1 for Operation {0}." msgstr "" @@ -45238,15 +45252,15 @@ msgstr "" msgid "Row #{0} (Payment Table): Amount must be positive" msgstr "" -#: erpnext/stock/doctype/item/item.py:564 +#: erpnext/stock/doctype/item/item.py:565 msgid "Row #{0}: A reorder entry already exists for warehouse {1} with reorder type {2}." msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:329 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:333 msgid "Row #{0}: Acceptance Criteria Formula is incorrect." msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:309 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:313 msgid "Row #{0}: Acceptance Criteria Formula is required." msgstr "" @@ -45259,7 +45273,7 @@ msgstr "" msgid "Row #{0}: Accepted Warehouse is mandatory for the accepted Item {1}" msgstr "" -#: erpnext/controllers/accounts_controller.py:1301 +#: erpnext/controllers/accounts_controller.py:1321 msgid "Row #{0}: Account {1} does not belong to company {2}" msgstr "" @@ -45324,27 +45338,27 @@ msgstr "" msgid "Row #{0}: Cannot create entry with different taxable AND withholding document links." msgstr "" -#: erpnext/controllers/accounts_controller.py:3804 +#: erpnext/controllers/accounts_controller.py:3824 msgid "Row #{0}: Cannot delete item {1} which has already been billed." msgstr "" -#: erpnext/controllers/accounts_controller.py:3778 +#: erpnext/controllers/accounts_controller.py:3798 msgid "Row #{0}: Cannot delete item {1} which has already been delivered" msgstr "" -#: erpnext/controllers/accounts_controller.py:3797 +#: erpnext/controllers/accounts_controller.py:3817 msgid "Row #{0}: Cannot delete item {1} which has already been received" msgstr "" -#: erpnext/controllers/accounts_controller.py:3784 +#: erpnext/controllers/accounts_controller.py:3804 msgid "Row #{0}: Cannot delete item {1} which has work order assigned to it." msgstr "" -#: erpnext/controllers/accounts_controller.py:3790 +#: erpnext/controllers/accounts_controller.py:3810 msgid "Row #{0}: Cannot delete item {1} which is already ordered against this Sales Order." msgstr "" -#: erpnext/controllers/accounts_controller.py:4111 +#: erpnext/controllers/accounts_controller.py:4131 msgid "Row #{0}: Cannot set Rate if the billed amount is greater than the amount for Item {1}." msgstr "" @@ -45402,11 +45416,11 @@ msgstr "" msgid "Row #{0}: Customer Provided Item {1} cannot be added multiple times in the Subcontracting Inward process." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:426 +#: erpnext/manufacturing/doctype/work_order/work_order.py:427 msgid "Row #{0}: Customer Provided Item {1} cannot be added multiple times." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:451 +#: erpnext/manufacturing/doctype/work_order/work_order.py:452 msgid "Row #{0}: Customer Provided Item {1} does not exist in the Required Items table linked to the Subcontracting Inward Order." msgstr "" @@ -45414,7 +45428,7 @@ msgstr "" msgid "Row #{0}: Customer Provided Item {1} exceeds quantity available through Subcontracting Inward Order" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:439 +#: erpnext/manufacturing/doctype/work_order/work_order.py:440 msgid "Row #{0}: Customer Provided Item {1} has insufficient quantity in the Subcontracting Inward Order. Available quantity is {2}." msgstr "" @@ -45435,7 +45449,7 @@ msgstr "" msgid "Row #{0}: Default BOM not found for FG Item {1}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:681 +#: erpnext/assets/doctype/asset/asset.py:685 msgid "Row #{0}: Depreciation Start Date is required" msgstr "" @@ -45447,7 +45461,7 @@ msgstr "" msgid "Row #{0}: Expected Delivery Date cannot be before Purchase Order Date" msgstr "" -#: erpnext/controllers/stock_controller.py:919 +#: erpnext/controllers/stock_controller.py:959 msgid "Row #{0}: Expense Account not set for the Item {1}. {2}" msgstr "" @@ -45495,7 +45509,7 @@ msgstr "" msgid "Row #{0}: For {1}, you can select reference document only if account gets debited" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:664 +#: erpnext/assets/doctype/asset/asset.py:668 msgid "Row #{0}: Frequency of Depreciation must be greater than zero" msgstr "" @@ -45527,7 +45541,7 @@ msgstr "" msgid "Row #{0}: Item {1} has no stock in warehouse {2}." msgstr "" -#: erpnext/controllers/stock_controller.py:148 +#: erpnext/controllers/stock_controller.py:184 msgid "Row #{0}: Item {1} has zero rate but '{2}' is not enabled." msgstr "" @@ -45576,11 +45590,11 @@ msgstr "" msgid "Row #{0}: Journal Entry {1} does not have account {2} or already matched against another voucher" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:675 +#: erpnext/assets/doctype/asset/asset.py:679 msgid "Row #{0}: Next Depreciation Date cannot be before Available-for-use Date" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:670 +#: erpnext/assets/doctype/asset/asset.py:674 msgid "Row #{0}: Next Depreciation Date cannot be before Purchase Date" msgstr "" @@ -45592,7 +45606,7 @@ msgstr "" msgid "Row #{0}: Only {1} available to reserve for the Item {2}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:638 +#: erpnext/assets/doctype/asset/asset.py:642 msgid "Row #{0}: Opening Accumulated Depreciation must be less than or equal to {1}" msgstr "" @@ -45621,11 +45635,11 @@ msgstr "" msgid "Row #{0}: Please select the Sub Assembly Warehouse" msgstr "" -#: erpnext/stock/doctype/item/item.py:571 +#: erpnext/stock/doctype/item/item.py:572 msgid "Row #{0}: Please set reorder quantity" msgstr "" -#: erpnext/controllers/accounts_controller.py:616 +#: erpnext/controllers/accounts_controller.py:636 msgid "Row #{0}: Please update deferred revenue/expense account in item row or default account in company master" msgstr "" @@ -45647,15 +45661,15 @@ msgstr "" msgid "Row #{0}: Qty should be less than or equal to Available Qty to Reserve (Actual Qty - Reserved Qty) {1} for Iem {2} against Batch {3} in Warehouse {4}." msgstr "" -#: erpnext/controllers/stock_controller.py:1505 +#: erpnext/controllers/stock_controller.py:1545 msgid "Row #{0}: Quality Inspection is required for Item {1}" msgstr "" -#: erpnext/controllers/stock_controller.py:1520 +#: erpnext/controllers/stock_controller.py:1560 msgid "Row #{0}: Quality Inspection {1} is not submitted for the item: {2}" msgstr "" -#: erpnext/controllers/stock_controller.py:1535 +#: erpnext/controllers/stock_controller.py:1575 msgid "Row #{0}: Quality Inspection {1} was rejected for item {2}" msgstr "" @@ -45663,7 +45677,7 @@ msgstr "" msgid "Row #{0}: Quantity cannot be a non-positive number. Please increase the quantity or remove the Item {1}" msgstr "" -#: erpnext/controllers/accounts_controller.py:1464 +#: erpnext/controllers/accounts_controller.py:1484 msgid "Row #{0}: Quantity for Item {1} cannot be zero." msgstr "" @@ -45675,8 +45689,8 @@ msgstr "" msgid "Row #{0}: Quantity to reserve for the Item {1} should be greater than 0." msgstr "" -#: erpnext/controllers/accounts_controller.py:879 -#: erpnext/controllers/accounts_controller.py:891 +#: erpnext/controllers/accounts_controller.py:899 +#: erpnext/controllers/accounts_controller.py:911 #: erpnext/utilities/transaction_base.py:172 #: erpnext/utilities/transaction_base.py:178 msgid "Row #{0}: Rate must be same as {1}: {2} ({3} / {4})" @@ -45726,11 +45740,11 @@ msgid "" "\t\t\t\t\tthis validation." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:355 +#: erpnext/manufacturing/doctype/work_order/work_order.py:356 msgid "Row #{0}: Sequence ID must be {1} or {2} for Operation {3}." msgstr "" -#: erpnext/controllers/stock_controller.py:303 +#: erpnext/controllers/stock_controller.py:339 msgid "Row #{0}: Serial No {1} does not belong to Batch {2}" msgstr "" @@ -45746,15 +45760,15 @@ msgstr "" msgid "Row #{0}: Serial No(s) {1} are not a part of the linked Subcontracting Inward Order. Please select valid Serial No(s)." msgstr "" -#: erpnext/controllers/accounts_controller.py:644 +#: erpnext/controllers/accounts_controller.py:664 msgid "Row #{0}: Service End Date cannot be before Invoice Posting Date" msgstr "" -#: erpnext/controllers/accounts_controller.py:638 +#: erpnext/controllers/accounts_controller.py:658 msgid "Row #{0}: Service Start Date cannot be greater than Service End Date" msgstr "" -#: erpnext/controllers/accounts_controller.py:632 +#: erpnext/controllers/accounts_controller.py:652 msgid "Row #{0}: Service Start and End Date is required for deferred accounting" msgstr "" @@ -45770,11 +45784,11 @@ msgstr "" msgid "Row #{0}: Source Warehouse must be same as Customer Warehouse {1} from the linked Subcontracting Inward Order" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:460 +#: erpnext/manufacturing/doctype/work_order/work_order.py:461 msgid "Row #{0}: Source Warehouse {1} for item {2} cannot be a customer warehouse." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:415 +#: erpnext/manufacturing/doctype/work_order/work_order.py:416 msgid "Row #{0}: Source Warehouse {1} for item {2} must be same as Source Warehouse {3} in the Work Order." msgstr "" @@ -45790,7 +45804,7 @@ msgstr "" msgid "Row #{0}: Start Time must be before End Time" msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:209 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:213 msgid "Row #{0}: Status is mandatory" msgstr "" @@ -45814,7 +45828,7 @@ msgstr "" msgid "Row #{0}: Stock is already reserved for the Item {1}." msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:527 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:528 msgid "Row #{0}: Stock is reserved for item {1} in warehouse {2}." msgstr "" @@ -45835,11 +45849,11 @@ msgstr "" msgid "Row #{0}: Target Warehouse must be same as Customer Warehouse {1} from the linked Subcontracting Inward Order" msgstr "" -#: erpnext/controllers/stock_controller.py:316 +#: erpnext/controllers/stock_controller.py:352 msgid "Row #{0}: The batch {1} has already expired." msgstr "" -#: erpnext/stock/doctype/item/item.py:580 +#: erpnext/stock/doctype/item/item.py:581 msgid "Row #{0}: The warehouse {1} is not a child warehouse of a group warehouse {2}" msgstr "" @@ -45847,15 +45861,15 @@ msgstr "" msgid "Row #{0}: Timings conflicts with row {1}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:651 +#: erpnext/assets/doctype/asset/asset.py:655 msgid "Row #{0}: Total Number of Depreciations cannot be less than or equal to Opening Number of Booked Depreciations" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:660 +#: erpnext/assets/doctype/asset/asset.py:664 msgid "Row #{0}: Total Number of Depreciations must be greater than zero" msgstr "" -#: erpnext/controllers/stock_controller.py:100 +#: erpnext/controllers/stock_controller.py:136 msgid "Row #{0}: Warehouse {1} does not match with the warehouse {2} in Serial and Batch Bundle {3}." msgstr "" @@ -45883,11 +45897,11 @@ msgstr "" msgid "Row #{0}: {1} can not be negative for item {2}" msgstr "" -#: erpnext/controllers/stock_controller.py:1183 +#: erpnext/controllers/stock_controller.py:1223 msgid "Row #{0}: {1} is mandatory for the Inventory Dimension {2}." msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:322 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:326 msgid "Row #{0}: {1} is not a valid reading field. Please refer to the field description." msgstr "" @@ -45899,7 +45913,7 @@ msgstr "" msgid "Row #{0}: {1} of {2} should be {3}. Please update the {1} or select a different account." msgstr "" -#: erpnext/controllers/accounts_controller.py:3918 +#: erpnext/controllers/accounts_controller.py:3938 msgid "Row #{0}:Quantity for Item {1} cannot be zero." msgstr "" @@ -45947,7 +45961,7 @@ msgstr "" msgid "Row #{}: Either Party ID or Party Name is required" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:421 +#: erpnext/assets/doctype/asset/asset.py:425 msgid "Row #{}: Finance Book should not be empty since you're using multiple." msgstr "" @@ -45971,7 +45985,7 @@ msgstr "" msgid "Row #{}: Please assign task to a member." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:413 +#: erpnext/assets/doctype/asset/asset.py:417 msgid "Row #{}: Please use a different Finance Book." msgstr "" @@ -46000,7 +46014,7 @@ msgstr "" msgid "Row #{}: {} {} does not exist." msgstr "" -#: erpnext/stock/doctype/item/item.py:1507 +#: erpnext/stock/doctype/item/item.py:1527 msgid "Row #{}: {} {} doesn't belong to Company {}. Please select valid {}." msgstr "" @@ -46068,7 +46082,7 @@ msgstr "" msgid "Row {0}: Conversion Factor is mandatory" msgstr "" -#: erpnext/controllers/accounts_controller.py:3245 +#: erpnext/controllers/accounts_controller.py:3265 msgid "Row {0}: Cost Center {1} does not belong to Company {2}" msgstr "" @@ -46096,7 +46110,7 @@ msgstr "" msgid "Row {0}: Delivery Warehouse cannot be same as Customer Warehouse for Item {1}." msgstr "" -#: erpnext/controllers/accounts_controller.py:2745 +#: erpnext/controllers/accounts_controller.py:2765 msgid "Row {0}: Due Date in the Payment Terms table cannot be before Posting Date" msgstr "" @@ -46109,11 +46123,11 @@ msgstr "" msgid "Row {0}: Exchange Rate is mandatory" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:609 +#: erpnext/assets/doctype/asset/asset.py:613 msgid "Row {0}: Expected Value After Useful Life cannot be negative" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:612 +#: erpnext/assets/doctype/asset/asset.py:616 msgid "Row {0}: Expected Value After Useful Life must be less than Net Purchase Amount" msgstr "" @@ -46146,7 +46160,7 @@ msgstr "" msgid "Row {0}: From Time and To Time of {1} is overlapping with {2}" msgstr "" -#: erpnext/controllers/stock_controller.py:1601 +#: erpnext/controllers/stock_controller.py:1641 msgid "Row {0}: From Warehouse is mandatory for internal transfers" msgstr "" @@ -46190,7 +46204,7 @@ msgstr "" msgid "Row {0}: Operation time should be greater than 0 for operation {1}" msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:584 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:585 msgid "Row {0}: Packed Qty must be equal to {1} Qty." msgstr "" @@ -46290,7 +46304,7 @@ msgstr "" msgid "Row {0}: Subcontracted Item is mandatory for the raw material {1}" msgstr "" -#: erpnext/controllers/stock_controller.py:1592 +#: erpnext/controllers/stock_controller.py:1632 msgid "Row {0}: Target Warehouse is mandatory for internal transfers" msgstr "" @@ -46306,7 +46320,7 @@ msgstr "" msgid "Row {0}: The item {1}, quantity must be positive number" msgstr "" -#: erpnext/controllers/accounts_controller.py:3222 +#: erpnext/controllers/accounts_controller.py:3242 msgid "Row {0}: The {3} Account {1} does not belong to the company {2}" msgstr "" @@ -46335,11 +46349,11 @@ msgid "Row {0}: Warehouse {1} is linked to company {2}. Please select a warehous msgstr "" #: erpnext/manufacturing/doctype/bom/bom.py:1239 -#: erpnext/manufacturing/doctype/work_order/work_order.py:489 +#: erpnext/manufacturing/doctype/work_order/work_order.py:490 msgid "Row {0}: Workstation or Workstation Type is mandatory for an operation {1}" msgstr "" -#: erpnext/controllers/accounts_controller.py:1183 +#: erpnext/controllers/accounts_controller.py:1203 msgid "Row {0}: user has not applied the rule {1} on the item {2}" msgstr "" @@ -46351,7 +46365,7 @@ msgstr "" msgid "Row {0}: {1} must be greater than 0" msgstr "" -#: erpnext/controllers/accounts_controller.py:789 +#: erpnext/controllers/accounts_controller.py:809 msgid "Row {0}: {1} {2} cannot be same as {3} (Party Account) {4}" msgstr "" @@ -46397,7 +46411,7 @@ msgstr "" msgid "Rows with Same Account heads will be merged on Ledger" msgstr "" -#: erpnext/controllers/accounts_controller.py:2756 +#: erpnext/controllers/accounts_controller.py:2776 msgid "Rows with duplicate due dates in other rows were found: {0}" msgstr "" @@ -46405,7 +46419,7 @@ msgstr "" msgid "Rows: {0} have 'Payment Entry' as reference_type. This should not be set manually." msgstr "" -#: erpnext/controllers/accounts_controller.py:282 +#: erpnext/controllers/accounts_controller.py:302 msgid "Rows: {0} in {1} section are Invalid. Reference Name should point to a valid Payment Entry or Journal Entry." msgstr "" @@ -46420,7 +46434,7 @@ msgstr "" #. Label of the rule_description (Small Text) field in DocType 'Promotional #. Scheme Price Discount' #. Scheme Product Discount' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:47 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:48 #: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.json #: erpnext/accounts/doctype/pricing_rule/pricing_rule.json #: erpnext/accounts/doctype/promotional_scheme_price_discount/promotional_scheme_price_discount.json @@ -46429,7 +46443,7 @@ msgid "Rule Description" msgstr "" #. Label of the rule_name (Data) field in DocType 'Bank Transaction Rule' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:28 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:29 #: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.json msgid "Rule Name" msgstr "" @@ -46446,7 +46460,7 @@ msgstr "" msgid "Rule matched based on transaction description and other criteria." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:39 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:40 msgid "Rule name is required" msgstr "" @@ -46466,7 +46480,7 @@ msgstr "" msgid "Rules evaluation started" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:189 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:190 msgid "Rules to match against the transaction description" msgstr "" @@ -46554,6 +46568,7 @@ msgstr "" msgid "SO Total Qty" msgstr "" +#: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts.html:16 #: erpnext/accounts/doctype/process_statement_of_accounts/process_statement_of_accounts_accounts_receivable.html:26 msgid "STATEMENT OF ACCOUNTS" msgstr "" @@ -46621,8 +46636,8 @@ msgstr "" #: erpnext/regional/report/vat_audit_report/vat_audit_report.py:145 #: erpnext/selling/doctype/quotation/quotation.json #: erpnext/selling/doctype/sales_order/sales_order.json -#: erpnext/setup/doctype/company/company.py:457 -#: erpnext/setup/doctype/company/company.py:649 +#: erpnext/setup/doctype/company/company.py:458 +#: erpnext/setup/doctype/company/company.py:650 #: erpnext/setup/doctype/company/company_dashboard.py:9 #: erpnext/setup/doctype/sales_person/sales_person_dashboard.py:12 #: erpnext/setup/install.py:423 @@ -46637,7 +46652,7 @@ msgstr "" msgid "Sales & Purchase" msgstr "" -#: erpnext/setup/doctype/company/company.py:649 +#: erpnext/setup/doctype/company/company.py:650 msgid "Sales Account" msgstr "" @@ -46832,7 +46847,7 @@ msgstr "" msgid "Sales Invoice mode is activated in POS. Please create Sales Invoice instead." msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:597 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:598 msgid "Sales Invoice {0} has already been submitted" msgstr "" @@ -46891,7 +46906,7 @@ msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.js:380 #: erpnext/accounts/doctype/sales_invoice_item/sales_invoice_item.json #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:284 -#: erpnext/accounts/report/sales_register/sales_register.py:238 +#: erpnext/accounts/report/sales_register/sales_register.py:252 #: erpnext/buying/doctype/purchase_order_item/purchase_order_item.json #: erpnext/buying/doctype/supplier_quotation_item/supplier_quotation_item.json #: erpnext/controllers/selling_controller.py:494 @@ -47028,7 +47043,7 @@ msgstr "" msgid "Sales Order Trends" msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:284 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:285 msgid "Sales Order required for Item {0}" msgstr "" @@ -47045,7 +47060,7 @@ msgstr "" msgid "Sales Order {0} is not submitted" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:565 +#: erpnext/manufacturing/doctype/work_order/work_order.py:566 msgid "Sales Order {0} is not valid" msgstr "" @@ -47299,7 +47314,7 @@ msgstr "" msgid "Sales Representative" msgstr "" -#: erpnext/accounts/report/gross_profit/gross_profit.py:989 +#: erpnext/accounts/report/gross_profit/gross_profit.py:995 #: erpnext/stock/doctype/delivery_note/delivery_note.js:270 msgid "Sales Return" msgstr "" @@ -47462,7 +47477,7 @@ msgid "Sample Quantity" msgstr "" #: erpnext/stock/doctype/purchase_receipt/purchase_receipt.js:269 -#: erpnext/stock/doctype/stock_entry/stock_entry.js:552 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:557 msgid "Sample Retention Stock Entry" msgstr "" @@ -47474,7 +47489,7 @@ msgstr "" #. Label of the sample_size (Float) field in DocType 'Quality Inspection' #: erpnext/manufacturing/report/quality_inspection_summary/quality_inspection_summary.py:93 -#: erpnext/public/js/controllers/transaction.js:2871 +#: erpnext/public/js/controllers/transaction.js:2893 #: erpnext/stock/doctype/quality_inspection/quality_inspection.json msgid "Sample Size" msgstr "" @@ -47578,13 +47593,13 @@ msgstr "" #. Label of the schedule_date (Date) field in DocType 'Depreciation Schedule' #. Label of the schedule_date (Datetime) field in DocType 'Production Plan Sub #. Assembly Item' -#: erpnext/assets/doctype/asset/asset.js:378 +#: erpnext/assets/doctype/asset/asset.js:383 #: erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json #: erpnext/manufacturing/doctype/production_plan_sub_assembly_item/production_plan_sub_assembly_item.json msgid "Schedule Date" msgstr "" -#: erpnext/public/js/controllers/transaction.js:516 +#: erpnext/public/js/controllers/transaction.js:538 msgid "Schedule Name" msgstr "" @@ -47709,7 +47724,7 @@ msgstr "" msgid "Scrap" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:163 +#: erpnext/assets/doctype/asset/asset.js:168 msgid "Scrap Asset" msgstr "" @@ -47770,6 +47785,10 @@ msgstr "" msgid "Search transactions" msgstr "" +#: erpnext/stock/doctype/item/item.js:798 +msgid "Search values..." +msgstr "" + #. Name of a UOM #: erpnext/setup/setup_wizard/data/uom_data.json msgid "Second" @@ -47886,7 +47905,7 @@ msgstr "" msgid "Select Alternative Items for Sales Order" msgstr "" -#: erpnext/stock/doctype/item/item.js:838 +#: erpnext/stock/doctype/item/item.js:924 msgid "Select Attribute Values" msgstr "" @@ -47989,7 +48008,7 @@ msgstr "" msgid "Select Items based on Delivery Date" msgstr "" -#: erpnext/public/js/controllers/transaction.js:2912 +#: erpnext/public/js/controllers/transaction.js:2928 msgid "Select Items for Quality Inspection" msgstr "" @@ -48019,7 +48038,7 @@ msgstr "" msgid "Select Loyalty Program" msgstr "" -#: erpnext/public/js/controllers/transaction.js:502 +#: erpnext/public/js/controllers/transaction.js:524 msgid "Select Payment Schedule" msgstr "" @@ -48118,14 +48137,14 @@ msgstr "" msgid "Select a transaction to match and reconcile with vouchers" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:586 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:562 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:679 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1175 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:588 msgid "Select all" msgstr "" -#: erpnext/stock/doctype/item/item.js:1180 +#: erpnext/stock/doctype/item/item.js:1266 msgid "Select an Item Group." msgstr "" @@ -48141,7 +48160,7 @@ msgstr "" msgid "Select an item from each set to be used in the Sales Order." msgstr "" -#: erpnext/stock/doctype/item/item.js:852 +#: erpnext/stock/doctype/item/item.js:938 msgid "Select at least one attribute value." msgstr "" @@ -48159,7 +48178,7 @@ msgstr "" msgid "Select date" msgstr "" -#: erpnext/controllers/accounts_controller.py:2997 +#: erpnext/controllers/accounts_controller.py:3017 msgid "Select finance book for the item {0} at row {1}" msgstr "" @@ -48171,7 +48190,7 @@ msgstr "" msgid "Select number of days" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:605 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:581 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:699 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1192 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:632 @@ -48208,7 +48227,7 @@ msgstr "" msgid "Select the customer or supplier." msgstr "" -#: erpnext/assets/doctype/asset/asset.js:930 +#: erpnext/assets/doctype/asset/asset.js:939 msgid "Select the date" msgstr "" @@ -48222,6 +48241,10 @@ msgstr "" msgid "Select the group first to filter the applicable withholding categories below." msgstr "" +#: erpnext/public/js/setup_wizard.js:89 +msgid "Select the modules that you plan to implement" +msgstr "" + #: erpnext/manufacturing/doctype/bom/bom.js:1007 msgid "Select the raw materials (Items) required to manufacture the Item" msgstr "" @@ -48281,22 +48304,22 @@ msgstr "" msgid "Self delivery" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:641 +#: erpnext/assets/doctype/asset/asset.js:646 #: erpnext/stock/doctype/batch/batch_dashboard.py:9 #: erpnext/stock/doctype/item/item_dashboard.py:20 msgid "Sell" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:171 -#: erpnext/assets/doctype/asset/asset.js:630 +#: erpnext/assets/doctype/asset/asset.js:176 +#: erpnext/assets/doctype/asset/asset.js:635 msgid "Sell Asset" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:635 +#: erpnext/assets/doctype/asset/asset.js:640 msgid "Sell Qty" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:651 +#: erpnext/assets/doctype/asset/asset.js:656 msgid "Sell quantity cannot exceed the asset quantity" msgstr "" @@ -48304,7 +48327,7 @@ msgstr "" msgid "Sell quantity cannot exceed the asset quantity. Asset {0} has only {1} item(s)." msgstr "" -#: erpnext/assets/doctype/asset/asset.js:647 +#: erpnext/assets/doctype/asset/asset.js:652 msgid "Sell quantity must be greater than zero" msgstr "" @@ -48416,7 +48439,7 @@ msgid "Send Emails to Suppliers" msgstr "" #. Label of the send_sms (Button) field in DocType 'SMS Center' -#: erpnext/public/js/controllers/transaction.js:721 +#: erpnext/public/js/controllers/transaction.js:743 #: erpnext/selling/doctype/sms_center/sms_center.json msgid "Send SMS" msgstr "" @@ -48552,7 +48575,7 @@ msgstr "" #: erpnext/manufacturing/doctype/job_card/job_card.json #: erpnext/manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.js:74 #: erpnext/manufacturing/report/cost_of_poor_quality_report/cost_of_poor_quality_report.py:114 -#: erpnext/public/js/controllers/transaction.js:2884 +#: erpnext/public/js/controllers/transaction.js:2906 #: erpnext/public/js/utils/serial_no_batch_selector.js:432 #: erpnext/selling/doctype/installation_note_item/installation_note_item.json #: erpnext/stock/doctype/delivery_note_item/delivery_note_item.json @@ -48613,11 +48636,11 @@ msgstr "" msgid "Serial No Range" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2675 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2725 msgid "Serial No Reserved" msgstr "" -#: erpnext/stock/doctype/item/item.py:477 +#: erpnext/stock/doctype/item/item.py:478 msgid "Serial No Series Overlap" msgstr "" @@ -48669,7 +48692,7 @@ msgstr "" msgid "Serial No and Batch Traceability" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1179 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1229 msgid "Serial No is mandatory" msgstr "" @@ -48698,7 +48721,7 @@ msgstr "" msgid "Serial No {0} does not exist" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:3464 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:3514 msgid "Serial No {0} does not exists" msgstr "" @@ -48752,11 +48775,11 @@ msgstr "" msgid "Serial Nos / Batches" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1958 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2008 msgid "Serial Nos are created successfully" msgstr "" -#: erpnext/stock/stock_ledger.py:2286 +#: erpnext/stock/stock_ledger.py:2311 msgid "Serial Nos are reserved in Stock Reservation Entries, you need to unreserve them before proceeding." msgstr "" @@ -48826,21 +48849,25 @@ msgstr "" #: erpnext/stock/report/incorrect_serial_and_batch_bundle/incorrect_serial_and_batch_bundle.py:31 #: erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py:80 #: erpnext/stock/report/stock_ledger/stock_ledger.py:411 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:177 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:188 #: erpnext/subcontracting/doctype/subcontracting_receipt_item/subcontracting_receipt_item.json #: erpnext/workspace_sidebar/stock.json msgid "Serial and Batch Bundle" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2180 +#: erpnext/stock/doctype/item/item.py:1122 +msgid "Serial and Batch Bundle Exists" +msgstr "" + +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2230 msgid "Serial and Batch Bundle created" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2274 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2324 msgid "Serial and Batch Bundle updated" msgstr "" -#: erpnext/controllers/stock_controller.py:196 +#: erpnext/controllers/stock_controller.py:232 msgid "Serial and Batch Bundle {0} is already used in {1} {2}." msgstr "" @@ -48848,7 +48875,7 @@ msgstr "" msgid "Serial and Batch Bundle {0} is not submitted" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2250 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2300 msgid "Serial and Batch Bundle {0} is submitted and its entries cannot be modified." msgstr "" @@ -49102,12 +49129,12 @@ msgid "Service Stop Date" msgstr "" #: erpnext/accounts/deferred_revenue.py:45 -#: erpnext/public/js/controllers/transaction.js:1793 +#: erpnext/public/js/controllers/transaction.js:1815 msgid "Service Stop Date cannot be after Service End Date" msgstr "" #: erpnext/accounts/deferred_revenue.py:42 -#: erpnext/public/js/controllers/transaction.js:1790 +#: erpnext/public/js/controllers/transaction.js:1812 msgid "Service Stop Date cannot be before Service Start Date" msgstr "" @@ -49317,11 +49344,11 @@ msgstr "" msgid "Set closing balance as per bank statement" msgstr "" -#: erpnext/setup/doctype/company/company.py:547 +#: erpnext/setup/doctype/company/company.py:548 msgid "Set default inventory account for perpetual inventory" msgstr "" -#: erpnext/setup/doctype/company/company.py:573 +#: erpnext/setup/doctype/company/company.py:574 msgid "Set default {0} account for non stock items" msgstr "" @@ -49388,15 +49415,15 @@ msgstr "" msgid "Set valuation rate for rejected Materials" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:898 +#: erpnext/assets/doctype/asset/asset.py:902 msgid "Set {0} in asset category {1} for company {2}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1231 +#: erpnext/assets/doctype/asset/asset.py:1235 msgid "Set {0} in asset category {1} or company {2}" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1228 +#: erpnext/assets/doctype/asset/asset.py:1232 msgid "Set {0} in company {1}" msgstr "" @@ -49449,7 +49476,7 @@ msgstr "" msgid "Setting Item Locations..." msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:25 +#: erpnext/setup/setup_wizard/setup_wizard.py:26 msgid "Setting defaults" msgstr "" @@ -49459,12 +49486,12 @@ msgstr "" msgid "Setting the account as a Company Account is necessary for Bank Reconciliation" msgstr "" -#: erpnext/setup/setup_wizard/setup_wizard.py:20 +#: erpnext/setup/setup_wizard/setup_wizard.py:21 msgid "Setting up company" msgstr "" #: erpnext/manufacturing/doctype/bom/bom.py:1218 -#: erpnext/manufacturing/doctype/work_order/work_order.py:1562 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1586 msgid "Setting {0} is required" msgstr "" @@ -49522,7 +49549,7 @@ msgstr "" msgid "Setup Warehouse" msgstr "" -#: erpnext/public/js/setup_wizard.js:25 +#: erpnext/public/js/setup_wizard.js:120 msgid "Setup your organization" msgstr "" @@ -49604,7 +49631,7 @@ msgid "Shelf Life in Days" msgstr "" #. Label of the shift (Link) field in DocType 'Depreciation Schedule' -#: erpnext/assets/doctype/asset/asset.js:391 +#: erpnext/assets/doctype/asset/asset.js:396 #: erpnext/assets/doctype/depreciation_schedule/depreciation_schedule.json msgid "Shift" msgstr "" @@ -49676,7 +49703,7 @@ msgstr "" msgid "Shipment details" msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:768 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:769 msgid "Shipments" msgstr "" @@ -49711,7 +49738,7 @@ msgstr "" msgid "Shipping Address Template" msgstr "" -#: erpnext/controllers/accounts_controller.py:575 +#: erpnext/controllers/accounts_controller.py:595 msgid "Shipping Address does not belong to the {0}" msgstr "" @@ -50210,7 +50237,7 @@ msgstr "" #. Option for the 'Bank Entry Type' (Select) field in DocType 'Bank Transaction #. Rule' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:282 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:283 #: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.json msgid "Single Account" msgstr "" @@ -50295,11 +50322,11 @@ msgid "Sold by" msgstr "" #: erpnext/accounts/report/financial_ratios/financial_ratios.js:55 -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:168 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:170 msgid "Solvency Ratios" msgstr "" -#: erpnext/controllers/accounts_controller.py:4369 +#: erpnext/controllers/accounts_controller.py:4389 msgid "Some required Company details are missing. You don't have permission to update them. Please contact your System Manager." msgstr "" @@ -50414,7 +50441,7 @@ msgstr "" #: erpnext/selling/doctype/sales_order_item/sales_order_item.json #: erpnext/stock/dashboard/item_dashboard.js:227 #: erpnext/stock/doctype/material_request_item/material_request_item.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:815 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:820 #: erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json msgid "Source Warehouse" msgstr "" @@ -50434,7 +50461,7 @@ msgstr "" msgid "Source Warehouse is mandatory for the Item {0}." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:374 +#: erpnext/manufacturing/doctype/work_order/work_order.py:375 msgid "Source Warehouse {0} must be same as Customer Warehouse {1} in the Subcontracting Inward Order." msgstr "" @@ -50504,15 +50531,15 @@ msgstr "" msgid "Spent" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:691 +#: erpnext/assets/doctype/asset/asset.js:696 #: erpnext/stock/doctype/batch/batch.js:104 #: erpnext/stock/doctype/batch/batch.js:185 #: erpnext/support/doctype/issue/issue.js:114 msgid "Split" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:147 -#: erpnext/assets/doctype/asset/asset.js:675 +#: erpnext/assets/doctype/asset/asset.js:152 +#: erpnext/assets/doctype/asset/asset.js:680 msgid "Split Asset" msgstr "" @@ -50536,11 +50563,11 @@ msgstr "" msgid "Split Issue" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:681 +#: erpnext/assets/doctype/asset/asset.js:686 msgid "Split Qty" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1370 +#: erpnext/assets/doctype/asset/asset.py:1374 msgid "Split Quantity must be less than Asset Quantity" msgstr "" @@ -50626,7 +50653,7 @@ msgstr "" #: erpnext/setup/setup_wizard/operations/defaults_setup.py:70 #: erpnext/setup/setup_wizard/operations/install_fixtures.py:493 -#: erpnext/stock/doctype/item/item.py:275 erpnext/tests/utils.py:283 +#: erpnext/stock/doctype/item/item.py:276 erpnext/tests/utils.py:283 #: erpnext/tests/utils.py:2518 msgid "Standard Selling" msgstr "" @@ -50765,7 +50792,7 @@ msgstr "" msgid "Starts With" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:201 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:202 msgid "Starts with" msgstr "" @@ -50825,7 +50852,7 @@ msgstr "" msgid "Status must be one of {0}" msgstr "" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:275 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:279 msgid "Status set to rejected as there are one or more rejected readings." msgstr "" @@ -50840,6 +50867,7 @@ msgstr "" #: erpnext/accounts/report/account_balance/account_balance.js:57 #: erpnext/desktop_icon/stock.json #: erpnext/manufacturing/doctype/bom/bom_dashboard.py:14 +#: erpnext/public/js/setup_wizard.js:92 #: erpnext/setup/doctype/incoterm/incoterm.json #: erpnext/setup/workspace/home/home.json #: erpnext/stock/doctype/item/item_list.js:21 @@ -51073,7 +51101,7 @@ msgstr "" #. Name of a DocType #: erpnext/stock/doctype/stock_ledger_entry/stock_ledger_entry.json #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:113 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:138 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:149 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:30 msgid "Stock Ledger Entry" msgstr "" @@ -51227,7 +51255,7 @@ msgstr "" #. Label of a Link in the Stock Workspace #. Label of a Workspace Sidebar Item #: erpnext/setup/workspace/home/home.json -#: erpnext/stock/doctype/item/item.py:668 +#: erpnext/stock/doctype/item/item.py:669 #: erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.json #: erpnext/stock/doctype/stock_settings/stock_settings.js:155 #: erpnext/stock/workspace/stock/stock.json @@ -51240,7 +51268,7 @@ msgstr "" msgid "Stock Reconciliation Item" msgstr "" -#: erpnext/stock/doctype/item/item.py:668 +#: erpnext/stock/doctype/item/item.py:669 msgid "Stock Reconciliations" msgstr "" @@ -51305,7 +51333,7 @@ msgstr "" #: erpnext/controllers/subcontracting_inward_controller.py:1037 #: erpnext/manufacturing/doctype/production_plan/production_plan.py:2245 -#: erpnext/manufacturing/doctype/work_order/work_order.py:2338 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2353 #: erpnext/stock/doctype/stock_reservation_entry/stock_reservation_entry.py:1777 msgid "Stock Reservation Entries Created" msgstr "" @@ -51333,7 +51361,7 @@ msgstr "" msgid "Stock Reservation Entry created against a Pick List cannot be updated. If you need to make changes, we recommend canceling the existing entry and creating a new one." msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:537 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:538 msgid "Stock Reservation Warehouse Mismatch" msgstr "" @@ -51671,14 +51699,14 @@ msgstr "" msgid "Stop Reason" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1170 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1177 msgid "Stopped Work Order cannot be cancelled, Unstop it first to cancel" msgstr "" -#: erpnext/setup/doctype/company/company.py:384 +#: erpnext/setup/doctype/company/company.py:385 #: erpnext/setup/setup_wizard/operations/defaults_setup.py:33 #: erpnext/setup/setup_wizard/operations/install_fixtures.py:537 -#: erpnext/stock/doctype/item/item.py:312 erpnext/tests/utils.py:248 +#: erpnext/stock/doctype/item/item.py:313 erpnext/tests/utils.py:248 msgid "Stores" msgstr "" @@ -52273,7 +52301,7 @@ msgstr "" msgid "Successfully Set Supplier" msgstr "" -#: erpnext/stock/doctype/item/item.py:390 +#: erpnext/stock/doctype/item/item.py:391 msgid "Successfully changed Stock UOM, please redefine conversion factors for new UOM." msgstr "" @@ -52321,7 +52349,7 @@ msgstr "" msgid "Successfully updated {0} records." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:263 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:264 msgid "Suggest creating a" msgstr "" @@ -52429,7 +52457,7 @@ msgstr "" #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.js:34 #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:189 #: erpnext/accounts/report/purchase_register/purchase_register.js:21 -#: erpnext/accounts/report/purchase_register/purchase_register.py:171 +#: erpnext/accounts/report/purchase_register/purchase_register.py:187 #: erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:29 #: erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:37 #: erpnext/assets/doctype/asset/asset.json @@ -52571,7 +52599,7 @@ msgstr "" #: erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:198 #: erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.py:178 #: erpnext/accounts/report/purchase_register/purchase_register.js:27 -#: erpnext/accounts/report/purchase_register/purchase_register.py:186 +#: erpnext/accounts/report/purchase_register/purchase_register.py:202 #: erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:55 #: erpnext/buying/doctype/purchase_order/purchase_order.json #: erpnext/buying/doctype/request_for_quotation/request_for_quotation.js:503 @@ -52670,7 +52698,7 @@ msgstr "" #: erpnext/accounts/report/accounts_receivable/accounts_receivable.py:1172 #: erpnext/accounts/report/accounts_receivable_summary/accounts_receivable_summary.py:156 #: erpnext/accounts/report/item_wise_purchase_register/item_wise_purchase_register.py:196 -#: erpnext/accounts/report/purchase_register/purchase_register.py:177 +#: erpnext/accounts/report/purchase_register/purchase_register.py:193 #: erpnext/accounts/report/received_items_to_be_billed/received_items_to_be_billed.py:35 #: erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:73 #: erpnext/buying/doctype/buying_settings/buying_settings.json @@ -53018,7 +53046,7 @@ msgstr "" msgid "System will fetch all the entries if limit value is zero." msgstr "" -#: erpnext/controllers/accounts_controller.py:2236 +#: erpnext/controllers/accounts_controller.py:2256 msgid "System will not check over billing since amount for Item {0} in {1} is zero" msgstr "" @@ -53192,7 +53220,7 @@ msgstr "" #: erpnext/stock/dashboard/item_dashboard.js:234 #: erpnext/stock/doctype/delivery_note_item/delivery_note_item.json #: erpnext/stock/doctype/material_request_item/material_request_item.json -#: erpnext/stock/doctype/stock_entry/stock_entry.js:821 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:826 #: erpnext/stock/doctype/stock_entry_detail/stock_entry_detail.json msgid "Target Warehouse" msgstr "" @@ -53208,7 +53236,7 @@ msgstr "" msgid "Target Warehouse Address Link" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:319 +#: erpnext/manufacturing/doctype/work_order/work_order.py:320 msgid "Target Warehouse Reservation Error" msgstr "" @@ -53216,7 +53244,7 @@ msgstr "" msgid "Target Warehouse for Finished Good must be same as Finished Good Warehouse {1} in Work Order {2} linked to the Subcontracting Inward Order." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:858 +#: erpnext/manufacturing/doctype/work_order/work_order.py:865 msgid "Target Warehouse is required before Submit" msgstr "" @@ -53224,7 +53252,7 @@ msgstr "" msgid "Target Warehouse is set for some items but the customer is not an internal customer." msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:390 +#: erpnext/manufacturing/doctype/work_order/work_order.py:391 msgid "Target Warehouse {0} must be same as Delivery Warehouse {1} in the Subcontracting Inward Order Item." msgstr "" @@ -53444,8 +53472,8 @@ msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json #: erpnext/accounts/report/customer_ledger_summary/customer_ledger_summary.js:86 #: erpnext/accounts/report/general_ledger/general_ledger.js:142 -#: erpnext/accounts/report/purchase_register/purchase_register.py:192 -#: erpnext/accounts/report/sales_register/sales_register.py:215 +#: erpnext/accounts/report/purchase_register/purchase_register.py:208 +#: erpnext/accounts/report/sales_register/sales_register.py:229 #: erpnext/accounts/report/supplier_ledger_summary/supplier_ledger_summary.js:67 #: erpnext/accounts/report/tax_withholding_details/tax_withholding_details.py:205 #: erpnext/accounts/report/tds_computation_summary/tds_computation_summary.py:57 @@ -53534,7 +53562,7 @@ msgstr "" msgid "Tax Template is mandatory." msgstr "" -#: erpnext/accounts/report/sales_register/sales_register.py:295 +#: erpnext/accounts/report/sales_register/sales_register.py:309 msgid "Tax Total" msgstr "" @@ -53824,7 +53852,7 @@ msgstr "" msgid "Taxes and Charges Deducted (Company Currency)" msgstr "" -#: erpnext/stock/doctype/item/item.py:403 +#: erpnext/stock/doctype/item/item.py:404 msgid "Taxes row #{0}: {1} cannot be smaller than {2}" msgstr "" @@ -54092,7 +54120,7 @@ msgstr "" #: erpnext/accounts/report/inactive_sales_items/inactive_sales_items.js:8 #: erpnext/accounts/report/inactive_sales_items/inactive_sales_items.py:22 #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:259 -#: erpnext/accounts/report/sales_register/sales_register.py:209 +#: erpnext/accounts/report/sales_register/sales_register.py:223 #: erpnext/crm/doctype/lead/lead.json #: erpnext/crm/doctype/opportunity/opportunity.json #: erpnext/crm/doctype/prospect/prospect.json @@ -54223,7 +54251,7 @@ msgstr "" msgid "The Loyalty Program isn't valid for the selected company" msgstr "" -#: erpnext/accounts/doctype/payment_request/payment_request.py:1108 +#: erpnext/accounts/doctype/payment_request/payment_request.py:1109 msgid "The Payment Request {0} is already paid, cannot process payment twice" msgstr "" @@ -54247,7 +54275,7 @@ msgstr "" msgid "The Serial No at Row #{0}: {1} is not available in warehouse {2}." msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2672 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:2722 msgid "The Serial No {0} is reserved against the {1} {2} and cannot be used for any other transaction." msgstr "" @@ -54265,7 +54293,7 @@ msgstr "" msgid "The account head under Liability or Equity, in which Profit/Loss will be booked" msgstr "" -#: erpnext/accounts/doctype/payment_request/payment_request.py:1003 +#: erpnext/accounts/doctype/payment_request/payment_request.py:1004 msgid "The allocated amount is greater than the outstanding amount of Payment Request {0}" msgstr "" @@ -54287,7 +54315,7 @@ msgstr "" msgid "The bank account is not a company account. Please select a company account" msgstr "" -#: erpnext/controllers/stock_controller.py:1357 +#: erpnext/controllers/stock_controller.py:1397 msgid "The batch {0} is already reserved in {1} {2}. So, cannot proceed with the {3} {4}, which is created against the {5} {6}." msgstr "" @@ -54352,7 +54380,7 @@ msgstr "" msgid "The field To Shareholder cannot be blank" msgstr "" -#: erpnext/stock/doctype/delivery_note/delivery_note.py:387 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:388 msgid "The field {0} in row {1} is not set" msgstr "" @@ -54393,11 +54421,11 @@ msgstr "" msgid "The following batches are expired, please restock them:
    {0}" msgstr "" -#: erpnext/controllers/accounts_controller.py:426 +#: erpnext/controllers/accounts_controller.py:446 msgid "The following cancelled repost entries exist for {0}:

    {1}

    Kindly delete these entries before continuing." msgstr "" -#: erpnext/stock/doctype/item/item.py:948 +#: erpnext/stock/doctype/item/item.py:949 msgid "The following deleted attributes exist in Variants but not in the Template. You can either delete the Variants or keep the attribute(s) in template." msgstr "" @@ -54446,7 +54474,7 @@ msgstr "" msgid "The item {item} is not marked as {type_of} item. You can enable it as {type_of} item from its Item master." msgstr "" -#: erpnext/stock/doctype/item/item.py:670 +#: erpnext/stock/doctype/item/item.py:671 msgid "The items {0} and {1} are present in the following {2} :" msgstr "" @@ -54462,7 +54490,7 @@ msgstr "" msgid "The job card {0} is in {1} state and you cannot start it again." msgstr "" -#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:87 +#: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.py:129 msgid "The last account row must not have any debit or credit amounts set." msgstr "" @@ -54504,7 +54532,7 @@ msgstr "" msgid "The original invoice should be consolidated before or along with the return invoice." msgstr "" -#: erpnext/controllers/accounts_controller.py:204 +#: erpnext/controllers/accounts_controller.py:224 msgid "The outstanding amount {0} in {1} is lesser than {2}. Updating the outstanding to this invoice." msgstr "" @@ -54579,7 +54607,7 @@ msgstr "" msgid "The selected item cannot have Batch" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:656 +#: erpnext/assets/doctype/asset/asset.js:661 msgid "The sell quantity is less than the total asset quantity. The remaining quantity will be split into a new asset. This action cannot be undone.

    Do you want to continue?" msgstr "" @@ -54706,11 +54734,11 @@ msgstr "" msgid "The {0} ({1}) must be equal to {2} ({3})" msgstr "" -#: erpnext/public/js/controllers/transaction.js:3373 +#: erpnext/public/js/controllers/transaction.js:3398 msgid "The {0} contains Unit Price Items." msgstr "" -#: erpnext/stock/doctype/item/item.py:474 +#: erpnext/stock/doctype/item/item.py:475 msgid "The {0} prefix '{1}' already exists. Please change the Serial No Series, otherwise you will get a Duplicate Entry error." msgstr "" @@ -54730,7 +54758,7 @@ msgstr "" msgid "Then Pricing Rules are filtered out based on Customer, Customer Group, Territory, Supplier, Supplier Type, Campaign, Sales Partner etc." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:727 +#: erpnext/assets/doctype/asset/asset.py:731 msgid "There are active maintenance or repairs against the asset. You must complete all of them before cancelling the asset." msgstr "" @@ -54767,7 +54795,7 @@ msgstr "" msgid "There are no transactions in the system for the selected bank account and dates that match the filters." msgstr "" -#: erpnext/stock/doctype/item/item.js:1204 +#: erpnext/stock/doctype/item/item.js:1290 msgid "There are two options to maintain valuation of stock. FIFO (first in - first out) and Moving Average. To understand this topic in detail please visit Item Valuation, FIFO and Moving Average." msgstr "" @@ -54867,7 +54895,7 @@ msgstr "" msgid "This Month's Summary" msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:937 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:943 msgid "This PDF is password protected. Please set the correct statement password on the Bank Account and try again." msgstr "" @@ -54901,7 +54929,7 @@ msgstr "" msgid "This allows creation of sales orders from quotations that have passed their expiration date, providing flexibility in processing orders despite outdated quotes." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:431 +#: erpnext/assets/doctype/asset/asset.py:435 msgid "This asset category is marked as non-depreciable. Please disable depreciation calculation or choose a different category." msgstr "" @@ -54998,7 +55026,7 @@ msgstr "" msgid "This is a root territory and cannot be edited." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:424 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:425 msgid "This is auto computed to balance the journal entry." msgstr "" @@ -55026,7 +55054,7 @@ msgstr "" msgid "This is enabled by default. If you want to plan materials for sub-assemblies of the Item you're manufacturing leave this enabled. If you plan and manufacture the sub-assemblies separately, you can disable this checkbox." msgstr "" -#: erpnext/stock/doctype/item/item.js:1192 +#: erpnext/stock/doctype/item/item.js:1278 msgid "This is for raw material Items that'll be used to create finished goods. If the Item is an additional service like 'washing' that'll be used in the BOM, keep this unchecked." msgstr "" @@ -55034,13 +55062,13 @@ msgstr "" msgid "This is not a valid formula. Check the variable used in the formula." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:198 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:266 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:279 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:199 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:267 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:280 msgid "This is required" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:599 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:575 msgid "This is the bank account entry. You cannot edit it." msgstr "" @@ -55089,7 +55117,7 @@ msgstr "" msgid "This option is useful if you want to ensure a constant supply of raw materials/products and avoid shortage. A Material Request will be raised automatically when stock reached the re-order level defined in the Item form." msgstr "" -#: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:185 +#: banking/src/components/features/BankReconciliation/IncorrectlyClearedEntries.tsx:180 msgid "This report shows all entries in the system where the clearance date is before the posting date which is incorrect." msgstr "" @@ -55125,7 +55153,7 @@ msgstr "" msgid "This schedule was created when Asset {0} was scrapped." msgstr "" -#: erpnext/assets/doctype/asset/asset.py:1505 +#: erpnext/assets/doctype/asset/asset.py:1509 msgid "This schedule was created when Asset {0} was {1} into new Asset {2}." msgstr "" @@ -55151,11 +55179,11 @@ msgstr "" msgid "This section allows the user to set the Body and Closing text of the Dunning Letter for the Dunning Type based on language, which can be used in Print." msgstr "" -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1184 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1205 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1257 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1291 -#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1310 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1190 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1211 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1263 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1297 +#: erpnext/accounts/doctype/bank_statement_import_log/bank_statement_import_log.py:1316 msgid "This statement has already been imported." msgstr "" @@ -55202,7 +55230,7 @@ msgstr "" msgid "This will be auto-populated if not set." msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:264 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:265 msgid "This will just suggest creating a new entry, and will not automatically create it." msgstr "" @@ -55437,7 +55465,7 @@ msgstr "" msgid "To Currency" msgstr "" -#: erpnext/controllers/accounts_controller.py:625 +#: erpnext/controllers/accounts_controller.py:645 #: erpnext/setup/doctype/holiday_list/holiday_list.py:121 msgid "To Date cannot be before From Date" msgstr "" @@ -55707,11 +55735,11 @@ msgid "To include sub-assembly costs and secondary items in Finished Goods on a msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.py:2268 -#: erpnext/controllers/accounts_controller.py:3255 +#: erpnext/controllers/accounts_controller.py:3275 msgid "To include tax in row {0} in Item rate, taxes in rows {1} must also be included" msgstr "" -#: erpnext/stock/doctype/item/item.py:692 +#: erpnext/stock/doctype/item/item.py:693 msgid "To merge, following properties must be same for both items" msgstr "" @@ -56062,7 +56090,7 @@ msgid "Total Costing Amount (via Timesheet)" msgstr "" #. Label of the total_credit (Currency) field in DocType 'Journal Entry' -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:788 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:764 #: erpnext/accounts/doctype/journal_entry/journal_entry.json msgid "Total Credit" msgstr "" @@ -56085,7 +56113,7 @@ msgid "Total Credits" msgstr "" #. Label of the total_debit (Currency) field in DocType 'Journal Entry' -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:784 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:760 #: erpnext/accounts/doctype/journal_entry/journal_entry.json msgid "Total Debit" msgstr "" @@ -56320,7 +56348,7 @@ msgstr "" msgid "Total Paid Amount" msgstr "" -#: erpnext/controllers/accounts_controller.py:2810 +#: erpnext/controllers/accounts_controller.py:2830 msgid "Total Payment Amount in Payment Schedule must be equal to Grand / Rounded Total" msgstr "" @@ -56454,7 +56482,7 @@ msgid "Total Tasks" msgstr "" #: erpnext/accounts/report/item_wise_sales_register/item_wise_sales_register.py:621 -#: erpnext/accounts/report/purchase_register/purchase_register.py:263 +#: erpnext/accounts/report/purchase_register/purchase_register.py:279 msgid "Total Tax" msgstr "" @@ -56607,7 +56635,7 @@ msgstr "" msgid "Total allocated percentage for sales team should be 100" msgstr "" -#: erpnext/selling/doctype/customer/customer.py:194 +#: erpnext/selling/doctype/customer/customer.py:195 msgid "Total contribution percentage should be equal to 100" msgstr "" @@ -56758,7 +56786,7 @@ msgstr "" msgid "Transaction Dates" msgstr "" -#: erpnext/setup/doctype/company/company.py:1090 +#: erpnext/setup/doctype/company/company.py:1091 msgid "Transaction Deletion Document {0} has been triggered for company {1}" msgstr "" @@ -56850,7 +56878,7 @@ msgstr "" #. Label of the transaction_type (Data) field in DocType 'Bank Transaction' #. Label of the transaction_type (Select) field in DocType 'Bank Transaction #. Rule' -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:106 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:107 #: erpnext/accounts/doctype/bank_statement_import_log_column_map/bank_statement_import_log_column_map.json #: erpnext/accounts/doctype/bank_transaction/bank_transaction.json #: erpnext/accounts/doctype/bank_transaction_rule/bank_transaction_rule.json @@ -56919,7 +56947,7 @@ msgstr "" #. Group in Bank Account's connections #: erpnext/accounts/doctype/bank_account/bank_account.json -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1057 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1058 #: erpnext/accounts/doctype/purchase_taxes_and_charges_template/purchase_taxes_and_charges_template_dashboard.py:12 #: erpnext/accounts/doctype/sales_taxes_and_charges_template/sales_taxes_and_charges_template_dashboard.py:13 #: erpnext/manufacturing/doctype/job_card/job_card_dashboard.py:9 @@ -56962,7 +56990,7 @@ msgstr "" #: banking/src/components/features/ActionLog/ActionLogDialogBody.tsx:301 #: banking/src/components/features/BankReconciliation/MatchAndReconcile.tsx:515 #: banking/src/components/features/BankReconciliation/MatchAndReconcile.tsx:589 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:271 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:272 #: banking/src/components/features/BankReconciliation/TransferModal.tsx:17 #: banking/src/components/features/BankReconciliation/TransferModalContent.tsx:124 #: banking/src/components/features/BankReconciliation/TransferModalContent.tsx:361 @@ -56982,7 +57010,7 @@ msgstr "" msgid "Transfer Account" msgstr "" -#: erpnext/assets/doctype/asset/asset.js:155 +#: erpnext/assets/doctype/asset/asset.js:160 msgid "Transfer Asset" msgstr "" @@ -57079,7 +57107,7 @@ msgstr "" msgid "Transit" msgstr "" -#: erpnext/stock/doctype/stock_entry/stock_entry.js:606 +#: erpnext/stock/doctype/stock_entry/stock_entry.js:611 msgid "Transit Entry" msgstr "" @@ -57217,7 +57245,7 @@ msgid "Try the {0} for a better experience." msgstr "" #: erpnext/accounts/report/financial_ratios/financial_ratios.js:55 -#: erpnext/accounts/report/financial_ratios/financial_ratios.py:198 +#: erpnext/accounts/report/financial_ratios/financial_ratios.py:200 msgid "Turnover Ratios" msgstr "" @@ -57259,7 +57287,7 @@ msgstr "" msgid "Type of Transaction" msgstr "" -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:194 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:195 msgid "Type of check" msgstr "" @@ -57561,7 +57589,7 @@ msgstr "" msgid "Unable to find score starting at {0}. You need to have standing scores covering 0 to 100" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1128 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1135 msgid "Unable to find the time slot in the next {0} days for the operation {1}. Please increase the 'Capacity Planning For (Days)' in the {2}." msgstr "" @@ -57667,7 +57695,7 @@ msgstr "" msgid "Unit Of Measure" msgstr "" -#: erpnext/controllers/accounts_controller.py:4101 +#: erpnext/controllers/accounts_controller.py:4121 msgid "Unit Price" msgstr "" @@ -57684,7 +57712,7 @@ msgstr "" msgid "Unit of Measure (UOM)" msgstr "" -#: erpnext/stock/doctype/item/item.py:435 +#: erpnext/stock/doctype/item/item.py:436 msgid "Unit of Measure {0} has been entered more than once in Conversion Factor Table" msgstr "" @@ -57956,7 +57984,7 @@ msgstr "" msgid "Update BOM cost automatically via scheduler, based on the latest Valuation Rate/Price List Rate/Last Purchase Rate of raw materials" msgstr "" -#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.js:31 +#: erpnext/stock/report/stock_qty_vs_batch_qty/stock_qty_vs_batch_qty.js:32 msgid "Update Batch Qty" msgstr "" @@ -58035,7 +58063,7 @@ msgstr "" #. Label of the update_outstanding_for_self (Check) field in DocType 'Sales #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json -#: erpnext/controllers/accounts_controller.py:197 +#: erpnext/controllers/accounts_controller.py:217 msgid "Update Outstanding for Self" msgstr "" @@ -58086,7 +58114,7 @@ msgstr "" msgid "Update latest price in all BOMs" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:471 +#: erpnext/assets/doctype/asset/asset.py:475 msgid "Update stock must be enabled for the purchase invoice {0}" msgstr "" @@ -58119,7 +58147,7 @@ msgstr "" msgid "Updating Costing and Billing fields against this Project..." msgstr "" -#: erpnext/stock/doctype/item/item.py:1491 +#: erpnext/stock/doctype/item/item.py:1511 msgid "Updating Variants..." msgstr "" @@ -58334,11 +58362,6 @@ msgstr "" msgid "Use prices from Default Price List as fallback" msgstr "" -#. Label of the used (Int) field in DocType 'Coupon Code' -#: erpnext/accounts/doctype/coupon_code/coupon_code.json -msgid "Used" -msgstr "" - #. Description of the 'Sales Order Date' (Date) field in DocType 'Sales Order #. Item' #: erpnext/selling/doctype/sales_order_item/sales_order_item.json @@ -58719,15 +58742,15 @@ msgstr "" msgid "Valuation Rate (In / Out)" msgstr "" -#: erpnext/stock/stock_ledger.py:2031 +#: erpnext/stock/stock_ledger.py:2037 msgid "Valuation Rate Missing" msgstr "" -#: erpnext/stock/stock_ledger.py:2009 +#: erpnext/stock/stock_ledger.py:2015 msgid "Valuation Rate for the Item {0}, is required to do accounting entries for {1} {2}." msgstr "" -#: erpnext/stock/doctype/item/item.py:296 +#: erpnext/stock/doctype/item/item.py:297 msgid "Valuation Rate is mandatory if Opening Stock entered" msgstr "" @@ -58754,7 +58777,7 @@ msgid "Valuation rate for the item as per Sales Invoice (Only for Internal Trans msgstr "" #: erpnext/accounts/doctype/payment_entry/payment_entry.py:2292 -#: erpnext/controllers/accounts_controller.py:3279 +#: erpnext/controllers/accounts_controller.py:3299 msgid "Valuation type charges can not be marked as Inclusive" msgstr "" @@ -58889,7 +58912,7 @@ msgstr "" msgid "Variant" msgstr "" -#: erpnext/stock/doctype/item/item.py:963 +#: erpnext/stock/doctype/item/item.py:964 msgid "Variant Attribute Error" msgstr "" @@ -58908,7 +58931,7 @@ msgstr "" msgid "Variant Based On" msgstr "" -#: erpnext/stock/doctype/item/item.py:991 +#: erpnext/stock/doctype/item/item.py:992 msgid "Variant Based On cannot be changed" msgstr "" @@ -58926,7 +58949,7 @@ msgstr "" msgid "Variant Item" msgstr "" -#: erpnext/stock/doctype/item/item.py:961 +#: erpnext/stock/doctype/item/item.py:962 msgid "Variant Items" msgstr "" @@ -58937,7 +58960,7 @@ msgstr "" msgid "Variant Of" msgstr "" -#: erpnext/stock/doctype/item/item.js:875 +#: erpnext/stock/doctype/item/item.js:963 msgid "Variant creation has been queued." msgstr "" @@ -59064,7 +59087,7 @@ msgstr "" msgid "View Balance Sheet" msgstr "" -#: erpnext/public/js/setup_wizard.js:47 +#: erpnext/public/js/setup_wizard.js:142 msgid "View Chart of Accounts" msgstr "" @@ -59227,8 +59250,8 @@ msgstr "" msgid "Volt-Ampere" msgstr "" -#: erpnext/accounts/report/purchase_register/purchase_register.py:163 -#: erpnext/accounts/report/sales_register/sales_register.py:179 +#: erpnext/accounts/report/purchase_register/purchase_register.py:179 +#: erpnext/accounts/report/sales_register/sales_register.py:193 msgid "Voucher" msgstr "" @@ -59329,12 +59352,12 @@ msgstr "" #: erpnext/stock/report/serial_and_batch_summary/serial_and_batch_summary.py:112 #: erpnext/stock/report/serial_no_ledger/serial_no_ledger.py:34 #: erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:154 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:165 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:176 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:74 msgid "Voucher No" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1419 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1469 msgid "Voucher No is mandatory" msgstr "" @@ -59379,8 +59402,8 @@ msgstr "" #: erpnext/accounts/report/general_ledger/general_ledger.py:760 #: erpnext/accounts/report/invalid_ledger_entries/invalid_ledger_entries.py:31 #: erpnext/accounts/report/payment_ledger/payment_ledger.py:165 -#: erpnext/accounts/report/purchase_register/purchase_register.py:158 -#: erpnext/accounts/report/sales_register/sales_register.py:174 +#: erpnext/accounts/report/purchase_register/purchase_register.py:174 +#: erpnext/accounts/report/sales_register/sales_register.py:188 #: erpnext/accounts/report/voucher_wise_balance/voucher_wise_balance.py:17 #: erpnext/public/js/utils/unreconcile.js:71 #: erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.json @@ -59402,7 +59425,7 @@ msgstr "" #: erpnext/stock/report/serial_no_ledger/serial_no_ledger.py:28 #: erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py:152 #: erpnext/stock/report/stock_ledger/stock_ledger.py:402 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:159 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:170 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:68 msgid "Voucher Type" msgstr "" @@ -59581,7 +59604,7 @@ msgid "Warehouse not found against the account {0}" msgstr "" #: erpnext/accounts/doctype/sales_invoice/sales_invoice.py:1263 -#: erpnext/stock/doctype/delivery_note/delivery_note.py:414 +#: erpnext/stock/doctype/delivery_note/delivery_note.py:415 msgid "Warehouse required for stock Item {0}" msgstr "" @@ -59606,11 +59629,11 @@ msgstr "" msgid "Warehouse {0} does not exist" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:316 +#: erpnext/manufacturing/doctype/work_order/work_order.py:317 msgid "Warehouse {0} is not allowed for Sales Order {1}, it should be {2}" msgstr "" -#: erpnext/controllers/stock_controller.py:816 +#: erpnext/controllers/stock_controller.py:856 msgid "Warehouse {0} is not linked to any account, please mention the account in the warehouse record or set default inventory account in company {1}." msgstr "" @@ -59738,7 +59761,7 @@ msgstr "" msgid "Warning: Material Requested Qty is less than Minimum Order Qty" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1547 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1571 msgid "Warning: Quantity exceeds maximum producible quantity based on quantity of raw materials received through the Subcontracting Inward Order {0}." msgstr "" @@ -59832,7 +59855,7 @@ msgstr "" msgid "Wavelength In Megametres" msgstr "" -#: erpnext/controllers/accounts_controller.py:192 +#: erpnext/controllers/accounts_controller.py:212 msgid "We can see {0} is made against {1}. If you want {1}'s outstanding to be updated, uncheck the '{2}' checkbox." msgstr "" @@ -59985,6 +60008,14 @@ msgstr "" msgid "What do you need help with?" msgstr "" +#: erpnext/public/js/setup_wizard.js:69 +msgid "What do you use today?" +msgstr "" + +#: erpnext/public/js/setup_wizard.js:47 +msgid "What kind of work do you do?" +msgstr "" + #: erpnext/setup/doctype/transaction_deletion_record/transaction_deletion_record.js:82 msgid "What will be deleted:" msgstr "" @@ -60025,7 +60056,7 @@ msgstr "" msgid "When checked, the system will use the posting datetime of the document for naming the document instead of the creation datetime of the document." msgstr "" -#: erpnext/stock/doctype/item/item.js:1211 +#: erpnext/stock/doctype/item/item.js:1297 msgid "When creating an Item, entering a value for this field will automatically create an Item Price at the backend." msgstr "" @@ -60064,6 +60095,10 @@ msgstr "" msgid "While making Purchase Invoice from Purchase Order, use Exchange Rate on Invoice's transaction date rather than inheriting it from Purchase Order. Only applies for Purchase Invoice." msgstr "" +#: erpnext/public/js/setup_wizard.js:31 +msgid "Who are you setting this up for?" +msgstr "" + #. Option for the 'Marital Status' (Select) field in DocType 'Employee' #: erpnext/setup/doctype/employee/employee.json msgid "Widowed" @@ -60118,7 +60153,7 @@ msgstr "" #. Option for the 'Transaction Type' (Select) field in DocType 'Bank #. Transaction Rule' #: banking/src/components/features/BankReconciliation/BankTransactionList.tsx:88 -#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:145 +#: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:146 #: banking/src/components/features/BankStatementImporter/CSV/StatementDetails.tsx:246 #: banking/src/components/features/BankStatementImporter/CSV/StatementDetails.tsx:313 #: banking/src/pages/BankStatementImporter.tsx:194 @@ -60195,7 +60230,7 @@ msgstr "" #: erpnext/assets/doctype/asset/asset_list.js:12 #: erpnext/manufacturing/doctype/job_card/job_card.json #: erpnext/manufacturing/doctype/job_card_operation/job_card_operation.json -#: erpnext/setup/doctype/company/company.py:385 +#: erpnext/setup/doctype/company/company.py:386 #: erpnext/support/doctype/warranty_claim/warranty_claim.json msgid "Work In Progress" msgstr "" @@ -60316,12 +60351,12 @@ msgstr "" msgid "Work Order cannot be created for following reason:
    {0}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:1491 +#: erpnext/manufacturing/doctype/work_order/work_order.py:1515 msgid "Work Order cannot be raised against a Item Template" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:2694 -#: erpnext/manufacturing/doctype/work_order/work_order.py:2774 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2709 +#: erpnext/manufacturing/doctype/work_order/work_order.py:2789 msgid "Work Order has been {0}" msgstr "" @@ -60367,7 +60402,7 @@ msgstr "" msgid "Work-in-Progress Warehouse" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:856 +#: erpnext/manufacturing/doctype/work_order/work_order.py:863 msgid "Work-in-Progress Warehouse is required before Submit" msgstr "" @@ -60512,7 +60547,7 @@ msgstr "" #: erpnext/accounts/doctype/pos_profile/pos_profile.json #: erpnext/accounts/doctype/purchase_invoice/purchase_invoice.json #: erpnext/accounts/doctype/sales_invoice/sales_invoice.json -#: erpnext/setup/doctype/company/company.py:667 +#: erpnext/setup/doctype/company/company.py:668 msgid "Write Off" msgstr "" @@ -60662,11 +60697,11 @@ msgstr "" msgid "You are importing data for the code list:" msgstr "" -#: erpnext/controllers/accounts_controller.py:3898 +#: erpnext/controllers/accounts_controller.py:3918 msgid "You are not allowed to update as per the conditions set in {} Workflow." msgstr "" -#: erpnext/accounts/general_ledger.py:818 +#: erpnext/accounts/general_ledger.py:820 msgid "You are not authorized to add or update entries before {0}" msgstr "" @@ -60735,7 +60770,7 @@ msgstr "" msgid "You can set up the rule to split the transaction across multiple accounts." msgstr "" -#: erpnext/controllers/accounts_controller.py:213 +#: erpnext/controllers/accounts_controller.py:233 msgid "You can use {0} to reconcile against {1} later." msgstr "" @@ -60763,7 +60798,7 @@ msgstr "" msgid "You cannot create or cancel any accounting entries with in the closed Accounting Period {0}" msgstr "" -#: erpnext/accounts/general_ledger.py:849 +#: erpnext/accounts/general_ledger.py:851 msgid "You cannot create/amend any accounting entries till this date." msgstr "" @@ -60820,7 +60855,7 @@ msgstr "" msgid "You do not have permission to import bank transactions" msgstr "" -#: erpnext/controllers/accounts_controller.py:3876 +#: erpnext/controllers/accounts_controller.py:3896 msgid "You do not have permissions to {} items in a {}." msgstr "" @@ -60832,11 +60867,11 @@ msgstr "" msgid "You don't have enough points to redeem." msgstr "" -#: erpnext/controllers/accounts_controller.py:4444 +#: erpnext/controllers/accounts_controller.py:4464 msgid "You don't have permission to create a Company Address. Please contact your System Manager." msgstr "" -#: erpnext/controllers/accounts_controller.py:4424 +#: erpnext/controllers/accounts_controller.py:4444 msgid "You don't have permission to update Company details. Please contact your System Manager." msgstr "" @@ -60844,7 +60879,7 @@ msgstr "" msgid "You don't have permission to update Received Qty DocField for item {0}" msgstr "" -#: erpnext/controllers/accounts_controller.py:4418 +#: erpnext/controllers/accounts_controller.py:4438 msgid "You don't have permission to update this document. Please contact your System Manager." msgstr "" @@ -60880,7 +60915,7 @@ msgstr "" msgid "You have not performed any reconciliations in this session yet." msgstr "" -#: erpnext/stock/doctype/item/item.py:1167 +#: erpnext/stock/doctype/item/item.py:1187 msgid "You have to enable auto re-order in Stock Settings to maintain re-order levels." msgstr "" @@ -60896,7 +60931,7 @@ msgstr "" msgid "You need to cancel POS Closing Entry {} to be able to cancel this document." msgstr "" -#: erpnext/controllers/accounts_controller.py:3230 +#: erpnext/controllers/accounts_controller.py:3250 msgid "You selected the account group {1} as {2} Account in row {0}. Please select a single account." msgstr "" @@ -60978,7 +61013,7 @@ msgstr "" msgid "`Allow Negative rates for Items`" msgstr "" -#: erpnext/stock/stock_ledger.py:2023 +#: erpnext/stock/stock_ledger.py:2029 msgid "after" msgstr "" @@ -60998,7 +61033,7 @@ msgstr "" msgid "as a percentage of finished item quantity" msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1589 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1639 msgid "as of {0}" msgstr "" @@ -61050,7 +61085,7 @@ msgstr "" msgid "e.g. \"Summer Holiday 2019 Offer 20\"" msgstr "" -#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:663 +#: banking/src/components/features/BankReconciliation/BankEntryModalContent.tsx:639 #: banking/src/components/features/BankReconciliation/RecordPaymentModalContent.tsx:1233 #: banking/src/components/features/BankReconciliation/Rules/RuleForm.tsx:685 msgid "e.g. Bank Charges" @@ -61169,7 +61204,7 @@ msgstr "" msgid "per hour" msgstr "" -#: erpnext/stock/stock_ledger.py:2024 +#: erpnext/stock/stock_ledger.py:2030 msgid "performing either one below:" msgstr "" @@ -61313,7 +61348,7 @@ msgstr "" msgid "you must select Capital Work in Progress Account in accounts table" msgstr "" -#: erpnext/controllers/accounts_controller.py:1293 +#: erpnext/controllers/accounts_controller.py:1313 msgid "{0} '{1}' is disabled" msgstr "" @@ -61321,7 +61356,7 @@ msgstr "" msgid "{0} '{1}' not in Fiscal Year {2}" msgstr "" -#: erpnext/manufacturing/doctype/work_order/work_order.py:742 +#: erpnext/manufacturing/doctype/work_order/work_order.py:749 msgid "{0} ({1}) cannot be greater than planned quantity ({2}) in Work Order {3}" msgstr "" @@ -61329,7 +61364,7 @@ msgstr "" msgid "{0} {1} has submitted Assets. Remove Item {2} from table to continue." msgstr "" -#: erpnext/controllers/accounts_controller.py:2390 +#: erpnext/controllers/accounts_controller.py:2410 msgid "{0} Account not found against Customer {1}." msgstr "" @@ -61369,11 +61404,11 @@ msgstr "" msgid "{0} Request for {1}" msgstr "" -#: erpnext/stock/doctype/item/item.py:374 +#: erpnext/stock/doctype/item/item.py:375 msgid "{0} Retain Sample is based on batch, please check Has Batch No to retain sample of item" msgstr "" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1051 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1052 msgid "{0} Transaction(s) Reconciled" msgstr "" @@ -61449,7 +61484,7 @@ msgstr "" msgid "{0} creation for the following records will be skipped." msgstr "" -#: erpnext/setup/doctype/company/company.py:292 +#: erpnext/setup/doctype/company/company.py:293 msgid "{0} currency must be same as company's default currency. Please select another account." msgstr "" @@ -61465,7 +61500,7 @@ msgstr "" msgid "{0} does not belong to Company {1}" msgstr "" -#: erpnext/controllers/accounts_controller.py:352 +#: erpnext/controllers/accounts_controller.py:372 msgid "{0} does not belong to the Company {1}." msgstr "" @@ -61474,7 +61509,7 @@ msgid "{0} entered twice in Item Tax" msgstr "" #: erpnext/setup/doctype/item_group/item_group.py:48 -#: erpnext/stock/doctype/item/item.py:505 +#: erpnext/stock/doctype/item/item.py:506 msgid "{0} entered twice {1} in Item Taxes" msgstr "" @@ -61499,7 +61534,7 @@ msgstr "" msgid "{0} hours" msgstr "" -#: erpnext/controllers/accounts_controller.py:2750 +#: erpnext/controllers/accounts_controller.py:2770 msgid "{0} in row {1}" msgstr "" @@ -61521,11 +61556,11 @@ msgstr "" msgid "{0} is already running for {1}" msgstr "" -#: erpnext/controllers/accounts_controller.py:174 +#: erpnext/controllers/accounts_controller.py:194 msgid "{0} is blocked so this transaction cannot proceed" msgstr "" -#: erpnext/assets/doctype/asset/asset.py:505 +#: erpnext/assets/doctype/asset/asset.py:509 msgid "{0} is in Draft. Submit it before creating the Asset." msgstr "" @@ -61534,7 +61569,7 @@ msgid "{0} is mandatory for Item {1}" msgstr "" #: erpnext/accounts/doctype/payment_ledger_entry/payment_ledger_entry.py:100 -#: erpnext/accounts/general_ledger.py:873 +#: erpnext/accounts/general_ledger.py:875 msgid "{0} is mandatory for account {1}" msgstr "" @@ -61542,15 +61577,15 @@ msgstr "" msgid "{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}" msgstr "" -#: erpnext/controllers/accounts_controller.py:3187 +#: erpnext/controllers/accounts_controller.py:3207 msgid "{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}." msgstr "" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1813 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1863 msgid "{0} is not a CSV file." msgstr "" -#: erpnext/selling/doctype/customer/customer.py:236 +#: erpnext/selling/doctype/customer/customer.py:237 msgid "{0} is not a company bank account" msgstr "" @@ -61642,7 +61677,7 @@ msgstr "" msgid "{0} payment entries can not be filtered by {1}" msgstr "" -#: erpnext/controllers/stock_controller.py:1779 +#: erpnext/controllers/stock_controller.py:1819 msgid "{0} qty of Item {1} is being received into Warehouse {2} with capacity {3}." msgstr "" @@ -61671,16 +61706,16 @@ msgstr "" msgid "{0} units of {1} are required in {2} with the inventory dimension: {3} on {4} {5} for {6} to complete the transaction." msgstr "" -#: erpnext/stock/stock_ledger.py:1676 erpnext/stock/stock_ledger.py:2172 -#: erpnext/stock/stock_ledger.py:2186 +#: erpnext/stock/stock_ledger.py:1682 erpnext/stock/stock_ledger.py:2197 +#: erpnext/stock/stock_ledger.py:2211 msgid "{0} units of {1} needed in {2} on {3} {4} for {5} to complete this transaction." msgstr "" -#: erpnext/stock/stock_ledger.py:2273 erpnext/stock/stock_ledger.py:2318 +#: erpnext/stock/stock_ledger.py:2298 erpnext/stock/stock_ledger.py:2343 msgid "{0} units of {1} needed in {2} on {3} {4} to complete this transaction." msgstr "" -#: erpnext/stock/stock_ledger.py:1670 +#: erpnext/stock/stock_ledger.py:1676 msgid "{0} units of {1} needed in {2} to complete this transaction." msgstr "" @@ -61692,7 +61727,7 @@ msgstr "" msgid "{0} valid serial nos for Item {1}" msgstr "" -#: erpnext/stock/doctype/item/item.js:880 +#: erpnext/stock/doctype/item/item.js:968 msgid "{0} variants created." msgstr "" @@ -61716,7 +61751,7 @@ msgstr "" msgid "{0} {1} Manually" msgstr "" -#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1055 +#: erpnext/accounts/doctype/bank_reconciliation_tool/bank_reconciliation_tool.py:1056 msgid "{0} {1} Partially Reconciled" msgstr "" @@ -61857,7 +61892,7 @@ msgstr "" msgid "{0} {1}: Accounting Entry for {2} can only be made in currency: {3}" msgstr "" -#: erpnext/controllers/stock_controller.py:948 +#: erpnext/controllers/stock_controller.py:988 msgid "{0} {1}: Cost Center is mandatory for Item {2}" msgstr "" @@ -61889,11 +61924,11 @@ msgstr "" msgid "{0}%" msgstr "" -#: erpnext/controllers/website_list_for_contact.py:206 +#: erpnext/controllers/website_list_for_contact.py:207 msgid "{0}% Billed" msgstr "" -#: erpnext/controllers/website_list_for_contact.py:214 +#: erpnext/controllers/website_list_for_contact.py:215 msgid "{0}% Delivered" msgstr "" @@ -61931,7 +61966,15 @@ msgstr "" msgid "{0}: Virtual DocType (no database table)" msgstr "" -#: erpnext/controllers/accounts_controller.py:542 +#: erpnext/stock/doctype/item/item.js:884 +msgid "{0}: remove invalid value(s) {1}" +msgstr "" + +#: erpnext/stock/doctype/item/item.js:891 +msgid "{0}: select the typed value {1} from the list or clear it" +msgstr "" + +#: erpnext/controllers/accounts_controller.py:562 msgid "{0}: {1} does not belong to the Company: {2}" msgstr "" @@ -61939,7 +61982,7 @@ msgstr "" msgid "{0}: {1} does not exist" msgstr "" -#: erpnext/setup/doctype/company/company.py:279 +#: erpnext/setup/doctype/company/company.py:280 msgid "{0}: {1} is a group account." msgstr "" @@ -61959,11 +62002,11 @@ msgstr "" msgid "{field_label} is mandatory for sub-contracted {doctype}." msgstr "" -#: erpnext/controllers/stock_controller.py:2240 +#: erpnext/controllers/stock_controller.py:2283 msgid "{item_name}'s Sample Size ({sample_size}) cannot be greater than the Accepted Quantity ({accepted_quantity})" msgstr "" -#: erpnext/controllers/stock_controller.py:2005 +#: erpnext/controllers/stock_controller.py:2048 msgid "{ref_doctype} {ref_name} status is {status}." msgstr "" diff --git a/erpnext/locale/bs.po b/erpnext/locale/bs.po index 1c403f5a411..1b594fb237f 100644 --- a/erpnext/locale/bs.po +++ b/erpnext/locale/bs.po @@ -3,8 +3,8 @@ msgid "" msgstr "" "Project-Id-Version: frappe\n" "Report-Msgid-Bugs-To: hello@frappe.io\n" -"POT-Creation-Date: 2026-06-28 10:20+0000\n" -"PO-Revision-Date: 2026-06-29 11:40+0000\n" +"POT-Creation-Date: 2026-07-05 10:19+0000\n" +"PO-Revision-Date: 2026-07-06 11:32+0000\n" "Last-Translator: hello@frappe.io\n" "Language: bs_BA\n" "Language-Team: Bosnian\n" @@ -14,7 +14,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.16.0\n" -#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1591 +#: erpnext/stock/doctype/serial_and_batch_bundle/serial_and_batch_bundle.py:1641 msgid "" "\n" "\t\t\tThe Batch {0} of an item {1} has negative stock in the warehouse {2}{3}.\n" @@ -92,15 +92,15 @@ msgstr " Podsklop" msgid " Summary" msgstr " Sažetak" -#: erpnext/stock/doctype/item/item.py:265 +#: erpnext/stock/doctype/item/item.py:266 msgid "\"Customer Provided Item\" cannot be Purchase Item also" msgstr "\"Klijent Dostavljeni Artikal\" ne može biti Nabavni Artikal" -#: erpnext/stock/doctype/item/item.py:267 +#: erpnext/stock/doctype/item/item.py:268 msgid "\"Customer Provided Item\" cannot have Valuation Rate" msgstr "\"Klijent Dostavljen Artikal\" ne može imati Stopu Vrednovanja" -#: erpnext/stock/doctype/item/item.py:366 +#: erpnext/stock/doctype/item/item.py:367 msgid "\"Is Fixed Asset\" cannot be unchecked, as Asset record exists against the item" msgstr "Ne može se poništiti izbor opcije \"Fiksna Imovina\", jer postoji zapis imovine naspram artikla" @@ -265,7 +265,7 @@ msgstr "% materijala isporučenih prema ovoj Listi Odabira" msgid "% of materials delivered against this Sales Order" msgstr "% materijala dostavljenog naspram ovog Prodajnog Naloga" -#: erpnext/controllers/accounts_controller.py:2394 +#: erpnext/controllers/accounts_controller.py:2414 msgid "'Account' in the Accounting section of Customer {0}" msgstr "'Račun' u sekciji Knjigovodstvo Klijenta {0}" @@ -281,7 +281,7 @@ msgstr "'Na Osnovu' i 'Grupiraj Po' ne mogu biti isti" msgid "'Days Since Last Order' must be greater than or equal to zero" msgstr "'Dana od posljednje narudžbe' mora biti veći ili jednako nuli" -#: erpnext/controllers/accounts_controller.py:2399 +#: erpnext/controllers/accounts_controller.py:2419 msgid "'Default {0} Account' in Company {1}" msgstr "'Standard {0} račun' u {1}" @@ -299,15 +299,15 @@ msgstr "'Od datuma' je obavezan" msgid "'From Date' must be after 'To Date'" msgstr "'Od datuma' mora biti nakon 'Do datuma'" -#: erpnext/stock/doctype/item/item.py:449 +#: erpnext/stock/doctype/item/item.py:450 msgid "'Has Serial No' can not be 'Yes' for non-stock item" msgstr "'Ima Serijski Broj' ne može biti 'Da' za artikal koji nije na zalihama" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:143 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:147 msgid "'Inspection Required before Delivery' has disabled for the item {0}, no need to create the QI" msgstr "'Kontrola Obavezna prije Dostave' je onemogućena za artikal {0}, nema potrebe za kreiranjem Kontrole Kvaliteta" -#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:134 +#: erpnext/stock/doctype/quality_inspection/quality_inspection.py:138 msgid "'Inspection Required before Purchase' has disabled for the item {0}, no need to create the QI" msgstr "'Potrebna kontrola prije kupovine' je onemogućena za artikal {0}, nema potrebe za kreiranjem kvaliteta kontrole" @@ -343,23 +343,23 @@ msgstr "Račun '{0}' već koristi {1}. Koristite drugi račun." msgid "'{0}' has been already added." msgstr "'{0}' je već dodan." -#: erpnext/setup/doctype/company/company.py:304 -#: erpnext/setup/doctype/company/company.py:315 +#: erpnext/setup/doctype/company/company.py:305 +#: erpnext/setup/doctype/company/company.py:316 msgid "'{0}' should be in company currency {1}." msgstr "'{0}' bi trebao biti u valuti {1}." #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:174 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:203 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:214 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:106 msgid "(A) Qty After Transaction" msgstr "(A) Količina Nakon Transakcije" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:208 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:219 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:111 msgid "(B) Expected Qty After Transaction" msgstr "(B) Očekivana Količina Nakon Transakcije" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:223 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:234 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:126 msgid "(C) Total Qty in Queue" msgstr "(C) Ukupna Količina u Redu" @@ -369,7 +369,7 @@ msgid "(C) Total qty in queue" msgstr "(C) Ukupna Količina u Redu" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:194 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:233 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:244 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:136 msgid "(D) Balance Stock Value" msgstr "(D) Bilansna Vrijednost Zaliha" @@ -380,12 +380,12 @@ msgid "(Daily Yield * No of Units Produced) / 100" msgstr "(Dnevna Proizvodnja * Broj Proizvedenih Jedinica) / 100" #: erpnext/stock/report/fifo_queue_vs_qty_after_transaction_comparison/fifo_queue_vs_qty_after_transaction_comparison.py:199 -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:238 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:249 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:141 msgid "(E) Balance Stock Value in Queue" msgstr "(E) Bilansna Vrijednost Zaliha u Redu" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:248 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:259 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:151 msgid "(F) Change in Stock Value" msgstr "(F) Promjena Vrijednosti Zaliha" @@ -394,7 +394,7 @@ msgstr "(F) Promjena Vrijednosti Zaliha" msgid "(Forecast)" msgstr "(Prognoza)" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:253 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:264 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:156 msgid "(G) Sum of Change in Stock Value" msgstr "(G) Suma Promjene Vrijednosti Zaliha" @@ -405,7 +405,7 @@ msgstr "(G) Suma Promjene Vrijednosti Zaliha" msgid "(Good Units Produced / Total Units Produced) × 100" msgstr "(Proizvedene Jedinice / Ukupno Proizvedenih Jedinica) × 100" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:263 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:274 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:166 msgid "(H) Change in Stock Value (FIFO Queue)" msgstr "(H) Promjena Vrijednosti Zaliha (FIFO)" @@ -420,17 +420,17 @@ msgstr "(H) Stopa Vrednovanja" msgid "(Hour Rate / 60) * Actual Operation Time" msgstr "(Satnica / 60) * Stvarno Vrijeme Operacije" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:273 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:284 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:176 msgid "(I) Valuation Rate" msgstr "(I) Stopa Vrednovanja" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:278 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:289 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:181 msgid "(J) Valuation Rate as per FIFO" msgstr "(J) Stopa Vrednovanja prema FIFO" -#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:288 +#: erpnext/stock/report/stock_ledger_invariant_check/stock_ledger_invariant_check.py:299 #: erpnext/stock/report/stock_ledger_variance/stock_ledger_variance.py:191 msgid "(K) Valuation = Value (D) ÷ Qty (A)" msgstr "(K) Vrijednovanje = Vrijednost (D) ÷ Količina (A)" @@ -614,7 +614,7 @@ msgstr "Iznad 90" msgid "<0" msgstr "<0" -#: erpnext/assets/doctype/asset/asset.py:541 +#: erpnext/assets/doctype/asset/asset.py:545 msgid "Cannot create asset.

    You're trying to create {0} asset(s) from {2} {3}.
    However, only {1} item(s) were purchased and {4} asset(s) already exist against {5}." msgstr "Nije moguće kreirati imovinu.

    Pokušavate kreirati {0} imovinu od {2} {3}.
    Međutim, kupljeno je samo {1} artikala i {4} imovina već postoji za {5}." @@ -860,7 +860,7 @@ msgstr "
    " msgstr "" +"
    \n" +"

    Barcha o'lchamlar faqat santimetrda

    \n" +"
    " #. Content of the 'about' (HTML) field in DocType 'Product Bundle' #: erpnext/selling/doctype/product_bundle/product_bundle.json @@ -700,6 +719,12 @@ msgid "" "

    Example:

    \n" "

    If you are selling Laptops and Backpacks separately and have a special price if the customer buys both, then the Laptop + Backpack will be a new Product Bundle Item.

    " msgstr "" +"

    Mahsulot to'plami haqida

    \n" +"\n" +"

    elementlarning agregat guruhini boshqa elementgaqo'shish. Agar siz ma'lum bir buyumlarni paketga joylashtirsangiz va siz qadoqlangan buyumlarning zaxirasini saqlab qolsangiz va buyumlarningumumiy qismini emas, balki zaxirasini saqlab qolsangiz, bu foydalidir.

    \n" +"

    Paketda mahsulot bo'ladi, unda mavjudmi? sifatida Yo'q va Sotuvdagi mahsulot sifatida Ha.

    \n" +"

    Misol:

    \n" +"

    Agar siz noutbuklar va ryukzaklarni alohida sotayotgan bo'lsangiz va mijoz ikkalasini ham sotib olsa, maxsus narxga ega bo'lsangiz, u holda noutbuk + ryukzak yangi mahsulot to'plami bo'ladi.

    " #. Content of the 'Help' (HTML) field in DocType 'Currency Exchange Settings' #: erpnext/accounts/doctype/currency_exchange_settings/currency_exchange_settings.json @@ -709,6 +734,10 @@ msgid "" "

    Exchange rate between {from_currency} and {to_currency} on {transaction_date} is fetched by the API.

    \n" "

    Example: If your endpoint is exchange.com/2021-08-01, then, you will have to input exchange.com/{transaction_date}

    " msgstr "" +"

    Valyuta ayirboshlash sozlamalari bo'yicha yordam

    \n" +"

    Parametr qiymatlarining oxirgi nuqtasida, natija kalitida va qiymatlarida ishlatilishi mumkin bo'lgan 3 ta o'zgaruvchi mavjud.

    \n" +"

    {transaction_date} da {from_currency} va {to_currency} o'rtasidagi valyuta kursi API tomonidan olinadi.

    \n" +"

    Misol: Agar sizning oxirgi nuqtangiz exchange.com/2021-08-01 bo'lsa, unda siz exchange.com/{transaction_date}

    ni kiritishingiz kerak bo'ladi." #. Content of the 'Body and Closing Text Help' (HTML) field in DocType 'Dunning #. Letter Text' @@ -726,6 +755,17 @@ msgid "" "\n" "

    Templates are compiled using the Jinja Templating Language. To learn more about Jinja, read this documentation.

    " msgstr "" +"

    Asosiy matn va yakuniy matn namunasi

    \n" +"\n" +"
    Siz hali {{frappe.db.get_value(\"Currency\", currency, \"symbol\")}} {{outstanding_amount}}uchun {{sales_invoice}} schyot-fakturasini to'lamaganingizni payqadik. Bu schyot-fakturaning {{due_date}}sanasida to'lanishi kerakligini eslatadi. Qo'shimcha xarajatlarning oldini olish uchun iltimos, to'lanishi kerak bo'lgan summani darhol to'lang.
    \n" +"\n" +"

    Maydon nomlarini qanday olish mumkin

    \n" +"\n" +"

    Shabloningizda foydalanishingiz mumkin bo'lgan maydon nomlari hujjatdagi maydonlardir. Siz istalgan hujjatlar maydonlarini > Forma ko'rinishini sozlash va hujjat turini (masalan, savdo fakturasini) tanlash orqali topishingiz mumkin

    \n" +"\n" +"

    Shablonlash

    \n" +"\n" +"

    Shablonlar Jinja shablonlash tili yordamida kompilyatsiya qilinadi. Jinja haqida ko'proq bilish uchun ushbu hujjatlarni o'qing.

    " #. Content of the 'Contract Template Help' (HTML) field in DocType 'Contract #. Template' @@ -747,6 +787,21 @@ msgid "" "\n" "

    Templates are compiled using the Jinja Templating Language. To learn more about Jinja, read this documentation.

    " msgstr "" +"

    Shartnoma shabloniga misol

    \n" +"\n" +"
    Mijoz uchun shartnoma {{ party_name }}\n"
    +"\n"
    +"-Amal qilish muddati: {{ start_date }} \n"
    +"-Amal qilish muddati: {{ end_date }}\n"
    +"
    \n" +"\n" +"

    Qanday olish mumkin maydon nomlari

    \n" +"\n" +"

    Shartnoma shablonida foydalanishingiz mumkin bo'lgan maydon nomlari - bu shablonni yaratayotgan Shartnomadagi maydonlar. Siz istalgan hujjatlarning maydonlarini > Forma ko'rinishini sozlash va hujjat turini (masalan, Shartnoma) tanlash orqali topishingiz mumkin

    \n" +"\n" +"

    Shablonlash

    \n" +"\n" +"

    Shablonlar Jinja shablonlash tili yordamida kompilyatsiya qilinadi. Jinja haqida ko'proq bilish uchun ushbu hujjatlarni o'qing.

    " #. Content of the 'Terms and Conditions Help' (HTML) field in DocType 'Terms #. and Conditions' @@ -768,12 +823,27 @@ msgid "" "\n" "

    Templates are compiled using the Jinja Templating Language. To learn more about Jinja, read this documentation.

    " msgstr "" +"

    Standart shartlar va qoidalar namunasi

    \n" +"\n" +"
    Buyurtma raqami uchun yetkazib berish shartlari {{ name }}\n"
    +"\n"
    +"-Buyurtma sanasi: {{ transaction_date }} \n"
    +"-Kutilayotgan yetkazib berish sanasi: {{ delivery_date }}\n"
    +"
    \n" +"\n" +"

    Maydon nomlarini qanday olish mumkin

    \n" +"\n" +"

    Elektron pochta shabloningizda foydalanishingiz mumkin bo'lgan maydon nomlari - bu siz elektron pochta xabarini yuborayotgan hujjatdagi maydonlar. Siz istalgan hujjatlar maydonlarini > Forma ko'rinishini sozlash va hujjat turini (masalan, savdo fakturasini) tanlash orqali topishingiz mumkin

    \n" +"\n" +"

    Shablonlash

    \n" +"\n" +"

    Shablonlar Jinja shablonlash tili yordamida kompilyatsiya qilinadi. Jinja haqida ko'proq bilish uchun ushbu hujjatlarni o'qing.

    " #. Content of the 'account_no_settings' (HTML) field in DocType 'Cheque Print #. Template' #: erpnext/accounts/doctype/cheque_print_template/cheque_print_template.json msgid "" -msgstr "" +msgstr "" #. Content of the 'html_19' (HTML) field in DocType 'Cheque Print Template' #: erpnext/accounts/doctype/cheque_print_template/cheque_print_template.json @@ -790,7 +860,7 @@ msgstr "