diff --git a/erpnext/__init__.py b/erpnext/__init__.py index ceb8ca26532..502477dbf8e 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -2,7 +2,7 @@ from __future__ import unicode_literals import frappe -__version__ = '7.0.55' +__version__ = '7.0.56' def get_default_company(user=None): '''Get default company for user''' diff --git a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json index a02e591ed5b..c5b3e5b9693 100644 --- a/erpnext/accounts/doctype/accounts_settings/accounts_settings.json +++ b/erpnext/accounts/doctype/accounts_settings/accounts_settings.json @@ -15,6 +15,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "default": "1", "description": "If enabled, the system will post accounting entries for inventory automatically.", "fieldname": "auto_accounting_for_stock", @@ -41,6 +42,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "description": "Accounting entry frozen up to this date, nobody can do / modify entry except role specified below.", "fieldname": "acc_frozen_upto", "fieldtype": "Date", @@ -66,6 +68,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "description": "Users with this role are allowed to set frozen accounts and create / modify accounting entries against frozen accounts", "fieldname": "frozen_accounts_modifier", "fieldtype": "Link", @@ -92,6 +95,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "column_break_4", "fieldtype": "Column Break", "hidden": 0, @@ -116,6 +120,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "description": "Role that is allowed to submit transactions that exceed credit limits set.", "fieldname": "credit_controller", "fieldtype": "Link", @@ -142,6 +147,7 @@ "allow_on_submit": 0, "bold": 0, "collapsible": 0, + "columns": 0, "fieldname": "check_supplier_invoice_uniqueness", "fieldtype": "Check", "hidden": 0, @@ -162,6 +168,32 @@ "search_index": 0, "set_only_once": 0, "unique": 0 + }, + { + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "make_payment_via_journal_entry", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_list_view": 0, + "label": "Make Payment via Journal Entry", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 } ], "hide_heading": 0, @@ -175,8 +207,8 @@ "issingle": 1, "istable": 0, "max_attachments": 0, - "modified": "2016-07-14 14:32:06.056888", - "modified_by": "Administrator", + "modified": "2016-10-05 16:13:10.978208", + "modified_by": "rohitw1991@gmail.com", "module": "Accounts", "name": "Accounts Settings", "owner": "Administrator", @@ -191,6 +223,7 @@ "export": 0, "if_owner": 0, "import": 0, + "is_custom": 0, "permlevel": 0, "print": 1, "read": 1, diff --git a/erpnext/accounts/doctype/sales_invoice/pos.py b/erpnext/accounts/doctype/sales_invoice/pos.py index 51b8e7e484d..72738a5c56f 100644 --- a/erpnext/accounts/doctype/sales_invoice/pos.py +++ b/erpnext/accounts/doctype/sales_invoice/pos.py @@ -243,6 +243,6 @@ def save_invoice(e, si_doc, name): def make_scheduler_log(e, sales_invoice): scheduler_log = frappe.new_doc('Scheduler Log') + scheduler_log.method = "erpnext.accounts.doctype.sales_invoice.pos.make_invoice" scheduler_log.error = e - scheduler_log.sales_invoice = sales_invoice scheduler_log.save(ignore_permissions=True) \ No newline at end of file diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py index e2458754680..3d2f16b4b57 100644 --- a/erpnext/controllers/accounts_controller.py +++ b/erpnext/controllers/accounts_controller.py @@ -26,6 +26,9 @@ class AccountsController(TransactionBase): return self.__company_currency + def onload(self): + self.get("__onload").make_payment_via_journal_entry = frappe.db.get_single_value('Accounts Settings', 'make_payment_via_journal_entry') + def validate(self): if self.get("_action") and self._action != "update_after_submit": self.set_missing_values(for_validate=True) diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py index b9b94f512a3..3f4d12d20b0 100644 --- a/erpnext/controllers/selling_controller.py +++ b/erpnext/controllers/selling_controller.py @@ -23,6 +23,7 @@ class SellingController(StockController): self.grand_total) def onload(self): + super(SellingController, self).onload() if self.doctype in ("Sales Order", "Delivery Note", "Sales Invoice"): for item in self.get("items"): item.update(get_bin_details(item.item_code, diff --git a/erpnext/controllers/status_updater.py b/erpnext/controllers/status_updater.py index ccbf3779012..968e6b82452 100644 --- a/erpnext/controllers/status_updater.py +++ b/erpnext/controllers/status_updater.py @@ -301,12 +301,7 @@ class StatusUpdater(Document): ref_doc = frappe.get_doc(ref_dt, ref_dn) ref_doc.db_set("per_billed", per_billed) - - if frappe.get_meta(ref_dt).get_field("billing_status"): - if per_billed < 0.001: billing_status = "Not Billed" - elif per_billed >= 99.99: billing_status = "Fully Billed" - else: billing_status = "Partly Billed" - ref_doc.db_set('billing_status', billing_status) + ref_doc.set_status(update=True) def get_tolerance_for(item_code, item_tolerance={}, global_tolerance=None): """ diff --git a/erpnext/docs/assets/img/accounts/account-settings.png b/erpnext/docs/assets/img/accounts/account-settings.png index 943aa3d0559..dfe2abed439 100644 Binary files a/erpnext/docs/assets/img/accounts/account-settings.png and b/erpnext/docs/assets/img/accounts/account-settings.png differ diff --git a/erpnext/docs/assets/img/accounts/journal-entry.png b/erpnext/docs/assets/img/accounts/journal-entry.png index d4a4e21fc23..c6a2a642cf3 100644 Binary files a/erpnext/docs/assets/img/accounts/journal-entry.png and b/erpnext/docs/assets/img/accounts/journal-entry.png differ diff --git a/erpnext/docs/user/manual/en/accounts/index.txt b/erpnext/docs/user/manual/en/accounts/index.txt index d7c405acc54..6ba93375871 100644 --- a/erpnext/docs/user/manual/en/accounts/index.txt +++ b/erpnext/docs/user/manual/en/accounts/index.txt @@ -3,6 +3,7 @@ opening-accounts sales-invoice point-of-sale-pos-invoice purchase-invoice +payments journal-entry payment-entry multi-currency-accounting diff --git a/erpnext/docs/user/manual/en/accounts/payments.md b/erpnext/docs/user/manual/en/accounts/payments.md new file mode 100644 index 00000000000..7e5aab3a9ac --- /dev/null +++ b/erpnext/docs/user/manual/en/accounts/payments.md @@ -0,0 +1,48 @@ +Payment can be made against following transactions. + + 1. Sales Invoice. + 2. Purchase Invoice. + 3. Sales Order (Advance Payment) + 4. Purchase Order (Advance Payment) + +In ERPNext, there is two options through which user can capture the payment + + 1. Payment Entry(Default). + 2. Journal Entry. + +## Payment Entry + +####Step 1: Make Payment + +On submitting a document against which Payment Entry can be made, you will find Make Payment button. + +Making Payment + +####Step 2: Payment Entry + +Making Payment + +For more details about payment entry [check here.](https://frappe.github.io/erpnext/user/manual/en/accounts/payment-entry) + +## Journal Entry + +To make paymant using journal entry, check below steps + +####Step 1: Activate Payment via Journal Entry + +Goto Accounts Settings > checked Make Payment via Journal Entry + +Making Payment + +####Step 2: Make Payment + +On submitting a document against which Journal Entry can be made, you will find Make Payment button. + +Making Payment + +####Step 3: Journal Entry + +Save and submit the journal entry to record the payament against the invoice +Making Payment + +For more details about journal entry [check here.](https://frappe.github.io/erpnext/user/manual/en/accounts/journal-entry) \ No newline at end of file diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.js b/erpnext/hr/doctype/expense_claim/expense_claim.js index bcd8bc09b00..8b3c45140c6 100644 --- a/erpnext/hr/doctype/expense_claim/expense_claim.js +++ b/erpnext/hr/doctype/expense_claim/expense_claim.js @@ -129,9 +129,6 @@ cur_frm.cscript.calculate_total = function(doc,cdt,cdn){ doc.total_sanctioned_amount = 0; $.each((doc.expenses || []), function(i, d) { doc.total_claimed_amount += d.claim_amount; - if(d.sanctioned_amount==null) { - d.sanctioned_amount = d.claim_amount; - } doc.total_sanctioned_amount += d.sanctioned_amount; }); @@ -144,17 +141,6 @@ cur_frm.cscript.calculate_total_amount = function(doc,cdt,cdn){ cur_frm.cscript.calculate_total(doc,cdt,cdn); } -cur_frm.cscript.claim_amount = function(doc,cdt,cdn){ - cur_frm.cscript.calculate_total(doc,cdt,cdn); - - var child = locals[cdt][cdn]; - refresh_field("sanctioned_amount", child.name, child.parentfield); -} - -cur_frm.cscript.sanctioned_amount = function(doc,cdt,cdn){ - cur_frm.cscript.calculate_total(doc,cdt,cdn); -} - cur_frm.cscript.on_submit = function(doc, cdt, cdn) { if(cint(frappe.boot.notification_settings && frappe.boot.notification_settings.expense_claim)) { cur_frm.email_doc(frappe.boot.notification_settings.expense_claim_message); @@ -172,6 +158,25 @@ erpnext.expense_claim = { } } +frappe.ui.form.on("Expense Claim Detail", { + claim_amount: function(frm, cdt, cdn) { + var child = locals[cdt][cdn]; + var doc = frm.doc; + + if(!child.sanctioned_amount){ + frappe.model.set_value(cdt, cdn, 'sanctioned_amount', child.claim_amount) + } + + cur_frm.cscript.calculate_total(doc,cdt,cdn); + }, + + sanctioned_amount: function(frm, cdt, cdn) { + var doc = frm.doc; + cur_frm.cscript.calculate_total(doc,cdt,cdn); + } +}) + + frappe.ui.form.on("Expense Claim", "employee_name", function(frm) { erpnext.expense_claim.set_title(frm); }); diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 9822fc041a7..d9ef272dbcb 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -318,3 +318,5 @@ erpnext.patches.v7_0.set_party_name_in_payment_entry execute:frappe.db.sql("update `tabTimesheet` ts, `tabEmployee` emp set ts.employee_name = emp.employee_name where emp.name = ts.employee and ts.employee_name is null and ts.employee is not null") execute:frappe.db.sql("delete from `tabTimesheet Detail` where NOT EXISTS (select name from `tabTimesheet` where name = `tabTimesheet Detail`.parent)") erpnext.patches.v7_0.update_mode_of_payment_type +finally:erpnext.patches.v7_0.update_timesheet_communications +erpnext.patches.v7_0.update_status_of_zero_amount_sales_order diff --git a/erpnext/patches/v7_0/set_portal_settings.py b/erpnext/patches/v7_0/set_portal_settings.py index 3e3b7299a77..80d166b9aab 100644 --- a/erpnext/patches/v7_0/set_portal_settings.py +++ b/erpnext/patches/v7_0/set_portal_settings.py @@ -10,9 +10,11 @@ def execute(): for dt in ("assessment", "announcement", "course", "fees"): frappe.reload_doc("schools", "doctype", dt) + frappe.reload_doc('website', 'doctype', 'portal_menu_item') + frappe.get_doc('Portal Settings').sync_menu() if 'schools' in frappe.get_installed_apps(): domainify.setup_domain('Education') else: - domainify.setup_sidebar_items(domainify.get_domain('Manufacturing')) \ No newline at end of file + domainify.setup_sidebar_items(domainify.get_domain('Manufacturing')) diff --git a/erpnext/patches/v7_0/update_status_of_zero_amount_sales_order.py b/erpnext/patches/v7_0/update_status_of_zero_amount_sales_order.py new file mode 100644 index 00000000000..9b2b24785a5 --- /dev/null +++ b/erpnext/patches/v7_0/update_status_of_zero_amount_sales_order.py @@ -0,0 +1,7 @@ +from __future__ import unicode_literals +import frappe + +def execute(): + for data in frappe.get_all('Sales Order', fields = ["name"], filters = [["docstatus", "=", "1"], ["grand_total", "=", "0"]]): + sales_order = frappe.get_doc('Sales Order', data.name) + sales_order.set_status(update=True, update_modified = False) \ No newline at end of file diff --git a/erpnext/patches/v7_0/update_timesheet_communications b/erpnext/patches/v7_0/update_timesheet_communications new file mode 100644 index 00000000000..203471ea8f2 --- /dev/null +++ b/erpnext/patches/v7_0/update_timesheet_communications @@ -0,0 +1,27 @@ +from __future__ import unicode_literals +import frappe + +def execute(): + if frappe.db.table_exists("Time Log"): + timesheet = frappe.db.sql("""SELECT ts.name AS name, tl.name AS timelogname, + tl.modified AS modified, tl.modified_by AS modified_by, tl.creation AS creation, tl.owner AS owner + FROM + `tabTimesheet` ts, `tabTimesheet Detail` tsd, `tabTime Log` tl + WHERE + tsd.parent = ts.name AND tl.from_time = tsd.from_time AND tl.to_time = tsd.to_time + AND tl.hours = tsd.hours AND tl.billing_rate = tsd.billing_rate AND tsd.idx=1 + AND tl.docstatus < 2""", as_dict=1) + + for data in timesheet: + frappe.db.sql(""" update `tabTimesheet` set creation = %(creation)s, + owner = %(owner)s, modified = %(modified)s, modified_by = %(modified_by)s + where name = %(name)s""", data) + + frappe.db.sql(""" + update + tabCommunication + set + reference_doctype = "Timesheet", reference_name = %(timesheet)s + where + reference_doctype = "Time Log" and reference_name = %(timelog)s + """, {'timesheet': data.name, 'timelog': data.timelogname}, auto_commit=1) diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js index 92161e1babe..7ac90318d49 100644 --- a/erpnext/public/js/controllers/transaction.js +++ b/erpnext/public/js/controllers/transaction.js @@ -989,7 +989,7 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({ make_payment_entry: function() { return frappe.call({ - method: "erpnext.accounts.doctype.payment_entry.payment_entry.get_payment_entry", + method: cur_frm.cscript.get_method_for_payment(), args: { "dt": cur_frm.doc.doctype, "dn": cur_frm.doc.name @@ -1000,5 +1000,18 @@ erpnext.TransactionController = erpnext.taxes_and_totals.extend({ // cur_frm.refresh_fields() } }); + }, + + get_method_for_payment: function(){ + method = "erpnext.accounts.doctype.payment_entry.payment_entry.get_payment_entry" + if(cur_frm.doc.__onload && cur_frm.doc.__onload.make_payment_via_journal_entry){ + if(in_list(['Sales Invoice', 'Purchase Invoice'], cur_frm.doc.doctype)){ + method = "erpnext.accounts.doctype.journal_entry.journal_entry.get_payment_entry_against_invoice" + }else { + method= "erpnext.accounts.doctype.journal_entry.journal_entry.get_payment_entry_against_order" + } + } + + return method } }); \ No newline at end of file diff --git a/erpnext/setup/doctype/notification_control/notification_control.js b/erpnext/setup/doctype/notification_control/notification_control.js index c8e199bf460..7f58ede1df2 100644 --- a/erpnext/setup/doctype/notification_control/notification_control.js +++ b/erpnext/setup/doctype/notification_control/notification_control.js @@ -9,7 +9,9 @@ frappe.ui.form.on("Notification Control", { frm.set_value("custom_message", frm.doc[frm.events.get_fieldname(frm)]); }, set_message: function(frm) { - frm.set_value(frm.events.get_fieldname(frm), frm.doc.custom_message); + if(frm.doc.select_transaction && frm.doc.select_transaction !== "") { + frm.set_value(frm.events.get_fieldname(frm), frm.doc.custom_message); + } frm.save(); }, get_fieldname: function(frm) { diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py index 454fc709816..e9d4cb3fef5 100644 --- a/erpnext/stock/doctype/item/item.py +++ b/erpnext/stock/doctype/item/item.py @@ -567,7 +567,7 @@ class Item(WebsiteGenerator): existing_allow_negative_stock = frappe.db.get_value("Stock Settings", None, "allow_negative_stock") frappe.db.set_value("Stock Settings", None, "allow_negative_stock", 1) - for warehouse in frappe.db.sql("select name from `tabWarehouse`"): + for warehouse in frappe.db.sql("select name from `tabWarehouse` where is_group = 0"): repost_stock(new_name, warehouse[0]) frappe.db.set_value("Stock Settings", None, "allow_negative_stock", existing_allow_negative_stock) diff --git a/erpnext/translations/fr.csv b/erpnext/translations/fr.csv index 891d15a47df..e5b58933b8d 100644 --- a/erpnext/translations/fr.csv +++ b/erpnext/translations/fr.csv @@ -407,7 +407,7 @@ DocType: Employee,Single,Unique DocType: Account,Cost of Goods Sold,Coût des marchandises vendues DocType: Purchase Invoice,Yearly,Annuel apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py +229,Please enter Cost Center,S'il vous plaît entrer Centre de coûts -DocType: Journal Entry Account,Sales Order,Bon de commande +DocType: Journal Entry Account,Sales Order,commande client apps/erpnext/erpnext/accounts/report/gross_profit/gross_profit.py +67,Avg. Selling Rate,Moy. Taux de vente DocType: Examination,Examiner Name,Nom de l'examinateur apps/erpnext/erpnext/utilities/transaction_base.py +149,Quantity cannot be a fraction in row {0},La quantité ne peut pas être une fraction à la ligne {0} @@ -991,7 +991,7 @@ apps/erpnext/erpnext/patches/v4_0/create_price_list_if_missing.py +18,Standard B DocType: GL Entry,Against,Contre DocType: Item,Default Selling Cost Center,Coût des marchandises vendues DocType: Sales Partner,Implementation Partner,Partenaire de mise en œuvre -apps/erpnext/erpnext/controllers/selling_controller.py +231,Sales Order {0} is {1},Bon de commande {0} est {1} +apps/erpnext/erpnext/controllers/selling_controller.py +231,Sales Order {0} is {1},commande client {0} est {1} DocType: Opportunity,Contact Info,Information de contact apps/erpnext/erpnext/config/stock.py +299,Making Stock Entries,Faire des entrées stock DocType: Packing Slip,Net Weight UOM,Unité de mesure Poids Net @@ -1137,7 +1137,7 @@ DocType: Item,Lead Time in days,Délai en jours ,Accounts Payable Summary,Le résumé des comptes à payer apps/erpnext/erpnext/accounts/doctype/gl_entry/gl_entry.py +196,Not authorized to edit frozen Account {0},N'êtes pas autorisé à modifier le compte gelé {0} DocType: Journal Entry,Get Outstanding Invoices,Obtenez les factures impayées -apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +62,Sales Order {0} is not valid,Bon de commande {0} invalide +apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +62,Sales Order {0} is not valid,commande client {0} invalide apps/erpnext/erpnext/setup/doctype/company/company.py +182,"Sorry, companies cannot be merged","Désolé , les entreprises ne peuvent pas être fusionnés" apps/erpnext/erpnext/stock/doctype/material_request/material_request.py +139,"The total Issue / Transfer quantity {0} in Material Request {1} \ cannot be greater than requested quantity {2} for Item {3}",La quantité Problème / transfert total {0} dans Material Request {1} \ ne peut pas être supérieure à la quantité demandée {2} pour le poste {3} @@ -1590,7 +1590,7 @@ DocType: Authorization Control,Authorization Control,Contrôle d'autorisatio apps/erpnext/erpnext/controllers/buying_controller.py +300,Row #{0}: Rejected Warehouse is mandatory against rejected Item {1},Row # {0}: Entrepôt Rejeté est obligatoire contre Item rejeté {1} apps/erpnext/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js +678,Payment,Paiement DocType: Production Order Operation,Actual Time and Cost,Temps réel et coût -apps/erpnext/erpnext/stock/doctype/material_request/material_request.py +54,Material Request of maximum {0} can be made for Item {1} against Sales Order {2},Demande de Matériel d'un maximum de {0} peut être faite pour l'article {1} par rapport au bon de commande {2} +apps/erpnext/erpnext/stock/doctype/material_request/material_request.py +54,Material Request of maximum {0} can be made for Item {1} against Sales Order {2},Demande de Matériel d'un maximum de {0} peut être faite pour l'article {1} par rapport au commande client {2} DocType: Employee,Salutation,Titre DocType: Pricing Rule,Brand,Marque DocType: Course,Course Abbreviation,Abréviation de cours @@ -1863,7 +1863,7 @@ apps/erpnext/erpnext/public/js/setup_wizard.js +52,"e.g. ""Build tools for build DocType: Quality Inspection,In Process,En cours DocType: Authorization Rule,Itemwise Discount,Remise (par Article) apps/erpnext/erpnext/config/accounts.py +63,Tree of financial accounts.,Arbre des comptes financiers. -apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +334,{0} against Sales Order {1},{0} contre le bon de commande de vente {1} +apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +334,{0} against Sales Order {1},{0} contre le commande client de vente {1} DocType: Account,Fixed Asset,Actifs immobilisés apps/erpnext/erpnext/config/stock.py +304,Serialized Inventory,Inventaire sérialisé DocType: Activity Type,Default Billing Rate,Prix facturation par défaut @@ -2153,7 +2153,7 @@ DocType: Homepage,Homepage,Page d'accueil DocType: Purchase Receipt Item,Recd Quantity,Quantité reçue apps/erpnext/erpnext/schools/doctype/program_enrollment/program_enrollment.py +54,Fee Records Created - {0},Records Fee Créé - {0} DocType: Asset Category Account,Asset Category Account,Catégorie d'actif compte -apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +103,Cannot produce more Item {0} than Sales Order quantity {1},Ne peut pas produire plus d'article {0} que de la qté du bon de commande {1} +apps/erpnext/erpnext/manufacturing/doctype/production_order/production_order.py +103,Cannot produce more Item {0} than Sales Order quantity {1},Ne peut pas produire plus d'article {0} que de la qté du commande client {1} apps/erpnext/erpnext/accounts/doctype/journal_entry/journal_entry.py +504,Stock Entry {0} is not submitted,Entrée stock {0} est pas soumis DocType: Payment Reconciliation,Bank / Cash Account,Banque et liquidités DocType: Tax Rule,Billing City,Ville de facturation @@ -2499,7 +2499,7 @@ apps/erpnext/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py DocType: Program Enrollment Tool,Get Students,Obtenez étudiants DocType: Serial No,Under Warranty,Sous garantie apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.js +447,[Error],[Erreur] -DocType: Sales Order,In Words will be visible once you save the Sales Order.,En Toutes Lettres. Sera visible une fois que vous enregistrerez le bon de commande. +DocType: Sales Order,In Words will be visible once you save the Sales Order.,En Toutes Lettres. Sera visible une fois que vous enregistrerez le commande client. ,Employee Birthday,Anniversaire de l'employé apps/erpnext/erpnext/controllers/status_updater.py +175,Limit Crossed,Limite Crossed apps/erpnext/erpnext/setup/setup_wizard/industry_type.py +55,Venture Capital,Capital Risque @@ -2734,7 +2734,7 @@ apps/erpnext/erpnext/setup/doctype/item_group/item_group.py +59,"An item exists apps/erpnext/erpnext/accounts/page/pos/pos.js +1171,Please select customer,S'il vous plaît sélectionner client DocType: C-Form,I,je DocType: Company,Asset Depreciation Cost Center,Asset Centre Amortissements -DocType: Sales Order Item,Sales Order Date,Date du bon de Commande +DocType: Sales Order Item,Sales Order Date,Date du commande client DocType: Sales Invoice Item,Delivered Qty,Qté livrée apps/erpnext/erpnext/stock/doctype/warehouse/warehouse.py +86,Warehouse {0}: Company is mandatory,Entrepôt {0}: Société est obligatoire ,Payment Period Based On Invoice Date,Période de paiement basé sur Date de la facture @@ -3421,7 +3421,7 @@ DocType: Task,Total Expense Claim (via Expense Claim),Frais totaux (via Note de apps/erpnext/erpnext/accounts/report/sales_register/sales_register.py +69,Customer Id,Client Id apps/erpnext/erpnext/hr/doctype/employee_attendance_tool/employee_attendance_tool.js +176,Mark Absent,Marquer absent DocType: Journal Entry Account,Exchange Rate,Taux de change -apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +461,Sales Order {0} is not submitted,Bon de commande {0} n'a pas été transmis +apps/erpnext/erpnext/accounts/doctype/sales_invoice/sales_invoice.py +461,Sales Order {0} is not submitted,commande client {0} n'a pas été transmis DocType: Homepage,Tag Line,Tag ligne apps/erpnext/erpnext/buying/doctype/purchase_order/purchase_order.js +804,Add items from,Ajouter des articles de apps/erpnext/erpnext/stock/doctype/warehouse/warehouse.py +97,Warehouse {0}: Parent account {1} does not bolong to the company {2},Entrepôt {0}: le Compte Parent {1} n'appartient pas à la société {2}