diff --git a/erpnext/accounts/doctype/account/account_tree.js b/erpnext/accounts/doctype/account/account_tree.js
index 7ad7cfca8be233b6bcad3e6f8cb65ebf72e85d23..e5cdc0556dc8a245682dd9d7b3597f4860ed3fd8 100644
--- a/erpnext/accounts/doctype/account/account_tree.js
+++ b/erpnext/accounts/doctype/account/account_tree.js
@@ -77,7 +77,7 @@ frappe.treeview_settings["Account"] = {
// show Dr if positive since balance is calculated as debit - credit else show Cr
const balance = account.balance_in_account_currency || account.balance;
- const dr_or_cr = balance > 0 ? "Dr": "Cr";
+ const dr_or_cr = balance > 0 ? __("Dr"): __("Cr");
const format = (value, currency) => format_currency(Math.abs(value), currency);
if (account.balance!==undefined) {
diff --git a/erpnext/change_log/fr/v4/v4_2_0.md b/erpnext/change_log/fr/v4/v4_2_0.md
new file mode 100644
index 0000000000000000000000000000000000000000..ca20bf7d2472fbee120b91a4170355e20934d965
--- /dev/null
+++ b/erpnext/change_log/fr/v4/v4_2_0.md
@@ -0,0 +1,12 @@
+Bienvenue sur la version 4 de Dokos
+
+
+Retrouvez le détail des nouveautés et changements apportés sur notre blog
+
+
+Nous espérons que cette nouvelle version améliorera votre usage de la plateforme au quotidien.
+
+Merci encore d'utiliser Dokos 🥰
+
+
+*Pour plus de détails, n'hésitez pas à consulter les notes de version de chaque application dans la documentation*
\ No newline at end of file
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index 5ea40f88ed1b529ea14076a9bbfbf8d887034cba..f5a41afb95dfe1a41c2a48ca420c79be847698df 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -433,6 +433,9 @@ class SellingController(StockController):
items = self.get("items") + (self.get("packed_items") or [])
for d in items:
+ if not frappe.get_cached_value("Item", d.item_code, "is_stock_item"):
+ continue
+
if not self.get("return_against") or (
get_valuation_method(d.item_code) == "Moving Average" and self.get("is_return")
):
diff --git a/erpnext/startup/leaderboard.py b/erpnext/startup/leaderboard.py
index a938acfa2cebb55015bd4dbed71042560d9a5a09..7e5a8c4eec6ddea2f91a4465729298b50fb9873d 100644
--- a/erpnext/startup/leaderboard.py
+++ b/erpnext/startup/leaderboard.py
@@ -1,4 +1,5 @@
import frappe
+from frappe import _
from frappe.utils.deprecations import deprecated
@@ -63,9 +64,6 @@ def get_leaderboards():
},
}
- leaderboard_file = frappe.get_pymodule_path("erpnext.startup", "leaderboard.py")
- send_translations(get_dict("pyfile", leaderboard_file))
-
return leaderboards
diff --git a/erpnext/stock/doctype/delivery_note/test_delivery_note.py b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
index 3abd1d9e5ed1931fc8b134be323e4de47ed986d2..dae42895edbf6d6a16ed3cdda7775eb7fc094e50 100644
--- a/erpnext/stock/doctype/delivery_note/test_delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/test_delivery_note.py
@@ -1518,6 +1518,25 @@ class TestDeliveryNote(FrappeTestCase):
"Stock Settings", "auto_create_serial_and_batch_bundle_for_outward", 0
)
+ def test_internal_transfer_for_non_stock_item(self):
+ from erpnext.selling.doctype.customer.test_customer import create_internal_customer
+ from erpnext.selling.doctype.sales_order.sales_order import make_delivery_note
+
+ item = make_item(properties={"is_stock_item": 0}).name
+ warehouse = "_Test Warehouse - _TC"
+ target = "Stores - _TC"
+ company = "_Test Company"
+ customer = create_internal_customer(represents_company=company)
+ rate = 100
+
+ so = make_sales_order(item_code=item, qty=1, rate=rate, customer=customer, warehouse=warehouse)
+ dn = make_delivery_note(so.name)
+ dn.items[0].target_warehouse = target
+ dn.save().submit()
+
+ self.assertEqual(so.items[0].rate, rate)
+ self.assertEqual(dn.items[0].rate, so.items[0].rate)
+
def create_delivery_note(**args):
dn = frappe.new_doc("Delivery Note")
diff --git a/erpnext/translations/de.csv b/erpnext/translations/de.csv
index 8d1642f91a256ab890d9ed482a77bb5cb8556091..b4d591de2cda90cc5bbd6db30367d051c302936a 100644
--- a/erpnext/translations/de.csv
+++ b/erpnext/translations/de.csv
@@ -600,7 +600,7 @@ Course Code: ,Kurscode:,
Course Enrollment {0} does not exists,Die Kursanmeldung {0} existiert nicht,
Course Schedule,Kurstermine,
Course: ,Kurs:,
-Cr,Haben,
+Cr,H,
Create,Erstellen,
Create BOM,Stückliste anlegen,
Create Delivery Trip,Erstelle Auslieferungsfahrt,
@@ -3410,7 +3410,7 @@ Do you want to submit the material request,Möchten Sie die Materialanfrage einr
Doctype,DocType,
Document {0} successfully uncleared,Dokument {0} wurde nicht erfolgreich gelöscht,
Download Template,Vorlage herunterladen,
-Dr,Soll,
+Dr,S,
Due Date,Fälligkeitsdatum,
Duplicate,Duplizieren,
Duplicate Project with Tasks,Projekt mit Aufgaben duplizieren,
@@ -7473,6 +7473,7 @@ Default Stock UOM,Standardlagermaßeinheit,
Sample Retention Warehouse,Beispiel Retention Warehouse,
Default Valuation Method,Standard-Bewertungsmethode,
Show Barcode Field,Anzeigen Barcode-Feld,
+Show Balances in Chart Of Accounts,Saldo in Kontenplan anzeigen,
Convert Item Description to Clean HTML,Elementbeschreibung in HTML bereinigen,
Allow Negative Stock,Negativen Lagerbestand zulassen,
Automatically Set Serial Nos based on FIFO,Automatisch Seriennummern auf Basis FIFO einstellen,
@@ -8923,7 +8924,6 @@ Column {0},Spalte {0},
Field Mapping,Feldzuordnung,
Not Specified,Keine Angabe,
Update Type,Aktualisierungsart,
-Dr,Soll,
End Time,Endzeit,
Fetching...,Abrufen ...,
"It seems that there is an issue with the server's stripe configuration. In case of failure, the amount will get refunded to your account.","Es scheint, dass ein Problem mit der Stripe-Konfiguration des Servers vorliegt. Im Falle eines Fehlers wird der Betrag Ihrem Konto gutgeschrieben.",