Merge pull request #32522 from deepeshgarg007/tax_withholding_related_fixes
fix: Tax withholding related fixes
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.js b/erpnext/accounts/doctype/journal_entry/journal_entry.js
index 7af41f3..763e2e6 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.js
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.js
@@ -173,8 +173,8 @@
var update_jv_details = function(doc, r) {
$.each(r, function(i, d) {
var row = frappe.model.add_child(doc, "Journal Entry Account", "accounts");
- row.account = d.account;
- row.balance = d.balance;
+ frappe.model.set_value(row.doctype, row.name, "account", d.account)
+ frappe.model.set_value(row.doctype, row.name, "balance", d.balance)
});
refresh_field("accounts");
}
diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.json b/erpnext/accounts/doctype/pos_invoice/pos_invoice.json
index 6f8b382..eedaaaf 100644
--- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.json
+++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.json
@@ -343,7 +343,8 @@
"no_copy": 1,
"options": "POS Invoice",
"print_hide": 1,
- "read_only": 1
+ "read_only": 1,
+ "search_index": 1
},
{
"default": "0",
@@ -1553,7 +1554,7 @@
"icon": "fa fa-file-text",
"is_submittable": 1,
"links": [],
- "modified": "2022-09-27 13:00:24.166684",
+ "modified": "2022-09-30 03:49:50.455199",
"modified_by": "Administrator",
"module": "Accounts",
"name": "POS Invoice",
diff --git a/erpnext/accounts/doctype/pos_invoice/pos_invoice.py b/erpnext/accounts/doctype/pos_invoice/pos_invoice.py
index fbe0ef3..54a3e93 100644
--- a/erpnext/accounts/doctype/pos_invoice/pos_invoice.py
+++ b/erpnext/accounts/doctype/pos_invoice/pos_invoice.py
@@ -743,7 +743,3 @@
]:
payment_mode = get_mode_of_payment_info(mode_of_payment, doc.company)
append_payment(payment_mode[0])
-
-
-def on_doctype_update():
- frappe.db.add_index("POS Invoice", ["return_against"])
diff --git a/erpnext/e_commerce/doctype/website_item/website_item.json b/erpnext/e_commerce/doctype/website_item/website_item.json
index c5775ee..6556eab 100644
--- a/erpnext/e_commerce/doctype/website_item/website_item.json
+++ b/erpnext/e_commerce/doctype/website_item/website_item.json
@@ -188,7 +188,8 @@
"in_list_view": 1,
"label": "Item Group",
"options": "Item Group",
- "read_only": 1
+ "read_only": 1,
+ "search_index": 1
},
{
"default": "1",
@@ -234,7 +235,8 @@
"fieldname": "brand",
"fieldtype": "Link",
"label": "Brand",
- "options": "Brand"
+ "options": "Brand",
+ "search_index": 1
},
{
"collapsible": 1,
@@ -346,7 +348,7 @@
"index_web_pages_for_search": 1,
"links": [],
"make_attachments_public": 1,
- "modified": "2022-09-13 04:05:11.614087",
+ "modified": "2022-09-30 04:01:52.090732",
"modified_by": "Administrator",
"module": "E-commerce",
"name": "Website Item",
diff --git a/erpnext/e_commerce/doctype/website_item/website_item.py b/erpnext/e_commerce/doctype/website_item/website_item.py
index c0f8c79..3e5d5f7 100644
--- a/erpnext/e_commerce/doctype/website_item/website_item.py
+++ b/erpnext/e_commerce/doctype/website_item/website_item.py
@@ -403,9 +403,6 @@
# since route is a Text column, it needs a length for indexing
frappe.db.add_index("Website Item", ["route(500)"])
- frappe.db.add_index("Website Item", ["item_group"])
- frappe.db.add_index("Website Item", ["brand"])
-
def check_if_user_is_customer(user=None):
from frappe.contacts.doctype.contact.contact import get_contact_name
diff --git a/erpnext/patches/v14_0/migrate_remarks_from_gl_to_payment_ledger.py b/erpnext/patches/v14_0/migrate_remarks_from_gl_to_payment_ledger.py
index 062d24b..fd2a2a3 100644
--- a/erpnext/patches/v14_0/migrate_remarks_from_gl_to_payment_ledger.py
+++ b/erpnext/patches/v14_0/migrate_remarks_from_gl_to_payment_ledger.py
@@ -3,6 +3,29 @@
from frappe.utils import create_batch
+def remove_duplicate_entries(pl_entries):
+ unique_vouchers = set()
+ for x in pl_entries:
+ unique_vouchers.add(
+ (x.company, x.account, x.party_type, x.party, x.voucher_type, x.voucher_no, x.gle_remarks)
+ )
+
+ entries = []
+ for x in unique_vouchers:
+ entries.append(
+ frappe._dict(
+ company=x[0],
+ account=x[1],
+ party_type=x[2],
+ party=x[3],
+ voucher_type=x[4],
+ voucher_no=x[5],
+ gle_remarks=x[6],
+ )
+ )
+ return entries
+
+
def execute():
if frappe.reload_doc("accounts", "doctype", "payment_ledger_entry"):
@@ -34,6 +57,8 @@
.run(as_dict=True)
)
+ pl_entries = remove_duplicate_entries(pl_entries)
+
if pl_entries:
# split into multiple batches, update and commit for each batch
batch_size = 1000
diff --git a/erpnext/public/scss/order-page.scss b/erpnext/public/scss/order-page.scss
new file mode 100644
index 0000000..6f5fe5d
--- /dev/null
+++ b/erpnext/public/scss/order-page.scss
@@ -0,0 +1,115 @@
+#page-order {
+ .main-column {
+ .page-content-wrapper {
+
+ .breadcrumb-container {
+ @media screen and (min-width: 567px) {
+ padding-left: var(--padding-sm);
+ }
+ }
+
+ .container.my-4 {
+ background-color: var(--fg-color);
+
+ @media screen and (min-width: 567px) {
+ padding: 1.25rem 1.5rem;
+ border-radius: var(--border-radius-md);
+ box-shadow: var(--card-shadow);
+ }
+ }
+ }
+ }
+}
+
+.indicator-container {
+ @media screen and (max-width: 567px) {
+ padding-bottom: 0.8rem;
+ }
+}
+
+.order-items {
+ padding: 1.5rem 0;
+ border-bottom: 1px solid var(--border-color);
+ color: var(--gray-700);
+
+ @media screen and (max-width: 567px) {
+ align-items: flex-start !important;
+ }
+ .col-2 {
+ @media screen and (max-width: 567px) {
+ flex: auto;
+ max-width: 28%;
+ }
+ }
+
+ .order-item-name {
+ font-size: var(--text-base);
+ font-weight: 500;
+ }
+
+ .btn:focus,
+ .btn:hover {
+ background-color: var(--control-bg);
+ }
+
+
+ .col-6 {
+ @media screen and (max-width: 567px) {
+ max-width: 100%;
+ }
+
+ &.order-item-name {
+ font-size: var(--text-base);
+ }
+ }
+}
+
+.item-grand-total {
+ font-size: var(--text-base);
+}
+
+.list-item-name,
+.item-total,
+.order-container,
+.order-qty {
+ font-size: var(--text-md);
+}
+
+.d-s-n {
+ @media screen and (max-width: 567px) {
+ display: none;
+ }
+}
+
+.d-l-n {
+ @media screen and (min-width: 567px) {
+ display: none;
+ }
+}
+
+.border-btm {
+ border-bottom: 1px solid var(--border-color);
+}
+
+.order-taxes {
+ display: flex;
+
+ @media screen and (min-width: 567px) {
+ justify-content: flex-end;
+ }
+
+ .col-4 {
+ padding-right: 0;
+
+ .col-8 {
+ padding-left: 0;
+ padding-right: 0;
+ }
+
+ @media screen and (max-width: 567px) {
+ padding-left: 0;
+ flex: auto;
+ max-width: 100%;
+ }
+ }
+}
\ No newline at end of file
diff --git a/erpnext/public/scss/website.scss b/erpnext/public/scss/website.scss
index 9ea8416..b5e97f1 100644
--- a/erpnext/public/scss/website.scss
+++ b/erpnext/public/scss/website.scss
@@ -1,3 +1,4 @@
+@import './order-page';
.filter-options {
max-height: 300px;
@@ -32,19 +33,29 @@
height: 24px;
}
-.website-list .result {
- margin-top: 2rem;
-}
+.website-list {
+ background-color: var(--fg-color);
+ padding: 0 var(--padding-lg);
+ border-radius: var(--border-radius-md);
-.result {
- border-bottom: 1px solid var(--border-color);
+ @media screen and (max-width: 567px) {
+ margin-left: -2rem;
+ }
+
+ &.result {
+ border-bottom: 1px solid var(--border-color);
+ }
}
.transaction-list-item {
padding: 1rem 0;
- border-top: 1px solid var(--border-color);
+ border-bottom: 1px solid var(--border-color);
position: relative;
+ &:only-child, &:last-child {
+ border: 0;
+ }
+
a.transaction-item-link {
position: absolute;
top: 0;
@@ -68,3 +79,13 @@
line-height: 1.3;
}
}
+
+.list-item-name, .item-total {
+ font-size: var(--font-size-sm);
+}
+
+.items-preview {
+ @media screen and (max-width: 567px) {
+ margin-top: 1rem;
+ }
+}
\ No newline at end of file
diff --git a/erpnext/stock/doctype/bin/bin.py b/erpnext/stock/doctype/bin/bin.py
index 548df31..c28f45a 100644
--- a/erpnext/stock/doctype/bin/bin.py
+++ b/erpnext/stock/doctype/bin/bin.py
@@ -37,8 +37,10 @@
self.set_projected_qty()
- self.db_set("reserved_qty_for_production", flt(self.reserved_qty_for_production))
- self.db_set("projected_qty", self.projected_qty)
+ self.db_set(
+ "reserved_qty_for_production", flt(self.reserved_qty_for_production), update_modified=True
+ )
+ self.db_set("projected_qty", self.projected_qty, update_modified=True)
def update_reserved_qty_for_sub_contracting(self, subcontract_doctype="Subcontracting Order"):
# reserved qty
@@ -118,9 +120,9 @@
else:
reserved_qty_for_sub_contract = 0
- self.db_set("reserved_qty_for_sub_contract", reserved_qty_for_sub_contract)
+ self.db_set("reserved_qty_for_sub_contract", reserved_qty_for_sub_contract, update_modified=True)
self.set_projected_qty()
- self.db_set("projected_qty", self.projected_qty)
+ self.db_set("projected_qty", self.projected_qty, update_modified=True)
def on_doctype_update():
@@ -193,4 +195,5 @@
"planned_qty": planned_qty,
"projected_qty": projected_qty,
},
+ update_modified=True,
)
diff --git a/erpnext/stock/doctype/pick_list/pick_list.py b/erpnext/stock/doctype/pick_list/pick_list.py
index adddb41..9c1c7e5 100644
--- a/erpnext/stock/doctype/pick_list/pick_list.py
+++ b/erpnext/stock/doctype/pick_list/pick_list.py
@@ -183,7 +183,7 @@
frappe.throw("Row #{0}: Item Code is Mandatory".format(item.idx))
item_code = item.item_code
reference = item.sales_order_item or item.material_request_item
- key = (item_code, item.uom, item.warehouse, reference)
+ key = (item_code, item.uom, item.warehouse, item.batch_no, reference)
item.idx = None
item.name = None
diff --git a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py
index c470524..d6f9bae 100644
--- a/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py
+++ b/erpnext/stock/doctype/repost_item_valuation/repost_item_valuation.py
@@ -128,6 +128,9 @@
if not frappe.db.exists("Repost Item Valuation", doc.name):
return
+ # This is to avoid TooManyWritesError in case of large reposts
+ frappe.db.MAX_WRITES_PER_TRANSACTION *= 4
+
doc.set_status("In Progress")
if not frappe.flags.in_test:
frappe.db.commit()
diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py
index 5030964..9ca40c3 100644
--- a/erpnext/stock/stock_ledger.py
+++ b/erpnext/stock/stock_ledger.py
@@ -1053,7 +1053,7 @@
updated_values = {"actual_qty": data.qty_after_transaction, "stock_value": data.stock_value}
if data.valuation_rate is not None:
updated_values["valuation_rate"] = data.valuation_rate
- frappe.db.set_value("Bin", bin_name, updated_values)
+ frappe.db.set_value("Bin", bin_name, updated_values, update_modified=True)
def get_previous_sle_of_current_voucher(args, exclude_current_voucher=False):
diff --git a/erpnext/templates/includes/footer/footer_extension.html b/erpnext/templates/includes/footer/footer_extension.html
index c7f0d06..0072dc2 100644
--- a/erpnext/templates/includes/footer/footer_extension.html
+++ b/erpnext/templates/includes/footer/footer_extension.html
@@ -6,7 +6,7 @@
aria-label="{{ _('Your email address...') }}"
aria-describedby="footer-subscribe-button">
<div class="input-group-append">
- <button class="btn btn-sm btn-default"
+ <button class="btn btn-sm btn-secondary pl-3 pr-3 ml-2"
type="button" id="footer-subscribe-button">{{ _("Get Updates") }}</button>
</div>
</div>
diff --git a/erpnext/templates/includes/macros.html b/erpnext/templates/includes/macros.html
index f56dc3a..dc9ee23 100644
--- a/erpnext/templates/includes/macros.html
+++ b/erpnext/templates/includes/macros.html
@@ -1,5 +1,5 @@
{% macro product_image_square(website_image, css_class="") %}
-<div class="product-image product-image-square
+<div class="product-image product-image-square h-100 rounded
{% if not website_image -%} missing-image {%- endif %} {{ css_class }}"
{% if website_image -%}
style="background-image: url('{{ frappe.utils.quoted(website_image) | abs_url }}');"
diff --git a/erpnext/templates/includes/order/order_macros.html b/erpnext/templates/includes/order/order_macros.html
index 3f2c1f2..d95b289 100644
--- a/erpnext/templates/includes/order/order_macros.html
+++ b/erpnext/templates/includes/order/order_macros.html
@@ -3,7 +3,7 @@
{% macro item_name_and_description(d) %}
<div class="row item_name_and_description">
<div class="col-xs-4 col-sm-2 order-image-col">
- <div class="order-image">
+ <div class="order-image h-100">
{% if d.thumbnail or d.image %}
{{ product_image(d.thumbnail or d.image, no_border=True) }}
{% else %}
@@ -18,6 +18,9 @@
<div class="text-muted small item-description">
{{ html2text(d.description) | truncate(140) }}
</div>
+ <span class="text-muted mt-2 d-l-n order-qty">
+ {{ _("Qty ") }}({{ d.get_formatted("qty") }})
+ </span>
</div>
</div>
{% endmacro %}
diff --git a/erpnext/templates/includes/order/order_taxes.html b/erpnext/templates/includes/order/order_taxes.html
index b821e62..0060ab3 100644
--- a/erpnext/templates/includes/order/order_taxes.html
+++ b/erpnext/templates/includes/order/order_taxes.html
@@ -1,84 +1,111 @@
{% if doc.taxes %}
-<tr>
- <td class="text-left" colspan="1">
- {{ _("Net Total") }}
- </td>
- <td class="text-right totals" colspan="3">
- {{ doc.get_formatted("net_total") }}
- </td>
-</tr>
+ <div class="w-100 order-taxes mt-5">
+ <div class="col-4 d-flex border-btm pb-5">
+ <div class="item-grand-total col-8">
+ {{ _("Net Total") }}
+ </div>
+ <div class="item-grand-total col-4 text-right pr-0">
+ {{ doc.get_formatted("net_total") }}
+ </div>
+ </div>
+ </div>
{% endif %}
{% for d in doc.taxes %}
{% if d.base_tax_amount %}
- <tr>
- <td class="text-left" colspan="1">
- {{ d.description }}
- </td>
- <td class="text-right totals" colspan="3">
- {{ d.get_formatted("base_tax_amount") }}
- </td>
- </tr>
+ <div class="order-taxes w-100 mt-5">
+ <div class="col-4 d-flex border-btm pb-5">
+ <div class="item-grand-total col-8">
+ {{ d.description }}
+ </div>
+ <div class="item-grand-total col-4 text-right pr-0">
+ {{ doc.get_formatted("net_total") }}
+ </div>
+ </div>
+ </div>
{% endif %}
{% endfor %}
{% if doc.doctype == 'Quotation' %}
{% if doc.coupon_code %}
- <tr>
- <td class="text-left total-discount" colspan="1">
- {{ _("Savings") }}
- </td>
- <td class="text-right tot_quotation_discount total-discount totals" colspan="3">
- {% set tot_quotation_discount = [] %}
- {%- for item in doc.items -%}
- {% if tot_quotation_discount.append((((item.price_list_rate * item.qty)
- * item.discount_percentage) / 100)) %}
- {% endif %}
- {% endfor %}
- {{ frappe.utils.fmt_money((tot_quotation_discount | sum),currency=doc.currency) }}
- </td>
- </tr>
+ <div class="w-100 mt-5 order-taxes font-weight-bold">
+ <div class="col-4 d-flex border-btm pb-5">
+ <div class="item-grand-total col-8">
+ {{ _("Savings") }}
+ </div>
+ <div class="item-grand-total col-4 text-right pr-0">
+ {% set tot_quotation_discount = [] %}
+ {%- for item in doc.items -%}
+ {% if tot_quotation_discount.append((((item.price_list_rate * item.qty)
+ * item.discount_percentage) / 100)) %}
+ {% endif %}
+ {% endfor %}
+ {{ frappe.utils.fmt_money((tot_quotation_discount | sum),currency=doc.currency) }} </div>
+ </div>
+ </div>
{% endif %}
{% endif %}
{% if doc.doctype == 'Sales Order' %}
{% if doc.coupon_code %}
- <tr>
- <td class="text-left total-discount" colspan="2" style="padding-right: 2rem;">
- {{ _("Applied Coupon Code") }}
- </td>
- <td class="text-right total-discount">
- <span>
- {%- for row in frappe.get_all(doctype="Coupon Code",
- fields=["coupon_code"], filters={ "name":doc.coupon_code}) -%}
- <span>{{ row.coupon_code }}</span>
- {% endfor %}
- </span>
- </td>
- </tr>
- <tr>
- <td class="text-left total-discount" colspan="2">
- {{ _("Savings") }}
- </td>
- <td class="text-right total-discount">
- <span>
- {% set tot_SO_discount = [] %}
- {%- for item in doc.items -%}
- {% if tot_SO_discount.append((((item.price_list_rate * item.qty)
- * item.discount_percentage) / 100)) %}{% endif %}
- {% endfor %}
- {{ frappe.utils.fmt_money((tot_SO_discount | sum),currency=doc.currency) }}
- </span>
- </td>
- </tr>
+ <div class="w-100 order-taxes mt-5">
+ <div class="col-4 d-flex border-btm pb-5">
+ <div class="item-grand-total col-8">
+ {{ _("Total Amount") }}
+ </div>
+ <div class="item-grand-total col-4 text-right pr-0">
+ <span>
+ {% set total_amount = [] %}
+ {%- for item in doc.items -%}
+ {% if total_amount.append((item.price_list_rate * item.qty)) %}{% endif %}
+ {% endfor %}
+ {{ frappe.utils.fmt_money((total_amount | sum),currency=doc.currency) }}
+ </span>
+ </div>
+ </div>
+ </div>
+ <div class="order-taxes w-100 mt-5">
+ <div class="col-4 d-flex">
+ <div class="item-grand-total col-8">
+ {{ _("Applied Coupon Code") }}
+ </div>
+ <div class="item-grand-total col-4 text-right pr-0">
+ <span>
+ {%- for row in frappe.get_all(doctype="Coupon Code",
+ fields=["coupon_code"], filters={ "name":doc.coupon_code}) -%}
+ <span>{{ row.coupon_code }}</span>
+ {% endfor %}
+ </span>
+ </div>
+ </div>
+ </div>
+ <div class="order-taxes mt-5">
+ <div class="col-4 d-flex border-btm pb-5">
+ <div class="item-grand-total col-8">
+ {{ _("Savings") }}
+ </div>
+ <div class="item-grand-total col-4 text-right pr-0">
+ <span>
+ {% set tot_SO_discount = [] %}
+ {%- for item in doc.items -%}
+ {% if tot_SO_discount.append((((item.price_list_rate * item.qty)
+ * item.discount_percentage) / 100)) %}{% endif %}
+ {% endfor %}
+ {{ frappe.utils.fmt_money((tot_SO_discount | sum),currency=doc.currency) }}
+ </span>
+ </div>
+ </div>
+ </div>
{% endif %}
{% endif %}
-<tr>
- <th class="text-left item-grand-total" colspan="1">
- {{ _("Grand Total") }}
- </th>
- <th class="text-right item-grand-total totals" colspan="3">
- {{ doc.get_formatted("grand_total") }}
- </th>
-</tr>
+<div class="w-100 mt-5 order-taxes font-weight-bold">
+ <div class="col-4 d-flex">
+ <div class="item-grand-total col-8">
+ {{ _("Grand Total") }}
+ </div>
+ <div class="item-grand-total col-4 text-right pr-0">
+ {{ doc.get_formatted("grand_total") }}
+ </div>
+ </div>
+</div>
diff --git a/erpnext/templates/includes/transaction_row.html b/erpnext/templates/includes/transaction_row.html
index 3cfb8d8..72d498c 100644
--- a/erpnext/templates/includes/transaction_row.html
+++ b/erpnext/templates/includes/transaction_row.html
@@ -1,20 +1,22 @@
<div class="web-list-item transaction-list-item">
- <div class="row">
+ <div class="row align-items-center">
<div class="col-sm-4">
- <span class="indicator small {{ doc.indicator_color or ("blue" if doc.docstatus==1 else "gray") }}">
- {{ doc.name }}</span>
+ <span class="list-item-name font-weight-bold">{{ doc.name }}</span>
<div class="small text-muted transaction-time"
title="{{ frappe.utils.format_datetime(doc.modified, "medium") }}">
{{ frappe.utils.global_date_format(doc.modified) }}
</div>
</div>
- <div class="col-sm-5">
+ <div class="col-sm-3">
+ <span class="indicator-pill {{ doc.indicator_color or ("blue" if doc.docstatus==1 else "gray") }} list-item-status">{{doc.status}}</span>
+ </div>
+ <div class="col-sm-2">
<div class="small text-muted items-preview ellipsis ellipsis-width">
{{ doc.items_preview }}
</div>
</div>
{% if doc.get('grand_total') %}
- <div class="col-sm-3 text-right bold">
+ <div class="col-sm-3 text-right font-weight-bold item-total">
{{ doc.get_formatted("grand_total") }}
</div>
{% endif %}
diff --git a/erpnext/templates/pages/demo.html b/erpnext/templates/pages/demo.html
deleted file mode 100644
index f9934a3..0000000
--- a/erpnext/templates/pages/demo.html
+++ /dev/null
@@ -1,77 +0,0 @@
-{% extends "templates/web.html" %}
-
-{% block script %}
-<script>
-$(document).ready(function() {
- $("#login_btn").click(function() {
- var me = this;
- $(this).html("Logging In...").prop("disabled", true);
- frappe.call({
- "method": "login",
- args: {
- usr: "demo@erpnext.com",
- pwd: "Demo1234567!!!",
- lead_email: $("#lead-email").val(),
- },
- callback: function(r) {
- $(me).prop("disabled", false);
- if(r.exc) {
- alert("Error, please contact support@erpnext.com");
- } else {
- console.log("Logged In");
- window.location.href = "desk";
- }
- }
- })
- return false;
- })
- .prop("disabled", false);
-})
-
-</script>
-{% endblock %}
-
-{% block style %}
-<style>
- footer, .navbar {
- display: none;
- }
- .page-content {
- right: 0%;
- width: 100%;
- }
- {% include "templates/styles/card_style.css" %}
- header, footer {
- display: none;
- }
- html, body {
- background-color: #f5f7fa;
- }
-</style>
-{% endblock %}
-
-{% block title %}
-{{ _("ERPNext Demo") }}
-{% endblock %}
-
-{% block page_content %}
-<div class='page-card'>
-
- <div class='page-card-head'>
- <span class='indicator blue'>
- {{ _("ERPNext Demo") }}</span>
- </div>
- <!-- <img src="/assets/erpnext/images/erp-icon.svg" style="max-width: 40px; max-height: 40px;"> -->
- <p>Some functionality is disabled for the demo and the data will be cleared regularly.</p>
- <div><button type="submit" id="login_btn" class="btn btn-primary btn-sm">Launch Demo</button></div>
-</div>
-
-
-<p class='text-muted text-center small' style='margin-top: -20px;'><a href="https://erpnext.com/pricing">Start a free 14-day trial </a>
-</p>
-<style>
-html, body {
- background-color: #f5f7fa;
-}
-</style>
-{% endblock %}
diff --git a/erpnext/templates/pages/order.html b/erpnext/templates/pages/order.html
index ec1d497..6b354b2 100644
--- a/erpnext/templates/pages/order.html
+++ b/erpnext/templates/pages/order.html
@@ -5,149 +5,159 @@
{% include "templates/includes/breadcrumbs.html" %}
{% endblock %}
-{% block title %}{{ doc.name }}{% endblock %}
+{% block title %}
+ {{ doc.name }}
+{% endblock %}
{% block header %}
- <h2 class="m-0">{{ doc.name }}</h2>
+ <h3 class="m-0">{{ doc.name }}</h3>
{% endblock %}
{% block header_actions %}
- <div class="dropdown">
- <button class="btn btn-outline-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
- <span class="font-md">{{ _('Actions') }}</span>
- <b class="caret"></b>
- </button>
- <ul class="dropdown-menu dropdown-menu-right" role="menu">
- {% if doc.doctype == 'Purchase Order' and show_make_pi_button %}
- <a class="dropdown-item" href="/api/method/erpnext.buying.doctype.purchase_order.purchase_order.make_purchase_invoice_from_portal?purchase_order_name={{ doc.name }}" data-action="make_purchase_invoice">{{ _("Make Purchase Invoice") }}</a>
- {% endif %}
- <a class="dropdown-item" href='/printview?doctype={{ doc.doctype}}&name={{ doc.name }}&format={{ print_format }}'
- target="_blank" rel="noopener noreferrer">
- {{ _("Print") }}
- </a>
- </ul>
+ <div class="row">
+ <div class="dropdown">
+ <button class="btn btn-sm btn-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
+ <span class="font-md">{{ _('Actions') }}</span>
+ <b class="caret"></b>
+ </button>
+ <ul class="dropdown-menu dropdown-menu-right" role="menu">
+ {% if doc.doctype == 'Purchase Order' and show_make_pi_button %}
+ <a class="dropdown-item"
+ href="/api/method/erpnext.buying.doctype.purchase_order.purchase_order.make_purchase_invoice_from_portal?purchase_order_name={{ doc.name }}"
+ data-action="make_purchase_invoice">{{ _("Make Purchase Invoice") }}
+ </a>
+ {% endif %}
+ <a class="dropdown-item"
+ href='/printview?doctype={{ doc.doctype}}&name={{ doc.name }}&format={{ print_format }}' target="_blank"
+ rel="noopener noreferrer">
+ {{ _("Print") }}
+ </a>
+ </ul>
+ </div>
+ <div class="form-column col-sm-6">
+ <div class="page-header-actions-block" data-html-block="header-actions">
+ <p>
+ <a href="/api/method/erpnext.accounts.doctype.payment_request.payment_request.make_payment_request?dn={{ doc.name }}&dt={{ doc.doctype }}&submit_doc=1&order_type=Shopping Cart"
+ class="btn btn-primary btn-sm" id="pay-for-order">
+ {{ _("Pay") }} {{doc.get_formatted("grand_total") }}
+ </a>
+ </p>
+ </div>
+ </div>
</div>
{% endblock %}
{% block page_content %}
- <div class="row transaction-subheading">
- <div class="col-6">
- <span class="font-md indicator-pill {{ doc.indicator_color or ("blue" if doc.docstatus==1 else "darkgrey") }}">
- {% if doc.doctype == "Quotation" and not doc.docstatus %}
- {{ _("Pending") }}
- {% else %}
- {{ _(doc.get('indicator_title')) or _(doc.status) or _("Submitted") }}
+ <div>
+ <div class="row transaction-subheading mt-1">
+ <div class="col-6 text-muted small mt-1">
+ {{ frappe.utils.format_date(doc.transaction_date, 'medium') }}
+ {% if doc.valid_till %}
+ <p>
+ {{ _("Valid Till") }}: {{ frappe.utils.format_date(doc.valid_till, 'medium') }}
+ </p>
{% endif %}
- </span>
+ </div>
</div>
- <div class="col-6 text-muted text-right small pt-3">
- {{ frappe.utils.format_date(doc.transaction_date, 'medium') }}
- {% if doc.valid_till %}
- <p>
- {{ _("Valid Till") }}: {{ frappe.utils.format_date(doc.valid_till, 'medium') }}
- </p>
- {% endif %}
- </div>
- </div>
-
- <p class="small my-3">
- {%- set party_name = doc.supplier_name if doc.doctype in ['Supplier Quotation', 'Purchase Invoice', 'Purchase Order'] else doc.customer_name %}
- <b>{{ party_name }}</b>
-
- {% if doc.contact_display and doc.contact_display != party_name %}
- <br>
- {{ doc.contact_display }}
- {% endif %}
- </p>
-
- {% if doc._header %}
- {{ doc._header }}
- {% endif %}
-
- <div class="order-container">
- <!-- items -->
- <table class="order-item-table w-100 table">
- <thead class="order-items order-item-header">
- <th width="60%">
- {{ _("Item") }}
- </th>
- <th width="20%" class="text-right">
- {{ _("Quantity") }}
- </th>
- <th width="20%" class="text-right">
- {{ _("Amount") }}
- </th>
- </thead>
- <tbody>
- {% for d in doc.items %}
- <tr class="order-items">
- <td>
- {{ item_name_and_description(d) }}
- </td>
- <td class="text-right">
- {{ d.qty }}
- {% if d.delivered_qty is defined and d.delivered_qty != None %}
- <p class="text-muted small">{{ _("Delivered") }} {{ d.delivered_qty }}</p>
+ <div class="row indicator-container mt-2">
+ <div class="col-10">
+ <span class="indicator-pill {{ doc.indicator_color or (" blue" if doc.docstatus==1 else "darkgrey" ) }}">
+ {% if doc.doctype == "Quotation" and not doc.docstatus %}
+ {{ _("Pending") }}
+ {% else %}
+ {{ _(doc.get('indicator_title')) or _(doc.status) or _("Submitted") }}
{% endif %}
- </td>
- <td class="text-right">
- {{ d.get_formatted("amount") }}
- <p class="text-muted small">{{ _("Rate:") }} {{ d.get_formatted("rate") }}</p>
- </td>
- </tr>
- {% endfor %}
- </tbody>
- </table>
- <!-- taxes -->
- <div class="order-taxes d-flex justify-content-end">
- <table>
+ </span>
+ </div>
+ <div class="text-right col-2">
+ {%- set party_name = doc.supplier_name if doc.doctype in ['Supplier Quotation', 'Purchase Invoice', 'Purchase
+ Order'] else doc.customer_name %}
+ <b>{{ party_name }}</b>
+
+ {% if doc.contact_display and doc.contact_display != party_name %}
+ <br>
+ {{ doc.contact_display }}
+ {% endif %}
+ </div>
+ </div>
+
+ {% if doc._header %}
+ {{ doc._header }}
+ {% endif %}
+
+ <div class="order-container mt-4">
+ <!-- items -->
+ <div class="w-100">
+ <div class="order-items order-item-header mb-1 row text-muted">
+ <span class="col-5">
+ {{ _("Item") }}
+ </span>
+ <span class="d-s-n col-3">
+ {{ _("Quantity") }}
+ </span>
+ <span class="col-2 pl-10">
+ {{ _("Rate") }}
+ </span>
+ <span class="col-2 text-right">
+ {{ _("Amount") }}
+ </span>
+ </div>
+ {% for d in doc.items %}
+ <div class="order-items row align-items-center">
+ <span class="order-item-name col-5 pr-0">
+ {{ item_name_and_description(d) }}
+ </span>
+
+ <span class="d-s-n col-3 pl-10">
+ {{ d.get_formatted("qty") }}
+ </span>
+ <span class="order-rate pl-4 col-2">
+ {{ d.get_formatted("rate") }}
+ </span>
+ <span class="col-2 text-right">
+ {{ d.get_formatted("amount") }}
+ </span>
+ </div>
+ {% endfor %}
+ </div>
+
+ <!-- taxes -->
+ <div class="">
{% include "erpnext/templates/includes/order/order_taxes.html" %}
- </table>
+ </div>
</div>
</div>
{% if enabled_checkout and ((doc.doctype=="Sales Order" and doc.per_billed <= 0)
- or (doc.doctype=="Sales Invoice" and doc.outstanding_amount > 0)) %}
+ or (doc.doctype=="Sales Invoice" and doc.outstanding_amount> 0)) %}
<div class="panel panel-default">
- <div class="panel-heading">
- <div class="row">
- <div class="form-column col-sm-6 address-title">
- <strong>Payment</strong>
- </div>
- </div>
- </div>
<div class="panel-collapse">
<div class="panel-body text-muted small">
<div class="row">
<div class="form-column col-sm-6">
{% if available_loyalty_points %}
+ <div class="panel-heading">
+ <div class="row">
+ <div class="form-column col-sm-6 address-title">
+ <strong>Loyalty Points</strong>
+ </div>
+ </div>
+ </div>
+
<div class="form-group">
<div class="h6">Enter Loyalty Points</div>
<div class="control-input-wrapper">
<div class="control-input">
- <input class="form-control" type="number" min="0" max="{{ available_loyalty_points }}" id="loyalty-point-to-redeem">
+ <input class="form-control" type="number" min="0"
+ max="{{ available_loyalty_points }}" id="loyalty-point-to-redeem">
</div>
- <p class="help-box small text-muted d-none d-sm-block"> Available Points: {{ available_loyalty_points }} </p>
+ <p class="help-box small text-muted d-none d-sm-block"> Available Points: {{
+ available_loyalty_points }} </p>
</div>
</div>
{% endif %}
</div>
-
- <div class="form-column col-sm-6">
- <div id="loyalty-points-status" style="text-align: right"></div>
- <div class="page-header-actions-block" data-html-block="header-actions">
- <p class="mt-2" style="float: right;">
- <a href="/api/method/erpnext.accounts.doctype.payment_request.payment_request.make_payment_request?dn={{ doc.name }}&dt={{ doc.doctype }}&submit_doc=1&order_type=Shopping Cart"
- class="btn btn-primary btn-sm"
- id="pay-for-order">
- {{ _("Pay") }} {{ doc.get_formatted("grand_total") }}
- </a>
- </p>
- </div>
- </div>
-
</div>
-
</div>
</div>
</div>
@@ -172,17 +182,17 @@
</div>
</div>
{% endif %}
- </div>
{% if doc.terms %}
<div class="terms-and-condition text-muted small">
- <hr><p>{{ doc.terms }}</p>
+ <hr>
+ <p>{{ doc.terms }}</p>
</div>
{% endif %}
{% endblock %}
{% block script %}
- <script> {% include "templates/pages/order.js" %} </script>
+ <script> {% include "templates/pages/order.js" %}</script>
<script>
window.doc_info = {
customer: '{{doc.customer}}',
@@ -192,4 +202,4 @@
currency: '{{ doc.currency }}'
}
</script>
-{% endblock %}
+{% endblock %}
\ No newline at end of file
diff --git a/erpnext/translations/fr.csv b/erpnext/translations/fr.csv
index b207461..3ba5ade 100644
--- a/erpnext/translations/fr.csv
+++ b/erpnext/translations/fr.csv
@@ -785,7 +785,7 @@
Default BOM not found for Item {0} and Project {1},La nomenclature par défaut n'a pas été trouvée pour l'Article {0} et le Projet {1},
Default Letter Head,En-Tête de Courrier par Défaut,
Default Tax Template,Modèle de Taxes par Défaut,
-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.,L’Unité de Mesure par Défaut pour l’Article {0} ne peut pas être modifiée directement parce que vous avez déjà fait une (des) transaction (s) avec une autre unité de mesure. Vous devez créer un nouvel article pour utiliser une UDM par défaut différente.,
+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.,L’Unité de Mesure par Défaut pour l’Article {0} ne peut pas être modifiée directement parce que vous avez déjà fait une (des) transaction (s) avec une autre unité de mesure. Vous devez créer un nouvel article pour utiliser une UdM par défaut différente.,
Default Unit of Measure for Variant '{0}' must be same as in Template '{1}',L’Unité de mesure par défaut pour la variante '{0}' doit être la même que dans le Modèle '{1}',
Default settings for buying transactions.,Paramètres par défaut pour les transactions d'achat.,
Default settings for selling transactions.,Paramètres par défaut pour les transactions de vente.,
@@ -838,7 +838,7 @@
"Difference Account must be a Asset/Liability type account, since this Stock Reconciliation is an Opening Entry","Le Compte d’Écart doit être un compte de type Actif / Passif, puisque cette Réconciliation de Stock est une écriture d'à-nouveau",
Difference Amount,Écart de Montant,
Difference Amount must be zero,L’Écart de Montant doit être égal à zéro,
-Different UOM for items will lead to incorrect (Total) Net Weight value. Make sure that Net Weight of each item is in the same UOM.,Différentes UDM pour les articles conduira à un Poids Net (Total) incorrect . Assurez-vous que le Poids Net de chaque article a la même unité de mesure .,
+Different UOM for items will lead to incorrect (Total) Net Weight value. Make sure that Net Weight of each item is in the same UOM.,Différentes UdM pour les articles conduira à un Poids Net (Total) incorrect . Assurez-vous que le Poids Net de chaque article a la même unité de mesure .,
Direct Expenses,Charges Directes,
Direct Income,Revenu direct,
Disable,Désactiver,
@@ -1409,7 +1409,7 @@
Lab Test Report,Rapport de test de laboratoire,
Lab Test Sample,Échantillon de test de laboratoire,
Lab Test Template,Modèle de test de laboratoire,
-Lab Test UOM,UDM de test de laboratoire,
+Lab Test UOM,UdM de test de laboratoire,
Lab Tests and Vital Signs,Tests de laboratoire et signes vitaux,
Lab result datetime cannot be before testing datetime,La date et l'heure du résultat de laboratoire ne peuvent pas être avant la date et l'heure du test,
Lab testing datetime cannot be before collection datetime,La date et l'heure du test de laboratoire ne peuvent pas être avant la date et l'heure de collecte,
@@ -2806,7 +2806,7 @@
Stock Reports,Rapports de stock,
Stock Summary,Résumé du Stock,
Stock Transactions,Transactions du Stock,
-Stock UOM,UDM du Stock,
+Stock UOM,UdM du Stock,
Stock Value,Valeur du Stock,
Stock balance in Batch {0} will become negative {1} for Item {2} at Warehouse {3},Solde du stock dans le Lot {0} deviendra négatif {1} pour l'Article {2} à l'Entrepôt {3},
Stock cannot be updated against Delivery Note {0},Stock ne peut pas être mis à jour pour le Bon de Livraison {0},
@@ -3161,9 +3161,9 @@
Trialling,Essai,
Type of Business,Type de commerce,
Types of activities for Time Logs,Types d'activités pour Journaux de Temps,
-UOM,UDM,
-UOM Conversion factor is required in row {0},Facteur de conversion de l'UDM est obligatoire dans la ligne {0},
-UOM coversion factor required for UOM: {0} in Item: {1},Facteur de coversion UDM requis pour l'UDM : {0} dans l'Article : {1},
+UOM,UdM,
+UOM Conversion factor is required in row {0},Facteur de conversion de l'UdM est obligatoire dans la ligne {0},
+UOM coversion factor required for UOM: {0} in Item: {1},Facteur de coversion UdM requis pour l'UdM : {0} dans l'Article : {1},
URL,URL,
Unable to find DocType {0},Impossible de trouver le DocType {0},
Unable to find exchange rate for {0} to {1} for key date {2}. Please create a Currency Exchange record manually,Impossible de trouver le taux de change pour {0} à {1} pour la date clé {2}. Veuillez créer une entrée de taux de change manuellement,
@@ -3294,7 +3294,7 @@
Week,Semaine,
Weekdays,Jours de la semaine,
Weekly,Hebdomadaire,
-"Weight is mentioned,\nPlease mention ""Weight UOM"" too","Poids est mentionné,\nVeuillez aussi mentionner ""UDM de Poids""",
+"Weight is mentioned,\nPlease mention ""Weight UOM"" too","Poids est mentionné,\nVeuillez aussi mentionner ""UdM de Poids""",
Welcome email sent,Email de bienvenue envoyé,
Welcome to ERPNext,Bienvenue sur ERPNext,
What do you need help with?,Avec quoi avez vous besoin d'aide ?,
@@ -4938,12 +4938,15 @@
Coupon Code Based,Code de coupon basé,
Discount on Other Item,Remise sur un autre article,
Apply Rule On Other,Appliquer la règle sur autre,
-Party Information,Informations sur la fête,
+Party Information,Informations sur le tier,
Quantity and Amount,Quantité et montant,
Min Qty,Qté Min,
Max Qty,Qté Max,
-Min Amt,Min Amt,
-Max Amt,Max Amt,
+Min Amt,Montant Min,
+Max Amt,Montant Max,
+"If rate is zero them item will be treated as ""Free Item""",Si le prix est à 0 alors l'article sera traité comme article gratuit
+Is Recursive,Est récursif
+"Discounts to be applied in sequential ranges like buy 1 get 1, buy 2 get 2, buy 3 get 3 and so on","La remise sera appliquée séquentiellement telque : acheter 1 => recupérer 1, acheter 2 => recupérer 2, acheter 3 => recupérer 3, etc..."
Period Settings,Paramètres de période,
Margin,Marge,
Margin Type,Type de Marge,
@@ -5053,7 +5056,7 @@
Received Qty,Qté Reçue,
Accepted Qty,Quantité acceptée,
Rejected Qty,Qté Rejetée,
-UOM Conversion Factor,Facteur de Conversion de l'UDM,
+UOM Conversion Factor,Facteur de Conversion de l'UdM,
Discount on Price List Rate (%),Remise sur la Liste des Prix (%),
Price List Rate (Company Currency),Taux de la Liste de Prix (Devise Société),
Rate (Company Currency),Prix (Devise Société),
@@ -5085,7 +5088,7 @@
Item Weight Details,Détails du poids de l'article,
Weight Per Unit,Poids par unité,
Total Weight,Poids total,
-Weight UOM,UDM de Poids,
+Weight UOM,UdM de Poids,
Page Break,Saut de Page,
Consider Tax or Charge for,Tenir Compte de la Taxe et des Frais pour,
Valuation and Total,Valorisation et Total,
@@ -5153,7 +5156,7 @@
Sales Invoice Item,Article de la Facture de Vente,
Customer's Item Code,Code de l'Article du Client,
Brand Name,Nom de la Marque,
-Qty as per Stock UOM,Qté par UDM du Stock,
+Qty as per Stock UOM,Qté par UdM du Stock,
Discount and Margin,Remise et Marge,
Rate With Margin,Prix Avec Marge,
Discount (%) on Price List Rate with Margin,Remise (%) sur le prix de la Liste de Prix avec la Marge,
@@ -5501,7 +5504,7 @@
Returned Qty,Qté Retournée,
Purchase Order Item Supplied,Article Fourni depuis la Commande d'Achat,
BOM Detail No,N° de Détail de la nomenclature,
-Stock Uom,UDM du Stock,
+Stock Uom,UdM du Stock,
Raw Material Item Code,Code d’Article de Matière Première,
Supplied Qty,Qté Fournie,
Purchase Receipt Item Supplied,Articles Fournis du Reçus d’Achat,
@@ -6149,7 +6152,7 @@
Dosage,Dosage,
Dosage by Time Interval,Dosage par intervalle de temps,
Interval,Intervalle,
-Interval UOM,UDM d'Intervalle,
+Interval UOM,UdM d'Intervalle,
Hour,Heure,
Update Schedule,Mettre à Jour le Calendrier,
Exercise,Exercice,
@@ -7023,7 +7026,7 @@
Diesel,Diesel,
Natural Gas,Gaz Naturel,
Electric,Électrique,
-Fuel UOM,UDM Carburant,
+Fuel UOM,UdM Carburant,
Last Carbon Check,Dernière Vérification Carbone,
Wheels,Roues,
Doors,Portes,
@@ -7182,7 +7185,7 @@
Quantity of item obtained after manufacturing / repacking from given quantities of raw materials,Quantité d'article obtenue après production / reconditionnement des quantités données de matières premières,
Set rate of sub-assembly item based on BOM,Définir le prix des articles de sous-assemblage en fonction de la nomenclature,
Allow Alternative Item,Autoriser un article alternatif,
-Item UOM,UDM de l'Article,
+Item UOM,UdM de l'Article,
Conversion Rate,Taux de Conversion,
Rate Of Materials Based On,Prix des Matériaux Basé sur,
With Operations,Avec des Opérations,
@@ -7926,7 +7929,7 @@
For reference,Pour référence,
Territory Targets,Objectifs Régionaux,
Set Item Group-wise budgets on this Territory. You can also include seasonality by setting the Distribution.,Définir des budgets par Groupes d'Articles sur ce Territoire. Vous pouvez également inclure de la saisonnalité en définissant la Répartition.,
-UOM Name,Nom UDM,
+UOM Name,Nom UdM,
Check this to disallow fractions. (for Nos),Cochez cette case pour interdire les fractions. (Pour les numéros),
Website Item Group,Groupe d'Articles du Site Web,
Cross Listing of Item in multiple groups,Liste Croisée d'Articles dans plusieurs groupes,
@@ -8198,10 +8201,10 @@
If more than one package of the same type (for print),Si plus d'un paquet du même type (pour l'impression),
Package Weight Details,Détails du Poids du Paquet,
The net weight of this package. (calculated automatically as sum of net weight of items),Le poids net de ce paquet. (Calculé automatiquement comme la somme du poids net des articles),
-Net Weight UOM,UDM Poids Net,
+Net Weight UOM,UdM Poids Net,
Gross Weight,Poids Brut,
The gross weight of the package. Usually net weight + packaging material weight. (for print),Le poids brut du colis. Habituellement poids net + poids du matériau d'emballage. (Pour l'impression),
-Gross Weight UOM,UDM du Poids Brut,
+Gross Weight UOM,UdM du Poids Brut,
Packing Slip Item,Article Emballé,
DN Detail,Détail du Bon de Livraison,
STO-PICK-.YYYY.-,STO-PICK-.YYYY.-,
@@ -8215,7 +8218,7 @@
Picked Qty,Quantité choisie,
Price List Master,Données de Base des Listes de Prix,
Price List Name,Nom de la Liste de Prix,
-Price Not UOM Dependent,Prix non dépendant de l'UOM,
+Price Not UOM Dependent,Prix non dépendant de l'UdM,
Applicable for Countries,Applicable pour les Pays,
Price List Country,Pays de la Liste des Prix,
MAT-PRE-.YYYY.-,MAT-PRE-YYYY.-,
@@ -8294,7 +8297,7 @@
Inspection Required,Inspection obligatoire,
From BOM,Depuis la nomenclature,
For Quantity,Pour la Quantité,
-As per Stock UOM,Selon UDM du Stock,
+As per Stock UOM,Selon UdM du Stock,
Including items for sub assemblies,Incluant les articles pour des sous-ensembles,
Default Source Warehouse,Entrepôt Source par Défaut,
Source Warehouse Address,Adresse de l'entrepôt source,
@@ -8309,7 +8312,7 @@
Customer or Supplier Details,Détails du Client ou du Fournisseur,
Per Transferred,Par transféré,
Stock Entry Detail,Détails de l'Écriture de Stock,
-Basic Rate (as per Stock UOM),Prix de base (comme l’UDM du Stock),
+Basic Rate (as per Stock UOM),Prix de base (comme l’UdM du Stock),
Basic Amount,Montant de Base,
Additional Cost,Frais Supplémentaire,
Serial No / Batch,N° de Série / Lot,
@@ -8339,7 +8342,7 @@
Amount Difference,Différence de Montant,
Item Naming By,Nomenclature d'Article Par,
Default Item Group,Groupe d'Éléments par Défaut,
-Default Stock UOM,UDM par Défaut des Articles,
+Default Stock UOM,UdM par Défaut des Articles,
Sample Retention Warehouse,Entrepôt de stockage des échantillons,
Default Valuation Method,Méthode de Valorisation par Défaut,
Show Barcode Field,Afficher Champ Code Barre,
@@ -8353,8 +8356,8 @@
Batch Identification,Identification par lots,
Use Naming Series,Utiliser la série de noms,
Naming Series Prefix,Préfix du nom de série,
-UOM Category,Catégorie d'unité de mesure (UDM),
-UOM Conversion Detail,Détails de Conversion de l'UDM,
+UOM Category,Catégorie d'unité de mesure (UdM),
+UOM Conversion Detail,Détails de Conversion de l'UdM,
Variant Field,Champ de Variante,
A logical Warehouse against which stock entries are made.,Un Entrepôt logique dans lequel les entrées en stock sont faites.,
Warehouse Detail,Détail de l'Entrepôt,
@@ -9869,8 +9872,8 @@
Party Specific Item,Restriction d'article disponible
Restrict Items Based On,Type de critére de restriction
Based On Value,critére de restriction
-Unit of Measure (UOM),Unité de mesure (UDM),
-Unit Of Measure (UOM),Unité de mesure (UDM),
+Unit of Measure (UOM),Unité de mesure (UdM),
+Unit Of Measure (UOM),Unité de mesure (UdM),
CRM Settings,Paramètres CRM
Do Not Explode,Ne pas décomposer
Quick Access, Accés rapides