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 a4f6a74a5abf..81c2d8bb7389 100644 --- a/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py +++ b/erpnext/accounts/doctype/exchange_rate_revaluation/exchange_rate_revaluation.py @@ -490,6 +490,8 @@ def calculate_exchange_rate_using_last_gle(company, account, party_type, party): conditions.append(gl.company == company) conditions.append(gl.account == account) conditions.append(gl.is_cancelled == 0) + conditions.append((gl.debit > 0) | (gl.credit > 0)) + conditions.append((gl.debit_in_account_currency > 0) | (gl.credit_in_account_currency > 0)) if party_type: conditions.append(gl.party_type == party_type) if party: diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py index 4e2e2eb12c89..22cff133089f 100644 --- a/erpnext/accounts/party.py +++ b/erpnext/accounts/party.py @@ -174,6 +174,9 @@ def _get_party_details( party_type, party.name, "tax_withholding_category" ) + if not party_details.get("tax_category") and pos_profile: + party_details["tax_category"] = frappe.get_value("POS Profile", pos_profile, "tax_category") + return party_details diff --git a/erpnext/accounts/report/general_ledger/general_ledger.js b/erpnext/accounts/report/general_ledger/general_ledger.js index 010284c2ea55..2100f26c1ec8 100644 --- a/erpnext/accounts/report/general_ledger/general_ledger.js +++ b/erpnext/accounts/report/general_ledger/general_ledger.js @@ -58,9 +58,8 @@ frappe.query_reports["General Ledger"] = { { "fieldname":"party_type", "label": __("Party Type"), - "fieldtype": "Link", - "options": "Party Type", - "default": "", + "fieldtype": "Autocomplete", + options: Object.keys(frappe.boot.party_account_types), on_change: function() { frappe.query_report.set_filter_value('party', ""); } diff --git a/erpnext/accounts/report/payment_ledger/payment_ledger.js b/erpnext/accounts/report/payment_ledger/payment_ledger.js index 9779844dc945..a5a4108f1df9 100644 --- a/erpnext/accounts/report/payment_ledger/payment_ledger.js +++ b/erpnext/accounts/report/payment_ledger/payment_ledger.js @@ -37,6 +37,29 @@ function get_filters() { }); } }, + { + "fieldname":"party_type", + "label": __("Party Type"), + "fieldtype": "Link", + "options": "Party Type", + "default": "", + on_change: function() { + frappe.query_report.set_filter_value('party', ""); + } + }, + { + "fieldname":"party", + "label": __("Party"), + "fieldtype": "MultiSelectList", + get_data: function(txt) { + if (!frappe.query_report.filters) return; + + let party_type = frappe.query_report.get_filter_value('party_type'); + if (!party_type) return; + + return frappe.db.get_link_options(party_type, txt); + }, + }, { "fieldname":"voucher_no", "label": __("Voucher No"), @@ -49,6 +72,20 @@ function get_filters() { "fieldtype": "Data", "width": 100, }, + { + "fieldname":"include_account_currency", + "label": __("Include Account Currency"), + "fieldtype": "Check", + "width": 100, + }, + { + "fieldname":"group_party", + "label": __("Group by Party"), + "fieldtype": "Check", + "width": 100, + }, + + ] return filters; diff --git a/erpnext/accounts/report/payment_ledger/payment_ledger.py b/erpnext/accounts/report/payment_ledger/payment_ledger.py index e470c2727e38..8875d2743fe2 100644 --- a/erpnext/accounts/report/payment_ledger/payment_ledger.py +++ b/erpnext/accounts/report/payment_ledger/payment_ledger.py @@ -17,34 +17,26 @@ def __init__(self, filters=None): self.ple = qb.DocType("Payment Ledger Entry") def init_voucher_dict(self): - if self.voucher_amount: - s = set() - # build a set of unique vouchers + # for each ple, using group_by_key to create a key and assign it to +/- list for ple in self.voucher_amount: - key = (ple.voucher_type, ple.voucher_no, ple.party) - s.add(key) - - # for each unique vouchers, initialize +/- list - for key in s: - self.voucher_dict[key] = frappe._dict(increase=list(), decrease=list()) + group_by_key = None + if not self.filters.group_party: + group_by_key = (ple.against_voucher_type, ple.against_voucher_no, ple.party) + else: + group_by_key = (ple.party_type, ple.party) - # for each ple, using against voucher and amount, assign it to +/- list - # group by against voucher - for ple in self.voucher_amount: - against_key = (ple.against_voucher_type, ple.against_voucher_no, ple.party) target = None - if self.voucher_dict.get(against_key): - if ple.amount > 0: - target = self.voucher_dict.get(against_key).increase - else: - target = self.voucher_dict.get(against_key).decrease + if ple.amount > 0: + target = self.voucher_dict.setdefault(group_by_key, {}).setdefault("increase", []) + else: + target = self.voucher_dict.setdefault(group_by_key, {}).setdefault("decrease", []) # this if condition will lose unassigned ple entries(against_voucher doc doesn't have ple) # need to somehow include the stray entries as well. if target is not None: entry = frappe._dict( - company=ple.company, + posting_date=ple.posting_date, account=ple.account, party_type=ple.party_type, party=ple.party, @@ -66,10 +58,10 @@ def build_data(self): for value in self.voucher_dict.values(): voucher_data = [] - if value.increase != []: - voucher_data.extend(value.increase) - if value.decrease != []: - voucher_data.extend(value.decrease) + if value.get("increase"): + voucher_data.extend(value.get("increase")) + if value.get("decrease"): + voucher_data.extend(value.get("decrease")) if voucher_data: # balance row @@ -117,6 +109,12 @@ def build_conditions(self): if self.filters.against_voucher_no: self.conditions.append(self.ple.against_voucher_no == self.filters.against_voucher_no) + if self.filters.party_type: + self.conditions.append(self.ple.party_type == self.filters.party_type) + + if self.filters.party: + self.conditions.append(self.ple.party.isin(self.filters.party)) + def get_data(self): ple = self.ple @@ -134,7 +132,13 @@ def get_data(self): def get_columns(self): options = None self.columns.append( - dict(label=_("Company"), fieldname="company", fieldtype="data", options=options, width="100") + dict( + label=_("Posting Date"), + fieldname="posting_date", + fieldtype="Date", + options=options, + width="100", + ) ) self.columns.append( @@ -160,7 +164,11 @@ def get_columns(self): ) self.columns.append( dict( - label=_("Voucher No"), fieldname="voucher_no", fieldtype="data", options=options, width="100" + label=_("Voucher No"), + fieldname="voucher_no", + fieldtype="Dynamic Link", + options="voucher_type", + width="100", ) ) self.columns.append( @@ -176,8 +184,8 @@ def get_columns(self): dict( label=_("Against Voucher No"), fieldname="against_voucher_no", - fieldtype="data", - options=options, + fieldtype="Dynamic Link", + options="against_voucher_type", width="100", ) ) @@ -209,7 +217,7 @@ def run(self): self.get_columns() self.get_data() - # initialize dictionary and group using against voucher + # initialize dictionary and group using key self.init_voucher_dict() # convert dictionary to list and add balance rows diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py index 38aa8056e9cc..4ab0d56f681e 100644 --- a/erpnext/accounts/utils.py +++ b/erpnext/accounts/utils.py @@ -451,12 +451,6 @@ def reconcile_against_document(args): # nosemgrep else: update_reference_in_payment_entry(entry, doc, do_not_save=True) - if doc.doctype == "Journal Entry": - try: - doc.validate_total_debit_and_credit() - except Exception as validation_exception: - raise frappe.ValidationError(_(f"Validation Error for {doc.name}")) from validation_exception - doc.save(ignore_permissions=True) # re-submit advance entry doc = frappe.get_doc(entry.voucher_type, entry.voucher_no) diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py index ee73729da0a9..47b5f75e6686 100644 --- a/erpnext/assets/doctype/asset/asset.py +++ b/erpnext/assets/doctype/asset/asset.py @@ -375,19 +375,12 @@ def _make_depreciation_schedule(self, finance_book, start, date_of_disposal): value_after_depreciation -= flt(depreciation_amount, self.precision("gross_purchase_amount")) # Adjust depreciation amount in the last period based on the expected value after useful life - if ( - finance_book.expected_value_after_useful_life - and ( - ( - n == cint(number_of_pending_depreciations) - 1 - and value_after_depreciation != finance_book.expected_value_after_useful_life - ) - or value_after_depreciation < finance_book.expected_value_after_useful_life - ) - and ( - not self.flags.increase_in_asset_value_due_to_repair - or not finance_book.depreciation_method in ("Written Down Value", "Double Declining Balance") + if finance_book.expected_value_after_useful_life and ( + ( + n == cint(number_of_pending_depreciations) - 1 + and value_after_depreciation != finance_book.expected_value_after_useful_life ) + or value_after_depreciation < finance_book.expected_value_after_useful_life ): depreciation_amount += value_after_depreciation - finance_book.expected_value_after_useful_life skip_row = True @@ -913,11 +906,22 @@ def get_depreciation_rate(self, args, on_validate=False): return 200.0 / args.get("total_number_of_depreciations") if args.get("depreciation_method") == "Written Down Value": - if args.get("rate_of_depreciation") and on_validate: + if ( + args.get("rate_of_depreciation") + and on_validate + and not self.flags.increase_in_asset_value_due_to_repair + ): return args.get("rate_of_depreciation") - value = flt(args.get("expected_value_after_useful_life")) / flt(self.gross_purchase_amount) + if self.flags.increase_in_asset_value_due_to_repair: + value = flt(args.get("expected_value_after_useful_life")) / flt( + args.get("value_after_depreciation") + ) + else: + value = flt(args.get("expected_value_after_useful_life")) / flt(self.gross_purchase_amount) + depreciation_rate = math.pow(value, 1.0 / flt(args.get("total_number_of_depreciations"), 2)) + return flt((100 * (1 - depreciation_rate)), float_precision) def get_pro_rata_amt(self, row, depreciation_amount, from_date, to_date): diff --git a/erpnext/assets/doctype/asset_repair/asset_repair.py b/erpnext/assets/doctype/asset_repair/asset_repair.py index eec7ccba7545..47453e303086 100644 --- a/erpnext/assets/doctype/asset_repair/asset_repair.py +++ b/erpnext/assets/doctype/asset_repair/asset_repair.py @@ -56,8 +56,6 @@ def before_submit(self): self.asset_doc.flags.ignore_validate_update_after_submit = True self.asset_doc.prepare_depreciation_data() - if self.asset_doc.calculate_depreciation: - self.update_asset_expected_value_after_useful_life() self.asset_doc.save() def before_cancel(self): @@ -81,8 +79,6 @@ def before_cancel(self): self.asset_doc.flags.ignore_validate_update_after_submit = True self.asset_doc.prepare_depreciation_data() - if self.asset_doc.calculate_depreciation: - self.update_asset_expected_value_after_useful_life() self.asset_doc.save() def after_delete(self): @@ -103,26 +99,6 @@ def check_for_stock_items_and_warehouse(self): title=_("Missing Warehouse"), ) - def update_asset_expected_value_after_useful_life(self): - for row in self.asset_doc.get("finance_books"): - if row.depreciation_method in ("Written Down Value", "Double Declining Balance"): - accumulated_depreciation_after_full_schedule = [ - d.accumulated_depreciation_amount - for d in self.asset_doc.get("schedules") - if cint(d.finance_book_id) == row.idx - ] - - accumulated_depreciation_after_full_schedule = max( - accumulated_depreciation_after_full_schedule - ) - - asset_value_after_full_schedule = flt( - flt(row.value_after_depreciation) - flt(accumulated_depreciation_after_full_schedule), - row.precision("expected_value_after_useful_life"), - ) - - row.expected_value_after_useful_life = asset_value_after_full_schedule - def increase_asset_value(self): total_value_of_stock_consumed = self.get_total_value_of_stock_consumed() diff --git a/erpnext/buying/doctype/supplier/supplier.js b/erpnext/buying/doctype/supplier/supplier.js index f0899b06b57b..1ae6f0364746 100644 --- a/erpnext/buying/doctype/supplier/supplier.js +++ b/erpnext/buying/doctype/supplier/supplier.js @@ -64,7 +64,7 @@ frappe.ui.form.on("Supplier", { // custom buttons frm.add_custom_button(__('Accounting Ledger'), function () { frappe.set_route('query-report', 'General Ledger', - { party_type: 'Supplier', party: frm.doc.name }); + { party_type: 'Supplier', party: frm.doc.name, party_name: frm.doc.supplier_name }); }, __("View")); frm.add_custom_button(__('Accounts Payable'), function () { diff --git a/erpnext/buying/doctype/supplier/supplier.py b/erpnext/buying/doctype/supplier/supplier.py index bebff1c3acbb..c96519a91538 100644 --- a/erpnext/buying/doctype/supplier/supplier.py +++ b/erpnext/buying/doctype/supplier/supplier.py @@ -128,18 +128,9 @@ def create_primary_address(self): def on_trash(self): if self.supplier_primary_contact: - frappe.db.sql( - """ - UPDATE `tabSupplier` - SET - supplier_primary_contact=null, - supplier_primary_address=null, - mobile_no=null, - email_id=null, - primary_address=null - WHERE name=%(name)s""", - {"name": self.name}, - ) + self.db_set("supplier_primary_contact", None) + if self.supplier_primary_address: + self.db_set("supplier_primary_address", None) delete_contact_and_address("Supplier", self.name) diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py index dd2a67032fe4..58cab147a477 100644 --- a/erpnext/controllers/status_updater.py +++ b/erpnext/controllers/status_updater.py @@ -464,7 +464,7 @@ def _update_percent_field(self, args, update_modified=True): ifnull((select ifnull(sum(case when abs(%(target_ref_field)s) > abs(%(target_field)s) then abs(%(target_field)s) else abs(%(target_ref_field)s) end), 0) / sum(abs(%(target_ref_field)s)) * 100 - from `tab%(target_dt)s` where parent='%(name)s' having sum(abs(%(target_ref_field)s)) > 0), 0), 6) + from `tab%(target_dt)s` where parent='%(name)s' and parenttype='%(target_parent_dt)s' having sum(abs(%(target_ref_field)s)) > 0), 0), 6) %(update_modified)s where name='%(name)s'""" % args diff --git a/erpnext/controllers/subcontracting_controller.py b/erpnext/controllers/subcontracting_controller.py index cc80f6ca984c..05754293b776 100644 --- a/erpnext/controllers/subcontracting_controller.py +++ b/erpnext/controllers/subcontracting_controller.py @@ -455,7 +455,7 @@ def __add_supplied_item(self, item_row, bom_item, qty): "allow_zero_valuation": 1, } ) - rm_obj.rate = get_incoming_rate(args) + rm_obj.rate = bom_item.rate if self.backflush_based_on == "BOM" else get_incoming_rate(args) if self.doctype == self.subcontract_data.order_doctype: rm_obj.required_qty = qty diff --git a/erpnext/hooks.py b/erpnext/hooks.py index e24038d0c6e2..f1ee370e97ee 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -276,7 +276,7 @@ before_tests = "erpnext.setup.utils.before_tests" standard_queries = { - "Customer": "erpnext.selling.doctype.customer.customer.get_customer_list", + "Customer": "erpnext.controllers.queries.customer_query", } doc_events = { diff --git a/erpnext/manufacturing/doctype/job_card/job_card.js b/erpnext/manufacturing/doctype/job_card/job_card.js index 619e6bd1a00d..5305db318b19 100644 --- a/erpnext/manufacturing/doctype/job_card/job_card.js +++ b/erpnext/manufacturing/doctype/job_card/job_card.js @@ -83,7 +83,7 @@ frappe.ui.form.on('Job Card', { // and if stock mvt for WIP is required if (frm.doc.work_order) { frappe.db.get_value('Work Order', frm.doc.work_order, ['skip_transfer', 'status'], (result) => { - if (result.skip_transfer === 1 || result.status == 'In Process') { + if (result.skip_transfer === 1 || result.status == 'In Process' || frm.doc.transferred_qty > 0) { frm.trigger("prepare_timer_buttons"); } }); diff --git a/erpnext/public/js/templates/crm_notes.html b/erpnext/public/js/templates/crm_notes.html index fddeb1c1cc2f..53df93307840 100644 --- a/erpnext/public/js/templates/crm_notes.html +++ b/erpnext/public/js/templates/crm_notes.html @@ -17,7 +17,7 @@ {{ frappe.avatar(notes[i].added_by) }}
-
+
{{ strip_html(notes[i].added_by) }}
diff --git a/erpnext/selling/doctype/customer/customer.js b/erpnext/selling/doctype/customer/customer.js index 107e4a4759d1..b53f339229b2 100644 --- a/erpnext/selling/doctype/customer/customer.js +++ b/erpnext/selling/doctype/customer/customer.js @@ -123,7 +123,7 @@ frappe.ui.form.on("Customer", { frm.add_custom_button(__('Accounting Ledger'), function () { frappe.set_route('query-report', 'General Ledger', - {party_type: 'Customer', party: frm.doc.name}); + {party_type: 'Customer', party: frm.doc.name, party_name: frm.doc.customer_name}); }, __('View')); frm.add_custom_button(__('Pricing Rule'), function () { diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py index 146ebbd7dfe8..a8665c5d0404 100644 --- a/erpnext/selling/doctype/customer/customer.py +++ b/erpnext/selling/doctype/customer/customer.py @@ -275,18 +275,9 @@ def validate_credit_limit_on_change(self): def on_trash(self): if self.customer_primary_contact: - frappe.db.sql( - """ - UPDATE `tabCustomer` - SET - customer_primary_contact=null, - customer_primary_address=null, - mobile_no=null, - email_id=null, - primary_address=null - WHERE name=%(name)s""", - {"name": self.name}, - ) + self.db_set("customer_primary_contact", None) + if self.customer_primary_address: + self.db_set("customer_primary_address", None) delete_contact_and_address("Customer", self.name) if self.lead_name: @@ -460,8 +451,14 @@ def get_nested_links(link_doctype, link_name, ignore_permissions=False): @frappe.whitelist() @frappe.validate_and_sanitize_search_inputs def get_customer_list(doctype, txt, searchfield, start, page_len, filters=None): + from frappe.utils.deprecations import deprecation_warning + from erpnext.controllers.queries import get_fields + deprecation_warning( + "`get_customer_list` is deprecated and will be removed in version 15. Use `erpnext.controllers.queries.customer_query` instead." + ) + fields = ["name", "customer_name", "customer_group", "territory"] if frappe.db.get_default("cust_master_name") == "Customer Name": diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js index 81ef44d53ed9..83fa472d68ba 100644 --- a/erpnext/selling/doctype/quotation/quotation.js +++ b/erpnext/selling/doctype/quotation/quotation.js @@ -304,6 +304,7 @@ erpnext.selling.QuotationController = class QuotationController extends erpnext. fieldname: "alternative_items", fieldtype: "Table", cannot_add_rows: true, + cannot_delete_rows: true, in_place_edit: true, reqd: 1, data: this.data, @@ -330,7 +331,7 @@ erpnext.selling.QuotationController = class QuotationController extends erpnext. dialog.fields_dict.info.$wrapper.html( `

- Alternative Items + ${__("Alternative Items")}

` ) dialog.show(); diff --git a/erpnext/selling/page/point_of_sale/point_of_sale.py b/erpnext/selling/page/point_of_sale/point_of_sale.py index 5ddebf96f6cf..6ccf45f476cb 100644 --- a/erpnext/selling/page/point_of_sale/point_of_sale.py +++ b/erpnext/selling/page/point_of_sale/point_of_sale.py @@ -16,46 +16,72 @@ def search_by_term(search_term, warehouse, price_list): result = search_for_serial_or_batch_or_barcode_number(search_term) or {} + item_code = result.get("item_code", search_term) + serial_no = result.get("serial_no", "") + batch_no = result.get("batch_no", "") + barcode = result.get("barcode", "") + if not result: + return + item_doc = frappe.get_doc("Item", item_code) + if not item_doc: + return + item = { + "barcode": barcode, + "batch_no": batch_no, + "description": item_doc.description, + "is_stock_item": item_doc.is_stock_item, + "item_code": item_doc.name, + "item_image": item_doc.image, + "item_name": item_doc.item_name, + "serial_no": serial_no, + "stock_uom": item_doc.stock_uom, + "uom": item_doc.stock_uom, + } + if barcode: + barcode_info = next(filter(lambda x: x.barcode == barcode, item_doc.get("barcodes", [])), None) + if barcode_info and barcode_info.uom: + uom = next(filter(lambda x: x.uom == barcode_info.uom, item_doc.uoms), {}) + item.update( + { + "uom": barcode_info.uom, + "conversion_factor": uom.get("conversion_factor", 1), + } + ) - item_code = result.get("item_code") or search_term - serial_no = result.get("serial_no") or "" - batch_no = result.get("batch_no") or "" - barcode = result.get("barcode") or "" - - if result: - item_info = frappe.db.get_value( - "Item", - item_code, - [ - "name as item_code", - "item_name", - "description", - "stock_uom", - "image as item_image", - "is_stock_item", - ], - as_dict=1, - ) - - item_stock_qty, is_stock_item = get_stock_availability(item_code, warehouse) - price_list_rate, currency = frappe.db.get_value( - "Item Price", - {"price_list": price_list, "item_code": item_code}, - ["price_list_rate", "currency"], - ) or [None, None] + item_stock_qty, is_stock_item = get_stock_availability(item_code, warehouse) + item_stock_qty = item_stock_qty // item.get("conversion_factor") + item_stock_qty = item_stock_qty // item.get("conversion_factor", 1) + item.update({"actual_qty": item_stock_qty}) + + price = frappe.get_list( + doctype="Item Price", + filters={ + "price_list": price_list, + "item_code": item_code, + }, + fields=["uom", "stock_uom", "currency", "price_list_rate"], + ) - item_info.update( + def __sort(p): + p_uom = p.get("uom") + if p_uom == item.get("uom"): + return 0 + elif p_uom == item.get("stock_uom"): + return 1 + else: + return 2 + + # sort by fallback preference. always pick exact uom match if available + price = sorted(price, key=__sort) + if len(price) > 0: + p = price.pop(0) + item.update( { - "serial_no": serial_no, - "batch_no": batch_no, - "barcode": barcode, - "price_list_rate": price_list_rate, - "currency": currency, - "actual_qty": item_stock_qty, + "currency": p.get("currency"), + "price_list_rate": p.get("price_list_rate"), } ) - - return {"items": [item_info]} + return {"items": [item]} @frappe.whitelist() diff --git a/erpnext/selling/report/sales_partner_target_variance_based_on_item_group/item_group_wise_sales_target_variance.py b/erpnext/selling/report/sales_partner_target_variance_based_on_item_group/item_group_wise_sales_target_variance.py index f34f3e34e2ce..7d28f2b90d22 100644 --- a/erpnext/selling/report/sales_partner_target_variance_based_on_item_group/item_group_wise_sales_target_variance.py +++ b/erpnext/selling/report/sales_partner_target_variance_based_on_item_group/item_group_wise_sales_target_variance.py @@ -44,20 +44,30 @@ def get_data(filters, period_list, partner_doctype): if not sales_users_data: return - sales_users, item_groups = [], [] + sales_users = [] + sales_user_wise_item_groups = {} for d in sales_users_data: if d.parent not in sales_users: sales_users.append(d.parent) - if d.item_group not in item_groups: - item_groups.append(d.item_group) + sales_user_wise_item_groups.setdefault(d.parent, []) + if d.item_group: + sales_user_wise_item_groups[d.parent].append(d.item_group) date_field = "transaction_date" if filters.get("doctype") == "Sales Order" else "posting_date" - actual_data = get_actual_data(filters, item_groups, sales_users, date_field, sales_field) + actual_data = get_actual_data(filters, sales_users, date_field, sales_field) - return prepare_data(filters, sales_users_data, actual_data, date_field, period_list, sales_field) + return prepare_data( + filters, + sales_users_data, + sales_user_wise_item_groups, + actual_data, + date_field, + period_list, + sales_field, + ) def get_columns(filters, period_list, partner_doctype): @@ -142,7 +152,15 @@ def get_columns(filters, period_list, partner_doctype): return columns -def prepare_data(filters, sales_users_data, actual_data, date_field, period_list, sales_field): +def prepare_data( + filters, + sales_users_data, + sales_user_wise_item_groups, + actual_data, + date_field, + period_list, + sales_field, +): rows = {} target_qty_amt_field = "target_qty" if filters.get("target_on") == "Quantity" else "target_amount" @@ -173,9 +191,9 @@ def prepare_data(filters, sales_users_data, actual_data, date_field, period_list for r in actual_data: if ( r.get(sales_field) == d.parent - and r.item_group == d.item_group and period.from_date <= r.get(date_field) and r.get(date_field) <= period.to_date + and (not sales_user_wise_item_groups.get(d.parent) or r.item_group == d.item_group) ): details[p_key] += r.get(qty_or_amount_field, 0) details[variance_key] = details.get(p_key) - details.get(target_key) @@ -186,7 +204,7 @@ def prepare_data(filters, sales_users_data, actual_data, date_field, period_list return rows -def get_actual_data(filters, item_groups, sales_users_or_territory_data, date_field, sales_field): +def get_actual_data(filters, sales_users_or_territory_data, date_field, sales_field): fiscal_year = get_fiscal_year(fiscal_year=filters.get("fiscal_year"), as_dict=1) dates = [fiscal_year.year_start_date, fiscal_year.year_end_date] @@ -213,7 +231,6 @@ def get_actual_data(filters, item_groups, sales_users_or_territory_data, date_fi WHERE `tab{child_doc}`.parent = `tab{parent_doc}`.name and `tab{parent_doc}`.docstatus = 1 and {cond} - and `tab{child_doc}`.item_group in ({item_groups}) and `tab{parent_doc}`.{date_field} between %s and %s""".format( cond=cond, date_field=date_field, @@ -221,9 +238,8 @@ def get_actual_data(filters, item_groups, sales_users_or_territory_data, date_fi child_table=child_table, parent_doc=filters.get("doctype"), child_doc=filters.get("doctype") + " Item", - item_groups=",".join(["%s"] * len(item_groups)), ), - tuple(sales_users_or_territory_data + item_groups + dates), + tuple(sales_users_or_territory_data + dates), as_dict=1, ) diff --git a/erpnext/selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.py b/erpnext/selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.py index dda24662bb23..820712234a59 100644 --- a/erpnext/selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.py +++ b/erpnext/selling/report/sales_person_target_variance_based_on_item_group/sales_person_target_variance_based_on_item_group.py @@ -8,6 +8,4 @@ def execute(filters=None): - data = [] - return get_data_column(filters, "Sales Person") diff --git a/erpnext/stock/report/stock_balance/stock_balance.py b/erpnext/stock/report/stock_balance/stock_balance.py index 0fc642ef207f..66991a907fdc 100644 --- a/erpnext/stock/report/stock_balance/stock_balance.py +++ b/erpnext/stock/report/stock_balance/stock_balance.py @@ -7,7 +7,7 @@ import frappe from frappe import _ -from frappe.query_builder.functions import CombineDatetime +from frappe.query_builder.functions import Coalesce, CombineDatetime from frappe.utils import cint, date_diff, flt, getdate from frappe.utils.nestedset import get_descendants_of @@ -322,6 +322,34 @@ def get_stock_ledger_entries(filters: StockBalanceFilter, items: List[str]) -> L return query.run(as_dict=True) +def get_opening_vouchers(to_date): + opening_vouchers = {"Stock Entry": [], "Stock Reconciliation": []} + + se = frappe.qb.DocType("Stock Entry") + sr = frappe.qb.DocType("Stock Reconciliation") + + vouchers_data = ( + frappe.qb.from_( + ( + frappe.qb.from_(se) + .select(se.name, Coalesce("Stock Entry").as_("voucher_type")) + .where((se.docstatus == 1) & (se.posting_date <= to_date) & (se.is_opening == "Yes")) + ) + + ( + frappe.qb.from_(sr) + .select(sr.name, Coalesce("Stock Reconciliation").as_("voucher_type")) + .where((sr.docstatus == 1) & (sr.posting_date <= to_date) & (sr.purpose == "Opening Stock")) + ) + ).select("voucher_type", "name") + ).run(as_dict=True) + + if vouchers_data: + for d in vouchers_data: + opening_vouchers[d.voucher_type].append(d.name) + + return opening_vouchers + + def get_inventory_dimension_fields(): return [dimension.fieldname for dimension in get_inventory_dimensions()] @@ -330,9 +358,8 @@ def get_item_warehouse_map(filters: StockBalanceFilter, sle: List[SLEntry]): iwb_map = {} from_date = getdate(filters.get("from_date")) to_date = getdate(filters.get("to_date")) - + opening_vouchers = get_opening_vouchers(to_date) float_precision = cint(frappe.db.get_default("float_precision")) or 3 - inventory_dimensions = get_inventory_dimension_fields() for d in sle: @@ -363,11 +390,7 @@ def get_item_warehouse_map(filters: StockBalanceFilter, sle: List[SLEntry]): value_diff = flt(d.stock_value_difference) - if d.posting_date < from_date or ( - d.posting_date == from_date - and d.voucher_type == "Stock Reconciliation" - and frappe.db.get_value("Stock Reconciliation", d.voucher_no, "purpose") == "Opening Stock" - ): + if d.posting_date < from_date or d.voucher_no in opening_vouchers.get(d.voucher_type, []): qty_dict.opening_qty += qty_diff qty_dict.opening_val += value_diff diff --git a/erpnext/translations/af.csv b/erpnext/translations/af.csv index 265e85c0f1d9..f2458e3c9658 100644 --- a/erpnext/translations/af.csv +++ b/erpnext/translations/af.csv @@ -3505,7 +3505,6 @@ Recipient,ontvanger, Reviews,resensies, Sender,sender, Shop,Winkel, -Sign Up,Teken aan, Subsidiary,filiaal, There is some problem with the file url: {0},Daar is 'n probleem met die lêer url: {0}, There were errors while sending email. Please try again.,Daar was foute tydens die stuur van e-pos. Probeer asseblief weer., diff --git a/erpnext/translations/am.csv b/erpnext/translations/am.csv index d13140482130..d4db28586716 100644 --- a/erpnext/translations/am.csv +++ b/erpnext/translations/am.csv @@ -3505,7 +3505,6 @@ Recipient,ተቀባይ, Reviews,ግምገማዎች, Sender,የላኪ, Shop,ሱቅ, -Sign Up,ክፈት, Subsidiary,ተጪማሪ, There is some problem with the file url: {0},ፋይል ዩ አር ኤል ጋር አንድ ችግር አለ: {0}, There were errors while sending email. Please try again.,ኢሜይል በመላክ ላይ ሳለ ስህተቶች ነበሩ. እባክዎ ዳግም ይሞክሩ., diff --git a/erpnext/translations/ar.csv b/erpnext/translations/ar.csv index c0da1c4d76ee..ea2777faf03b 100644 --- a/erpnext/translations/ar.csv +++ b/erpnext/translations/ar.csv @@ -3505,7 +3505,6 @@ Recipient,مستلم, Reviews,التعليقات, Sender,مرسل, Shop,تسوق, -Sign Up,سجل, Subsidiary,شركة فرعية, There is some problem with the file url: {0},هناك بعض المشاكل مع رابط الملف: {0}, There were errors while sending email. Please try again.,كانت هناك أخطاء أثناء إرسال البريد الإلكتروني. يرجى المحاولة مرة أخرى., diff --git a/erpnext/translations/bg.csv b/erpnext/translations/bg.csv index ac6dc7851b22..6839129a319b 100644 --- a/erpnext/translations/bg.csv +++ b/erpnext/translations/bg.csv @@ -3505,7 +3505,6 @@ Recipient,Получател, Reviews,Отзиви, Sender,Подател, Shop,Магазин, -Sign Up,Регистрирай се, Subsidiary,Филиал, There is some problem with the file url: {0},Има някакъв проблем с адреса на файл: {0}, There were errors while sending email. Please try again.,"Имаше грешки при изпращане на имейл. Моля, опитайте отново.", diff --git a/erpnext/translations/bn.csv b/erpnext/translations/bn.csv index 52f7b1c593ae..a944d99ecbf2 100644 --- a/erpnext/translations/bn.csv +++ b/erpnext/translations/bn.csv @@ -3505,7 +3505,6 @@ Recipient,প্রাপক, Reviews,পর্যালোচনা, Sender,প্রেরকের, Shop,দোকান, -Sign Up,নিবন্ধন করুন, Subsidiary,সহায়ক, There is some problem with the file url: {0},ফাইলের URL সঙ্গে কিছু সমস্যা আছে: {0}, There were errors while sending email. Please try again.,ইমেইল পাঠানোর সময় কিছু সমস্যা হয়েছে. অনুগ্রহ করে আবার চেষ্টা করুন., diff --git a/erpnext/translations/bs.csv b/erpnext/translations/bs.csv index 267434f480a7..2d9c26d15b12 100644 --- a/erpnext/translations/bs.csv +++ b/erpnext/translations/bs.csv @@ -3505,7 +3505,6 @@ Recipient,Primalac, Reviews,Recenzije, Sender,Pošiljaoc, Shop,Prodavnica, -Sign Up,Prijaviti se, Subsidiary,Podružnica, There is some problem with the file url: {0},Postoji neki problem sa URL datoteku: {0}, There were errors while sending email. Please try again.,Bilo je grešaka tijekom slanja e-pošte. Molimo pokušajte ponovno ., diff --git a/erpnext/translations/ca.csv b/erpnext/translations/ca.csv index d8c2ef68e6e8..85c62851c8d5 100644 --- a/erpnext/translations/ca.csv +++ b/erpnext/translations/ca.csv @@ -3505,7 +3505,6 @@ Recipient,Receptor, Reviews,Ressenyes, Sender,Remitent, Shop,Botiga, -Sign Up,Registra't, Subsidiary,Filial, There is some problem with the file url: {0},Hi ha una mica de problema amb la url de l'arxiu: {0}, There were errors while sending email. Please try again.,"Hi ha hagut errors a l'enviar el correu electrònic. Si us plau, torna a intentar-ho.", diff --git a/erpnext/translations/cs.csv b/erpnext/translations/cs.csv index 7d570bbdd040..3fb67e787087 100644 --- a/erpnext/translations/cs.csv +++ b/erpnext/translations/cs.csv @@ -3505,7 +3505,6 @@ Recipient,Příjemce, Reviews,Recenze, Sender,Odesilatel, Shop,Obchod, -Sign Up,Přihlásit se, Subsidiary,Dceřiný, There is some problem with the file url: {0},Tam je nějaký problém s URL souboru: {0}, There were errors while sending email. Please try again.,Narazili jsme na problémy při odesílání emailu. Prosím zkuste to znovu., diff --git a/erpnext/translations/da.csv b/erpnext/translations/da.csv index 16b2e878e042..f0654b998da4 100644 --- a/erpnext/translations/da.csv +++ b/erpnext/translations/da.csv @@ -3505,7 +3505,6 @@ Recipient,Modtager, Reviews,Anmeldelser, Sender,Afsender, Shop,Butik, -Sign Up,Tilmelde, Subsidiary,Datterselskab, There is some problem with the file url: {0},Der er nogle problemer med filen url: {0}, There were errors while sending email. Please try again.,Der var fejl under afsendelse af e-mail. Prøv venligst igen., diff --git a/erpnext/translations/de.csv b/erpnext/translations/de.csv index 2aa6dbc0d1c4..8472d04f1cac 100644 --- a/erpnext/translations/de.csv +++ b/erpnext/translations/de.csv @@ -3511,7 +3511,6 @@ Recipient,Empfänger, Reviews,Bewertungen, Sender,Absender, Shop,Laden, -Sign Up,Anmelden, Subsidiary,Tochtergesellschaft, There is some problem with the file url: {0},Es gibt irgend ein Problem mit der Datei-URL: {0}, There were errors while sending email. Please try again.,Beim Versand der E-Mail ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut., @@ -5064,7 +5063,7 @@ Price List Rate (Company Currency),Preisliste (Unternehmenswährung), Rate ,Preis, Rate (Company Currency),Preis (Unternehmenswährung), Amount (Company Currency),Betrag (Unternehmenswährung), -Is Free Item,Ist freies Einzelteil, +Is Free Item,Ist kostenlos, Net Rate,Nettopreis, Net Rate (Company Currency),Nettopreis (Unternehmenswährung), Net Amount (Company Currency),Nettobetrag (Unternehmenswährung), @@ -9915,3 +9914,7 @@ Delivered at Place Unloaded,Geliefert benannter Ort entladen, Delivered Duty Paid,Geliefert verzollt, Discount Validity,Frist für den Rabatt, Discount Validity Based On,Frist für den Rabatt berechnet sich nach, +Select Alternative Items for Sales Order,Alternativpositionen für Auftragsbestätigung auswählen, +Select an item from each set to be used in the Sales Order.,"Wählen Sie aus den Alternativen jeweils einen Artikel aus, der in die Auftragsbestätigung übernommen werden soll.", +Is Alternative,Ist Alternative, +Alternative Items,Alternativpositionen, diff --git a/erpnext/translations/el.csv b/erpnext/translations/el.csv index 06b80603e637..c241558e31c7 100644 --- a/erpnext/translations/el.csv +++ b/erpnext/translations/el.csv @@ -3505,7 +3505,6 @@ Recipient,Παραλήπτης, Reviews,Κριτικές, Sender,Αποστολέας, Shop,Κατάστημα, -Sign Up,Εγγραφείτε, Subsidiary,Θυγατρική, There is some problem with the file url: {0},Υπάρχει κάποιο πρόβλημα με το url αρχείο: {0}, There were errors while sending email. Please try again.,Υπήρξαν σφάλματα κατά την αποστολή ηλεκτρονικού ταχυδρομείου. Παρακαλώ δοκιμάστε ξανά ., diff --git a/erpnext/translations/es.csv b/erpnext/translations/es.csv index b216b868bbdb..9996fe54c15d 100644 --- a/erpnext/translations/es.csv +++ b/erpnext/translations/es.csv @@ -3505,7 +3505,6 @@ Recipient,Beneficiario, Reviews,Comentarios, Sender,Remitente, Shop,Tienda., -Sign Up,Regístrate, Subsidiary,Subsidiaria, There is some problem with the file url: {0},Hay un poco de problema con la url del archivo: {0}, There were errors while sending email. Please try again.,"Ha ocurrido un error al enviar el correo electrónico. Por favor, inténtelo de nuevo.", diff --git a/erpnext/translations/et.csv b/erpnext/translations/et.csv index 5d67d81b7945..6e60809fe7b9 100644 --- a/erpnext/translations/et.csv +++ b/erpnext/translations/et.csv @@ -3505,7 +3505,6 @@ Recipient,Saaja, Reviews,Ülevaated, Sender,Lähetaja, Shop,Kauplus, -Sign Up,Registreeri, Subsidiary,Tütarettevõte, There is some problem with the file url: {0},Seal on mõned probleem faili url: {0}, There were errors while sending email. Please try again.,Vigu samas saates email. Palun proovi uuesti., diff --git a/erpnext/translations/fa.csv b/erpnext/translations/fa.csv index 040034d09ec6..7d18e27ad422 100644 --- a/erpnext/translations/fa.csv +++ b/erpnext/translations/fa.csv @@ -3505,7 +3505,6 @@ Recipient,گیرنده, Reviews,بررسی ها, Sender,فرستنده, Shop,فروشگاه, -Sign Up,ثبت نام, Subsidiary,فرعی, There is some problem with the file url: {0},بعضی از مشکل با آدرس فایل وجود دارد: {0}, There were errors while sending email. Please try again.,بودند خطاهای هنگام ارسال ایمیل وجود دارد. لطفا دوباره تلاش کنید., diff --git a/erpnext/translations/fi.csv b/erpnext/translations/fi.csv index 27ea3b8dd45d..c700f60d15c0 100644 --- a/erpnext/translations/fi.csv +++ b/erpnext/translations/fi.csv @@ -3505,7 +3505,6 @@ Recipient,vastaanottaja, Reviews,Arvostelut, Sender,Lähettäjä, Shop,Osta, -Sign Up,Kirjaudu, Subsidiary,tytäryhtiö, There is some problem with the file url: {0},Tiedosto-URL:issa {0} on ongelma, There were errors while sending email. Please try again.,"Lähetettäessä sähköpostia oli virheitä, yrita uudelleen", diff --git a/erpnext/translations/fr.csv b/erpnext/translations/fr.csv index bace129213d9..ab9bf7d9c147 100644 --- a/erpnext/translations/fr.csv +++ b/erpnext/translations/fr.csv @@ -3505,7 +3505,6 @@ Recipient,Destinataire, Reviews,Avis, Sender,Expéditeur, Shop,Magasin, -Sign Up,S'inscrire, Subsidiary,Filiale, There is some problem with the file url: {0},Il y a un problème avec l'url du fichier : {0}, There were errors while sending email. Please try again.,Il y a eu des erreurs lors de l'envoi d’emails. Veuillez essayer à nouveau., diff --git a/erpnext/translations/gu.csv b/erpnext/translations/gu.csv index 97adac94db16..b26d2f3d0768 100644 --- a/erpnext/translations/gu.csv +++ b/erpnext/translations/gu.csv @@ -3505,7 +3505,6 @@ Recipient,પ્રાપ્તકર્તા, Reviews,સમીક્ષાઓ, Sender,પ્રેષક, Shop,દુકાન, -Sign Up,સાઇન અપ કરો, Subsidiary,સબસિડીયરી, There is some problem with the file url: {0},ફાઈલ URL સાથે કેટલાક સમસ્યા છે: {0}, There were errors while sending email. Please try again.,ઇમેઇલ મોકલતી વખતે ભૂલો આવી હતી. ફરી પ્રયત્ન કરો., diff --git a/erpnext/translations/he.csv b/erpnext/translations/he.csv index 22b252261fd5..e40b68e504f9 100644 --- a/erpnext/translations/he.csv +++ b/erpnext/translations/he.csv @@ -3505,7 +3505,6 @@ Recipient,נמען, Reviews,ביקורות, Sender,שולח, Shop,חנות, -Sign Up,הירשם, Subsidiary,חברת בת, There is some problem with the file url: {0},יש קצת בעיה עם כתובת אתר הקובץ: {0}, There were errors while sending email. Please try again.,היו שגיאות בעת שליחת דואר אלקטרוני. אנא נסה שוב., diff --git a/erpnext/translations/hi.csv b/erpnext/translations/hi.csv index ca41cf3d9f44..78094d735af0 100644 --- a/erpnext/translations/hi.csv +++ b/erpnext/translations/hi.csv @@ -3505,7 +3505,6 @@ Recipient,प्राप्तकर्ता, Reviews,समीक्षा, Sender,प्रेषक, Shop,दुकान, -Sign Up,साइन अप करें, Subsidiary,सहायक, There is some problem with the file url: {0},फ़ाइल यूआरएल के साथ कुछ समस्या है: {0}, There were errors while sending email. Please try again.,ईमेल भेजने के दौरान त्रुटि . पुन: प्रयास करें ., diff --git a/erpnext/translations/hr.csv b/erpnext/translations/hr.csv index 319b80b7c47e..232832f3f97d 100644 --- a/erpnext/translations/hr.csv +++ b/erpnext/translations/hr.csv @@ -3505,7 +3505,6 @@ Recipient,Primalac, Reviews,Recenzije, Sender,Pošiljalac, Shop,Dućan, -Sign Up,Prijavite se, Subsidiary,Podružnica, There is some problem with the file url: {0},Postoji neki problem s datotečnog URL: {0}, There were errors while sending email. Please try again.,Bilo je grešaka tijekom slanja e-pošte. Molimo pokušajte ponovno ., diff --git a/erpnext/translations/hu.csv b/erpnext/translations/hu.csv index 06647281cd60..e3dcd61fb2f5 100644 --- a/erpnext/translations/hu.csv +++ b/erpnext/translations/hu.csv @@ -3505,7 +3505,6 @@ Recipient,Címzett, Reviews,Vélemények, Sender,Küldő, Shop,Bolt, -Sign Up,Regisztrálj, Subsidiary,Leányvállalat, There is some problem with the file url: {0},Van valami probléma a fájl URL-el: {0}, There were errors while sending email. Please try again.,"Email küldés közben hibák voltak. Kérjük, próbálja újra.", diff --git a/erpnext/translations/id.csv b/erpnext/translations/id.csv index 1e507470239c..ccbb002370f3 100644 --- a/erpnext/translations/id.csv +++ b/erpnext/translations/id.csv @@ -3505,7 +3505,6 @@ Recipient,Penerima, Reviews,Ulasan, Sender,Pengirim, Shop,Toko, -Sign Up,Daftar, Subsidiary,Anak Perusahaan, There is some problem with the file url: {0},Ada beberapa masalah dengan url berkas: {0}, There were errors while sending email. Please try again.,Ada kesalahan saat mengirim email. Silakan coba lagi., diff --git a/erpnext/translations/is.csv b/erpnext/translations/is.csv index c20c21eef891..5f11c63abafd 100644 --- a/erpnext/translations/is.csv +++ b/erpnext/translations/is.csv @@ -3505,7 +3505,6 @@ Recipient,viðtakandi, Reviews,Umsagnir, Sender,sendanda, Shop,Shop, -Sign Up,Skráðu þig, Subsidiary,dótturfélag, There is some problem with the file url: {0},Það er einhver vandamál með skrá url: {0}, There were errors while sending email. Please try again.,Það komu upp villur við að senda tölvupóst. Vinsamlegast reyndu aftur., diff --git a/erpnext/translations/it.csv b/erpnext/translations/it.csv index 3d15d5594deb..0dbde45778a7 100644 --- a/erpnext/translations/it.csv +++ b/erpnext/translations/it.csv @@ -3505,7 +3505,6 @@ Recipient,Destinatario, Reviews,Recensioni, Sender,Mittente, Shop,Negozio, -Sign Up,Iscriviti, Subsidiary,Sussidiario, There is some problem with the file url: {0},C'è qualche problema con il file url: {0}, There were errors while sending email. Please try again.,Ci sono stati errori durante l'invio email. Riprova., diff --git a/erpnext/translations/ja.csv b/erpnext/translations/ja.csv index a11a9a126a91..210c78ee5df5 100644 --- a/erpnext/translations/ja.csv +++ b/erpnext/translations/ja.csv @@ -3505,7 +3505,6 @@ Recipient,受信者, Reviews,レビュー, Sender,送信者, Shop,店, -Sign Up,サインアップ, Subsidiary,子会社, There is some problem with the file url: {0},ファイルURLに問題があります:{0}, There were errors while sending email. Please try again.,メールの送信中にエラーが発生しました。もう一度お試しください。, diff --git a/erpnext/translations/km.csv b/erpnext/translations/km.csv index bd70595a7b6d..1eb85cca924e 100644 --- a/erpnext/translations/km.csv +++ b/erpnext/translations/km.csv @@ -3505,7 +3505,6 @@ Recipient,អ្នកទទួល, Reviews,ការពិនិត្យឡើងវិញ។, Sender,អ្នកផ្ញើ, Shop,ហាងលក់, -Sign Up,ចុះឈ្មោះ, Subsidiary,ក្រុមហ៊ុនបុត្រសម្ព័ន្ធ, There is some problem with the file url: {0},មានបញ្ហាមួយចំនួនជាមួយនឹងឯកសារ URL គឺ: {0}, There were errors while sending email. Please try again.,មានកំហុសខណៈពេលដែលការផ្ញើអ៊ីម៉ែលនោះទេ។ សូមព្យាយាមម្តងទៀត។, diff --git a/erpnext/translations/kn.csv b/erpnext/translations/kn.csv index 7572a09a0868..4e40c63e576b 100644 --- a/erpnext/translations/kn.csv +++ b/erpnext/translations/kn.csv @@ -3505,7 +3505,6 @@ Recipient,ಗ್ರಾಹಿ, Reviews,ವಿಮರ್ಶೆಗಳು, Sender,ಪ್ರೇಷಕ, Shop,ಅಂಗಡಿ, -Sign Up,ಸೈನ್ ಅಪ್, Subsidiary,ಸಹಕಾರಿ, There is some problem with the file url: {0},ಕಡತ URL ನೊಂದಿಗೆ ಕೆಲವು ಸಮಸ್ಯೆಯಿದೆ: {0}, There were errors while sending email. Please try again.,ಇಮೇಲ್ ಕಳುಹಿಸುವಾಗ ದೋಷಗಳು ಇದ್ದವು. ದಯವಿಟ್ಟು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ ., diff --git a/erpnext/translations/ko.csv b/erpnext/translations/ko.csv index b873b73b9cd7..36ec3affcec6 100644 --- a/erpnext/translations/ko.csv +++ b/erpnext/translations/ko.csv @@ -3505,7 +3505,6 @@ Recipient,받는 사람, Reviews,리뷰, Sender,보낸 사람, Shop,상점, -Sign Up,가입, Subsidiary,자회사, There is some problem with the file url: {0},파일 URL 몇 가지 문제가 있습니다 : {0}, There were errors while sending email. Please try again.,이메일을 보내는 동안 오류가 발생했습니다.재시도하십시오., diff --git a/erpnext/translations/ku.csv b/erpnext/translations/ku.csv index 89e12c070b5c..28927a08d105 100644 --- a/erpnext/translations/ku.csv +++ b/erpnext/translations/ku.csv @@ -3505,7 +3505,6 @@ Recipient,Girtevan, Reviews,Nirxandin, Sender,virrêkerî, Shop,Dikan, -Sign Up,Tomar kirin, Subsidiary,Şîrketa girêdayî, There is some problem with the file url: {0},e hinek pirsgirêk bi url file hene: {0}, There were errors while sending email. Please try again.,bûn çewtî dema şandina email heye. Ji kerema xwe careke din biceribîne., diff --git a/erpnext/translations/lo.csv b/erpnext/translations/lo.csv index 778a59b3c2e2..3904308af2fd 100644 --- a/erpnext/translations/lo.csv +++ b/erpnext/translations/lo.csv @@ -3505,7 +3505,6 @@ Recipient,ຜູ້ຮັບ, Reviews,ການທົບທວນຄືນ, Sender,ຜູ້ສົ່ງ, Shop,ບໍລິການຜ່ານ, -Sign Up,ລົງທະບຽນ, Subsidiary,ບໍລິສັດຍ່ອຍ, There is some problem with the file url: {0},ມີບັນຫາບາງຢ່າງກັບ url ໄຟລ໌ແມ່ນ: {0}, There were errors while sending email. Please try again.,ມີຄວາມຜິດພາດໃນຂະນະທີ່ການສົ່ງອີເມວໄດ້. ກະລຸນາພະຍາຍາມອີກເທື່ອຫນຶ່ງ., diff --git a/erpnext/translations/lt.csv b/erpnext/translations/lt.csv index 4721ce43ff38..d05688c6537a 100644 --- a/erpnext/translations/lt.csv +++ b/erpnext/translations/lt.csv @@ -3505,7 +3505,6 @@ Recipient,Gavėjas, Reviews,Atsiliepimai, Sender,Siuntėjas, Shop,parduotuvė, -Sign Up,Registruotis, Subsidiary,filialas, There is some problem with the file url: {0},Yra kai kurie su URL failui problema: {0}, There were errors while sending email. Please try again.,"Nebuvo klaidos Nors siunčiant laišką. Prašau, pabandykite dar kartą.", diff --git a/erpnext/translations/lv.csv b/erpnext/translations/lv.csv index b8499b28c127..d5cf852bc6b9 100644 --- a/erpnext/translations/lv.csv +++ b/erpnext/translations/lv.csv @@ -3505,7 +3505,6 @@ Recipient,Saņēmējs, Reviews,Atsauksmes, Sender,Nosūtītājs, Shop,Veikals, -Sign Up,Pierakstīties, Subsidiary,Filiāle, There is some problem with the file url: {0},Ir dažas problēmas ar faila url: {0}, There were errors while sending email. Please try again.,"Bija kļūdas, nosūtot e-pastu. Lūdzu, mēģiniet vēlreiz.", diff --git a/erpnext/translations/mk.csv b/erpnext/translations/mk.csv index 8ecae03adc7e..e01cb70e926d 100644 --- a/erpnext/translations/mk.csv +++ b/erpnext/translations/mk.csv @@ -3505,7 +3505,6 @@ Recipient,Примачот, Reviews,Прегледи, Sender,Испраќачот, Shop,Продавница, -Sign Up,Регистрирај се, Subsidiary,Подружница, There is some problem with the file url: {0},Има некој проблем со URL-то на фајл: {0}, There were errors while sending email. Please try again.,Имаше грешка при испраќање на е-мејл. Ве молиме обидете се повторно., diff --git a/erpnext/translations/ml.csv b/erpnext/translations/ml.csv index f649e6c83b7f..c5a98b6d2560 100644 --- a/erpnext/translations/ml.csv +++ b/erpnext/translations/ml.csv @@ -3505,7 +3505,6 @@ Recipient,സ്വീകർത്താവ്, Reviews,അവലോകനങ്ങൾ, Sender,അയച്ചയാളുടെ, Shop,കട, -Sign Up,സൈൻ അപ്പ് ചെയ്യുക, Subsidiary,സഹായകന്, There is some problem with the file url: {0},ഫയൽ URL ഉള്ള ചില പ്രശ്നം ഉണ്ട്: {0}, There were errors while sending email. Please try again.,ഇമെയിൽ അയയ്ക്കുമ്പോൾ പിശകുകളുണ്ടായിരുന്നു. വീണ്ടും ശ്രമിക്കുക., diff --git a/erpnext/translations/mr.csv b/erpnext/translations/mr.csv index 38effc1b15a5..21aaa3f8bbf9 100644 --- a/erpnext/translations/mr.csv +++ b/erpnext/translations/mr.csv @@ -3505,7 +3505,6 @@ Recipient,प्राप्तकर्ता, Reviews,पुनरावलोकने, Sender,प्रेषक, Shop,दुकान, -Sign Up,साइन अप करा, Subsidiary,उपकंपनी, There is some problem with the file url: {0},फाइल URL सह काही समस्या आहे: {0}, There were errors while sending email. Please try again.,ई-मेल पाठविताना त्रुटी होत्या. कृपया पुन्हा प्रयत्न करा., diff --git a/erpnext/translations/ms.csv b/erpnext/translations/ms.csv index 4ee650b10462..5a3d986f5b58 100644 --- a/erpnext/translations/ms.csv +++ b/erpnext/translations/ms.csv @@ -3505,7 +3505,6 @@ Recipient,Penerima, Reviews,Ulasan, Sender,Penghantar, Shop,Kedai, -Sign Up,Daftar, Subsidiary,Anak Syarikat, There is some problem with the file url: {0},Terdapat beberapa masalah dengan url fail: {0}, There were errors while sending email. Please try again.,Terdapat ralat semasa menghantar e-mel. Sila cuba sekali lagi., diff --git a/erpnext/translations/my.csv b/erpnext/translations/my.csv index f0d216bbc73f..7638e762ba47 100644 --- a/erpnext/translations/my.csv +++ b/erpnext/translations/my.csv @@ -3505,7 +3505,6 @@ Recipient,လက်လံသူ, Reviews,reviews, Sender,ပေးပို့သူ, Shop,ကုန်ဆိုင်, -Sign Up,အကောင့်ဖွင့်ရန်, Subsidiary,ထောက်ခံသောကုမ္ပဏီ, There is some problem with the file url: {0},ဖိုင်ကို url နှင့်အတူအချို့သောပြဿနာကိုလည်းရှိ၏: {0}, There were errors while sending email. Please try again.,အီးမေးလ်ပို့သည့်အနေဖြင့်အမှားများရှိကြ၏။ ထပ်ကြိုးစားပါ။, diff --git a/erpnext/translations/nl.csv b/erpnext/translations/nl.csv index 6ec43a059253..b559c694094b 100644 --- a/erpnext/translations/nl.csv +++ b/erpnext/translations/nl.csv @@ -3505,7 +3505,6 @@ Recipient,Ontvanger, Reviews,beoordelingen, Sender,Afzender, Shop,Winkelen, -Sign Up,Inschrijven, Subsidiary,Dochteronderneming, There is some problem with the file url: {0},Er is een probleem met het bestand url: {0}, There were errors while sending email. Please try again.,Er zijn fouten opgetreden tijdens het versturen van e-mail. Probeer het opnieuw ., diff --git a/erpnext/translations/no.csv b/erpnext/translations/no.csv index df87e81db9ff..20b8916eaf26 100644 --- a/erpnext/translations/no.csv +++ b/erpnext/translations/no.csv @@ -3505,7 +3505,6 @@ Recipient,Mottaker, Reviews,anmeldelser, Sender,Avsender, Shop,Butikk, -Sign Up,Melde deg på, Subsidiary,Datterselskap, There is some problem with the file url: {0},Det er noe problem med filen url: {0}, There were errors while sending email. Please try again.,"Det oppstod feil under sending epost. Vær så snill, prøv på nytt.", diff --git a/erpnext/translations/pl.csv b/erpnext/translations/pl.csv index be81e29d7f17..4a93d4987567 100644 --- a/erpnext/translations/pl.csv +++ b/erpnext/translations/pl.csv @@ -3505,7 +3505,6 @@ Recipient,Adresat, Reviews,Recenzje, Sender,Nadawca, Shop,Sklep, -Sign Up,Zapisz się, Subsidiary,Pomocniczy, There is some problem with the file url: {0},Jest jakiś problem z adresem URL pliku: {0}, There were errors while sending email. Please try again.,Wystąpiły błędy podczas wysyłki e-mail. Proszę spróbuj ponownie., diff --git a/erpnext/translations/ps.csv b/erpnext/translations/ps.csv index 68add60cc93d..26cd0a9cbcb8 100644 --- a/erpnext/translations/ps.csv +++ b/erpnext/translations/ps.csv @@ -3505,7 +3505,6 @@ Recipient,دترلاسه کوونکي, Reviews,بیاکتنې, Sender,استوونکی, Shop,شاپ, -Sign Up,ګډون کول, Subsidiary,د متمم, There is some problem with the file url: {0},شتون سره د دوتنې url ځينو ستونزه دا ده: {0}, There were errors while sending email. Please try again.,ایمیل استولو په داسې حال کې تېروتنې شوې دي. لطفا بیا هڅه وکړې., diff --git a/erpnext/translations/pt-BR.csv b/erpnext/translations/pt-BR.csv index cc1c6af91374..edaaddd6a78f 100644 --- a/erpnext/translations/pt-BR.csv +++ b/erpnext/translations/pt-BR.csv @@ -3505,7 +3505,6 @@ Recipient,Destinatário, Reviews,Revisões, Sender,Remetente, Shop,Loja, -Sign Up,Inscrever-se, Subsidiary,Subsidiário, There is some problem with the file url: {0},Há algum problema com a url do arquivo: {0}, There were errors while sending email. Please try again.,Ocorreram erros durante o envio de email. Por favor tente novamente., diff --git a/erpnext/translations/pt.csv b/erpnext/translations/pt.csv index 43bf227e673e..5cc486d8be2d 100644 --- a/erpnext/translations/pt.csv +++ b/erpnext/translations/pt.csv @@ -3505,7 +3505,6 @@ Recipient,Destinatário, Reviews,Rever, Sender,Remetente, Shop,Loja, -Sign Up,Inscrever-se, Subsidiary,Subsidiário, There is some problem with the file url: {0},Há algum problema com a url do arquivo: {0}, There were errors while sending email. Please try again.,"Ocorreram erros durante o envio de e-mail. Por favor, tente novamente.", diff --git a/erpnext/translations/ro.csv b/erpnext/translations/ro.csv index 3aab431cdd8d..8f97d072021d 100644 --- a/erpnext/translations/ro.csv +++ b/erpnext/translations/ro.csv @@ -3505,7 +3505,6 @@ Recipient,Destinatar, Reviews,opinii, Sender,Expeditor, Shop,Magazin, -Sign Up,Inscrie-te, Subsidiary,Filială, There is some problem with the file url: {0},Există unele probleme cu URL-ul fișierului: {0}, There were errors while sending email. Please try again.,Au fost erori în timp ce trimiterea de e-mail. Încercaţi din nou., diff --git a/erpnext/translations/ru.csv b/erpnext/translations/ru.csv index 662346f2e5dc..1fc37ddedb6b 100644 --- a/erpnext/translations/ru.csv +++ b/erpnext/translations/ru.csv @@ -3503,7 +3503,6 @@ Recipient,Сторона-реципиент, Reviews,Отзывы, Sender,Отправитель, Shop,Магазин, -Sign Up,Регистрация, Subsidiary,Филиал, There is some problem with the file url: {0},Существует некоторая проблема с файловой URL: {0}, There were errors while sending email. Please try again.,"При отправке электронной почты возникли ошибки. Пожалуйста, попробуйте ещё раз.", diff --git a/erpnext/translations/rw.csv b/erpnext/translations/rw.csv index 6c2b5ddb1008..741f11792f0d 100644 --- a/erpnext/translations/rw.csv +++ b/erpnext/translations/rw.csv @@ -3505,7 +3505,6 @@ Recipient,Uwakiriye, Reviews,Isubiramo, Sender,Kohereza, Shop,Amaduka, -Sign Up,Iyandikishe, Subsidiary,Inkunga, There is some problem with the file url: {0},Hano hari ikibazo na dosiye url: {0}, There were errors while sending email. Please try again.,Habayeho amakosa mugihe wohereje imeri. Nyamuneka gerageza., diff --git a/erpnext/translations/si.csv b/erpnext/translations/si.csv index 5b7823589a48..e5ea9bff7b1f 100644 --- a/erpnext/translations/si.csv +++ b/erpnext/translations/si.csv @@ -3505,7 +3505,6 @@ Recipient,පලමු වරට පිරිනැමු, Reviews,සමාලෝචන, Sender,යවන්නාගේ, Shop,වෙළඳසැල්, -Sign Up,ලියාපදිංචි වන්න, Subsidiary,අනුබද්ධිත සමාගමක්, There is some problem with the file url: {0},ගොනුව url එක සමග යම් ගැටළුවක් වේ: {0}, There were errors while sending email. Please try again.,ඊ-තැපැල් යැවීම අතර දෝෂ ඇතිවිය. කරුණාකර නැවත උත්සාහ කරන්න., diff --git a/erpnext/translations/sk.csv b/erpnext/translations/sk.csv index 446e0be58b7e..d16c49201a37 100644 --- a/erpnext/translations/sk.csv +++ b/erpnext/translations/sk.csv @@ -3505,7 +3505,6 @@ Recipient,Príjemca, Reviews,recenzia, Sender,Odosielateľ, Shop,Obchod, -Sign Up,Prihlásiť Se, Subsidiary,Dceřiný, There is some problem with the file url: {0},Tam je nejaký problém s URL súboru: {0}, There were errors while sending email. Please try again.,Narazili jsme na problémy při odesílání emailu. Prosím zkuste to znovu., diff --git a/erpnext/translations/sl.csv b/erpnext/translations/sl.csv index 8b8ed0111472..08901606c4fc 100644 --- a/erpnext/translations/sl.csv +++ b/erpnext/translations/sl.csv @@ -3505,7 +3505,6 @@ Recipient,Prejemnik, Reviews,Ocene, Sender,Sender, Shop,Trgovina, -Sign Up,Prijavite se, Subsidiary,Hčerinska družba, There is some problem with the file url: {0},Obstaja nekaj problem z datoteko url: {0}, There were errors while sending email. Please try again.,Tam so bile napake pri pošiljanju e-pošte. Prosim poskusi znova., diff --git a/erpnext/translations/sq.csv b/erpnext/translations/sq.csv index 6f4f8e013590..987211ab7a85 100644 --- a/erpnext/translations/sq.csv +++ b/erpnext/translations/sq.csv @@ -3505,7 +3505,6 @@ Recipient,Marrës, Reviews,Shqyrtime, Sender,Dërgues, Shop,Dyqan, -Sign Up,Regjistrohuni, Subsidiary,Ndihmës, There is some problem with the file url: {0},Ka disa probleme me file url: {0}, There were errors while sending email. Please try again.,Ka pasur gabime ndërsa dërguar një email. Ju lutemi provoni përsëri., diff --git a/erpnext/translations/sr.csv b/erpnext/translations/sr.csv index 853c6f3cccee..f6cbb57d201d 100644 --- a/erpnext/translations/sr.csv +++ b/erpnext/translations/sr.csv @@ -3505,7 +3505,6 @@ Recipient,Прималац, Reviews,Коментара, Sender,Пошиљалац, Shop,Продавница, -Sign Up,Пријави се, Subsidiary,Подружница, There is some problem with the file url: {0},Постоји неки проблем са Филе УРЛ: {0}, There were errors while sending email. Please try again.,"Были ошибки при отправке электронной почты . Пожалуйста, попробуйте еще раз .", diff --git a/erpnext/translations/sv.csv b/erpnext/translations/sv.csv index 2a4d6b1fbd34..ec443e90be65 100644 --- a/erpnext/translations/sv.csv +++ b/erpnext/translations/sv.csv @@ -3505,7 +3505,6 @@ Recipient,Mottagare, Reviews,recensioner, Sender,Avsändare, Shop,Shop, -Sign Up,Bli Medlem, Subsidiary,Dotterbolag, There is some problem with the file url: {0},Det finns vissa problem med filen url: {0}, There were errors while sending email. Please try again.,Det fanns fel när du skickar e-post. Var god försök igen., diff --git a/erpnext/translations/sw.csv b/erpnext/translations/sw.csv index 234d33e1066d..989f8b06c88c 100644 --- a/erpnext/translations/sw.csv +++ b/erpnext/translations/sw.csv @@ -3505,7 +3505,6 @@ Recipient,Mpokeaji, Reviews,Maoni, Sender,Sender, Shop,Duka, -Sign Up,Ingia, Subsidiary,Msaidizi, There is some problem with the file url: {0},Kuna tatizo fulani na url ya faili: {0}, There were errors while sending email. Please try again.,Kulikuwa na makosa wakati wa kutuma barua pepe. Tafadhali jaribu tena., diff --git a/erpnext/translations/ta.csv b/erpnext/translations/ta.csv index e7384b36efc9..7314d4be513d 100644 --- a/erpnext/translations/ta.csv +++ b/erpnext/translations/ta.csv @@ -3505,7 +3505,6 @@ Recipient,பெறுபவர், Reviews,விமர்சனங்கள், Sender,அனுப்புபவர், Shop,ஷாப்பிங், -Sign Up,பதிவு செய்யவும், Subsidiary,உப, There is some problem with the file url: {0},கோப்பு URL சில சிக்கல் உள்ளது: {0}, There were errors while sending email. Please try again.,மின்னஞ்சல் அனுப்பும் போது பிழைகள் இருந்தன . மீண்டும் முயற்சிக்கவும்., diff --git a/erpnext/translations/te.csv b/erpnext/translations/te.csv index cd14a7731088..3fb32dc093df 100644 --- a/erpnext/translations/te.csv +++ b/erpnext/translations/te.csv @@ -3505,7 +3505,6 @@ Recipient,స్వీకర్త, Reviews,సమీక్షలు, Sender,పంపినవారు, Shop,షాప్, -Sign Up,చేరడం, Subsidiary,అనుబంధ, There is some problem with the file url: {0},ఫైల్ URL కొన్ని సమస్య ఉంది: {0}, There were errors while sending email. Please try again.,ఇమెయిల్ పంపడం అయితే కొన్ని లోపాలు ఉన్నాయి. మళ్ళి ప్రయత్నించండి., diff --git a/erpnext/translations/th.csv b/erpnext/translations/th.csv index 4ab59bc8e1aa..e371aed72844 100644 --- a/erpnext/translations/th.csv +++ b/erpnext/translations/th.csv @@ -3505,7 +3505,6 @@ Recipient,ผู้รับ, Reviews,ความคิดเห็น, Sender,ผู้ส่ง, Shop,ร้านค้า, -Sign Up,ลงชื่อ, Subsidiary,บริษัท สาขา, There is some problem with the file url: {0},มีปัญหากับ url ของไฟล์เป็น: {0}, There were errors while sending email. Please try again.,มีข้อผิดพลาด ในขณะที่ มี การส่งอีเมล์ โปรดลองอีกครั้ง, diff --git a/erpnext/translations/tr.csv b/erpnext/translations/tr.csv index b65494ce32b0..66ea69a1b5b5 100644 --- a/erpnext/translations/tr.csv +++ b/erpnext/translations/tr.csv @@ -3505,7 +3505,6 @@ Recipient,Alıcı, Reviews,yorumlar, Sender,Gönderici, Shop,Mağaza, -Sign Up,Kaydol, Subsidiary,Yardımcı, There is some problem with the file url: {0},Dosya url ile bazı sorun var: {0}, There were errors while sending email. Please try again.,E-posta gönderirken hatalar vardı. Lütfen tekrar deneyin., diff --git a/erpnext/translations/uk.csv b/erpnext/translations/uk.csv index 4e2f63f870e4..83c8d41cb70f 100644 --- a/erpnext/translations/uk.csv +++ b/erpnext/translations/uk.csv @@ -3505,7 +3505,6 @@ Recipient,Одержувач, Reviews,Відгуки, Sender,Відправник, Shop,Магазин, -Sign Up,Зареєструватися, Subsidiary,Дочірня компанія, There is some problem with the file url: {0},Існує деяка проблема з файлової URL: {0}, There were errors while sending email. Please try again.,Були помилки при відправленні електронної пошти. Будь ласка спробуйте ще раз., diff --git a/erpnext/translations/ur.csv b/erpnext/translations/ur.csv index db6518e86b03..8cf0707e3656 100644 --- a/erpnext/translations/ur.csv +++ b/erpnext/translations/ur.csv @@ -3505,7 +3505,6 @@ Recipient,وصول کنندہ, Reviews,جائزہ, Sender,مرسل, Shop,دکان, -Sign Up,سائن اپ, Subsidiary,ماتحت, There is some problem with the file url: {0},فائل URL کے ساتھ کچھ مسئلہ ہے: {0}, There were errors while sending email. Please try again.,ای میل بھیجنے جبکہ غلطیاں تھیں. برائے مہربانی دوبارہ کوشش کریں., diff --git a/erpnext/translations/uz.csv b/erpnext/translations/uz.csv index bb64a15f2b70..1e503769cbd2 100644 --- a/erpnext/translations/uz.csv +++ b/erpnext/translations/uz.csv @@ -3505,7 +3505,6 @@ Recipient,Qabul qiluvchi, Reviews,Sharhlar, Sender,Yuboruvchi, Shop,Do'kon, -Sign Up,Ro'yxatdan o'tish, Subsidiary,Sho'ba korxonasi, There is some problem with the file url: {0},Fayl urlida muammo mavjud: {0}, There were errors while sending email. Please try again.,"E-pochtani yuborishda xatolik yuz berdi. Iltimos, yana bir bor urinib ko'ring.", diff --git a/erpnext/translations/vi.csv b/erpnext/translations/vi.csv index 7317b4b02750..28fecb64271c 100644 --- a/erpnext/translations/vi.csv +++ b/erpnext/translations/vi.csv @@ -3505,7 +3505,6 @@ Recipient,Người nhận, Reviews,Nhận xét, Sender,Người gửi, Shop,Cửa hàng, -Sign Up,Đăng ký, Subsidiary,Công ty con, There is some problem with the file url: {0},Có một số vấn đề với các url của tệp: {0}, There were errors while sending email. Please try again.,Có lỗi khi gửi email. Vui lòng thử lại sau., diff --git a/erpnext/translations/zh.csv b/erpnext/translations/zh.csv index 228ec39ddde7..9ed7420f4630 100644 --- a/erpnext/translations/zh.csv +++ b/erpnext/translations/zh.csv @@ -3505,7 +3505,6 @@ Recipient,收件人, Reviews,评测, Sender,发件人, Shop,商店, -Sign Up,注册, Subsidiary,子机构, There is some problem with the file url: {0},有一些问题与文件的URL:{0}, There were errors while sending email. Please try again.,邮件发送曾发生错误,请重试。, diff --git a/erpnext/translations/zh_tw.csv b/erpnext/translations/zh_tw.csv index 1b7e18637d33..ef4967056773 100644 --- a/erpnext/translations/zh_tw.csv +++ b/erpnext/translations/zh_tw.csv @@ -3282,7 +3282,6 @@ Recipient,接受者, Reviews,評測, Sender,寄件人, Shop,店, -Sign Up,註冊, Subsidiary,副, There is some problem with the file url: {0},有一些問題與文件的URL:{0}, There were errors while sending email. Please try again.,還有在發送電子郵件是錯誤的。請再試一次。,