Merge branch 'master' into develop
diff --git a/.travis.yml b/.travis.yml
index 0b3b49f..beab4e1 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -15,6 +15,8 @@
- mysql
install:
+ - pip install flake8==3.3.0
+ - flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics
- sudo rm /etc/apt/sources.list.d/docker.list
- sudo apt-get purge -y mysql-common mysql-server mysql-client
- nvm install v7.10.0
diff --git a/README.md b/README.md
index 1fae1ce..74ea7fc 100644
--- a/README.md
+++ b/README.md
@@ -6,10 +6,9 @@
Includes: Accounting, Inventory, Manufacturing, CRM, Sales, Purchase, Project Management, HRMS. Requires MariaDB.
-ERPNext is built on the [Frappe](https://github.com/frappe/frappe) Framework, a full-stack web app framework in Python & JavaScript.
+ERPNext is built on the [Frappé](https://github.com/frappe/frappe) Framework, a full-stack web app framework in Python & JavaScript.
-- [User Guide](https://frappe.github.io/erpnext/)
-- [Getting Help](http://erpnext.org/getting-help.html)
+- [User Guide](https://erpnext.org/docs/user)
- [Discussion Forum](https://discuss.erpnext.com/)
---
@@ -34,7 +33,7 @@
GNU/General Public License (see LICENSE.txt)
-The ERPNext code is licensed as GNU General Public License (v3) and the Documentation is licensed as Creative Commons (CC-BY-SA-3.0) and the copyright is owned by Frappe Technologies Pvt Ltd (Frappe) and Contributors.
+The ERPNext code is licensed as GNU General Public License (v3) and the Documentation is licensed as Creative Commons (CC-BY-SA-3.0) and the copyright is owned by Frappé Technologies Pvt Ltd (Frappé) and Contributors.
---
@@ -49,19 +48,19 @@
## Logo and Trademark
-The brand name ERPNext and the logo are trademarks of Frappe Technologies Pvt. Ltd.
+The brand name ERPNext and the logo are trademarks of Frappé Technologies Pvt. Ltd.
### Introduction
-Frappe Technologies Pvt. Ltd. (Frappe) owns and oversees the trademarks for the ERPNext name and logos. We have developed this trademark usage policy with the following goals in mind:
+Frappé Technologies Pvt. Ltd. (Frappé) owns and oversees the trademarks for the ERPNext name and logos. We have developed this trademark usage policy with the following goals in mind:
- We’d like to make it easy for anyone to use the ERPNext name or logo for community-oriented efforts that help spread and improve ERPNext.
- We’d like to make it clear how ERPNext-related businesses and projects can (and cannot) use the ERPNext name and logo.
- We’d like to make it hard for anyone to use the ERPNext name and logo to unfairly profit from, trick or confuse people who are looking for official ERPNext resources.
-### Frappe Trademark Usage Policy
+### Frappé Trademark Usage Policy
-Permission from Frappe is required to use the ERPNext name or logo as part of any project, product, service, domain or company name.
+Permission from Frappé is required to use the ERPNext name or logo as part of any project, product, service, domain or company name.
We will grant permission to use the ERPNext name and logo for projects that meet the following criteria:
@@ -72,7 +71,7 @@
Use of the ERPNext name and logo is additionally allowed in the following situations:
-All other ERPNext-related businesses or projects can use the ERPNext name and logo to refer to and explain their services, but they cannot use them as part of a product, project, service, domain, or company name and they cannot use them in any way that suggests an affiliation with or endorsement by ERPNext or Frappe Technologies or the ERPNext open source project. For example, a consulting company can describe its business as “123 Web Services, offering ERPNext consulting for small businesses,” but cannot call its business “The ERPNext Consulting Company.”
+All other ERPNext-related businesses or projects can use the ERPNext name and logo to refer to and explain their services, but they cannot use them as part of a product, project, service, domain, or company name and they cannot use them in any way that suggests an affiliation with or endorsement by ERPNext or Frappé Technologies or the ERPNext open source project. For example, a consulting company can describe its business as “123 Web Services, offering ERPNext consulting for small businesses,” but cannot call its business “The ERPNext Consulting Company.”
Similarly, it’s OK to use the ERPNext logo as part of a page that describes your products or services, but it is not OK to use it as part of your company or product logo or branding itself. Under no circumstances is it permitted to use ERPNext as part of a top-level domain name.
@@ -80,6 +79,6 @@
Please note that it is not the goal of this policy to limit commercial activity around ERPNext. We encourage ERPNext-based businesses, and we would love to see hundreds of them.
-When in doubt about your use of the ERPNext name or logo, please contact Frappe Technologies for clarification.
+When in doubt about your use of the ERPNext name or logo, please contact Frappé Technologies for clarification.
(inspired by WordPress)
diff --git a/attributions.md b/attributions.md
index 9cd6eb8..21a44fb 100644
--- a/attributions.md
+++ b/attributions.md
@@ -1,6 +1,6 @@
## ERPNext includes these public works
-For Frappe Framework, please see attributions.md at https://github.com/frappe/frappe/
+For Frappé Framework, please see attributions.md at https://github.com/frappe/frappe/
#### Images
diff --git a/erpnext/accounts/doctype/account/chart_of_accounts/import_from_openerp.py b/erpnext/accounts/doctype/account/chart_of_accounts/import_from_openerp.py
index 9893a5b..cb95bd1 100644
--- a/erpnext/accounts/doctype/account/chart_of_accounts/import_from_openerp.py
+++ b/erpnext/accounts/doctype/account/chart_of_accounts/import_from_openerp.py
@@ -84,7 +84,7 @@
try:
csv_content.setdefault(file_type, [])\
.append(read_csv_content(csvfile.read()))
- except Exception, e:
+ except Exception as e:
continue
return csv_content
diff --git a/erpnext/accounts/doctype/account/test_make_tax_account.js b/erpnext/accounts/doctype/account/test_make_tax_account.js
new file mode 100644
index 0000000..a0e09a1
--- /dev/null
+++ b/erpnext/accounts/doctype/account/test_make_tax_account.js
@@ -0,0 +1,46 @@
+QUnit.module('accounts');
+QUnit.test("test account", assert => {
+ assert.expect(3);
+ let done = assert.async();
+ frappe.run_serially([
+ () => frappe.set_route('Tree', 'Account'),
+ () => frappe.click_button('Expand All'),
+ () => frappe.click_link('Duties and Taxes - '+ frappe.get_abbr(frappe.defaults.get_default("Company"))),
+ () => {
+ if($('a:contains("CGST"):visible').length == 0){
+ return frappe.map_tax.make('CGST', 9);
+ }
+ },
+ () => {
+ if($('a:contains("SGST"):visible').length == 0){
+ return frappe.map_tax.make('SGST', 9);
+ }
+ },
+ () => {
+ if($('a:contains("IGST"):visible').length == 0){
+ return frappe.map_tax.make('IGST', 18);
+ }
+ },
+ () => {
+ assert.ok($('a:contains("CGST"):visible').length!=0, "CGST Checked");
+ assert.ok($('a:contains("SGST"):visible').length!=0, "SGST Checked");
+ assert.ok($('a:contains("IGST"):visible').length!=0, "IGST Checked");
+ },
+ () => done()
+ ]);
+});
+
+
+frappe.map_tax = {
+ make:function(text,rate){
+ return frappe.run_serially([
+ () => frappe.click_button('Add Child'),
+ () => frappe.timeout(0.2),
+ () => cur_dialog.set_value('account_name',text),
+ () => cur_dialog.set_value('account_type','Tax'),
+ () => cur_dialog.set_value('tax_rate',rate),
+ () => cur_dialog.set_value('account_currency','INR'),
+ () => frappe.click_button('Create New'),
+ ]);
+ }
+};
diff --git a/erpnext/accounts/doctype/journal_entry/journal_entry.js b/erpnext/accounts/doctype/journal_entry/journal_entry.js
index 577c77f..9047a4e 100644
--- a/erpnext/accounts/doctype/journal_entry/journal_entry.js
+++ b/erpnext/accounts/doctype/journal_entry/journal_entry.js
@@ -43,8 +43,26 @@
$.each(frm.doc.accounts || [], function(i, row) {
erpnext.journal_entry.set_exchange_rate(frm, row.doctype, row.name);
})
+ },
+
+ company: function(frm) {
+ frappe.call({
+ method: "frappe.client.get_value",
+ args: {
+ doctype: "Company",
+ filters: {"name": frm.doc.company},
+ fieldname: "cost_center"
+ },
+ callback: function(r){
+ if(r.message){
+ $.each(frm.doc.accounts || [], function(i, jvd) {
+ frappe.model.set_value(jvd.doctype, jvd.name, "cost_center", r.message.cost_center);
+ });
+ }
+ }
+ });
}
-})
+});
erpnext.accounts.JournalEntry = frappe.ui.form.Controller.extend({
onload: function() {
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.js b/erpnext/accounts/doctype/payment_entry/payment_entry.js
index eb0f474..05986a0 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.js
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.js
@@ -28,7 +28,7 @@
frm.set_query("party_type", function() {
return{
"filters": {
- "name": ["in",["Customer","Supplier"]],
+ "name": ["in",["Customer","Supplier", "Employee"]],
}
}
});
@@ -70,6 +70,8 @@
var doctypes = ["Sales Order", "Sales Invoice", "Journal Entry"];
} else if (frm.doc.party_type=="Supplier") {
var doctypes = ["Purchase Order", "Purchase Invoice", "Journal Entry"];
+ } else if (frm.doc.party_type=="Employee") {
+ var doctypes = ["Expense Claim", "Journal Entry"];
} else {
var doctypes = ["Journal Entry"];
}
@@ -82,12 +84,18 @@
frm.set_query("reference_name", "references", function(doc, cdt, cdn) {
child = locals[cdt][cdn];
filters = {"docstatus": 1, "company": doc.company};
- party_type_doctypes = ['Sales Invoice', 'Sales Order', 'Purchase Invoice', 'Purchase Order'];
+ party_type_doctypes = ['Sales Invoice', 'Sales Order', 'Purchase Invoice',
+ 'Purchase Order', 'Expense Claim'];
if (in_list(party_type_doctypes, child.reference_doctype)) {
filters[doc.party_type.toLowerCase()] = doc.party;
}
+ if(child.reference_doctype == "Expense Claim") {
+ filters["status"] = "Approved";
+ filters["is_paid"] = 0;
+ }
+
return {
filters: filters
};
@@ -200,9 +208,15 @@
});
} else {
if(!frm.doc.party)
- frm.set_value("party_type", frm.doc.payment_type=="Receive" ? "Customer" : "Supplier");
+ {
+ if (frm.doc.payment_type=="Receive"){
+ frm.set_value("party_type", "Customer");
+ }
+ }
else
+ {
frm.events.party(frm);
+ }
if(frm.doc.mode_of_payment)
frm.events.mode_of_payment(frm);
@@ -339,7 +353,8 @@
method: "erpnext.setup.utils.get_exchange_rate",
args: {
from_currency: frm.doc.paid_from_account_currency,
- to_currency: company_currency
+ to_currency: company_currency,
+ transaction_date: frm.doc.posting_date
},
callback: function(r, rt) {
frm.set_value("source_exchange_rate", r.message);
@@ -486,7 +501,7 @@
c.reference_name = d.voucher_no;
c.total_amount = d.invoice_amount;
c.outstanding_amount = d.outstanding_amount;
- if(!in_list(["Sales Order", "Purchase Order"], d.voucher_type)) {
+ if(!in_list(["Sales Order", "Purchase Order", "Expense Claim"], d.voucher_type)) {
if(flt(d.outstanding_amount) > 0)
total_positive_outstanding += flt(d.outstanding_amount);
else
@@ -501,14 +516,15 @@
} else {
c.exchange_rate = 1;
}
- if (in_list(['Sales Invoice', 'Purchase Invoice'], d.reference_doctype)){
+ if (in_list(['Sales Invoice', 'Purchase Invoice', "Expense Claim"], d.reference_doctype)){
c.due_date = d.due_date;
}
});
if(
(frm.doc.payment_type=="Receive" && frm.doc.party_type=="Customer") ||
- (frm.doc.payment_type=="Pay" && frm.doc.party_type=="Supplier")
+ (frm.doc.payment_type=="Pay" && frm.doc.party_type=="Supplier") ||
+ (frm.doc.payment_type=="Pay" && frm.doc.party_type=="Employee")
) {
if(total_positive_outstanding > total_negative_outstanding)
frm.set_value("paid_amount",
@@ -553,7 +569,8 @@
var allocated_negative_outstanding = 0;
if((frm.doc.payment_type=="Receive" && frm.doc.party_type=="Customer") ||
- (frm.doc.payment_type=="Pay" && frm.doc.party_type=="Supplier")) {
+ (frm.doc.payment_type=="Pay" && frm.doc.party_type=="Supplier") ||
+ (frm.doc.payment_type=="Pay" && frm.doc.party_type=="Employee")) {
if(total_positive_outstanding_including_order > paid_amount) {
var remaining_outstanding = total_positive_outstanding_including_order - paid_amount;
allocated_negative_outstanding = total_negative_outstanding < remaining_outstanding ?
@@ -694,6 +711,14 @@
frappe.msgprint(__("Row #{0}: Reference Document Type must be one of Purchase Order, Purchase Invoice or Journal Entry", [row.idx]));
return false;
}
+
+ if(frm.doc.party_type=="Employee" &&
+ !in_list(["Expense Claim", "Journal Entry"], row.reference_doctype)
+ ) {
+ frappe.model.set_value(row.doctype, row.name, "against_voucher_type", null);
+ frappe.msgprint(__("Row #{0}: Reference Document Type must be one of Expense Claim or Journal Entry", [row.idx]));
+ return false;
+ }
}
if (row) {
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py
index e9471b7..7bb9a52 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py
@@ -12,27 +12,27 @@
import get_average_exchange_rate, get_default_bank_cash_account
from erpnext.setup.utils import get_exchange_rate
from erpnext.accounts.general_ledger import make_gl_entries
-
+from erpnext.hr.doctype.expense_claim.expense_claim import update_reimbursed_amount
from erpnext.controllers.accounts_controller import AccountsController
class InvalidPaymentEntry(ValidationError): pass
class PaymentEntry(AccountsController):
- def setup_party_account_field(self):
+ def setup_party_account_field(self):
self.party_account_field = None
self.party_account = None
self.party_account_currency = None
-
+
if self.payment_type == "Receive":
self.party_account_field = "paid_from"
self.party_account = self.paid_from
self.party_account_currency = self.paid_from_account_currency
-
+
elif self.payment_type == "Pay":
self.party_account_field = "paid_to"
self.party_account = self.paid_to
self.party_account_currency = self.paid_to_account_currency
-
+
def validate(self):
self.setup_party_account_field()
self.set_missing_values()
@@ -50,18 +50,20 @@
self.set_remarks()
self.validate_duplicate_entry()
self.validate_allocated_amount()
-
+
def on_submit(self):
self.setup_party_account_field()
if self.difference_amount:
frappe.throw(_("Difference Amount must be zero"))
self.make_gl_entries()
self.update_advance_paid()
-
+ self.update_expense_claim()
+
def on_cancel(self):
self.setup_party_account_field()
self.make_gl_entries(cancel=1)
self.update_advance_paid()
+ self.update_expense_claim()
self.delink_advance_entry_references()
def validate_duplicate_entry(self):
@@ -70,8 +72,8 @@
if (d.reference_doctype, d.reference_name) in reference_names:
frappe.throw(_("Row #{0}: Duplicate entry in References {1} {2}").format(d.idx, d.reference_doctype, d.reference_name))
reference_names.append((d.reference_doctype, d.reference_name))
-
-
+
+
def validate_allocated_amount(self):
for d in self.get("references"):
if (flt(d.allocated_amount))> 0:
@@ -87,111 +89,113 @@
def set_missing_values(self):
if self.payment_type == "Internal Transfer":
- for field in ("party", "party_balance", "total_allocated_amount",
+ for field in ("party", "party_balance", "total_allocated_amount",
"base_total_allocated_amount", "unallocated_amount"):
self.set(field, None)
self.references = []
else:
if not self.party_type:
frappe.throw(_("Party Type is mandatory"))
-
+
if not self.party:
frappe.throw(_("Party is mandatory"))
-
- self.party_name = frappe.db.get_value(self.party_type, self.party,
+
+ self.party_name = frappe.db.get_value(self.party_type, self.party,
self.party_type.lower() + "_name")
-
+
if self.party:
if not self.party_balance:
self.party_balance = get_balance_on(party_type=self.party_type,
party=self.party, date=self.posting_date, company=self.company)
-
+
if not self.party_account:
party_account = get_party_account(self.party_type, self.party, self.company)
self.set(self.party_account_field, party_account)
self.party_account = party_account
-
+
if self.paid_from and not (self.paid_from_account_currency or self.paid_from_account_balance):
acc = get_account_details(self.paid_from, self.posting_date)
self.paid_from_account_currency = acc.account_currency
self.paid_from_account_balance = acc.account_balance
-
+
if self.paid_to and not (self.paid_to_account_currency or self.paid_to_account_balance):
acc = get_account_details(self.paid_to, self.posting_date)
self.paid_to_account_currency = acc.account_currency
self.paid_to_account_balance = acc.account_balance
-
+
self.party_account_currency = self.paid_from_account_currency \
if self.payment_type=="Receive" else self.paid_to_account_currency
-
+
self.set_missing_ref_details()
-
-
+
+
def set_missing_ref_details(self):
for d in self.get("references"):
if d.allocated_amount:
- ref_details = get_reference_details(d.reference_doctype,
+ ref_details = get_reference_details(d.reference_doctype,
d.reference_name, self.party_account_currency)
-
+
for field, value in ref_details.items():
if not d.get(field):
d.set(field, value)
-
+
def validate_payment_type(self):
if self.payment_type not in ("Receive", "Pay", "Internal Transfer"):
frappe.throw(_("Payment Type must be one of Receive, Pay and Internal Transfer"))
-
+
def validate_party_details(self):
if self.party:
if not frappe.db.exists(self.party_type, self.party):
frappe.throw(_("Invalid {0}: {1}").format(self.party_type, self.party))
-
+
if self.party_account:
party_account_type = "Receivable" if self.party_type=="Customer" else "Payable"
self.validate_account_type(self.party_account, [party_account_type])
-
+
def validate_bank_accounts(self):
if self.payment_type in ("Pay", "Internal Transfer"):
self.validate_account_type(self.paid_from, ["Bank", "Cash"])
-
+
if self.payment_type in ("Receive", "Internal Transfer"):
self.validate_account_type(self.paid_to, ["Bank", "Cash"])
-
+
def validate_account_type(self, account, account_types):
account_type = frappe.db.get_value("Account", account, "account_type")
if account_type not in account_types:
frappe.throw(_("Account Type for {0} must be {1}").format(account, comma_or(account_types)))
-
+
def set_exchange_rate(self):
if self.paid_from and not self.source_exchange_rate:
if self.paid_from_account_currency == self.company_currency:
self.source_exchange_rate = 1
else:
- self.source_exchange_rate = get_exchange_rate(self.paid_from_account_currency,
+ self.source_exchange_rate = get_exchange_rate(self.paid_from_account_currency,
self.company_currency, self.posting_date)
-
+
if self.paid_to and not self.target_exchange_rate:
- self.target_exchange_rate = get_exchange_rate(self.paid_to_account_currency,
+ self.target_exchange_rate = get_exchange_rate(self.paid_to_account_currency,
self.company_currency, self.posting_date)
-
+
def validate_mandatory(self):
for field in ("paid_amount", "received_amount", "source_exchange_rate", "target_exchange_rate"):
if not self.get(field):
frappe.throw(_("{0} is mandatory").format(self.meta.get_label(field)))
-
+
def validate_reference_documents(self):
if self.party_type == "Customer":
valid_reference_doctypes = ("Sales Order", "Sales Invoice", "Journal Entry")
- else:
+ elif self.party_type == "Supplier":
valid_reference_doctypes = ("Purchase Order", "Purchase Invoice", "Journal Entry")
-
+ elif self.party_type == "Employee":
+ valid_reference_doctypes = ("Expense Claim", "Journal Entry")
+
for d in self.get("references"):
if not d.allocated_amount:
continue
if d.reference_doctype not in valid_reference_doctypes:
frappe.throw(_("Reference Doctype must be one of {0}")
.format(comma_or(valid_reference_doctypes)))
-
+
elif d.reference_name:
if not frappe.db.exists(d.reference_doctype, d.reference_name):
frappe.throw(_("{0} {1} does not exist").format(d.reference_doctype, d.reference_name))
@@ -204,21 +208,26 @@
.format(d.reference_doctype, d.reference_name, self.party_type, self.party))
else:
self.validate_journal_entry()
-
- if d.reference_doctype in ("Sales Invoice", "Purchase Invoice"):
- ref_party_account = ref_doc.debit_to \
- if self.party_type=="Customer" else ref_doc.credit_to
+
+ if d.reference_doctype in ("Sales Invoice", "Purchase Invoice", "Expense Claim"):
+ if self.party_type=="Customer":
+ ref_party_account = ref_doc.debit_to
+ elif self.party_type=="Supplier":
+ ref_party_account = ref_doc.credit_to
+ elif self.party_type=="Employee":
+ ref_party_account = ref_doc.payable_account
+
if ref_party_account != self.party_account:
- frappe.throw(_("{0} {1} does not associated with Party Account {2}")
- .format(d.reference_doctype, d.reference_name, self.party_account))
-
+ frappe.throw(_("{0} {1} is associated with {2}, but Party Account is {3}")
+ .format(d.reference_doctype, d.reference_name, ref_party_account, self.party_account))
+
if ref_doc.docstatus != 1:
frappe.throw(_("{0} {1} must be submitted")
.format(d.reference_doctype, d.reference_name))
-
+
def validate_journal_entry(self):
for d in self.get("references"):
- if d.allocated_amount and d.reference_doctype == "Journal Entry":
+ if d.allocated_amount and d.reference_doctype == "Journal Entry":
je_accounts = frappe.db.sql("""select debit, credit from `tabJournal Entry Account`
where account = %s and party=%s and docstatus = 1 and parent = %s
and (reference_type is null or reference_type in ("", "Sales Order", "Purchase Order"))
@@ -236,7 +245,7 @@
if not valid:
frappe.throw(_("Against Journal Entry {0} does not have any unmatched {1} entry")
.format(d.reference_name, dr_or_cr))
-
+
def set_amounts(self):
self.set_amounts_in_company_currency()
self.set_total_allocated_amount()
@@ -246,111 +255,111 @@
def set_amounts_in_company_currency(self):
self.base_paid_amount, self.base_received_amount, self.difference_amount = 0, 0, 0
if self.paid_amount:
- self.base_paid_amount = flt(flt(self.paid_amount) * flt(self.source_exchange_rate),
+ self.base_paid_amount = flt(flt(self.paid_amount) * flt(self.source_exchange_rate),
self.precision("base_paid_amount"))
-
+
if self.received_amount:
- self.base_received_amount = flt(flt(self.received_amount) * flt(self.target_exchange_rate),
+ self.base_received_amount = flt(flt(self.received_amount) * flt(self.target_exchange_rate),
self.precision("base_received_amount"))
-
+
def set_total_allocated_amount(self):
if self.payment_type == "Internal Transfer":
return
-
+
total_allocated_amount, base_total_allocated_amount = 0, 0
for d in self.get("references"):
- if d.allocated_amount:
+ if d.allocated_amount:
total_allocated_amount += flt(d.allocated_amount)
- base_total_allocated_amount += flt(flt(d.allocated_amount) * flt(d.exchange_rate),
+ base_total_allocated_amount += flt(flt(d.allocated_amount) * flt(d.exchange_rate),
self.precision("base_paid_amount"))
-
+
self.total_allocated_amount = abs(total_allocated_amount)
self.base_total_allocated_amount = abs(base_total_allocated_amount)
-
+
def set_unallocated_amount(self):
self.unallocated_amount = 0;
if self.party:
party_amount = self.paid_amount if self.payment_type=="Receive" else self.received_amount
-
+
total_deductions = sum([flt(d.amount) for d in self.get("deductions")])
-
+
if self.total_allocated_amount < party_amount:
if self.payment_type == "Receive":
self.unallocated_amount = party_amount - (self.total_allocated_amount - total_deductions)
else:
self.unallocated_amount = party_amount - (self.total_allocated_amount + total_deductions)
-
+
def set_difference_amount(self):
- base_unallocated_amount = flt(self.unallocated_amount) * (flt(self.source_exchange_rate)
+ base_unallocated_amount = flt(self.unallocated_amount) * (flt(self.source_exchange_rate)
if self.payment_type=="Receive" else flt(self.target_exchange_rate))
-
+
base_party_amount = flt(self.base_total_allocated_amount) + flt(base_unallocated_amount)
-
+
if self.payment_type == "Receive":
self.difference_amount = base_party_amount - self.base_received_amount
elif self.payment_type == "Pay":
self.difference_amount = self.base_paid_amount - base_party_amount
else:
self.difference_amount = self.base_paid_amount - flt(self.base_received_amount)
-
+
for d in self.get("deductions"):
if d.amount:
self.difference_amount -= flt(d.amount)
-
+
self.difference_amount = flt(self.difference_amount, self.precision("difference_amount"))
-
+
def clear_unallocated_reference_document_rows(self):
self.set("references", self.get("references", {"allocated_amount": ["not in", [0, None, ""]]}))
- frappe.db.sql("""delete from `tabPayment Entry Reference`
+ frappe.db.sql("""delete from `tabPayment Entry Reference`
where parent = %s and allocated_amount = 0""", self.name)
-
+
def validate_payment_against_negative_invoice(self):
- if ((self.payment_type=="Pay" and self.party_type=="Customer")
+ if ((self.payment_type=="Pay" and self.party_type=="Customer")
or (self.payment_type=="Receive" and self.party_type=="Supplier")):
-
- total_negative_outstanding = sum([abs(flt(d.outstanding_amount))
+
+ total_negative_outstanding = sum([abs(flt(d.outstanding_amount))
for d in self.get("references") if flt(d.outstanding_amount) < 0])
-
+
party_amount = self.paid_amount if self.payment_type=="Receive" else self.received_amount
if not total_negative_outstanding:
frappe.throw(_("Cannot {0} {1} {2} without any negative outstanding invoice")
- .format(self.payment_type, ("to" if self.party_type=="Customer" else "from"),
+ .format(self.payment_type, ("to" if self.party_type=="Customer" else "from"),
self.party_type), InvalidPaymentEntry)
-
+
elif party_amount > total_negative_outstanding:
frappe.throw(_("Paid Amount cannot be greater than total negative outstanding amount {0}")
.format(total_negative_outstanding), InvalidPaymentEntry)
-
+
def set_title(self):
if self.payment_type in ("Receive", "Pay"):
self.title = self.party
else:
self.title = self.paid_from + " - " + self.paid_to
-
+
def validate_transaction_reference(self):
bank_account = self.paid_to if self.payment_type == "Receive" else self.paid_from
bank_account_type = frappe.db.get_value("Account", bank_account, "account_type")
-
+
if bank_account_type == "Bank":
if not self.reference_no or not self.reference_date:
frappe.throw(_("Reference No and Reference Date is mandatory for Bank transaction"))
-
+
def set_remarks(self):
if self.remarks: return
-
+
if self.payment_type=="Internal Transfer":
remarks = [_("Amount {0} {1} transferred from {2} to {3}")
.format(self.paid_from_account_currency, self.paid_amount, self.paid_from, self.paid_to)]
else:
-
+
remarks = [_("Amount {0} {1} {2} {3}").format(
self.party_account_currency,
self.paid_amount if self.payment_type=="Receive" else self.received_amount,
_("received from") if self.payment_type=="Receive" else _("to"), self.party
)]
-
+
if self.reference_no:
remarks.append(_("Transaction reference no {0} dated {1}")
.format(self.reference_no, self.reference_date))
@@ -358,35 +367,35 @@
if self.payment_type in ["Receive", "Pay"]:
for d in self.get("references"):
if d.allocated_amount:
- remarks.append(_("Amount {0} {1} against {2} {3}").format(self.party_account_currency,
+ remarks.append(_("Amount {0} {1} against {2} {3}").format(self.party_account_currency,
d.allocated_amount, d.reference_doctype, d.reference_name))
-
+
for d in self.get("deductions"):
if d.amount:
remarks.append(_("Amount {0} {1} deducted against {2}")
.format(self.company_currency, d.amount, d.account))
self.set("remarks", "\n".join(remarks))
-
+
def make_gl_entries(self, cancel=0, adv_adj=0):
if self.payment_type in ("Receive", "Pay") and not self.get("party_account_field"):
self.setup_party_account_field()
-
+
gl_entries = []
self.add_party_gl_entries(gl_entries)
self.add_bank_gl_entries(gl_entries)
self.add_deductions_gl_entries(gl_entries)
make_gl_entries(gl_entries, cancel=cancel, adv_adj=adv_adj)
-
+
def add_party_gl_entries(self, gl_entries):
if self.party_account:
if self.payment_type=="Receive":
against_account = self.paid_to
else:
against_account = self.paid_from
-
-
+
+
party_gl_dict = self.get_gl_dict({
"account": self.party_account,
"party_type": self.party_type,
@@ -394,39 +403,39 @@
"against": against_account,
"account_currency": self.party_account_currency
})
-
+
dr_or_cr = "credit" if self.party_type == "Customer" else "debit"
-
+
for d in self.get("references"):
gle = party_gl_dict.copy()
gle.update({
"against_voucher_type": d.reference_doctype,
"against_voucher": d.reference_name
})
-
- allocated_amount_in_company_currency = flt(flt(d.allocated_amount) * flt(d.exchange_rate),
- self.precision("paid_amount"))
-
+
+ allocated_amount_in_company_currency = flt(flt(d.allocated_amount) * flt(d.exchange_rate),
+ self.precision("paid_amount"))
+
gle.update({
dr_or_cr + "_in_account_currency": d.allocated_amount,
dr_or_cr: allocated_amount_in_company_currency
})
-
+
gl_entries.append(gle)
-
+
if self.unallocated_amount:
base_unallocated_amount = base_unallocated_amount = self.unallocated_amount * \
(self.source_exchange_rate if self.payment_type=="Receive" else self.target_exchange_rate)
-
+
gle = party_gl_dict.copy()
-
+
gle.update({
dr_or_cr + "_in_account_currency": self.unallocated_amount,
dr_or_cr: base_unallocated_amount
})
gl_entries.append(gle)
-
+
def add_bank_gl_entries(self, gl_entries):
if self.payment_type in ("Pay", "Internal Transfer"):
gl_entries.append(
@@ -448,14 +457,14 @@
"debit": self.base_received_amount
})
)
-
+
def add_deductions_gl_entries(self, gl_entries):
for d in self.get("deductions"):
if d.amount:
account_currency = get_account_currency(d.account)
if account_currency != self.company_currency:
frappe.throw(_("Currency for {0} must be {1}").format(d.account, self.company_currency))
-
+
gl_entries.append(
self.get_gl_dict({
"account": d.account,
@@ -466,34 +475,41 @@
"cost_center": d.cost_center
})
)
-
+
def update_advance_paid(self):
if self.payment_type in ("Receive", "Pay") and self.party:
for d in self.get("references"):
if d.allocated_amount and d.reference_doctype in ("Sales Order", "Purchase Order"):
frappe.get_doc(d.reference_doctype, d.reference_name).set_total_advance_paid()
+ def update_expense_claim(self):
+ if self.payment_type in ("Pay") and self.party:
+ for d in self.get("references"):
+ if d.reference_doctype=="Expense Claim" and d.reference_name:
+ doc = frappe.get_doc("Expense Claim", d.reference_name)
+ update_reimbursed_amount(doc)
+
@frappe.whitelist()
def get_outstanding_reference_documents(args):
args = json.loads(args)
party_account_currency = get_account_currency(args.get("party_account"))
company_currency = frappe.db.get_value("Company", args.get("company"), "default_currency")
-
+
# Get negative outstanding sales /purchase invoices
total_field = "base_grand_total" if party_account_currency == company_currency else "grand_total"
-
- negative_outstanding_invoices = get_negative_outstanding_invoices(args.get("party_type"),
+
+ negative_outstanding_invoices = get_negative_outstanding_invoices(args.get("party_type"),
args.get("party"), args.get("party_account"), total_field)
# Get positive outstanding sales /purchase invoices
- outstanding_invoices = get_outstanding_invoices(args.get("party_type"), args.get("party"),
+ outstanding_invoices = get_outstanding_invoices(args.get("party_type"), args.get("party"),
args.get("party_account"))
-
+
for d in outstanding_invoices:
d["exchange_rate"] = 1
if party_account_currency != company_currency:
- if d.voucher_type in ("Sales Invoice", "Purchase Invoice"):
+ if d.voucher_type in ("Sales Invoice", "Purchase Invoice", "Expense Claim"):
d["exchange_rate"] = frappe.db.get_value(d.voucher_type, d.voucher_no, "conversion_rate")
elif d.voucher_type == "Journal Entry":
d["exchange_rate"] = get_exchange_rate(
@@ -501,79 +517,89 @@
)
# Get all SO / PO which are not fully billed or aginst which full advance not paid
- orders_to_be_billed = get_orders_to_be_billed(args.get("posting_date"),args.get("party_type"), args.get("party"),
+ orders_to_be_billed = get_orders_to_be_billed(args.get("posting_date"),args.get("party_type"), args.get("party"),
party_account_currency, company_currency)
-
+
return negative_outstanding_invoices + outstanding_invoices + orders_to_be_billed
-
+
def get_orders_to_be_billed(posting_date, party_type, party, party_account_currency, company_currency):
- voucher_type = 'Sales Order' if party_type == "Customer" else 'Purchase Order'
+ if party_type == "Customer":
+ voucher_type = 'Sales Order'
+ elif party_type == "Supplier":
+ voucher_type = 'Purchase Order'
+ elif party_type == "Employee":
+ voucher_type = None
- ref_field = "base_grand_total" if party_account_currency == company_currency else "grand_total"
+ orders = []
+ if voucher_type:
+ ref_field = "base_grand_total" if party_account_currency == company_currency else "grand_total"
- orders = frappe.db.sql("""
- select
- name as voucher_no,
- {ref_field} as invoice_amount,
- ({ref_field} - advance_paid) as outstanding_amount,
- transaction_date as posting_date
- from
- `tab{voucher_type}`
- where
- {party_type} = %s
- and docstatus = 1
- and ifnull(status, "") != "Closed"
- and {ref_field} > advance_paid
- and abs(100 - per_billed) > 0.01
- order by
- transaction_date, name
- """.format(**{
- "ref_field": ref_field,
- "voucher_type": voucher_type,
- "party_type": scrub(party_type)
- }), party, as_dict = True)
+ orders = frappe.db.sql("""
+ select
+ name as voucher_no,
+ {ref_field} as invoice_amount,
+ ({ref_field} - advance_paid) as outstanding_amount,
+ transaction_date as posting_date
+ from
+ `tab{voucher_type}`
+ where
+ {party_type} = %s
+ and docstatus = 1
+ and ifnull(status, "") != "Closed"
+ and {ref_field} > advance_paid
+ and abs(100 - per_billed) > 0.01
+ order by
+ transaction_date, name
+ """.format(**{
+ "ref_field": ref_field,
+ "voucher_type": voucher_type,
+ "party_type": scrub(party_type)
+ }), party, as_dict = True)
order_list = []
for d in orders:
d["voucher_type"] = voucher_type
# This assumes that the exchange rate required is the one in the SO
- d["exchange_rate"] = get_exchange_rate(party_account_currency,
+ d["exchange_rate"] = get_exchange_rate(party_account_currency,
company_currency, posting_date)
order_list.append(d)
return order_list
-
+
def get_negative_outstanding_invoices(party_type, party, party_account, total_field):
- voucher_type = "Sales Invoice" if party_type == "Customer" else "Purchase Invoice"
- return frappe.db.sql("""
- select
- "{voucher_type}" as voucher_type, name as voucher_no,
- {total_field} as invoice_amount, outstanding_amount, posting_date,
- due_date, conversion_rate as exchange_rate
- from
- `tab{voucher_type}`
- where
- {party_type} = %s and {party_account} = %s and docstatus = 1 and outstanding_amount < 0
- order by
- posting_date, name
- """.format(**{
- "total_field": total_field,
- "voucher_type": voucher_type,
- "party_type": scrub(party_type),
- "party_account": "debit_to" if party_type=="Customer" else "credit_to"
- }), (party, party_account), as_dict = True)
-
+ if party_type != "Employee":
+ voucher_type = "Sales Invoice" if party_type == "Customer" else "Purchase Invoice"
+ return frappe.db.sql("""
+ select
+ "{voucher_type}" as voucher_type, name as voucher_no,
+ {total_field} as invoice_amount, outstanding_amount, posting_date,
+ due_date, conversion_rate as exchange_rate
+ from
+ `tab{voucher_type}`
+ where
+ {party_type} = %s and {party_account} = %s and docstatus = 1 and outstanding_amount < 0
+ order by
+ posting_date, name
+ """.format(**{
+ "total_field": total_field,
+ "voucher_type": voucher_type,
+ "party_type": scrub(party_type),
+ "party_account": "debit_to" if party_type=="Customer" else "credit_to"
+ }), (party, party_account), as_dict = True)
+ else:
+ return []
+
@frappe.whitelist()
def get_party_details(company, party_type, party, date):
if not frappe.db.exists(party_type, party):
frappe.throw(_("Invalid {0}: {1}").format(party_type, party))
-
+
party_account = get_party_account(party_type, party, company)
-
+
account_currency = get_account_currency(party_account)
account_balance = get_balance_on(party_account, date)
party_balance = get_balance_on(party_type=party_type, party=party)
-
+
return {
"party_account": party_account,
"party_account_currency": account_currency,
@@ -581,7 +607,7 @@
"account_balance": account_balance
}
-@frappe.whitelist()
+@frappe.whitelist()
def get_account_details(account, date):
frappe.has_permission('Payment Entry', throw=True)
return frappe._dict({
@@ -589,59 +615,67 @@
"account_balance": get_balance_on(account, date),
"account_type": frappe.db.get_value("Account", account, "account_type")
})
-
+
@frappe.whitelist()
def get_company_defaults(company):
fields = ["write_off_account", "exchange_gain_loss_account", "cost_center"]
ret = frappe.db.get_value("Company", company, fields, as_dict=1)
-
+
for fieldname in fields:
if not ret[fieldname]:
frappe.throw(_("Please set default {0} in Company {1}")
.format(frappe.get_meta("Company").get_label(fieldname), company))
-
+
return ret
@frappe.whitelist()
def get_reference_details(reference_doctype, reference_name, party_account_currency):
total_amount = outstanding_amount = exchange_rate = None
ref_doc = frappe.get_doc(reference_doctype, reference_name)
-
+
if reference_doctype != "Journal Entry":
if party_account_currency == ref_doc.company_currency:
- total_amount = ref_doc.base_grand_total
+ if ref_doc.doctype == "Expense Claim":
+ total_amount = ref_doc.total_sanctioned_amount
+ else:
+ total_amount = ref_doc.base_grand_total
exchange_rate = 1
else:
total_amount = ref_doc.grand_total
-
- # Get the exchange rate from the original ref doc
+
+ # Get the exchange rate from the original ref doc
# or get it based on the posting date of the ref doc
exchange_rate = ref_doc.get("conversion_rate") or \
get_exchange_rate(party_account_currency, ref_doc.company_currency, ref_doc.posting_date)
-
+
outstanding_amount = ref_doc.get("outstanding_amount") \
- if reference_doctype in ("Sales Invoice", "Purchase Invoice") \
- else flt(total_amount) - flt(ref_doc.advance_paid)
+ if reference_doctype in ("Sales Invoice", "Purchase Invoice", "Expense Claim") \
+ else flt(total_amount) - flt(ref_doc.advance_paid)
else:
# Get the exchange rate based on the posting date of the ref doc
- exchange_rate = get_exchange_rate(party_account_currency,
+ exchange_rate = get_exchange_rate(party_account_currency,
ref_doc.company_currency, ref_doc.posting_date)
-
+
return frappe._dict({
"due_date": ref_doc.get("due_date"),
"total_amount": total_amount,
"outstanding_amount": outstanding_amount,
"exchange_rate": exchange_rate
})
-
+
@frappe.whitelist()
def get_payment_entry(dt, dn, party_amount=None, bank_account=None, bank_amount=None):
doc = frappe.get_doc(dt, dn)
-
+
if dt in ("Sales Order", "Purchase Order") and flt(doc.per_billed, 2) > 0:
frappe.throw(_("Can only make payment against unbilled {0}").format(dt))
-
- party_type = "Customer" if dt in ("Sales Invoice", "Sales Order") else "Supplier"
+
+ if dt in ("Sales Invoice", "Sales Order"):
+ party_type = "Customer"
+ elif dt in ("Purchase Invoice", "Purchase Order"):
+ party_type = "Supplier"
+ elif dt in ("Expense Claim"):
+ party_type = "Employee"
# party account
if dt == "Sales Invoice":
@@ -650,16 +684,16 @@
party_account = doc.credit_to
else:
party_account = get_party_account(party_type, doc.get(party_type.lower()), doc.company)
-
+
party_account_currency = doc.get("party_account_currency") or get_account_currency(party_account)
-
+
# payment type
if (dt == "Sales Order" or (dt=="Sales Invoice" and doc.outstanding_amount > 0)) \
or (dt=="Purchase Invoice" and doc.outstanding_amount < 0):
payment_type = "Receive"
else:
payment_type = "Pay"
-
+
# amounts
grand_total = outstanding_amount = 0
if party_amount:
@@ -667,15 +701,18 @@
elif dt in ("Sales Invoice", "Purchase Invoice"):
grand_total = doc.base_grand_total if party_account_currency == doc.company_currency else doc.grand_total
outstanding_amount = doc.outstanding_amount
+ elif dt in ("Expense Claim"):
+ grand_total = doc.total_sanctioned_amount
+ outstanding_amount = doc.total_sanctioned_amount - doc.total_amount_reimbursed
else:
total_field = "base_grand_total" if party_account_currency == doc.company_currency else "grand_total"
grand_total = flt(doc.get(total_field))
outstanding_amount = grand_total - flt(doc.advance_paid)
# bank or cash
- bank = get_default_bank_cash_account(doc.company, "Bank", mode_of_payment=doc.get("mode_of_payment"),
+ bank = get_default_bank_cash_account(doc.company, "Bank", mode_of_payment=doc.get("mode_of_payment"),
account=bank_account)
-
+
paid_amount = received_amount = 0
if party_account_currency == bank.account_currency:
paid_amount = received_amount = abs(outstanding_amount)
@@ -687,7 +724,7 @@
received_amount = abs(outstanding_amount)
if bank_amount:
paid_amount = bank_amount
-
+
pe = frappe.new_doc("Payment Entry")
pe.payment_type = payment_type
pe.company = doc.company
@@ -704,7 +741,7 @@
pe.received_amount = received_amount
pe.allocate_payment_amount = 1
pe.letter_head = doc.get("letter_head")
-
+
pe.append("references", {
"reference_doctype": dt,
"reference_name": dn,
diff --git a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
index ccf114f..0316cca 100644
--- a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
@@ -10,6 +10,7 @@
from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry, InvalidPaymentEntry
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice
+from erpnext.hr.doctype.expense_claim.test_expense_claim import make_expense_claim
test_dependencies = ["Item"]
@@ -20,80 +21,102 @@
pe.paid_from = "Debtors - _TC"
pe.insert()
pe.submit()
-
+
expected_gle = dict((d[0], d) for d in [
["Debtors - _TC", 0, 1000, so.name],
["_Test Cash - _TC", 1000.0, 0, None]
])
-
+
self.validate_gl_entries(pe.name, expected_gle)
-
+
so_advance_paid = frappe.db.get_value("Sales Order", so.name, "advance_paid")
self.assertEqual(so_advance_paid, 1000)
-
+
pe.cancel()
-
+
self.assertFalse(self.get_gle(pe.name))
-
+
so_advance_paid = frappe.db.get_value("Sales Order", so.name, "advance_paid")
self.assertEqual(so_advance_paid, 0)
-
+
def test_payment_entry_against_si_usd_to_usd(self):
si = create_sales_invoice(customer="_Test Customer USD", debit_to="_Test Receivable USD - _TC",
currency="USD", conversion_rate=50)
pe = get_payment_entry("Sales Invoice", si.name, bank_account="_Test Bank USD - _TC")
pe.reference_no = "1"
pe.reference_date = "2016-01-01"
- pe.target_exchange_rate = 50
+ pe.target_exchange_rate = 50
pe.insert()
pe.submit()
-
+
expected_gle = dict((d[0], d) for d in [
["_Test Receivable USD - _TC", 0, 5000, si.name],
["_Test Bank USD - _TC", 5000.0, 0, None]
])
-
+
self.validate_gl_entries(pe.name, expected_gle)
-
+
outstanding_amount = flt(frappe.db.get_value("Sales Invoice", si.name, "outstanding_amount"))
self.assertEqual(outstanding_amount, 0)
-
+
pe.cancel()
self.assertFalse(self.get_gle(pe.name))
-
+
outstanding_amount = flt(frappe.db.get_value("Sales Invoice", si.name, "outstanding_amount"))
self.assertEqual(outstanding_amount, 100)
-
+
def test_payment_entry_against_pi(self):
pi = make_purchase_invoice(supplier="_Test Supplier USD", debit_to="_Test Payable USD - _TC",
currency="USD", conversion_rate=50)
pe = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Bank USD - _TC")
pe.reference_no = "1"
pe.reference_date = "2016-01-01"
- pe.source_exchange_rate = 50
+ pe.source_exchange_rate = 50
pe.insert()
pe.submit()
-
+
expected_gle = dict((d[0], d) for d in [
["_Test Payable USD - _TC", 12500, 0, pi.name],
["_Test Bank USD - _TC", 0, 12500, None]
])
-
+
self.validate_gl_entries(pe.name, expected_gle)
-
+
outstanding_amount = flt(frappe.db.get_value("Sales Invoice", pi.name, "outstanding_amount"))
self.assertEqual(outstanding_amount, 0)
-
+
+ def test_payment_entry_against_ec(self):
+
+ payable = frappe.db.get_value('Company', "_Test Company", 'default_payable_account')
+ ec = make_expense_claim(payable, 300, 300, "_Test Company","Travel Expenses - _TC")
+ pe = get_payment_entry("Expense Claim", ec.name, bank_account="_Test Bank USD - _TC", bank_amount=300)
+ pe.reference_no = "1"
+ pe.reference_date = "2016-01-01"
+ pe.source_exchange_rate = 1
+ pe.insert()
+ pe.submit()
+
+ expected_gle = dict((d[0], d) for d in [
+ [payable, 300, 0, ec.name],
+ ["_Test Bank USD - _TC", 0, 300, None]
+ ])
+
+ self.validate_gl_entries(pe.name, expected_gle)
+
+ outstanding_amount = flt(frappe.db.get_value("Expense Claim", ec.name, "total_sanctioned_amount")) - \
+ flt(frappe.db.get_value("Expense Claim", ec.name, "total_amount_reimbursed"))
+ self.assertEqual(outstanding_amount, 0)
+
def test_payment_entry_against_si_usd_to_inr(self):
si = create_sales_invoice(customer="_Test Customer USD", debit_to="_Test Receivable USD - _TC",
currency="USD", conversion_rate=50)
- pe = get_payment_entry("Sales Invoice", si.name, party_amount=20,
+ pe = get_payment_entry("Sales Invoice", si.name, party_amount=20,
bank_account="_Test Bank - _TC", bank_amount=900)
pe.reference_no = "1"
pe.reference_date = "2016-01-01"
-
+
self.assertEqual(pe.difference_amount, 100)
-
+
pe.append("deductions", {
"account": "_Test Exchange Gain/Loss - _TC",
"cost_center": "_Test Cost Center - _TC",
@@ -101,15 +124,15 @@
})
pe.insert()
pe.submit()
-
+
expected_gle = dict((d[0], d) for d in [
["_Test Receivable USD - _TC", 0, 1000, si.name],
["_Test Bank - _TC", 900, 0, None],
["_Test Exchange Gain/Loss - _TC", 100.0, 0, None],
])
-
+
self.validate_gl_entries(pe.name, expected_gle)
-
+
outstanding_amount = flt(frappe.db.get_value("Sales Invoice", si.name, "outstanding_amount"))
self.assertEqual(outstanding_amount, 80)
@@ -140,7 +163,7 @@
pe.source_exchange_rate, 65.1,
"{0} is not equal to {1}".format(pe.source_exchange_rate, 65.1)
)
-
+
def test_internal_transfer_usd_to_inr(self):
pe = frappe.new_doc("Payment Entry")
pe.payment_type = "Internal Transfer"
@@ -152,31 +175,31 @@
pe.received_amount = 4500
pe.reference_no = "2"
pe.reference_date = nowdate()
-
+
pe.setup_party_account_field()
pe.set_missing_values()
pe.set_exchange_rate()
pe.set_amounts()
-
+
self.assertEquals(pe.difference_amount, 500)
-
+
pe.append("deductions", {
"account": "_Test Exchange Gain/Loss - _TC",
"cost_center": "_Test Cost Center - _TC",
"amount": 500
})
-
+
pe.insert()
pe.submit()
-
+
expected_gle = dict((d[0], d) for d in [
["_Test Bank USD - _TC", 0, 5000, None],
["_Test Bank - _TC", 4500, 0, None],
["_Test Exchange Gain/Loss - _TC", 500.0, 0, None],
])
-
+
self.validate_gl_entries(pe.name, expected_gle)
-
+
def test_payment_against_negative_sales_invoice(self):
pe1 = frappe.new_doc("Payment Entry")
pe1.payment_type = "Pay"
@@ -186,33 +209,33 @@
pe1.paid_from = "_Test Cash - _TC"
pe1.paid_amount = 100
pe1.received_amount = 100
-
+
self.assertRaises(InvalidPaymentEntry, pe1.validate)
-
+
si1 = create_sales_invoice()
-
+
# create full payment entry against si1
pe2 = get_payment_entry("Sales Invoice", si1.name, bank_account="_Test Cash - _TC")
pe2.insert()
pe2.submit()
-
+
# create return entry against si1
create_sales_invoice(is_return=1, return_against=si1.name, qty=-1)
si1_outstanding = frappe.db.get_value("Sales Invoice", si1.name, "outstanding_amount")
self.assertEqual(si1_outstanding, -100)
-
+
# pay more than outstanding against si1
pe3 = get_payment_entry("Sales Invoice", si1.name, bank_account="_Test Cash - _TC")
pe3.paid_amount = pe3.received_amount = 300
self.assertRaises(InvalidPaymentEntry, pe3.validate)
-
+
# pay negative outstanding against si1
pe3.paid_to = "Debtors - _TC"
pe3.paid_amount = pe3.received_amount = 100
-
+
pe3.insert()
pe3.submit()
-
+
expected_gle = dict((d[0], d) for d in [
["Debtors - _TC", 100, 0, si1.name],
["_Test Cash - _TC", 0, 100, None]
@@ -228,10 +251,10 @@
outstanding_amount = flt(frappe.db.get_value("Sales Invoice", si1.name, "outstanding_amount"))
self.assertEqual(outstanding_amount, -100)
-
+
def validate_gl_entries(self, voucher_no, expected_gle):
gl_entries = self.get_gle(voucher_no)
-
+
self.assertTrue(gl_entries)
for i, gle in enumerate(gl_entries):
@@ -239,7 +262,7 @@
self.assertEquals(expected_gle[gle.account][1], gle.debit)
self.assertEquals(expected_gle[gle.account][2], gle.credit)
self.assertEquals(expected_gle[gle.account][3], gle.against_voucher)
-
+
def get_gle(self, voucher_no):
return frappe.db.sql("""select account, debit, credit, against_voucher
from `tabGL Entry` where voucher_type='Payment Entry' and voucher_no=%s
diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.py b/erpnext/accounts/doctype/pos_profile/pos_profile.py
index 86682d3..8d6a2db 100644
--- a/erpnext/accounts/doctype/pos_profile/pos_profile.py
+++ b/erpnext/accounts/doctype/pos_profile/pos_profile.py
@@ -14,6 +14,7 @@
self.check_for_duplicate()
self.validate_all_link_fields()
self.validate_duplicate_groups()
+ self.check_default_payment()
self.validate_customer_territory_group()
def check_for_duplicate(self):
@@ -49,6 +50,14 @@
if len(customer_groups) != len(set(customer_groups)):
frappe.throw(_("Duplicate customer group found in the cutomer group table"), title = "Duplicate Customer Group")
+ def check_default_payment(self):
+ if self.payments:
+ default_mode_of_payment = [d.default for d in self.payments if d.default]
+ if not default_mode_of_payment:
+ frappe.throw(_("Set default mode of payment"))
+
+ if len(default_mode_of_payment) > 1:
+ frappe.throw(_("Multiple default mode of payment is not allowed"))
def validate_customer_territory_group(self):
if not self.territory:
frappe.throw(_("Territory is Required in POS Profile"), title="Mandatory Field")
diff --git a/erpnext/accounts/doctype/pos_profile/test_pos_profile.py b/erpnext/accounts/doctype/pos_profile/test_pos_profile.py
index 534abb6..803ee8e 100644
--- a/erpnext/accounts/doctype/pos_profile/test_pos_profile.py
+++ b/erpnext/accounts/doctype/pos_profile/test_pos_profile.py
@@ -31,6 +31,8 @@
frappe.db.sql("delete from `tabPOS Profile`")
def make_pos_profile():
+ frappe.db.sql("delete from `tabPOS Profile`")
+
pos_profile = frappe.get_doc({
"company": "_Test Company",
"cost_center": "_Test Cost Center - _TC",
diff --git a/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.js b/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.js
new file mode 100644
index 0000000..4d34033
--- /dev/null
+++ b/erpnext/accounts/doctype/pricing_rule/test_pricing_rule.js
@@ -0,0 +1,28 @@
+QUnit.module('Pricing Rule"');
+
+QUnit.test("test pricing rule", function(assert) {
+ assert.expect(2);
+ let done = assert.async();
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make("Pricing Rule", [
+ {title: 'Test Pricing Rule'},
+ {item_code:'Test Product 2'},
+ {selling:1},
+ {applicable_for:'Customer'},
+ {customer:'Test Customer 3'},
+ {min_qty:1},
+ {max_qty:20},
+ {valid_upto: frappe.datetime.add_days(frappe.defaults.get_default("year_end_date"), 1)},
+ {discount_percentage:10},
+ {for_price_list:'Standard Selling'}
+ ]);
+ },
+ () => {
+ assert.ok(cur_frm.doc.item_code=='Test Product 2');
+ assert.ok(cur_frm.doc.customer=='Test Customer 3');
+ },
+ () => done()
+ ]);
+});
+
diff --git a/erpnext/accounts/doctype/sales_invoice/pos.py b/erpnext/accounts/doctype/sales_invoice/pos.py
index 3c9de12..57f75b4 100644
--- a/erpnext/accounts/doctype/sales_invoice/pos.py
+++ b/erpnext/accounts/doctype/sales_invoice/pos.py
@@ -485,7 +485,7 @@
si_doc.insert()
si_doc.submit()
frappe.db.commit()
- except Exception, e:
+ except Exception as e:
if frappe.message_log: frappe.message_log.pop()
frappe.db.rollback()
save_invoice(e, si_doc, name)
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index 90b36e0..62d9a1e 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -167,15 +167,15 @@
"_Test Account S&H Education Cess - _TC": [1.5, 1619.5, 0.03, 32.39],
"_Test Account CST - _TC": [32.5, 1652, 0.65, 33.04],
"_Test Account VAT - _TC": [156.5, 1808.5, 3.13, 36.17],
- "_Test Account Discount - _TC": [-180.5, 1628, -3.61, 32.56]
+ "_Test Account Discount - _TC": [-181.0, 1627.5, -3.62, 32.55]
}
for d in si.get("taxes"):
for i, k in enumerate(expected_values["keys"]):
self.assertEquals(d.get(k), expected_values[d.account_head][i])
- self.assertEquals(si.base_grand_total, 1628)
- self.assertEquals(si.grand_total, 32.56)
+ self.assertEquals(si.base_grand_total, 1627.5)
+ self.assertEquals(si.grand_total, 32.55)
def test_sales_invoice_with_discount_and_inclusive_tax(self):
si = create_sales_invoice(qty=100, rate=50, do_not_save=True)
@@ -235,21 +235,29 @@
"item_code": "_Test Item Home Desktop 100",
"price_list_rate": 62.5,
"discount_percentage": 0,
- "rate": 62.5, "amount": 625,
+ "rate": 62.5,
+ "amount": 625,
"base_price_list_rate": 62.5,
- "base_rate": 62.5, "base_amount": 625,
- "net_rate": 46.54, "net_amount": 465.37,
- "base_net_rate": 46.54, "base_net_amount": 465.37
+ "base_rate": 62.5,
+ "base_amount": 625,
+ "net_rate": 46.54,
+ "net_amount": 465.37,
+ "base_net_rate": 46.54,
+ "base_net_amount": 465.37
},
{
"item_code": "_Test Item Home Desktop 200",
"price_list_rate": 190.66,
"discount_percentage": 0,
- "rate": 190.66, "amount": 953.3,
+ "rate": 190.66,
+ "amount": 953.3,
"base_price_list_rate": 190.66,
- "base_rate": 190.66, "base_amount": 953.3,
- "net_rate": 139.62, "net_amount": 698.08,
- "base_net_rate": 139.62, "base_net_amount": 698.08
+ "base_rate": 190.66,
+ "base_amount": 953.3,
+ "net_rate": 139.62,
+ "net_amount": 698.08,
+ "base_net_rate": 139.62,
+ "base_net_amount": 698.08
}
]
@@ -270,13 +278,13 @@
"keys": ["tax_amount", "tax_amount_after_discount_amount", "total"],
"_Test Account Excise Duty - _TC": [140, 130.31, 1293.76],
"_Test Account Education Cess - _TC": [2.8, 2.61, 1296.37],
- "_Test Account S&H Education Cess - _TC": [1.4, 1.31, 1297.68],
- "_Test Account CST - _TC": [27.88, 25.96, 1323.64],
- "_Test Account VAT - _TC": [156.25, 145.43, 1469.07],
- "_Test Account Customs Duty - _TC": [125, 116.35, 1585.42],
- "_Test Account Shipping Charges - _TC": [100, 100, 1685.42],
- "_Test Account Discount - _TC": [-180.33, -168.54, 1516.88],
- "_Test Account Service Tax - _TC": [-18.03, -16.88, 1500]
+ "_Test Account S&H Education Cess - _TC": [1.4, 1.30, 1297.67],
+ "_Test Account CST - _TC": [27.88, 25.95, 1323.62],
+ "_Test Account VAT - _TC": [156.25, 145.43, 1469.05],
+ "_Test Account Customs Duty - _TC": [125, 116.35, 1585.40],
+ "_Test Account Shipping Charges - _TC": [100, 100, 1685.40],
+ "_Test Account Discount - _TC": [-180.33, -168.54, 1516.86],
+ "_Test Account Service Tax - _TC": [-18.03, -16.86, 1500]
}
for d in si.get("taxes"):
@@ -312,13 +320,13 @@
[test_records[3]["items"][0]["income_account"], 0.0, 1163.45],
[test_records[3]["taxes"][0]["account_head"], 0.0, 130.31],
[test_records[3]["taxes"][1]["account_head"], 0.0, 2.61],
- [test_records[3]["taxes"][2]["account_head"], 0.0, 1.31],
- [test_records[3]["taxes"][3]["account_head"], 0.0, 25.96],
+ [test_records[3]["taxes"][2]["account_head"], 0.0, 1.30],
+ [test_records[3]["taxes"][3]["account_head"], 0.0, 25.95],
[test_records[3]["taxes"][4]["account_head"], 0.0, 145.43],
[test_records[3]["taxes"][5]["account_head"], 0.0, 116.35],
[test_records[3]["taxes"][6]["account_head"], 0.0, 100],
[test_records[3]["taxes"][7]["account_head"], 168.54, 0.0],
- ["_Test Account Service Tax - _TC", 16.88, 0.0],
+ ["_Test Account Service Tax - _TC", 16.86, 0.0]
])
for gle in gl_entries:
@@ -334,6 +342,61 @@
self.assertFalse(gle)
+ def test_tax_calculation_with_multiple_items(self):
+ si = create_sales_invoice(qty=84, rate=4.6, do_not_save=True)
+ item_row = si.get("items")[0]
+ for qty in (54, 288, 144, 430):
+ item_row_copy = copy.deepcopy(item_row)
+ item_row_copy.qty = qty
+ si.append("items", item_row_copy)
+
+ si.append("taxes", {
+ "account_head": "_Test Account VAT - _TC",
+ "charge_type": "On Net Total",
+ "cost_center": "_Test Cost Center - _TC",
+ "description": "VAT",
+ "doctype": "Sales Taxes and Charges",
+ "rate": 19
+ })
+ si.insert()
+
+ self.assertEquals(si.net_total, 4600)
+
+ self.assertEquals(si.get("taxes")[0].tax_amount, 874.0)
+ self.assertEquals(si.get("taxes")[0].total, 5474.0)
+
+ self.assertEquals(si.grand_total, 5474.0)
+
+ def test_tax_calculation_with_multiple_items_and_discount(self):
+ si = create_sales_invoice(qty=1, rate=75, do_not_save=True)
+ item_row = si.get("items")[0]
+ for rate in (500, 200, 100, 50, 50):
+ item_row_copy = copy.deepcopy(item_row)
+ item_row_copy.price_list_rate = rate
+ item_row_copy.rate = rate
+ si.append("items", item_row_copy)
+
+ si.apply_discount_on = "Net Total"
+ si.discount_amount = 75.0
+
+ si.append("taxes", {
+ "account_head": "_Test Account VAT - _TC",
+ "charge_type": "On Net Total",
+ "cost_center": "_Test Cost Center - _TC",
+ "description": "VAT",
+ "doctype": "Sales Taxes and Charges",
+ "rate": 24
+ })
+ si.insert()
+
+ self.assertEquals(si.total, 975)
+ self.assertEquals(si.net_total, 900)
+
+ self.assertEquals(si.get("taxes")[0].tax_amount, 216.0)
+ self.assertEquals(si.get("taxes")[0].total, 1116.0)
+
+ self.assertEquals(si.grand_total, 1116.0)
+
def test_inclusive_rate_validations(self):
si = frappe.copy_doc(test_records[2])
for i, tax in enumerate(si.get("taxes")):
@@ -416,21 +479,29 @@
"item_code": "_Test Item Home Desktop 100",
"price_list_rate": 55.56,
"discount_percentage": 10,
- "rate": 50, "amount": 500,
+ "rate": 50,
+ "amount": 500,
"base_price_list_rate": 2778,
- "base_rate": 2500, "base_amount": 25000,
- "net_rate": 40, "net_amount": 399.98,
- "base_net_rate": 2000, "base_net_amount": 19999
+ "base_rate": 2500,
+ "base_amount": 25000,
+ "net_rate": 40,
+ "net_amount": 399.98,
+ "base_net_rate": 2000,
+ "base_net_amount": 19999
},
{
"item_code": "_Test Item Home Desktop 200",
"price_list_rate": 187.5,
"discount_percentage": 20,
- "rate": 150, "amount": 750,
+ "rate": 150,
+ "amount": 750,
"base_price_list_rate": 9375,
- "base_rate": 7500, "base_amount": 37500,
- "net_rate": 118.01, "net_amount": 590.05,
- "base_net_rate": 5900.5, "base_net_amount": 29502.5
+ "base_rate": 7500,
+ "base_amount": 37500,
+ "net_rate": 118.01,
+ "net_amount": 590.05,
+ "base_net_rate": 5900.5,
+ "base_net_amount": 29502.5
}
]
@@ -450,22 +521,22 @@
# check tax calculation
expected_values = {
"keys": ["base_tax_amount", "base_total", "tax_amount", "total"],
- "_Test Account Excise Duty - _TC": [5540.5, 55042, 110.81, 1100.84],
- "_Test Account Education Cess - _TC": [111, 55153, 2.22, 1103.06],
- "_Test Account S&H Education Cess - _TC": [55.5, 55208.5, 1.11, 1104.17],
- "_Test Account CST - _TC": [1104, 56312.5, 22.08, 1126.25],
- "_Test Account VAT - _TC": [6188, 62500.5, 123.76, 1250.01],
- "_Test Account Customs Duty - _TC": [4950.5, 67451, 99.01, 1349.02],
- "_Test Account Shipping Charges - _TC": [ 100, 67551, 2, 1351.02],
- "_Test Account Discount - _TC": [ -6755, 60796, -135.10, 1215.92]
+ "_Test Account Excise Duty - _TC": [5540.0, 55041.5, 110.80, 1100.83],
+ "_Test Account Education Cess - _TC": [111, 55152.5, 2.22, 1103.05],
+ "_Test Account S&H Education Cess - _TC": [55.5, 55208.0, 1.11, 1104.16],
+ "_Test Account CST - _TC": [1104, 56312.0, 22.08, 1126.24],
+ "_Test Account VAT - _TC": [6187.5, 62499.5, 123.75, 1249.99],
+ "_Test Account Customs Duty - _TC": [4950.0, 67449.5, 99.0, 1348.99],
+ "_Test Account Shipping Charges - _TC": [ 100, 67549.5, 2, 1350.99],
+ "_Test Account Discount - _TC": [ -6755, 60794.5, -135.10, 1215.89]
}
for d in si.get("taxes"):
for i, k in enumerate(expected_values["keys"]):
self.assertEquals(d.get(k), expected_values[d.account_head][i])
- self.assertEquals(si.base_grand_total, 60796)
- self.assertEquals(si.grand_total, 1215.92)
+ self.assertEquals(si.base_grand_total, 60794.5)
+ self.assertEquals(si.grand_total, 1215.89)
def test_outstanding(self):
w = self.make()
@@ -910,19 +981,20 @@
"_Test Account Excise Duty - _TC": [70, 70, 70],
"_Test Account Education Cess - _TC": [1.4, 1.4, 1.4],
"_Test Account S&H Education Cess - _TC": [.7, 0.7, 0.7],
- "_Test Account CST - _TC": [17.2, 17.2, 17.2],
+ "_Test Account CST - _TC": [17.19, 17.19, 17.19],
"_Test Account VAT - _TC": [78.13, 78.13, 78.13],
"_Test Account Discount - _TC": [-95.49, -95.49, -95.49]
}
for d in si.get("taxes"):
for i, k in enumerate(expected_values["keys"]):
- self.assertEquals(d.get(k), expected_values[d.account_head][i])
+ if expected_values.get(d.account_head):
+ self.assertEquals(d.get(k), expected_values[d.account_head][i])
- self.assertEquals(si.total_taxes_and_charges, 234.44)
- self.assertEquals(si.base_grand_total, 859.44)
- self.assertEquals(si.grand_total, 859.44)
+ self.assertEquals(si.total_taxes_and_charges, 234.43)
+ self.assertEquals(si.base_grand_total, 859.43)
+ self.assertEquals(si.grand_total, 859.43)
def test_multi_currency_gle(self):
set_perpetual_inventory(0)
diff --git a/erpnext/accounts/doctype/sales_invoice_payment/sales_invoice_payment.json b/erpnext/accounts/doctype/sales_invoice_payment/sales_invoice_payment.json
index 13d7f15..531622d 100644
--- a/erpnext/accounts/doctype/sales_invoice_payment/sales_invoice_payment.json
+++ b/erpnext/accounts/doctype/sales_invoice_payment/sales_invoice_payment.json
@@ -1,5 +1,6 @@
{
"allow_copy": 0,
+ "allow_guest_to_view": 0,
"allow_import": 0,
"allow_rename": 0,
"beta": 0,
@@ -11,16 +12,51 @@
"editable_grid": 1,
"fields": [
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
+ "depends_on": "eval:parent.doctype == 'POS Profile'",
+ "fieldname": "default",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 1,
+ "in_standard_filter": 0,
+ "label": "Default",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
"fieldname": "mode_of_payment",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 1,
+ "in_standard_filter": 0,
"label": "Mode of Payment",
"length": 0,
"no_copy": 0,
@@ -30,6 +66,7 @@
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
+ "remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
@@ -37,9 +74,11 @@
"unique": 0
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"default": "0.0",
"depends_on": "eval:parent.doctype == 'Sales Invoice'",
"fieldname": "amount",
@@ -48,7 +87,9 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 1,
+ "in_standard_filter": 0,
"label": "Amount",
"length": 0,
"no_copy": 0,
@@ -58,6 +99,7 @@
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
+ "remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
@@ -65,16 +107,20 @@
"unique": 0
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"fieldname": "column_break_3",
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 0,
+ "in_standard_filter": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
@@ -82,6 +128,7 @@
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
+ "remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
@@ -89,16 +136,20 @@
"unique": 0
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"fieldname": "account",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 0,
+ "in_standard_filter": 0,
"label": "Account",
"length": 0,
"no_copy": 0,
@@ -108,6 +159,7 @@
"print_hide": 1,
"print_hide_if_no_value": 0,
"read_only": 1,
+ "remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
@@ -115,16 +167,20 @@
"unique": 0
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"fieldname": "type",
"fieldtype": "Read Only",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 0,
+ "in_standard_filter": 0,
"label": "Type",
"length": 0,
"no_copy": 0,
@@ -134,6 +190,7 @@
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
+ "remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
@@ -141,16 +198,20 @@
"unique": 0
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
+ "columns": 0,
"fieldname": "base_amount",
"fieldtype": "Currency",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 0,
+ "in_standard_filter": 0,
"label": "Base Amount (Company Currency)",
"length": 0,
"no_copy": 1,
@@ -160,6 +221,7 @@
"print_hide": 1,
"print_hide_if_no_value": 0,
"read_only": 1,
+ "remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
@@ -167,17 +229,17 @@
"unique": 0
}
],
+ "has_web_view": 0,
"hide_heading": 0,
"hide_toolbar": 0,
"idx": 0,
"image_view": 0,
"in_create": 0,
- "in_dialog": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 1,
"max_attachments": 0,
- "modified": "2016-07-11 03:28:07.779228",
+ "modified": "2017-07-24 17:25:03.765856",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Sales Invoice Payment",
@@ -187,7 +249,9 @@
"quick_entry": 1,
"read_only": 0,
"read_only_onload": 0,
+ "show_name_in_global_search": 0,
"sort_field": "modified",
"sort_order": "DESC",
+ "track_changes": 0,
"track_seen": 0
}
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/sales_taxes_and_charges_template/test_sales_taxes_and_charges_template.js b/erpnext/accounts/doctype/sales_taxes_and_charges_template/test_sales_taxes_and_charges_template.js
new file mode 100644
index 0000000..2667ee6
--- /dev/null
+++ b/erpnext/accounts/doctype/sales_taxes_and_charges_template/test_sales_taxes_and_charges_template.js
@@ -0,0 +1,26 @@
+QUnit.module('Sales Taxes and Charges Template');
+
+QUnit.test("test sales taxes and charges template", function(assert) {
+ assert.expect(1);
+ let done = assert.async();
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make('Sales Taxes and Charges Template', [
+ {title: "TEST In State GST"},
+ {taxes:[
+ [
+ {charge_type:"On Net Total"},
+ {account_head:"CGST - "+frappe.get_abbr(frappe.defaults.get_default("Company")) }
+ ],
+ [
+ {charge_type:"On Net Total"},
+ {account_head:"SGST - "+frappe.get_abbr(frappe.defaults.get_default("Company")) }
+ ]
+ ]}
+ ]);
+ },
+ () => {assert.ok(cur_frm.doc.title=='TEST In State GST');},
+ () => done()
+ ]);
+});
+
diff --git a/erpnext/accounts/doctype/shipping_rule/test_shipping_rule.js b/erpnext/accounts/doctype/shipping_rule/test_shipping_rule.js
new file mode 100644
index 0000000..9c72aeb
--- /dev/null
+++ b/erpnext/accounts/doctype/shipping_rule/test_shipping_rule.js
@@ -0,0 +1,35 @@
+QUnit.module('Shipping Rule');
+
+QUnit.test("test Shipping Rule", function(assert) {
+ assert.expect(1);
+ let done = assert.async();
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make("Shipping Rule", [
+ {label: "Next Day Shipping"},
+ {conditions:[
+ [
+ {from_value:1},
+ {to_value:200},
+ {shipping_amount:100}
+ ],
+ [
+ {from_value:201},
+ {to_value:2000},
+ {shipping_amount:50}
+ ],
+ ]},
+ {countries:[
+ [
+ {country:'India'}
+ ]
+ ]},
+ {account:'Accounts Payable - '+frappe.get_abbr(frappe.defaults.get_default("Company"))},
+ {cost_center:'Main - '+frappe.get_abbr(frappe.defaults.get_default("Company"))}
+ ]);
+ },
+ () => {assert.ok(cur_frm.doc.name=='Next Day Shipping');},
+ () => done()
+ ]);
+});
+
diff --git a/erpnext/accounts/page/pos/test_pos.js b/erpnext/accounts/page/pos/test_pos.js
new file mode 100644
index 0000000..62c6e31
--- /dev/null
+++ b/erpnext/accounts/page/pos/test_pos.js
@@ -0,0 +1,60 @@
+QUnit.test("test:POS Profile", function(assert) {
+ assert.expect(1);
+ let done = assert.async();
+
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make("POS Profile", [
+ {naming_series: "SINV"},
+ {company: "_Test Company"},
+ {country: "India"},
+ {currency: "INR"},
+ {write_off_account: "Write Off - _TC"},
+ {write_off_cost_center: "Main - _TC"},
+ {payments: [
+ [
+ {"default": 1},
+ {"mode_of_payment": "Cash"}
+ ]]
+ }
+ ]);
+ },
+ () => cur_frm.save(),
+ () => frappe.timeout(2),
+ () => {
+ assert.equal(cur_frm.doc.payments[0].default, 1, "Default mode of payment tested");
+ },
+ () => done()
+ ]);
+});
+
+QUnit.test("test:Sales Invoice", function(assert) {
+ assert.expect(2);
+ let done = assert.async();
+
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make("Sales Invoice", [
+ {customer: "_Test Customer 2"},
+ {company: "_Test Company"},
+ {is_pos: 1},
+ {posting_date: frappe.datetime.get_today()},
+ {due_date: frappe.datetime.get_today()},
+ {items: [
+ [
+ {"item_code": "_Test Item"},
+ {"qty": 5}
+ ]]
+ }
+ ]);
+ },
+ () => frappe.timeout(2),
+ () => cur_frm.save(),
+ () => frappe.timeout(2),
+ () => {
+ assert.equal(cur_frm.doc.payments[0].default, 1, "Default mode of payment tested");
+ assert.equal(cur_frm.doc.payments[0].mode_of_payment, "Cash", "Default mode of payment tested");
+ },
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index 560ba4d..6617802 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -20,36 +20,36 @@
def get_fiscal_years(transaction_date=None, fiscal_year=None, label="Date", verbose=1, company=None, as_dict=False):
fiscal_years = frappe.cache().hget("fiscal_years", company) or []
-
- if not fiscal_years:
+
+ if not fiscal_years:
# if year start date is 2012-04-01, year end date should be 2013-03-31 (hence subdate)
cond = ""
if fiscal_year:
cond += " and fy.name = {0}".format(frappe.db.escape(fiscal_year))
if company:
cond += """
- and (not exists (select name
- from `tabFiscal Year Company` fyc
- where fyc.parent = fy.name)
- or exists(select company
- from `tabFiscal Year Company` fyc
- where fyc.parent = fy.name
+ and (not exists (select name
+ from `tabFiscal Year Company` fyc
+ where fyc.parent = fy.name)
+ or exists(select company
+ from `tabFiscal Year Company` fyc
+ where fyc.parent = fy.name
and fyc.company=%(company)s)
)
"""
fiscal_years = frappe.db.sql("""
- select
- fy.name, fy.year_start_date, fy.year_end_date
- from
+ select
+ fy.name, fy.year_start_date, fy.year_end_date
+ from
`tabFiscal Year` fy
- where
+ where
disabled = 0 {0}
- order by
+ order by
fy.year_start_date desc""".format(cond), {
"company": company
}, as_dict=True)
-
+
frappe.cache().hset("fiscal_years", company, fiscal_years)
if transaction_date:
@@ -60,10 +60,10 @@
if fiscal_year and fy.name == fiscal_year:
matched = True
- if (transaction_date and getdate(fy.year_start_date) <= transaction_date
+ if (transaction_date and getdate(fy.year_start_date) <= transaction_date
and getdate(fy.year_end_date) >= transaction_date):
matched = True
-
+
if matched:
if as_dict:
return (fy,)
@@ -72,7 +72,7 @@
error_msg = _("""{0} {1} not in any active Fiscal Year.""").format(label, formatdate(transaction_date))
if verbose==1: frappe.msgprint(error_msg)
- raise FiscalYearError, error_msg
+ raise FiscalYearError(error_msg)
def validate_fiscal_year(date, fiscal_year, company, label="Date", doc=None):
years = [f[0] for f in get_fiscal_years(date, label=_(label), company=company)]
@@ -158,7 +158,6 @@
return flt(bal)
def get_count_on(account, fieldname, date):
-
cond = []
if date:
cond.append("posting_date <= '%s'" % frappe.db.escape(cstr(date)))
@@ -195,11 +194,6 @@
select name from `tabAccount` ac where ac.name = gle.account
and ac.lft >= %s and ac.rgt <= %s
)""" % (acc.lft, acc.rgt))
-
- # If group and currency same as company,
- # always return balance based on debit and credit in company currency
- if acc.account_currency == frappe.db.get_value("Company", acc.company, "default_currency"):
- in_account_currency = False
else:
cond.append("""gle.account = "%s" """ % (frappe.db.escape(account, percent=False), ))
@@ -227,7 +221,7 @@
WHERE docstatus < 2 and posting_date <= %(date)s and against_voucher = %(voucher_no)s
and party = %(party)s and name != %(name)s"""
.format(select_fields),
- {"date": date, "voucher_no": gle.voucher_no,
+ {"date": date, "voucher_no": gle.voucher_no,
"party": gle.party, "name": gle.name})[0][0]
outstanding_amount = flt(gle.get(dr_or_cr)) - flt(gle.get(cr_or_dr)) - payment_amount
@@ -274,7 +268,7 @@
if not args:
args = frappe.local.form_dict
-
+
args.doctype = "Cost Center"
args = make_tree_args(**args)
@@ -500,7 +494,8 @@
value = frappe.db.get_value("Company", company, fieldname)
if not value:
- throw(_("Please set default {0} in Company {1}").format(frappe.get_meta("Company").get_label(fieldname), company))
+ throw(_("Please set default {0} in Company {1}")
+ .format(frappe.get_meta("Company").get_label(fieldname), company))
return value
@@ -534,18 +529,18 @@
account_balance = get_balance_on(account_data.get('account'), posting_date, in_account_currency=False)
stock_value = get_stock_value_on(warehouse, posting_date)
if abs(flt(stock_value) - flt(account_balance)) > 0.005:
- difference.setdefault(account, flt(stock_value) - flt(account_balance))
+ difference.setdefault(account_data.get('account'), flt(stock_value) - flt(account_balance))
return difference
-def get_currency_precision():
+def get_currency_precision():
precision = cint(frappe.db.get_default("currency_precision"))
if not precision:
number_format = frappe.db.get_default("number_format") or "#,###.##"
precision = get_number_format_info(number_format)[2]
-
+
return precision
-
+
def get_stock_rbnb_difference(posting_date, company):
stock_items = frappe.db.sql_list("""select distinct item_code
from `tabStock Ledger Entry` where company=%s""", company)
@@ -627,7 +622,8 @@
'invoice_amount': flt(d.invoice_amount),
'payment_amount': flt(d.payment_amount),
'outstanding_amount': flt(d.invoice_amount - d.payment_amount, precision),
- 'due_date': frappe.db.get_value(d.voucher_type, d.voucher_no, "due_date"),
+ 'due_date': frappe.db.get_value(d.voucher_type, d.voucher_no,
+ "posting_date" if party_type=="Employee" else "due_date"),
}))
outstanding_invoices = sorted(outstanding_invoices, key=lambda k: k['due_date'] or getdate(nowdate()))
@@ -654,7 +650,7 @@
@frappe.whitelist()
def get_children():
from erpnext.accounts.report.financial_statements import sort_root_accounts
-
+
args = frappe.local.form_dict
doctype, company = args['doctype'], args['company']
fieldname = frappe.db.escape(doctype.lower().replace(' ','_'))
@@ -696,9 +692,6 @@
return acc
def create_payment_gateway_account(gateway):
- create_payment_gateway_account(gateway)
-
-def create_payment_gateway_account(gateway):
from erpnext.setup.setup_wizard.setup_wizard import create_bank_account
company = frappe.db.get_value("Global Defaults", None, "default_company")
@@ -738,4 +731,4 @@
except frappe.DuplicateEntryError:
# already exists, due to a reinstall?
- pass
\ No newline at end of file
+ pass
diff --git a/erpnext/buying/__init__.py b/erpnext/buying/__init__.py
index e69de29..baffc48 100644
--- a/erpnext/buying/__init__.py
+++ b/erpnext/buying/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/buying/doctype/purchase_order/purchase_order.py b/erpnext/buying/doctype/purchase_order/purchase_order.py
index 7e5020a..26c8c61 100644
--- a/erpnext/buying/doctype/purchase_order/purchase_order.py
+++ b/erpnext/buying/doctype/purchase_order/purchase_order.py
@@ -39,6 +39,8 @@
super(PurchaseOrder, self).validate()
self.set_status()
+
+ self.validate_supplier()
validate_for_items(self)
self.check_for_closed_status()
@@ -65,6 +67,17 @@
}
})
+ def validate_supplier(self):
+ prevent_po = frappe.db.get_value("Supplier", self.supplier, 'prevent_pos')
+ if prevent_po:
+ standing = frappe.db.get_value("Supplier Scorecard",self.supplier, 'status')
+ frappe.throw(_("Purchase Orders are not allowed for {0} due to a scorecard standing of {1}.").format(self.supplier, standing))
+
+ warn_po = frappe.db.get_value("Supplier", self.supplier, 'warn_pos')
+ if warn_po:
+ standing = frappe.db.get_value("Supplier Scorecard",self.supplier, 'status')
+ frappe.msgprint(_("{0} currently has a {1} Supplier Scorecard standing, and Purchase Orders to this supplier should be issued with caution.").format(self.supplier, standing), title=_("Caution"), indicator='orange')
+
def validate_minimum_order_qty(self):
items = list(set([d.item_code for d in self.get("items")]))
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
index ce759aa..558e072 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.js
@@ -44,6 +44,9 @@
freeze: true,
args: {
rfq_name: frm.doc.name
+ },
+ callback: function(r){
+ frm.reload_doc();
}
});
});
@@ -51,6 +54,91 @@
},
+ get_suppliers_button: function (frm) {
+ var doc = frm.doc;
+ var dialog = new frappe.ui.Dialog({
+ title: __("Get Suppliers"),
+ fields: [
+ { "fieldtype": "Select", "label": __("Get Suppliers By"),
+ "fieldname": "search_type",
+ "options": "Tag\nSupplier Type", "reqd": 1 },
+ { "fieldtype": "Link", "label": __("Supplier Type"),
+ "fieldname": "supplier_type",
+ "options": "Supplier Type", "reqd": 0,
+ "depends_on": "eval:doc.search_type == 'Supplier Type'"},
+ { "fieldtype": "Data", "label": __("Tag"),
+ "fieldname": "tag", "reqd": 0,
+ "depends_on": "eval:doc.search_type == 'Tag'" },
+ { "fieldtype": "Button", "label": __("Add All Suppliers"),
+ "fieldname": "add_suppliers", "cssClass": "btn-primary"},
+ ]
+ });
+
+ dialog.fields_dict.add_suppliers.$input.click(function() {
+ var args = dialog.get_values();
+ if(!args) return;
+ dialog.hide();
+
+ //Remove blanks
+ for (var j = 0; j < frm.doc.suppliers.length; j++) {
+ if(!frm.doc.suppliers[j].hasOwnProperty("supplier")) {
+ frm.get_field("suppliers").grid.grid_rows[j].remove();
+ }
+ }
+
+ function load_suppliers(r) {
+ if(r.message) {
+ for (var i = 0; i < r.message.length; i++) {
+ var exists = false;
+ if (r.message[i].constructor === Array){
+ var supplier = r.message[i][0];
+ } else {
+ var supplier = r.message[i].name;
+ }
+
+ for (var j = 0; j < doc.suppliers.length;j++) {
+ if (supplier === doc.suppliers[j].supplier) {
+ exists = true;
+ }
+ }
+ if(!exists) {
+ var d = frm.add_child('suppliers');
+ d.supplier = supplier;
+ frm.script_manager.trigger("supplier", d.doctype, d.name);
+ }
+ }
+ }
+ frm.refresh_field("suppliers");
+ }
+
+ if (args.search_type === "Tag" && args.tag) {
+ return frappe.call({
+ type: "GET",
+ method: "frappe.desk.tags.get_tagged_docs",
+ args: {
+ "doctype": "Supplier",
+ "tag": args.tag
+ },
+ callback: load_suppliers
+ });
+ } else if (args.supplier_type) {
+ return frappe.call({
+ method: "frappe.client.get_list",
+ args: {
+ doctype: "Supplier",
+ order_by: "name",
+ fields: ["name"],
+ filters: [["Supplier", "supplier_type", "=", args.supplier_type]]
+
+ },
+ callback: load_suppliers
+ });
+ }
+ });
+ dialog.show();
+
+ },
+
make_suppplier_quotation: function(frm) {
var doc = frm.doc;
var dialog = new frappe.ui.Dialog({
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json
index ac345d9..44068ce 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.json
@@ -25,7 +25,7 @@
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
- "in_list_view": 0,
+ "in_list_view": 1,
"in_standard_filter": 0,
"label": "Series",
"length": 0,
@@ -59,7 +59,7 @@
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
- "in_list_view": 0,
+ "in_list_view": 1,
"in_standard_filter": 0,
"label": "Company",
"length": 0,
@@ -156,7 +156,7 @@
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
- "in_list_view": 0,
+ "in_list_view": 1,
"in_standard_filter": 0,
"label": "Date",
"length": 0,
@@ -242,6 +242,36 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
+ "fieldname": "get_suppliers_button",
+ "fieldtype": "Button",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Get Suppliers",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
"fieldname": "items_section",
"fieldtype": "Section Break",
"hidden": 0,
@@ -406,7 +436,7 @@
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
- "in_list_view": 0,
+ "in_list_view": 1,
"in_standard_filter": 0,
"label": "Message for Supplier",
"length": 0,
@@ -786,7 +816,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2017-06-13 14:29:13.171291",
+ "modified": "2017-07-21 14:06:46.309322",
"modified_by": "Administrator",
"module": "Buying",
"name": "Request for Quotation",
diff --git a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
index 9109239..e9603fb 100644
--- a/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
+++ b/erpnext/buying/doctype/request_for_quotation/request_for_quotation.py
@@ -21,6 +21,7 @@
class RequestforQuotation(BuyingController):
def validate(self):
self.validate_duplicate_supplier()
+ self.validate_supplier_list()
validate_for_items(self)
self.update_email_id()
@@ -29,6 +30,17 @@
if len(supplier_list) != len(set(supplier_list)):
frappe.throw(_("Same supplier has been entered multiple times"))
+ def validate_supplier_list(self):
+ for d in self.suppliers:
+ prevent_rfqs = frappe.db.get_value("Supplier", d.supplier, 'prevent_rfqs')
+ if prevent_rfqs:
+ standing = frappe.db.get_value("Supplier Scorecard",d.supplier, 'status')
+ frappe.throw(_("RFQs are not allowed for {0} due to a scorecard standing of {1}").format(d.supplier, standing))
+ warn_rfqs = frappe.db.get_value("Supplier", d.supplier, 'warn_rfqs')
+ if warn_rfqs:
+ standing = frappe.db.get_value("Supplier Scorecard",d.supplier, 'status')
+ frappe.msgprint(_("{0} currently has a {1} Supplier Scorecard standing, and RFQs to this supplier should be issued with caution.").format(d.supplier, standing), title=_("Caution"), indicator='orange')
+
def update_email_id(self):
for rfq_supplier in self.suppliers:
if not rfq_supplier.email_id:
@@ -40,6 +52,8 @@
def on_submit(self):
frappe.db.set(self, 'status', 'Submitted')
+ for supplier in self.suppliers:
+ supplier.email_sent = 0
def on_cancel(self):
frappe.db.set(self, 'status', 'Cancelled')
@@ -54,6 +68,8 @@
self.update_supplier_part_no(rfq_supplier)
self.supplier_rfq_mail(rfq_supplier, update_password_link, self.get_link())
+ rfq_supplier.email_sent = 1
+ rfq_supplier.save()
def get_link(self):
# RFQ link for supplier portal
@@ -84,7 +100,10 @@
else:
contact = frappe.new_doc("Contact")
contact.first_name = rfq_supplier.supplier_name or rfq_supplier.supplier
- contact.supplier = rfq_supplier.supplier
+ contact.append('links', {
+ 'link_doctype': 'Supplier',
+ 'link_name': rfq_supplier.supplier
+ })
if not contact.email_id and not contact.user:
contact.email_id = user.name
diff --git a/erpnext/buying/doctype/request_for_quotation_supplier/request_for_quotation_supplier.json b/erpnext/buying/doctype/request_for_quotation_supplier/request_for_quotation_supplier.json
index 7bc0def..a7c5a37 100644
--- a/erpnext/buying/doctype/request_for_quotation_supplier/request_for_quotation_supplier.json
+++ b/erpnext/buying/doctype/request_for_quotation_supplier/request_for_quotation_supplier.json
@@ -1,5 +1,6 @@
{
"allow_copy": 0,
+ "allow_guest_to_view": 0,
"allow_import": 0,
"allow_rename": 0,
"beta": 0,
@@ -12,6 +13,7 @@
"engine": "InnoDB",
"fields": [
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 1,
"bold": 0,
"collapsible": 0,
@@ -42,6 +44,39 @@
"unique": 0
},
{
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 1,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "default": "0",
+ "depends_on": "eval:doc.docstatus >= 1",
+ "fieldname": "email_sent",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Email Sent",
+ "length": 0,
+ "no_copy": 1,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -72,6 +107,7 @@
"unique": 0
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -102,6 +138,7 @@
"unique": 0
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -130,6 +167,7 @@
"unique": 0
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 1,
"collapsible": 0,
@@ -160,6 +198,7 @@
"unique": 0
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -190,6 +229,7 @@
"unique": 0
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 1,
"bold": 0,
"collapsible": 0,
@@ -219,17 +259,17 @@
"unique": 0
}
],
+ "has_web_view": 0,
"hide_heading": 0,
"hide_toolbar": 0,
"idx": 0,
"image_view": 0,
"in_create": 0,
- "in_dialog": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 1,
"max_attachments": 0,
- "modified": "2017-02-17 16:42:57.254211",
+ "modified": "2017-07-24 06:52:19.542717",
"modified_by": "Administrator",
"module": "Buying",
"name": "Request for Quotation Supplier",
diff --git a/erpnext/buying/doctype/supplier/supplier.json b/erpnext/buying/doctype/supplier/supplier.json
index 58a1fc7..711e05d 100644
--- a/erpnext/buying/doctype/supplier/supplier.json
+++ b/erpnext/buying/doctype/supplier/supplier.json
@@ -326,6 +326,126 @@
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "warn_rfqs",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Warn RFQs",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "warn_pos",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Warn POs",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "prevent_rfqs",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Prevent RFQs",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "prevent_pos",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Prevent POs",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
"collapsible": 1,
"columns": 0,
"fieldname": "section_break_7",
@@ -850,7 +970,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2017-06-13 14:29:16.310834",
+ "modified": "2017-07-06 16:40:46.935608",
"modified_by": "Administrator",
"module": "Buying",
"name": "Supplier",
diff --git a/erpnext/buying/doctype/supplier_scorecard/__init__.py b/erpnext/buying/doctype/supplier_scorecard/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard/__init__.py
diff --git a/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.js b/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.js
new file mode 100644
index 0000000..a3a1414
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.js
@@ -0,0 +1,146 @@
+// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+/* global frappe, refresh_field */
+
+frappe.ui.form.on("Supplier Scorecard", {
+
+ onload: function(frm) {
+
+ if (frm.doc.indicator_color !== "") {
+ frm.set_indicator_formatter("status", function(doc) {
+ return doc.indicator_color.toLowerCase();
+ });
+ }
+ if (frm.doc.__unsaved == 1) {
+ loadAllCriteria(frm);
+ loadAllStandings(frm);
+ }
+
+ },
+ refresh: function(frm) {
+ if (frm.dashboard.hasOwnProperty('heatmap')) {
+ frm.dashboard.heatmap.setLegend([0,20,40,60,80,101],["#991600","#169900"]);
+ }
+ }
+
+});
+
+frappe.ui.form.on("Supplier Scorecard Scoring Standing", {
+
+ standing_name: function(frm, cdt, cdn) {
+ if (frm.doc.standing_name != undefined) {
+ var d = frappe.get_doc(cdt, cdn);
+ return frm.call({
+ method: "erpnext.buying.doctype.supplier_scorecard_standing.supplier_scorecard_standing.get_scoring_standing",
+ child: d,
+ args: {
+ standing_name: d.standing_name
+ }
+ });
+ }
+ }
+});
+
+frappe.ui.form.on("Supplier Scorecard Scoring Variable", {
+
+ variable_label: function(frm, cdt, cdn) {
+ if (frm.doc.variable_label != undefined) {
+ var d = frappe.get_doc(cdt, cdn);
+ return frm.call({
+ method: "erpnext.buying.doctype.supplier_scorecard_variable.supplier_scorecard_variable.get_scoring_variable",
+ child: d,
+ args: {
+ variable_label: d.variable_label
+ }
+ });
+ }
+ }
+});
+
+frappe.ui.form.on("Supplier Scorecard Scoring Criteria", {
+
+ criteria_name: function(frm, cdt, cdn) {
+ if (frm.doc.criteria_name != undefined) {
+ var d = frappe.get_doc(cdt, cdn);
+ frm.call({
+ method: "erpnext.buying.doctype.supplier_scorecard_criteria.supplier_scorecard_criteria.get_variables",
+ args: {
+ criteria_name: d.criteria_name
+ },
+ callback: function(r) {
+ for (var i = 0; i < r.message.length; i++)
+ {
+ var exists = false;
+ for (var j = 0; j < frm.doc.variables.length; j++)
+ {
+ if(!frm.doc.variables[j].hasOwnProperty("variable_label")) {
+ frm.get_field("variables").grid.grid_rows[j].remove();
+ }
+ else if(frm.doc.variables[j].variable_label === r.message[i]) {
+ exists = true;
+ }
+ }
+ if (!exists){
+ var new_row = frm.add_child("variables");
+ new_row.variable_label = r.message[i];
+ frm.script_manager.trigger("variable_label", new_row.doctype, new_row.name);
+ }
+
+ }
+ refresh_field("variables");
+ }
+ });
+ return frm.call({
+ method: "erpnext.buying.doctype.supplier_scorecard_criteria.supplier_scorecard_criteria.get_scoring_criteria",
+ child: d,
+ args: {
+ criteria_name: d.criteria_name
+ }
+ });
+ }
+ }
+});
+
+var loadAllCriteria = function(frm) {
+ frappe.call({
+ method: "erpnext.buying.doctype.supplier_scorecard_criteria.supplier_scorecard_criteria.get_criteria_list",
+ callback: function(r) {
+ for (var j = 0; j < frm.doc.criteria.length; j++)
+ {
+ if(!frm.doc.criteria[j].hasOwnProperty("criteria_name")) {
+ frm.get_field("criteria").grid.grid_rows[j].remove();
+ }
+ }
+ for (var i = 0; i < r.message.length; i++)
+ {
+ var new_row = frm.add_child("criteria");
+ new_row.criteria_name = r.message[i].name;
+ frm.script_manager.trigger("criteria_name", new_row.doctype, new_row.name);
+ }
+ refresh_field("criteria");
+ }
+ });
+};
+var loadAllStandings = function(frm) {
+ frappe.call({
+ method: "erpnext.buying.doctype.supplier_scorecard_standing.supplier_scorecard_standing.get_standings_list",
+ callback: function(r) {
+ for (var j = 0; j < frm.doc.standings.length; j++)
+ {
+ if(!frm.doc.standings[j].hasOwnProperty("standing_name")) {
+ frm.get_field("standings").grid.grid_rows[j].remove();
+ }
+ }
+ for (var i = 0; i < r.message.length; i++)
+ {
+ var new_row = frm.add_child("standings");
+ new_row.standing_name = r.message[i].name;
+ frm.script_manager.trigger("standing_name", new_row.doctype, new_row.name);
+ }
+ refresh_field("standings");
+ }
+ });
+};
+
+
diff --git a/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.json b/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.json
new file mode 100644
index 0000000..d7f24c9
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.json
@@ -0,0 +1,701 @@
+{
+ "allow_copy": 0,
+ "allow_guest_to_view": 0,
+ "allow_import": 0,
+ "allow_rename": 0,
+ "autoname": "field:supplier",
+ "beta": 1,
+ "creation": "2017-05-29 01:40:54.786555",
+ "custom": 0,
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "fields": [
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "supplier",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Supplier",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Supplier",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "supplier_score",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Supplier Score",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "indicator_color",
+ "fieldtype": "Data",
+ "hidden": 1,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Indicator Color",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "status",
+ "fieldtype": "Data",
+ "hidden": 1,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Status",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "column_break_2",
+ "fieldtype": "Column Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "default": "Per Month",
+ "fieldname": "period",
+ "fieldtype": "Select",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 1,
+ "in_standard_filter": 0,
+ "label": "Evaluation Period",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Per Month\nPer Week\nPer Year",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 1,
+ "columns": 0,
+ "fieldname": "scoring_setup",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Scoring Setup",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "default": "{total_score} * max( 0, min ( 1 , (12 - {period_number}) / 12) )",
+ "description": "Scorecard variables can be used, as well as:\n{total_score} (the total score from that period),\n{period_number} (the number of periods to present day)\n",
+ "fieldname": "weighting_function",
+ "fieldtype": "Small Text",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Weighting Function",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "standings",
+ "fieldtype": "Table",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Scoring Standings",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Supplier Scorecard Scoring Standing",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 1,
+ "columns": 0,
+ "fieldname": "criteria_setup",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Criteria Setup",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "criteria",
+ "fieldtype": "Table",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Scoring Criteria",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Supplier Scorecard Scoring Criteria",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "variables",
+ "fieldtype": "Table",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Supplier Variables",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Supplier Scorecard Scoring Variable",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 1,
+ "collapsible_depends_on": "eval: doc.status != 'Unknown'",
+ "columns": 0,
+ "fieldname": "scorecard_actions",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Scorecard Actions",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "warn_rfqs",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Warn for new Request for Quotations",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "warn_pos",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Warn for new Purchase Orders",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "prevent_rfqs",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Prevent RFQs",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "prevent_pos",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Prevent POs",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "column_break_16",
+ "fieldtype": "Column Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "notify_supplier",
+ "fieldtype": "Check",
+ "hidden": 1,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Notify Supplier",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "notify_employee",
+ "fieldtype": "Check",
+ "hidden": 1,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Notify Employee",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "employee",
+ "fieldtype": "Link",
+ "hidden": 1,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Employee",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Employee",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ }
+ ],
+ "has_web_view": 0,
+ "hide_heading": 0,
+ "hide_toolbar": 0,
+ "idx": 0,
+ "image_view": 0,
+ "in_create": 0,
+ "is_submittable": 0,
+ "issingle": 0,
+ "istable": 0,
+ "max_attachments": 0,
+ "modified": "2017-07-12 07:33:11.874949",
+ "modified_by": "Administrator",
+ "module": "Buying",
+ "name": "Supplier Scorecard",
+ "name_case": "",
+ "owner": "Administrator",
+ "permissions": [
+ {
+ "amend": 0,
+ "apply_user_permissions": 0,
+ "cancel": 0,
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "if_owner": 0,
+ "import": 0,
+ "permlevel": 0,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "System Manager",
+ "set_user_permissions": 0,
+ "share": 1,
+ "submit": 0,
+ "write": 1
+ }
+ ],
+ "quick_entry": 0,
+ "read_only": 0,
+ "read_only_onload": 0,
+ "show_name_in_global_search": 0,
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "track_changes": 0,
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.py b/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.py
new file mode 100644
index 0000000..e13d22a
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard.py
@@ -0,0 +1,262 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe import throw, _
+from frappe.model.document import Document
+import time
+from datetime import timedelta
+from frappe.utils import nowdate, get_last_day, getdate, add_days, add_years
+from erpnext.buying.doctype.supplier_scorecard_period.supplier_scorecard_period import make_supplier_scorecard
+
+class SupplierScorecard(Document):
+
+ def validate(self):
+ self.validate_standings()
+ self.validate_criteria_weights()
+ self.calculate_total_score()
+ self.update_standing()
+
+ def on_update(self):
+ score = make_all_scorecards(self.name)
+ if score > 0:
+ self.save()
+
+ def validate_standings(self):
+ # Check that there are no overlapping scores and check that there are no missing scores
+ score = 0
+ for c1 in self.standings:
+ for c2 in self.standings:
+ if c1 != c2:
+ if (c1.max_grade > c2.min_grade and c1.min_grade < c2.max_grade):
+ throw(_('Overlap in scoring between {0} and {1}').format(c1.standing_name,c2.standing_name))
+ if c2.min_grade == score:
+ score = c2.max_grade
+ if score < 100:
+ throw(_('Unable to find score starting at {0}. You need to have standing scores covering 0 to 100').format(score))
+
+ def validate_criteria_weights(self):
+
+ weight = 0
+ for c in self.criteria:
+ weight += c.weight
+
+ if weight != 100:
+ throw(_('Criteria weights must add up to 100%'))
+
+ def calculate_total_score(self):
+ scorecards = frappe.db.sql("""
+ SELECT
+ scp.name
+ FROM
+ `tabSupplier Scorecard Period` scp
+ WHERE
+ scp.scorecard = %(sc)s
+ ORDER BY
+ scp.end_date DESC""",
+ {"sc": self.name}, as_dict=1)
+
+ period = 0
+ total_score = 0
+ total_max_score = 0
+ for scp in scorecards:
+ my_sc = frappe.get_doc('Supplier Scorecard Period', scp.name)
+ my_scp_weight = self.weighting_function
+ my_scp_weight = my_scp_weight.replace('{period_number}', str(period))
+
+ my_scp_maxweight = my_scp_weight.replace('{total_score}', '100')
+ my_scp_weight = my_scp_weight.replace('{total_score}', str(my_sc.total_score))
+
+ max_score = my_sc.calculate_weighted_score(my_scp_maxweight)
+ score = my_sc.calculate_weighted_score(my_scp_weight)
+
+ total_score += score
+ total_max_score += max_score
+ period += 1
+ if total_max_score > 0:
+ self.supplier_score = round(100.0 * (total_score / total_max_score) ,1)
+ else:
+ self.supplier_score = 100
+
+ def update_standing(self):
+ # Get the setup document
+
+ for standing in self.standings:
+ if (not standing.min_grade or (standing.min_grade <= self.supplier_score)) and \
+ (not standing.max_grade or (standing.max_grade > self.supplier_score)):
+ self.status = standing.standing_name
+ self.indicator_color = standing.standing_color
+ self.notify_supplier = standing.notify_supplier
+ self.notify_employee = standing.notify_employee
+ self.employee_link = standing.employee_link
+
+ #Update supplier standing info
+ for fieldname in ('prevent_pos', 'prevent_rfqs','warn_rfqs','warn_pos'):
+ self.set(fieldname, standing.get(fieldname))
+ frappe.db.set_value("Supplier", self.supplier, fieldname, self.get(fieldname))
+
+
+@frappe.whitelist()
+def get_timeline_data(doctype, name):
+ # Get a list of all the associated scorecards
+ scs = frappe.get_doc(doctype, name)
+ out = {}
+ timeline_data = {}
+ scorecards = frappe.db.sql("""
+ SELECT
+ sc.name
+ FROM
+ `tabSupplier Scorecard Period` sc
+ WHERE
+ sc.scorecard = %(scs)s""",
+ {"scs": scs.name}, as_dict=1)
+
+ for sc in scorecards:
+ start_date, end_date, total_score = frappe.db.get_value('Supplier Scorecard Period', sc.name, ['start_date', 'end_date', 'total_score'])
+ for single_date in daterange(start_date, end_date):
+ timeline_data[time.mktime(single_date.timetuple())] = total_score
+
+ out['timeline_data'] = timeline_data
+ return out
+
+def daterange(start_date, end_date):
+ for n in range(int ((end_date - start_date).days)+1):
+ yield start_date + timedelta(n)
+
+def refresh_scorecards():
+ scorecards = frappe.db.sql("""
+ SELECT
+ sc.name
+ FROM
+ `tabSupplier Scorecard` sc""",
+ {}, as_dict=1)
+ for sc in scorecards:
+ # Check to see if any new scorecard periods are created
+ if make_all_scorecards(sc.name) > 0:
+ # Save the scorecard to update the score and standings
+ sc.save()
+
+
+@frappe.whitelist()
+def make_all_scorecards(docname):
+
+ sc = frappe.get_doc('Supplier Scorecard', docname)
+ supplier = frappe.get_doc('Supplier',sc.supplier)
+
+ start_date = getdate(supplier.creation)
+ end_date = get_scorecard_date(sc.period, start_date)
+ todays = getdate(nowdate())
+
+ scp_count = 0
+ first_start_date = todays
+ last_end_date = todays
+
+ while (start_date < todays) and (end_date <= todays):
+ # check to make sure there is no scorecard period already created
+ scorecards = frappe.db.sql("""
+ SELECT
+ scp.name
+ FROM
+ `tabSupplier Scorecard Period` scp
+ WHERE
+ scp.scorecard = %(sc)s
+ AND (
+ (scp.start_date > %(end_date)s
+ AND scp.end_date < %(start_date)s)
+ OR
+ (scp.start_date < %(end_date)s
+ AND scp.end_date > %(start_date)s))
+ ORDER BY
+ scp.end_date DESC""",
+ {"sc": docname, "start_date": start_date, "end_date": end_date, "supplier": supplier}, as_dict=1)
+ if len(scorecards) == 0:
+ period_card = make_supplier_scorecard(docname, None)
+ period_card.start_date = start_date
+ period_card.end_date = end_date
+ period_card.save()
+ scp_count = scp_count + 1
+ if start_date < first_start_date:
+ first_start_date = start_date
+ last_end_date = end_date
+
+ start_date = getdate(add_days(end_date,1))
+ end_date = get_scorecard_date(sc.period, start_date)
+ if scp_count > 0:
+ frappe.msgprint(_("Created {0} scorecards for {1} between: ").format(scp_count, sc.supplier) + str(first_start_date) + " - " + str(last_end_date))
+ return scp_count
+
+def get_scorecard_date(period, start_date):
+ if period == 'Per Week':
+ end_date = getdate(add_days(start_date,7))
+ elif period == 'Per Month':
+ end_date = get_last_day(start_date)
+ elif period == 'Per Year':
+ end_date = add_days(add_years(start_date,1), -1)
+ return end_date
+
+def make_default_records():
+ install_variable_docs = [
+ {"param_name": "total_accepted_items", "variable_label": "Total Accepted Items", \
+ "path": "get_total_accepted_items"},
+ {"param_name": "total_accepted_amount", "variable_label": "Total Accepted Amount", \
+ "path": "get_total_accepted_amount"},
+ {"param_name": "total_rejected_items", "variable_label": "Total Rejected Items", \
+ "path": "get_total_rejected_items"},
+ {"param_name": "total_rejected_amount", "variable_label": "Total Rejected Amount", \
+ "path": "get_total_rejected_amount"},
+ {"param_name": "total_received_items", "variable_label": "Total Received Items", \
+ "path": "get_total_received_items"},
+ {"param_name": "total_received_amount", "variable_label": "Total Received Amount", \
+ "path": "get_total_received_amount"},
+ {"param_name": "rfq_response_days", "variable_label": "RFQ Response Days", \
+ "path": "get_rfq_response_days"},
+ {"param_name": "sq_total_items", "variable_label": "SQ Total Items", \
+ "path": "get_sq_total_items"},
+ {"param_name": "sq_total_number", "variable_label": "SQ Total Number", \
+ "path": "get_sq_total_number"},
+ {"param_name": "rfq_total_number", "variable_label": "RFQ Total Number", \
+ "path": "get_rfq_total_number"},
+ {"param_name": "rfq_total_items", "variable_label": "RFQ Total Items", \
+ "path": "get_rfq_total_items"},
+ {"param_name": "tot_item_days", "variable_label": "Total Item Days", \
+ "path": "get_item_workdays"},
+ {"param_name": "on_time_shipment_num", "variable_label": "# of On Time Shipments", "path": \
+ "get_on_time_shipments"},
+ {"param_name": "cost_of_delayed_shipments", "variable_label": "Cost of Delayed Shipments", \
+ "path": "get_cost_of_delayed_shipments"},
+ {"param_name": "cost_of_on_time_shipments", "variable_label": "Cost of On Time Shipments", \
+ "path": "get_cost_of_on_time_shipments"},
+ {"param_name": "total_working_days", "variable_label": "Total Working Days", \
+ "path": "get_total_workdays"},
+ {"param_name": "tot_cost_shipments", "variable_label": "Total Cost of Shipments", \
+ "path": "get_total_cost_of_shipments"},
+ {"param_name": "tot_days_late", "variable_label": "Total Days Late", \
+ "path": "get_total_days_late"},
+ {"param_name": "total_shipments", "variable_label": "Total Shipments", \
+ "path": "get_total_shipments"}
+ ]
+ install_standing_docs = [
+ {"min_grade": 0.0, "prevent_rfqs": 1, "notify_supplier": 0, "max_grade": 30.0, "prevent_pos": 1, \
+ "standing_color": "Red", "notify_employee": 0, "standing_name": "Very Poor"},
+ {"min_grade": 30.0, "prevent_rfqs": 1, "notify_supplier": 0, "max_grade": 50.0, "prevent_pos": 0, \
+ "standing_color": "Red", "notify_employee": 0, "standing_name": "Poor"},
+ {"min_grade": 50.0, "prevent_rfqs": 0, "notify_supplier": 0, "max_grade": 80.0, "prevent_pos": 0, \
+ "standing_color": "Green", "notify_employee": 0, "standing_name": "Average"},
+ {"min_grade": 80.0, "prevent_rfqs": 0, "notify_supplier": 0, "max_grade": 100.0, "prevent_pos": 0, \
+ "standing_color": "Blue", "notify_employee": 0, "standing_name": "Excellent"},
+ ]
+
+ for d in install_variable_docs:
+ try:
+ d['doctype'] = "Supplier Scorecard Variable"
+ frappe.get_doc(d).insert()
+ except frappe.NameError:
+ pass
+ for d in install_standing_docs:
+ try:
+ d['doctype'] = "Supplier Scorecard Standing"
+ frappe.get_doc(d).insert()
+ except frappe.NameError:
+ pass
diff --git a/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard_dashboard.py b/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard_dashboard.py
new file mode 100644
index 0000000..ff7f119
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard_dashboard.py
@@ -0,0 +1,15 @@
+from frappe import _
+
+def get_data():
+ return {
+ 'heatmap': True,
+ 'heatmap_message': _('This covers all scorecards tied to this Setup'),
+ 'fieldname': 'supplier',
+ 'method' : 'erpnext.buying.doctype.supplier_scorecard.supplier_scorecard.get_timeline_data',
+ 'transactions': [
+ {
+ 'label': _('Scorecards'),
+ 'items': ['Supplier Scorecard Period']
+ }
+ ]
+ }
\ No newline at end of file
diff --git a/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard_list.js b/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard_list.js
new file mode 100644
index 0000000..c50916e
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard/supplier_scorecard_list.js
@@ -0,0 +1,17 @@
+// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+/* global frappe, __ */
+
+frappe.listview_settings["Supplier Scorecard"] = {
+ add_fields: ["indicator_color", "status"],
+ get_indicator: function(doc) {
+
+ if (doc.indicator_color) {
+ return [__(doc.status), doc.indicator_color.toLowerCase(), "status,=," + doc.status];
+ } else {
+ return [__("Unknown"), "darkgrey", "status,=,''"];
+ }
+ },
+
+};
diff --git a/erpnext/buying/doctype/supplier_scorecard/test_supplier_scorecard.py b/erpnext/buying/doctype/supplier_scorecard/test_supplier_scorecard.py
new file mode 100644
index 0000000..d64d3f6
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard/test_supplier_scorecard.py
@@ -0,0 +1,190 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors
+# See license.txt
+from __future__ import unicode_literals
+
+import frappe
+import unittest
+
+class TestSupplierScorecard(unittest.TestCase):
+
+ def test_create_scorecard(self):
+ delete_test_scorecards()
+ my_doc = make_supplier_scorecard()
+ doc = my_doc.insert()
+ self.assertEqual(doc.name, valid_scorecard[0].get("supplier"))
+
+ def test_criteria_weight(self):
+ delete_test_scorecards()
+ my_doc = make_supplier_scorecard()
+ for d in my_doc.criteria:
+ d.weight = 0
+ self.assertRaises(frappe.ValidationError,my_doc.insert)
+
+ def test_missing_variable(self):
+ delete_test_scorecards()
+ my_doc = make_supplier_scorecard()
+ del my_doc.variables
+ self.assertRaises(frappe.ValidationError,my_doc.insert)
+
+def make_supplier_scorecard():
+ my_doc = frappe.get_doc(valid_scorecard[0])
+
+ # Make sure the criteria exist (making them)
+ for d in valid_scorecard[0].get("criteria"):
+ if not frappe.db.exists("Supplier Scorecard Criteria", d.get("criteria_name")):
+ d["doctype"] = "Supplier Scorecard Criteria"
+ d["name"] = d.get("criteria_name")
+ my_criteria = frappe.get_doc(d)
+ my_criteria.insert()
+ return my_doc
+
+
+def delete_test_scorecards():
+ my_doc = make_supplier_scorecard()
+ if frappe.db.exists("Supplier Scorecard", my_doc.name):
+ # Delete all the periods, then delete the scorecard
+ frappe.db.sql("""delete from `tabSupplier Scorecard Period` where scorecard = %(scorecard)s""", {'scorecard': my_doc.name})
+ frappe.db.sql("""delete from `tabSupplier Scorecard Scoring Criteria` where parenttype = 'Supplier Scorecard Period'""")
+ frappe.db.sql("""delete from `tabSupplier Scorecard Scoring Standing` where parenttype = 'Supplier Scorecard Period'""")
+ frappe.db.sql("""delete from `tabSupplier Scorecard Scoring Variable` where parenttype = 'Supplier Scorecard Period'""")
+ frappe.delete_doc(my_doc.doctype, my_doc.name)
+
+valid_scorecard = [
+ {
+ "standings":[
+ {
+ "min_grade":0.0,"name":"Very Poor",
+ "prevent_rfqs":1,
+ "notify_supplier":0,
+ "doctype":"Supplier Scorecard Standing",
+ "max_grade":30.0,
+ "prevent_pos":1,
+ "warn_pos":0,
+ "warn_rfqs":0,
+ "standing_color":"Red",
+ "notify_employee":0,
+ "standing_name":"Very Poor",
+ "parenttype":"Supplier Scorecard",
+ "parentfield":"standings"
+ },
+ {
+ "min_grade":30.0,
+ "name":"Poor",
+ "prevent_rfqs":1,
+ "notify_supplier":0,
+ "doctype":"Supplier Scorecard Standing",
+ "max_grade":50.0,
+ "prevent_pos":0,
+ "warn_pos":0,
+ "warn_rfqs":0,
+ "standing_color":"Red",
+ "notify_employee":0,
+ "standing_name":"Poor",
+ "parenttype":"Supplier Scorecard",
+ "parentfield":"standings"
+ },
+ {
+ "min_grade":50.0,
+ "name":"Average",
+ "prevent_rfqs":0,
+ "notify_supplier":0,
+ "doctype":"Supplier Scorecard Standing",
+ "max_grade":80.0,
+ "prevent_pos":0,
+ "warn_pos":0,
+ "warn_rfqs":0,
+ "standing_color":"Green",
+ "notify_employee":0,
+ "standing_name":"Average",
+ "parenttype":"Supplier Scorecard",
+ "parentfield":"standings"
+ },
+ {
+ "min_grade":80.0,
+ "name":"Excellent",
+ "prevent_rfqs":0,
+ "notify_supplier":0,
+ "doctype":"Supplier Scorecard Standing",
+ "max_grade":100.0,
+ "prevent_pos":0,
+ "warn_pos":0,
+ "warn_rfqs":0,
+ "standing_color":"Blue",
+ "notify_employee":0,
+ "standing_name":"Excellent",
+ "parenttype":"Supplier Scorecard",
+ "parentfield":"standings"
+ }
+ ],
+ "prevent_pos":0,
+ "variables": [
+ {
+ "param_name":"cost_of_on_time_shipments",
+ "doctype":"Supplier Scorecard Scoring Variable",
+ "parenttype":"Supplier Scorecard",
+ "variable_label":"Cost of On Time Shipments",
+ "path":"get_cost_of_on_time_shipments",
+ "parentfield":"variables"
+ },
+ {
+ "param_name":"tot_cost_shipments",
+ "doctype":"Supplier Scorecard Scoring Variable",
+ "parenttype":"Supplier Scorecard",
+ "variable_label":"Total Cost of Shipments",
+ "path":"get_total_cost_of_shipments",
+ "parentfield":"variables"
+ },
+ {
+ "param_name":"tot_days_late",
+ "doctype":"Supplier Scorecard Scoring Variable",
+ "parenttype":"Supplier Scorecard",
+ "variable_label":"Total Days Late",
+ "path":"get_total_days_late",
+ "parentfield":"variables"
+ },
+ {
+ "param_name":"total_working_days",
+ "doctype":"Supplier Scorecard Scoring Variable",
+ "parenttype":"Supplier Scorecard",
+ "variable_label":"Total Working Days",
+ "path":"get_total_workdays",
+ "parentfield":"variables"
+ },
+ {
+ "param_name":"on_time_shipment_num",
+ "doctype":"Supplier Scorecard Scoring Variable",
+ "parenttype":"Supplier Scorecard",
+ "variable_label":"# of On Time Shipments",
+ "path":"get_on_time_shipments",
+ "parentfield":"variables"
+ },
+ {
+ "param_name":"total_shipments",
+ "doctype":"Supplier Scorecard Scoring Variable",
+ "parenttype":"Supplier Scorecard",
+ "variable_label":"Total Shipments",
+ "path":"get_total_shipments",
+ "parentfield":"variables"
+ }
+ ],
+ "period":"Per Month",
+ "doctype":"Supplier Scorecard",
+ "warn_pos":0,
+ "warn_rfqs":0,
+ "notify_supplier":0,
+ "criteria":[
+ {
+ "weight":100.0,
+ "doctype":"Supplier Scorecard Scoring Criteria",
+ "formula":"(({cost_of_on_time_shipments} / {tot_cost_shipments}) if {tot_cost_shipments} > 0 else 1 )* 100 ",
+ "criteria_name":"Delivery",
+ "max_score":100.0,
+ }
+ ],
+ "supplier":"_Test Supplier",
+ "name":"_Test Supplier",
+ "weighting_function":"{total_score} * max( 0, min ( 1 , (12 - {period_number}) / 12) )",
+ }
+]
+
diff --git a/erpnext/buying/doctype/supplier_scorecard_criteria/__init__.py b/erpnext/buying/doctype/supplier_scorecard_criteria/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_criteria/__init__.py
diff --git a/erpnext/buying/doctype/supplier_scorecard_criteria/supplier_scorecard_criteria.js b/erpnext/buying/doctype/supplier_scorecard_criteria/supplier_scorecard_criteria.js
new file mode 100644
index 0000000..9f8a2de
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_criteria/supplier_scorecard_criteria.js
@@ -0,0 +1,8 @@
+// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+/* global frappe */
+
+frappe.ui.form.on("Supplier Scorecard Criteria", {
+ refresh: function() {}
+});
diff --git a/erpnext/buying/doctype/supplier_scorecard_criteria/supplier_scorecard_criteria.json b/erpnext/buying/doctype/supplier_scorecard_criteria/supplier_scorecard_criteria.json
new file mode 100644
index 0000000..229c386
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_criteria/supplier_scorecard_criteria.json
@@ -0,0 +1,184 @@
+{
+ "allow_copy": 0,
+ "allow_guest_to_view": 0,
+ "allow_import": 0,
+ "allow_rename": 0,
+ "autoname": "field:criteria_name",
+ "beta": 1,
+ "creation": "2017-05-29 01:32:43.064891",
+ "custom": 0,
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "fields": [
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "criteria_name",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Criteria Name",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 1
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "weight",
+ "fieldtype": "Percent",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 1,
+ "in_standard_filter": 0,
+ "label": "Criteria Weight",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "default": "100",
+ "fieldname": "max_score",
+ "fieldtype": "Float",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Max Score",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "formula",
+ "fieldtype": "Small Text",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Criteria Formula",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ }
+ ],
+ "has_web_view": 0,
+ "hide_heading": 0,
+ "hide_toolbar": 0,
+ "idx": 0,
+ "image_view": 0,
+ "in_create": 0,
+ "is_submittable": 0,
+ "issingle": 0,
+ "istable": 0,
+ "max_attachments": 0,
+ "modified": "2017-07-17 10:30:47.458285",
+ "modified_by": "Administrator",
+ "module": "Buying",
+ "name": "Supplier Scorecard Criteria",
+ "name_case": "",
+ "owner": "Administrator",
+ "permissions": [
+ {
+ "amend": 0,
+ "apply_user_permissions": 0,
+ "cancel": 0,
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "if_owner": 0,
+ "import": 0,
+ "permlevel": 0,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "System Manager",
+ "set_user_permissions": 0,
+ "share": 1,
+ "submit": 0,
+ "write": 1
+ }
+ ],
+ "quick_entry": 1,
+ "read_only": 0,
+ "read_only_onload": 0,
+ "show_name_in_global_search": 0,
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "track_changes": 1,
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/buying/doctype/supplier_scorecard_criteria/supplier_scorecard_criteria.py b/erpnext/buying/doctype/supplier_scorecard_criteria/supplier_scorecard_criteria.py
new file mode 100644
index 0000000..8514022
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_criteria/supplier_scorecard_criteria.py
@@ -0,0 +1,89 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe import _
+import re
+from frappe.model.document import Document
+
+class InvalidFormulaVariable(frappe.ValidationError): pass
+
+class SupplierScorecardCriteria(Document):
+ def validate(self):
+ self.validate_variables()
+ self.validate_formula()
+
+ def validate_variables(self):
+ # make sure all the variables exist
+ _get_variables(self)
+
+ def validate_formula(self):
+ # evaluate the formula with 0's to make sure it is valid
+ test_formula = self.formula.replace("\r", "").replace("\n", "")
+
+ regex = r"\{(.*?)\}"
+
+ mylist = re.finditer(regex, test_formula, re.MULTILINE | re.DOTALL)
+ for dummy1, match in enumerate(mylist):
+ for dummy2 in range(0, len(match.groups())):
+ test_formula = test_formula.replace('{' + match.group(1) + '}', "0")
+
+ test_formula = test_formula.replace('<','<').replace('>','>')
+ try:
+ frappe.safe_eval(test_formula, None, {'max':max, 'min': min})
+ except Exception:
+ frappe.throw(_("Error evaluating the criteria formula"))
+
+
+
+@frappe.whitelist()
+def get_scoring_criteria(criteria_name):
+ criteria = frappe.get_doc("Supplier Scorecard Criteria", criteria_name)
+
+ return criteria
+
+
+@frappe.whitelist()
+def get_criteria_list():
+ criteria = frappe.db.sql("""
+ SELECT
+ scs.name
+ FROM
+ `tabSupplier Scorecard Criteria` scs""",
+ {}, as_dict=1)
+
+ return criteria
+
+@frappe.whitelist()
+def get_variables(criteria_name):
+ criteria = frappe.get_doc("Supplier Scorecard Criteria", criteria_name)
+ return _get_variables(criteria)
+
+def _get_variables(criteria):
+ my_variables = []
+ regex = r"\{(.*?)\}"
+
+ mylist = re.finditer(regex, criteria.formula, re.MULTILINE | re.DOTALL)
+ for dummy1, match in enumerate(mylist):
+ for dummy2 in range(0, len(match.groups())):
+ try:
+ #var = frappe.get_doc("Supplier Scorecard Variable", {'param_name' : d})
+ var = frappe.db.sql("""
+ SELECT
+ scv.name
+ FROM
+ `tabSupplier Scorecard Variable` scv
+ WHERE
+ param_name=%(param)s""",
+ {'param':match.group(1)},)[0][0]
+ my_variables.append(var)
+ except Exception:
+ # Ignore the ones where the variable can't be found
+ frappe.throw(_('Unable to find variable: ') + str(match.group(1)), InvalidFormulaVariable)
+ #pass
+
+
+ #frappe.msgprint(str(my_variables))
+ return my_variables
diff --git a/erpnext/buying/doctype/supplier_scorecard_criteria/test_supplier_scorecard_criteria.py b/erpnext/buying/doctype/supplier_scorecard_criteria/test_supplier_scorecard_criteria.py
new file mode 100644
index 0000000..4eef4b4
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_criteria/test_supplier_scorecard_criteria.py
@@ -0,0 +1,75 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors
+# See license.txt
+from __future__ import unicode_literals
+
+import frappe
+import unittest
+
+class TestSupplierScorecardCriteria(unittest.TestCase):
+ def test_variables_exist(self):
+ delete_test_scorecards()
+ for d in test_good_criteria:
+ frappe.get_doc(d).insert()
+
+ self.assertRaises(frappe.ValidationError,frappe.get_doc(test_bad_criteria[0]).insert)
+
+ def test_formula_validate(self):
+ delete_test_scorecards()
+ self.assertRaises(frappe.ValidationError,frappe.get_doc(test_bad_criteria[1]).insert)
+ self.assertRaises(frappe.ValidationError,frappe.get_doc(test_bad_criteria[2]).insert)
+
+def delete_test_scorecards():
+ # Delete all the periods so we can delete all the criteria
+ frappe.db.sql("""delete from `tabSupplier Scorecard Period`""")
+ frappe.db.sql("""delete from `tabSupplier Scorecard Scoring Criteria` where parenttype = 'Supplier Scorecard Period'""")
+ frappe.db.sql("""delete from `tabSupplier Scorecard Scoring Standing` where parenttype = 'Supplier Scorecard Period'""")
+ frappe.db.sql("""delete from `tabSupplier Scorecard Scoring Variable` where parenttype = 'Supplier Scorecard Period'""")
+
+ for d in test_good_criteria:
+ if frappe.db.exists("Supplier Scorecard Criteria", d.get("name")):
+ # Delete all the periods, then delete the scorecard
+ frappe.delete_doc(d.get("doctype"), d.get("name"))
+
+ for d in test_bad_criteria:
+ if frappe.db.exists("Supplier Scorecard Criteria", d.get("name")):
+ # Delete all the periods, then delete the scorecard
+ frappe.delete_doc(d.get("doctype"), d.get("name"))
+
+test_good_criteria = [
+ {
+ "name":"Delivery",
+ "weight":40.0,
+ "doctype":"Supplier Scorecard Criteria",
+ "formula":"(({cost_of_on_time_shipments} / {tot_cost_shipments}) if {tot_cost_shipments} > 0 else 1 )* 100",
+ "criteria_name":"Delivery",
+ "max_score":100.0
+ },
+]
+
+test_bad_criteria = [
+ {
+ "name":"Fake Criteria 1",
+ "weight":40.0,
+ "doctype":"Supplier Scorecard Criteria",
+ "formula":"(({fake_variable} / {tot_cost_shipments}) if {tot_cost_shipments} > 0 else 1 )* 100", # Invalid variable name
+ "criteria_name":"Fake Criteria 1",
+ "max_score":100.0
+ },
+ {
+ "name":"Fake Criteria 2",
+ "weight":40.0,
+ "doctype":"Supplier Scorecard Criteria",
+ "formula":"(({cost_of_on_time_shipments} / {tot_cost_shipments}))* 100", # Force 0 divided by 0
+ "criteria_name":"Fake Criteria 2",
+ "max_score":100.0
+ },
+ {
+ "name":"Fake Criteria 3",
+ "weight":40.0,
+ "doctype":"Supplier Scorecard Criteria",
+ "formula":"(({cost_of_on_time_shipments} {cost_of_on_time_shipments} / {tot_cost_shipments}))* 100", # Two variables beside eachother
+ "criteria_name":"Fake Criteria 3",
+ "max_score":100.0
+ },
+]
\ No newline at end of file
diff --git a/erpnext/buying/doctype/supplier_scorecard_period/__init__.py b/erpnext/buying/doctype/supplier_scorecard_period/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_period/__init__.py
diff --git a/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.js b/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.js
new file mode 100644
index 0000000..c51e8ab
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.js
@@ -0,0 +1,14 @@
+// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+/* global frappe */
+
+
+frappe.ui.form.on("Supplier Scorecard Period", {
+ onload: function(frm) {
+ frm.get_field("variables").grid.toggle_display("value", true);
+ frm.get_field("criteria").grid.toggle_display("score", true);
+
+
+ }
+});
diff --git a/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.json b/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.json
new file mode 100644
index 0000000..0cf6514
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.json
@@ -0,0 +1,397 @@
+{
+ "allow_copy": 0,
+ "allow_guest_to_view": 0,
+ "allow_import": 0,
+ "allow_rename": 0,
+ "autoname": "naming_series:",
+ "beta": 1,
+ "creation": "2017-05-30 00:38:18.773013",
+ "custom": 0,
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "fields": [
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "supplier",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 1,
+ "in_standard_filter": 0,
+ "label": "Supplier",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Supplier",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "naming_series",
+ "fieldtype": "Select",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Naming Series",
+ "length": 0,
+ "no_copy": 0,
+ "options": "SSC-",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "total_score",
+ "fieldtype": "Percent",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 1,
+ "in_standard_filter": 0,
+ "label": "Period Score",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "column_break_2",
+ "fieldtype": "Column Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "start_date",
+ "fieldtype": "Date",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 1,
+ "in_standard_filter": 0,
+ "label": "Start Date",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "end_date",
+ "fieldtype": "Date",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "End Date",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 1,
+ "columns": 0,
+ "fieldname": "section_break_11",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Calculations",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "criteria",
+ "fieldtype": "Table",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Criteria",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Supplier Scorecard Scoring Criteria",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "variables",
+ "fieldtype": "Table",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Variables",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Supplier Scorecard Scoring Variable",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 1,
+ "columns": 0,
+ "fieldname": "sec_ref",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Reference",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "scorecard",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Supplier Scorecard Setup",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Supplier Scorecard",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ }
+ ],
+ "has_web_view": 0,
+ "hide_heading": 0,
+ "hide_toolbar": 0,
+ "idx": 0,
+ "image_view": 0,
+ "in_create": 1,
+ "is_submittable": 0,
+ "issingle": 0,
+ "istable": 0,
+ "max_attachments": 0,
+ "modified": "2017-07-12 07:33:26.130861",
+ "modified_by": "Administrator",
+ "module": "Buying",
+ "name": "Supplier Scorecard Period",
+ "name_case": "",
+ "owner": "Administrator",
+ "permissions": [
+ {
+ "amend": 0,
+ "apply_user_permissions": 0,
+ "cancel": 0,
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "if_owner": 0,
+ "import": 0,
+ "permlevel": 0,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "System Manager",
+ "set_user_permissions": 0,
+ "share": 1,
+ "submit": 0,
+ "write": 1
+ }
+ ],
+ "quick_entry": 0,
+ "read_only": 0,
+ "read_only_onload": 0,
+ "show_name_in_global_search": 0,
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "track_changes": 0,
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.py b/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.py
new file mode 100644
index 0000000..90b65bd
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_period/supplier_scorecard_period.py
@@ -0,0 +1,133 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe import throw, _
+from frappe.model.document import Document
+from frappe.model.mapper import get_mapped_doc
+import erpnext.buying.doctype.supplier_scorecard_variable.supplier_scorecard_variable as variable_functions
+
+class SupplierScorecardPeriod(Document):
+
+ def validate(self):
+ self.validate_criteria_weights()
+ self.calculate_variables()
+ self.calculate_criteria()
+ self.calculate_score()
+
+ def validate_criteria_weights(self):
+
+ weight = 0
+ for c in self.criteria:
+ weight += c.weight
+
+ if weight != 100:
+ throw(_('Criteria weights must add up to 100%'))
+
+ def calculate_variables(self):
+ for var in self.variables:
+
+ if '.' in var.path:
+ method_to_call = import_string_path(var.path)
+ var.value = method_to_call(self)
+ else:
+ method_to_call = getattr(variable_functions, var.path)
+ var.value = method_to_call(self)
+
+
+
+ def calculate_criteria(self):
+ #Get the criteria
+ for crit in self.criteria:
+
+ #me = ""
+ my_eval_statement = crit.formula.replace("\r", "").replace("\n", "")
+ #for let in my_eval_statement:
+ # me += let.encode('hex') + " "
+ #frappe.msgprint(me)
+
+ for var in self.variables:
+ if var.value:
+ if var.param_name in my_eval_statement:
+ my_eval_statement = my_eval_statement.replace('{' + var.param_name + '}', "{:.2f}".format(var.value))
+ else:
+ if var.param_name in my_eval_statement:
+ my_eval_statement = my_eval_statement.replace('{' + var.param_name + '}', '0.0')
+
+ #frappe.msgprint(my_eval_statement )
+
+ my_eval_statement = my_eval_statement.replace('<','<').replace('>','>')
+
+ try:
+ crit.score = min(crit.max_score, max( 0 ,frappe.safe_eval(my_eval_statement, None, {'max':max, 'min': min})))
+ except Exception:
+ frappe.throw(_("Could not solve criteria score function for {0}. Make sure the formula is valid.".format(crit.criteria_name)),frappe.ValidationError)
+ crit.score = 0
+
+ def calculate_score(self):
+ myscore = 0
+ for crit in self.criteria:
+ myscore += crit.score * crit.weight/100.0
+ self.total_score = myscore
+
+ def calculate_weighted_score(self, weighing_function):
+ my_eval_statement = weighing_function.replace("\r", "").replace("\n", "")
+
+ for var in self.variables:
+ if var.value:
+ if var.param_name in my_eval_statement:
+ my_eval_statement = my_eval_statement.replace('{' + var.param_name + '}', "{:.2f}".format(var.value))
+ else:
+ if var.param_name in my_eval_statement:
+ my_eval_statement = my_eval_statement.replace('{' + var.param_name + '}', '0.0')
+
+ my_eval_statement = my_eval_statement.replace('<','<').replace('>','>')
+
+ try:
+ weighed_score = frappe.safe_eval(my_eval_statement, None, {'max':max, 'min': min})
+ except Exception:
+ frappe.throw(_("Could not solve weighted score function. Make sure the formula is valid."),frappe.ValidationError)
+ weighed_score = 0
+ return weighed_score
+
+
+
+def import_string_path(path):
+ components = path.split('.')
+ mod = __import__(components[0])
+ for comp in components[1:]:
+ mod = getattr(mod, comp)
+ return mod
+
+
+def post_process(source, target):
+ pass
+
+
+@frappe.whitelist()
+def make_supplier_scorecard(source_name, target_doc=None):
+ #def update_item(obj, target, source_parent):
+ # target.qty = flt(obj.qty) - flt(obj.received_qty)
+ # target.stock_qty = (flt(obj.qty) - flt(obj.received_qty)) * flt(obj.conversion_factor)
+ # target.amount = (flt(obj.qty) - flt(obj.received_qty)) * flt(obj.rate)
+ # target.base_amount = (flt(obj.qty) - flt(obj.received_qty)) * \
+ # flt(obj.rate) * flt(source_parent.conversion_rate)
+
+ doc = get_mapped_doc("Supplier Scorecard", source_name, {
+ "Supplier Scorecard": {
+ "doctype": "Supplier Scorecard Period"
+ },
+ "Supplier Scorecard Scoring Variable": {
+ "doctype": "Supplier Scorecard Scoring Variable",
+ "add_if_empty": True
+ },
+ "Supplier Scorecard Scoring Constraint": {
+ "doctype": "Supplier Scorecard Scoring Constraint",
+ "add_if_empty": True
+ }
+ }, target_doc, post_process)
+
+ return doc
+
diff --git a/erpnext/buying/doctype/supplier_scorecard_period/test_supplier_scorecard_period.py b/erpnext/buying/doctype/supplier_scorecard_period/test_supplier_scorecard_period.py
new file mode 100644
index 0000000..8baa318
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_period/test_supplier_scorecard_period.py
@@ -0,0 +1,9 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors
+# See license.txt
+from __future__ import unicode_literals
+
+import unittest
+
+class TestSupplierScorecardPeriod(unittest.TestCase):
+ pass
diff --git a/erpnext/buying/doctype/supplier_scorecard_scoring_criteria/__init__.py b/erpnext/buying/doctype/supplier_scorecard_scoring_criteria/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_scoring_criteria/__init__.py
diff --git a/erpnext/buying/doctype/supplier_scorecard_scoring_criteria/supplier_scorecard_scoring_criteria.json b/erpnext/buying/doctype/supplier_scorecard_scoring_criteria/supplier_scorecard_scoring_criteria.json
new file mode 100644
index 0000000..567738a
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_scoring_criteria/supplier_scorecard_scoring_criteria.json
@@ -0,0 +1,280 @@
+{
+ "allow_copy": 0,
+ "allow_guest_to_view": 0,
+ "allow_import": 0,
+ "allow_rename": 0,
+ "beta": 1,
+ "creation": "2017-05-29 01:32:17.988454",
+ "custom": 0,
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "fields": [
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 3,
+ "fieldname": "criteria_name",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 1,
+ "in_standard_filter": 0,
+ "label": "Criteria Name",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Supplier Scorecard Criteria",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "section_break_2",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 2,
+ "fieldname": "weight",
+ "fieldtype": "Percent",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 1,
+ "in_standard_filter": 0,
+ "label": "Criteria Weight",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "column_break_4",
+ "fieldtype": "Column Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "default": "100",
+ "fieldname": "max_score",
+ "fieldtype": "Float",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Max Score",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "section_break_6",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "formula",
+ "fieldtype": "Small Text",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Criteria Formula",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "score",
+ "fieldtype": "Percent",
+ "hidden": 1,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 1,
+ "in_standard_filter": 0,
+ "label": "Score",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ }
+ ],
+ "has_web_view": 0,
+ "hide_heading": 0,
+ "hide_toolbar": 0,
+ "idx": 0,
+ "image_view": 0,
+ "in_create": 0,
+ "is_submittable": 0,
+ "issingle": 0,
+ "istable": 1,
+ "max_attachments": 0,
+ "modified": "2017-07-12 07:33:41.532361",
+ "modified_by": "Administrator",
+ "module": "Buying",
+ "name": "Supplier Scorecard Scoring Criteria",
+ "name_case": "",
+ "owner": "Administrator",
+ "permissions": [],
+ "quick_entry": 1,
+ "read_only": 0,
+ "read_only_onload": 0,
+ "show_name_in_global_search": 0,
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "track_changes": 1,
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/buying/doctype/supplier_scorecard_scoring_criteria/supplier_scorecard_scoring_criteria.py b/erpnext/buying/doctype/supplier_scorecard_scoring_criteria/supplier_scorecard_scoring_criteria.py
new file mode 100644
index 0000000..b64abed
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_scoring_criteria/supplier_scorecard_scoring_criteria.py
@@ -0,0 +1,9 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+from frappe.model.document import Document
+
+class SupplierScorecardScoringCriteria(Document):
+ pass
diff --git a/erpnext/buying/doctype/supplier_scorecard_scoring_standing/__init__.py b/erpnext/buying/doctype/supplier_scorecard_scoring_standing/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_scoring_standing/__init__.py
diff --git a/erpnext/buying/doctype/supplier_scorecard_scoring_standing/supplier_scorecard_scoring_standing.json b/erpnext/buying/doctype/supplier_scorecard_scoring_standing/supplier_scorecard_scoring_standing.json
new file mode 100644
index 0000000..1fc04bb
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_scoring_standing/supplier_scorecard_scoring_standing.json
@@ -0,0 +1,491 @@
+{
+ "allow_copy": 0,
+ "allow_guest_to_view": 0,
+ "allow_import": 0,
+ "allow_rename": 0,
+ "beta": 1,
+ "creation": "2017-05-29 01:36:22.697234",
+ "custom": 0,
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "fields": [
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 3,
+ "fieldname": "standing_name",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 1,
+ "in_standard_filter": 0,
+ "label": "Standing Name",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Supplier Scorecard Standing",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "column_break_2",
+ "fieldtype": "Column Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "standing_color",
+ "fieldtype": "Select",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Color",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Blue\nPurple\nGreen\nYellow\nOrange\nRed",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "section_break_4",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 2,
+ "fieldname": "min_grade",
+ "fieldtype": "Percent",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 1,
+ "in_standard_filter": 0,
+ "label": "Min Grade",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 2,
+ "fieldname": "max_grade",
+ "fieldtype": "Percent",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 1,
+ "in_standard_filter": 0,
+ "label": "Max Grade",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "actions",
+ "fieldtype": "Section Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Actions",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "warn_rfqs",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Warn RFQs",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "warn_pos",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Warn Purchase Orders",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "prevent_rfqs",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Prevent RFQs",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "prevent_pos",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Prevent Purchase Orders",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "column_break_10",
+ "fieldtype": "Column Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "notify_supplier",
+ "fieldtype": "Check",
+ "hidden": 1,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Notify Supplier",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "notify_employee",
+ "fieldtype": "Check",
+ "hidden": 1,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Notify Employee",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "employee_link",
+ "fieldtype": "Link",
+ "hidden": 1,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Employee ",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Employee",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ }
+ ],
+ "has_web_view": 0,
+ "hide_heading": 0,
+ "hide_toolbar": 0,
+ "idx": 0,
+ "image_view": 0,
+ "in_create": 0,
+ "is_submittable": 0,
+ "issingle": 0,
+ "istable": 1,
+ "max_attachments": 0,
+ "modified": "2017-07-12 07:33:20.615684",
+ "modified_by": "Administrator",
+ "module": "Buying",
+ "name": "Supplier Scorecard Scoring Standing",
+ "name_case": "",
+ "owner": "Administrator",
+ "permissions": [],
+ "quick_entry": 1,
+ "read_only": 0,
+ "read_only_onload": 0,
+ "show_name_in_global_search": 0,
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "track_changes": 1,
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/buying/doctype/supplier_scorecard_scoring_standing/supplier_scorecard_scoring_standing.py b/erpnext/buying/doctype/supplier_scorecard_scoring_standing/supplier_scorecard_scoring_standing.py
new file mode 100644
index 0000000..e8ad79f
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_scoring_standing/supplier_scorecard_scoring_standing.py
@@ -0,0 +1,9 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+from frappe.model.document import Document
+
+class SupplierScorecardScoringStanding(Document):
+ pass
diff --git a/erpnext/buying/doctype/supplier_scorecard_scoring_variable/__init__.py b/erpnext/buying/doctype/supplier_scorecard_scoring_variable/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_scoring_variable/__init__.py
diff --git a/erpnext/buying/doctype/supplier_scorecard_scoring_variable/supplier_scorecard_scoring_variable.json b/erpnext/buying/doctype/supplier_scorecard_scoring_variable/supplier_scorecard_scoring_variable.json
new file mode 100644
index 0000000..f0e043e
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_scoring_variable/supplier_scorecard_scoring_variable.json
@@ -0,0 +1,222 @@
+{
+ "allow_copy": 0,
+ "allow_guest_to_view": 0,
+ "allow_import": 0,
+ "allow_rename": 0,
+ "beta": 1,
+ "creation": "2017-05-29 01:30:06.105240",
+ "custom": 0,
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "fields": [
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 3,
+ "fieldname": "variable_label",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 1,
+ "in_standard_filter": 0,
+ "label": "Variable Name",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Supplier Scorecard Variable",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "description",
+ "fieldtype": "Small Text",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Description",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "is_custom",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Custom?",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "param_name",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Parameter Name",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "path",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Path",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 1,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 2,
+ "fieldname": "value",
+ "fieldtype": "Float",
+ "hidden": 1,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 1,
+ "in_standard_filter": 0,
+ "label": "Value",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ }
+ ],
+ "has_web_view": 0,
+ "hide_heading": 0,
+ "hide_toolbar": 0,
+ "idx": 0,
+ "image_view": 0,
+ "in_create": 0,
+ "is_submittable": 0,
+ "issingle": 0,
+ "istable": 1,
+ "max_attachments": 0,
+ "modified": "2017-07-12 07:33:36.671502",
+ "modified_by": "Administrator",
+ "module": "Buying",
+ "name": "Supplier Scorecard Scoring Variable",
+ "name_case": "",
+ "owner": "Administrator",
+ "permissions": [],
+ "quick_entry": 1,
+ "read_only": 0,
+ "read_only_onload": 0,
+ "show_name_in_global_search": 0,
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "track_changes": 1,
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/buying/doctype/supplier_scorecard_scoring_variable/supplier_scorecard_scoring_variable.py b/erpnext/buying/doctype/supplier_scorecard_scoring_variable/supplier_scorecard_scoring_variable.py
new file mode 100644
index 0000000..58a8a99
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_scoring_variable/supplier_scorecard_scoring_variable.py
@@ -0,0 +1,9 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+from frappe.model.document import Document
+
+class SupplierScorecardScoringVariable(Document):
+ pass
diff --git a/erpnext/buying/doctype/supplier_scorecard_standing/__init__.py b/erpnext/buying/doctype/supplier_scorecard_standing/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_standing/__init__.py
diff --git a/erpnext/buying/doctype/supplier_scorecard_standing/supplier_scorecard_standing.js b/erpnext/buying/doctype/supplier_scorecard_standing/supplier_scorecard_standing.js
new file mode 100644
index 0000000..dccfcc3
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_standing/supplier_scorecard_standing.js
@@ -0,0 +1,10 @@
+// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+/* global frappe */
+
+frappe.ui.form.on("Supplier Scorecard Standing", {
+ refresh: function() {
+
+ }
+});
diff --git a/erpnext/buying/doctype/supplier_scorecard_standing/supplier_scorecard_standing.json b/erpnext/buying/doctype/supplier_scorecard_standing/supplier_scorecard_standing.json
new file mode 100644
index 0000000..b61b4ed
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_standing/supplier_scorecard_standing.json
@@ -0,0 +1,424 @@
+{
+ "allow_copy": 0,
+ "allow_guest_to_view": 0,
+ "allow_import": 0,
+ "allow_rename": 0,
+ "autoname": "field:standing_name",
+ "beta": 1,
+ "creation": "2017-05-29 01:36:47.893639",
+ "custom": 0,
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "fields": [
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "standing_name",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Standing Name",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 1
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "standing_color",
+ "fieldtype": "Select",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Color",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Blue\nPurple\nGreen\nYellow\nOrange\nRed",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "min_grade",
+ "fieldtype": "Percent",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Min Grade",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "max_grade",
+ "fieldtype": "Percent",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Max Grade",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "column_break_5",
+ "fieldtype": "Column Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "warn_rfqs",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Warn RFQs",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "warn_pos",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Warn Purchase Orders",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "prevent_rfqs",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Prevent RFQs",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "prevent_pos",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Prevent Purchase Orders",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "notify_supplier",
+ "fieldtype": "Check",
+ "hidden": 1,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Notify Supplier",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "notify_employee",
+ "fieldtype": "Check",
+ "hidden": 1,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Notify Other",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "employee_link",
+ "fieldtype": "Link",
+ "hidden": 1,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Other",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Employee",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ }
+ ],
+ "has_web_view": 0,
+ "hide_heading": 0,
+ "hide_toolbar": 0,
+ "idx": 0,
+ "image_view": 0,
+ "in_create": 0,
+ "is_submittable": 0,
+ "issingle": 0,
+ "istable": 0,
+ "max_attachments": 0,
+ "modified": "2017-07-12 07:33:16.560273",
+ "modified_by": "Administrator",
+ "module": "Buying",
+ "name": "Supplier Scorecard Standing",
+ "name_case": "",
+ "owner": "Administrator",
+ "permissions": [
+ {
+ "amend": 0,
+ "apply_user_permissions": 0,
+ "cancel": 0,
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "if_owner": 0,
+ "import": 0,
+ "permlevel": 0,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "System Manager",
+ "set_user_permissions": 0,
+ "share": 1,
+ "submit": 0,
+ "write": 1
+ }
+ ],
+ "quick_entry": 0,
+ "read_only": 0,
+ "read_only_onload": 0,
+ "show_name_in_global_search": 0,
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "track_changes": 0,
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/buying/doctype/supplier_scorecard_standing/supplier_scorecard_standing.py b/erpnext/buying/doctype/supplier_scorecard_standing/supplier_scorecard_standing.py
new file mode 100644
index 0000000..1ba5d06
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_standing/supplier_scorecard_standing.py
@@ -0,0 +1,29 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class SupplierScorecardStanding(Document):
+ pass
+
+
+@frappe.whitelist()
+def get_scoring_standing(standing_name):
+ standing = frappe.get_doc("Supplier Scorecard Standing", standing_name)
+
+ return standing
+
+
+@frappe.whitelist()
+def get_standings_list():
+ standings = frappe.db.sql("""
+ SELECT
+ scs.name
+ FROM
+ `tabSupplier Scorecard Standing` scs""",
+ {}, as_dict=1)
+
+ return standings
\ No newline at end of file
diff --git a/erpnext/buying/doctype/supplier_scorecard_standing/test_supplier_scorecard_standing.py b/erpnext/buying/doctype/supplier_scorecard_standing/test_supplier_scorecard_standing.py
new file mode 100644
index 0000000..4d96651
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_standing/test_supplier_scorecard_standing.py
@@ -0,0 +1,9 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors
+# See license.txt
+from __future__ import unicode_literals
+
+import unittest
+
+class TestSupplierScorecardStanding(unittest.TestCase):
+ pass
diff --git a/erpnext/buying/doctype/supplier_scorecard_variable/__init__.py b/erpnext/buying/doctype/supplier_scorecard_variable/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_variable/__init__.py
diff --git a/erpnext/buying/doctype/supplier_scorecard_variable/supplier_scorecard_variable.js b/erpnext/buying/doctype/supplier_scorecard_variable/supplier_scorecard_variable.js
new file mode 100644
index 0000000..2d74fdd
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_variable/supplier_scorecard_variable.js
@@ -0,0 +1,10 @@
+// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+/* global frappe */
+
+frappe.ui.form.on("Supplier Scorecard Variable", {
+ refresh: function() {
+
+ }
+});
diff --git a/erpnext/buying/doctype/supplier_scorecard_variable/supplier_scorecard_variable.json b/erpnext/buying/doctype/supplier_scorecard_variable/supplier_scorecard_variable.json
new file mode 100644
index 0000000..d244840
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_variable/supplier_scorecard_variable.json
@@ -0,0 +1,242 @@
+{
+ "allow_copy": 0,
+ "allow_guest_to_view": 0,
+ "allow_import": 0,
+ "allow_rename": 0,
+ "autoname": "field:variable_label",
+ "beta": 1,
+ "creation": "2017-05-29 01:30:34.688389",
+ "custom": 0,
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "fields": [
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "variable_label",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Variable Name",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 1
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "is_custom",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Custom?",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "param_name",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 1,
+ "in_standard_filter": 0,
+ "label": "Parameter Name",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "path",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Path",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "column_break_5",
+ "fieldtype": "Column Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "description",
+ "fieldtype": "Small Text",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Description",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ }
+ ],
+ "has_web_view": 0,
+ "hide_heading": 0,
+ "hide_toolbar": 0,
+ "idx": 0,
+ "image_view": 0,
+ "in_create": 0,
+ "is_submittable": 0,
+ "issingle": 0,
+ "istable": 0,
+ "max_attachments": 0,
+ "modified": "2017-07-12 07:33:31.395262",
+ "modified_by": "Administrator",
+ "module": "Buying",
+ "name": "Supplier Scorecard Variable",
+ "name_case": "",
+ "owner": "Administrator",
+ "permissions": [
+ {
+ "amend": 0,
+ "apply_user_permissions": 0,
+ "cancel": 0,
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "if_owner": 0,
+ "import": 0,
+ "permlevel": 0,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "System Manager",
+ "set_user_permissions": 0,
+ "share": 1,
+ "submit": 0,
+ "write": 1
+ }
+ ],
+ "quick_entry": 1,
+ "read_only": 0,
+ "read_only_onload": 0,
+ "show_name_in_global_search": 0,
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "track_changes": 1,
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/buying/doctype/supplier_scorecard_variable/supplier_scorecard_variable.py b/erpnext/buying/doctype/supplier_scorecard_variable/supplier_scorecard_variable.py
new file mode 100644
index 0000000..17c911a
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_variable/supplier_scorecard_variable.py
@@ -0,0 +1,503 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+import sys
+from frappe import _
+from frappe.model.document import Document
+from frappe.utils import getdate
+
+class VariablePathNotFound(frappe.ValidationError): pass
+
+class SupplierScorecardVariable(Document):
+ def validate(self):
+ self.validate_path_exists()
+
+ def validate_path_exists(self):
+ if '.' in self.path:
+ try:
+ from erpnext.buying.doctype.supplier_scorecard_period.supplier_scorecard_period import import_string_path
+ import_string_path(self.path)
+ except AttributeError:
+ frappe.throw(_("Could not find path for " + self.path), VariablePathNotFound)
+
+ else:
+ if not hasattr(sys.modules[__name__], self.path):
+ frappe.throw(_("Could not find path for " + self.path), VariablePathNotFound)
+
+
+@frappe.whitelist()
+def get_scoring_variable(variable_label):
+ variable = frappe.get_doc("Supplier Scorecard Variable", variable_label)
+
+ return variable
+
+def get_total_workdays(scorecard):
+ """ Gets the number of days in this period"""
+ delta = getdate(scorecard.end_date) - getdate(scorecard.start_date)
+ return delta.days
+
+def get_item_workdays(scorecard):
+ """ Gets the number of days in this period"""
+ supplier = frappe.get_doc('Supplier', scorecard.supplier)
+ total_item_days = frappe.db.sql("""
+ SELECT
+ SUM(DATEDIFF( %(end_date)s, po_item.schedule_date) * (po_item.qty))
+ FROM
+ `tabPurchase Order Item` po_item,
+ `tabPurchase Order` po
+ WHERE
+ po.supplier = %(supplier)s
+ AND po_item.received_qty < po_item.qty
+ AND po_item.schedule_date BETWEEN %(start_date)s AND %(end_date)s
+ AND po_item.parent = po.name""",
+ {"supplier": supplier.name, "start_date": scorecard.start_date, "end_date": scorecard.end_date}, as_dict=0)[0][0]
+
+ if not total_item_days:
+ total_item_days = 0
+ return total_item_days
+
+
+
+def get_total_cost_of_shipments(scorecard):
+ """ Gets the total cost of all shipments in the period (based on Purchase Orders)"""
+ supplier = frappe.get_doc('Supplier', scorecard.supplier)
+
+ # Look up all PO Items with delivery dates between our dates
+ data = frappe.db.sql("""
+ SELECT
+ SUM(po_item.base_amount)
+ FROM
+ `tabPurchase Order Item` po_item,
+ `tabPurchase Order` po
+ WHERE
+ po.supplier = %(supplier)s
+ AND po_item.schedule_date BETWEEN %(start_date)s AND %(end_date)s
+ AND po_item.docstatus = 1
+ AND po_item.parent = po.name""",
+ {"supplier": supplier.name, "start_date": scorecard.start_date, "end_date": scorecard.end_date}, as_dict=0)[0][0]
+
+ if data:
+ return data
+ else:
+ return 0
+
+def get_cost_of_delayed_shipments(scorecard):
+ """ Gets the total cost of all delayed shipments in the period (based on Purchase Receipts - POs)"""
+ return get_total_cost_of_shipments(scorecard) - get_cost_of_on_time_shipments(scorecard)
+
+def get_cost_of_on_time_shipments(scorecard):
+ """ Gets the total cost of all on_time shipments in the period (based on Purchase Receipts)"""
+ supplier = frappe.get_doc('Supplier', scorecard.supplier)
+
+ # Look up all PO Items with delivery dates between our dates
+
+ total_delivered_on_time_costs = frappe.db.sql("""
+ SELECT
+ SUM(pr_item.base_amount)
+ FROM
+ `tabPurchase Order Item` po_item,
+ `tabPurchase Receipt Item` pr_item,
+ `tabPurchase Order` po,
+ `tabPurchase Receipt` pr
+ WHERE
+ po.supplier = %(supplier)s
+ AND po_item.schedule_date BETWEEN %(start_date)s AND %(end_date)s
+ AND po_item.schedule_date >= pr.posting_date
+ AND pr_item.docstatus = 1
+ AND pr_item.purchase_order_item = po_item.name
+ AND po_item.parent = po.name
+ AND pr_item.parent = pr.name""",
+ {"supplier": supplier.name, "start_date": scorecard.start_date, "end_date": scorecard.end_date}, as_dict=0)[0][0]
+
+ if total_delivered_on_time_costs:
+ return total_delivered_on_time_costs
+ else:
+ return 0
+
+
+def get_total_days_late(scorecard):
+ """ Gets the number of item days late in the period (based on Purchase Receipts vs POs)"""
+ supplier = frappe.get_doc('Supplier', scorecard.supplier)
+ total_delivered_late_days = frappe.db.sql("""
+ SELECT
+ SUM(DATEDIFF(pr.posting_date,po_item.schedule_date)* pr_item.qty)
+ FROM
+ `tabPurchase Order Item` po_item,
+ `tabPurchase Receipt Item` pr_item,
+ `tabPurchase Order` po,
+ `tabPurchase Receipt` pr
+ WHERE
+ po.supplier = %(supplier)s
+ AND po_item.schedule_date BETWEEN %(start_date)s AND %(end_date)s
+ AND po_item.schedule_date < pr.posting_date
+ AND pr_item.docstatus = 1
+ AND pr_item.purchase_order_item = po_item.name
+ AND po_item.parent = po.name
+ AND pr_item.parent = pr.name""",
+ {"supplier": supplier.name, "start_date": scorecard.start_date, "end_date": scorecard.end_date}, as_dict=0)[0][0]
+ if not total_delivered_late_days:
+ total_delivered_late_days = 0
+
+ total_missed_late_days = frappe.db.sql("""
+ SELECT
+ SUM(DATEDIFF( %(end_date)s, po_item.schedule_date) * (po_item.qty - po_item.received_qty))
+ FROM
+ `tabPurchase Order Item` po_item,
+ `tabPurchase Order` po
+ WHERE
+ po.supplier = %(supplier)s
+ AND po_item.received_qty < po_item.qty
+ AND po_item.schedule_date BETWEEN %(start_date)s AND %(end_date)s
+ AND po_item.parent = po.name""",
+ {"supplier": supplier.name, "start_date": scorecard.start_date, "end_date": scorecard.end_date}, as_dict=0)[0][0]
+
+ if not total_missed_late_days:
+ total_missed_late_days = 0
+ return total_missed_late_days + total_delivered_late_days
+
+def get_on_time_shipments(scorecard):
+ """ Gets the number of late shipments (counting each item) in the period (based on Purchase Receipts vs POs)"""
+
+ supplier = frappe.get_doc('Supplier', scorecard.supplier)
+
+ # Look up all PO Items with delivery dates between our dates
+ total_items_delivered_on_time = frappe.db.sql("""
+ SELECT
+ COUNT(pr_item.qty)
+ FROM
+ `tabPurchase Order Item` po_item,
+ `tabPurchase Receipt Item` pr_item,
+ `tabPurchase Order` po,
+ `tabPurchase Receipt` pr
+ WHERE
+ po.supplier = %(supplier)s
+ AND po_item.schedule_date BETWEEN %(start_date)s AND %(end_date)s
+ AND po_item.schedule_date <= pr.posting_date
+ AND po_item.qty = pr_item.qty
+ AND pr_item.docstatus = 1
+ AND pr_item.purchase_order_item = po_item.name
+ AND po_item.parent = po.name
+ AND pr_item.parent = pr.name""",
+ {"supplier": supplier.name, "start_date": scorecard.start_date, "end_date": scorecard.end_date}, as_dict=0)[0][0]
+
+ if not total_items_delivered_on_time:
+ total_items_delivered_on_time = 0
+ return total_items_delivered_on_time
+
+def get_late_shipments(scorecard):
+ """ Gets the number of late shipments (counting each item) in the period (based on Purchase Receipts vs POs)"""
+ return get_total_shipments(scorecard) - get_on_time_shipments(scorecard)
+
+def get_total_received(scorecard):
+ """ Gets the total number of received shipments in the period (based on Purchase Receipts)"""
+ supplier = frappe.get_doc('Supplier', scorecard.supplier)
+
+ # Look up all PO Items with delivery dates between our dates
+ data = frappe.db.sql("""
+ SELECT
+ COUNT(pr_item.base_amount)
+ FROM
+ `tabPurchase Receipt Item` pr_item,
+ `tabPurchase Receipt` pr
+ WHERE
+ pr.supplier = %(supplier)s
+ AND pr.posting_date BETWEEN %(start_date)s AND %(end_date)s
+ AND pr_item.docstatus = 1
+ AND pr_item.parent = pr.name""",
+ {"supplier": supplier.name, "start_date": scorecard.start_date, "end_date": scorecard.end_date}, as_dict=0)[0][0]
+
+ if not data:
+ data = 0
+ return data
+
+def get_total_received_amount(scorecard):
+ """ Gets the total amount (in company currency) received in the period (based on Purchase Receipts)"""
+ supplier = frappe.get_doc('Supplier', scorecard.supplier)
+
+ # Look up all PO Items with delivery dates between our dates
+ data = frappe.db.sql("""
+ SELECT
+ SUM(pr_item.received_qty * pr_item.base_rate)
+ FROM
+ `tabPurchase Receipt Item` pr_item,
+ `tabPurchase Receipt` pr
+ WHERE
+ pr.supplier = %(supplier)s
+ AND pr.posting_date BETWEEN %(start_date)s AND %(end_date)s
+ AND pr_item.docstatus = 1
+ AND pr_item.parent = pr.name""",
+ {"supplier": supplier.name, "start_date": scorecard.start_date, "end_date": scorecard.end_date}, as_dict=0)[0][0]
+
+ if not data:
+ data = 0
+ return data
+
+def get_total_received_items(scorecard):
+ """ Gets the total number of received shipments in the period (based on Purchase Receipts)"""
+ supplier = frappe.get_doc('Supplier', scorecard.supplier)
+
+ # Look up all PO Items with delivery dates between our dates
+ data = frappe.db.sql("""
+ SELECT
+ SUM(pr_item.received_qty)
+ FROM
+ `tabPurchase Receipt Item` pr_item,
+ `tabPurchase Receipt` pr
+ WHERE
+ pr.supplier = %(supplier)s
+ AND pr.posting_date BETWEEN %(start_date)s AND %(end_date)s
+ AND pr_item.docstatus = 1
+ AND pr_item.parent = pr.name""",
+ {"supplier": supplier.name, "start_date": scorecard.start_date, "end_date": scorecard.end_date}, as_dict=0)[0][0]
+
+ if not data:
+ data = 0
+ return data
+
+def get_total_rejected_amount(scorecard):
+ """ Gets the total amount (in company currency) rejected in the period (based on Purchase Receipts)"""
+ supplier = frappe.get_doc('Supplier', scorecard.supplier)
+
+ # Look up all PO Items with delivery dates between our dates
+ data = frappe.db.sql("""
+ SELECT
+ SUM(pr_item.rejected_qty * pr_item.base_rate)
+ FROM
+ `tabPurchase Receipt Item` pr_item,
+ `tabPurchase Receipt` pr
+ WHERE
+ pr.supplier = %(supplier)s
+ AND pr.posting_date BETWEEN %(start_date)s AND %(end_date)s
+ AND pr_item.docstatus = 1
+ AND pr_item.parent = pr.name""",
+ {"supplier": supplier.name, "start_date": scorecard.start_date, "end_date": scorecard.end_date}, as_dict=0)[0][0]
+
+ if not data:
+ data = 0
+ return data
+
+def get_total_rejected_items(scorecard):
+ """ Gets the total number of rejected items in the period (based on Purchase Receipts)"""
+ supplier = frappe.get_doc('Supplier', scorecard.supplier)
+
+ # Look up all PO Items with delivery dates between our dates
+ data = frappe.db.sql("""
+ SELECT
+ SUM(pr_item.rejected_qty)
+ FROM
+ `tabPurchase Receipt Item` pr_item,
+ `tabPurchase Receipt` pr
+ WHERE
+ pr.supplier = %(supplier)s
+ AND pr.posting_date BETWEEN %(start_date)s AND %(end_date)s
+ AND pr_item.docstatus = 1
+ AND pr_item.parent = pr.name""",
+ {"supplier": supplier.name, "start_date": scorecard.start_date, "end_date": scorecard.end_date}, as_dict=0)[0][0]
+
+ if not data:
+ data = 0
+ return data
+
+def get_total_accepted_amount(scorecard):
+ """ Gets the total amount (in company currency) accepted in the period (based on Purchase Receipts)"""
+ supplier = frappe.get_doc('Supplier', scorecard.supplier)
+
+ # Look up all PO Items with delivery dates between our dates
+ data = frappe.db.sql("""
+ SELECT
+ SUM(pr_item.qty * pr_item.base_rate)
+ FROM
+ `tabPurchase Receipt Item` pr_item,
+ `tabPurchase Receipt` pr
+ WHERE
+ pr.supplier = %(supplier)s
+ AND pr.posting_date BETWEEN %(start_date)s AND %(end_date)s
+ AND pr_item.docstatus = 1
+ AND pr_item.parent = pr.name""",
+ {"supplier": supplier.name, "start_date": scorecard.start_date, "end_date": scorecard.end_date}, as_dict=0)[0][0]
+
+ if not data:
+ data = 0
+ return data
+
+def get_total_accepted_items(scorecard):
+ """ Gets the total number of rejected items in the period (based on Purchase Receipts)"""
+ supplier = frappe.get_doc('Supplier', scorecard.supplier)
+
+ # Look up all PO Items with delivery dates between our dates
+ data = frappe.db.sql("""
+ SELECT
+ SUM(pr_item.qty)
+ FROM
+ `tabPurchase Receipt Item` pr_item,
+ `tabPurchase Receipt` pr
+ WHERE
+ pr.supplier = %(supplier)s
+ AND pr.posting_date BETWEEN %(start_date)s AND %(end_date)s
+ AND pr_item.docstatus = 1
+ AND pr_item.parent = pr.name""",
+ {"supplier": supplier.name, "start_date": scorecard.start_date, "end_date": scorecard.end_date}, as_dict=0)[0][0]
+
+ if not data:
+ data = 0
+ return data
+
+def get_total_shipments(scorecard):
+ """ Gets the total number of ordered shipments to arrive in the period (based on Purchase Receipts)"""
+ supplier = frappe.get_doc('Supplier', scorecard.supplier)
+
+ # Look up all PO Items with delivery dates between our dates
+ data = frappe.db.sql("""
+ SELECT
+ COUNT(po_item.base_amount)
+ FROM
+ `tabPurchase Order Item` po_item,
+ `tabPurchase Order` po
+ WHERE
+ po.supplier = %(supplier)s
+ AND po_item.schedule_date BETWEEN %(start_date)s AND %(end_date)s
+ AND po_item.docstatus = 1
+ AND po_item.parent = po.name""",
+ {"supplier": supplier.name, "start_date": scorecard.start_date, "end_date": scorecard.end_date}, as_dict=0)[0][0]
+
+ if not data:
+ data = 0
+ return data
+
+def get_rfq_total_number(scorecard):
+ """ Gets the total number of RFQs sent to supplier"""
+ supplier = frappe.get_doc('Supplier', scorecard.supplier)
+
+ # Look up all PO Items with delivery dates between our dates
+ data = frappe.db.sql("""
+ SELECT
+ COUNT(rfq.name) as total_rfqs
+ FROM
+ `tabRequest for Quotation Item` rfq_item,
+ `tabRequest for Quotation Supplier` rfq_sup,
+ `tabRequest for Quotation` rfq
+ WHERE
+ rfq_sup.supplier = %(supplier)s
+ AND rfq.transaction_date BETWEEN %(start_date)s AND %(end_date)s
+ AND rfq_item.docstatus = 1
+ AND rfq_item.parent = rfq.name
+ AND rfq_sup.parent = rfq.name""",
+ {"supplier": supplier.name, "start_date": scorecard.start_date, "end_date": scorecard.end_date}, as_dict=0)[0][0]
+
+ if not data:
+ data = 0
+ return data
+
+def get_rfq_total_items(scorecard):
+ """ Gets the total number of RFQ items sent to supplier"""
+ supplier = frappe.get_doc('Supplier', scorecard.supplier)
+
+ # Look up all PO Items with delivery dates between our dates
+ data = frappe.db.sql("""
+ SELECT
+ COUNT(rfq_item.name) as total_rfqs
+ FROM
+ `tabRequest for Quotation Item` rfq_item,
+ `tabRequest for Quotation Supplier` rfq_sup,
+ `tabRequest for Quotation` rfq
+ WHERE
+ rfq_sup.supplier = %(supplier)s
+ AND rfq.transaction_date BETWEEN %(start_date)s AND %(end_date)s
+ AND rfq_item.docstatus = 1
+ AND rfq_item.parent = rfq.name
+ AND rfq_sup.parent = rfq.name""",
+ {"supplier": supplier.name, "start_date": scorecard.start_date, "end_date": scorecard.end_date}, as_dict=0)[0][0]
+ if not data:
+ data = 0
+ return data
+
+
+def get_sq_total_number(scorecard):
+ """ Gets the total number of RFQ items sent to supplier"""
+ supplier = frappe.get_doc('Supplier', scorecard.supplier)
+
+ # Look up all PO Items with delivery dates between our dates
+ data = frappe.db.sql("""
+ SELECT
+ COUNT(sq.name) as total_sqs
+ FROM
+ `tabRequest for Quotation Item` rfq_item,
+ `tabSupplier Quotation Item` sq_item,
+ `tabRequest for Quotation Supplier` rfq_sup,
+ `tabRequest for Quotation` rfq,
+ `tabSupplier Quotation` sq
+ WHERE
+ rfq_sup.supplier = %(supplier)s
+ AND rfq.transaction_date BETWEEN %(start_date)s AND %(end_date)s
+ AND sq_item.request_for_quotation_item = rfq_item.name
+ AND sq_item.docstatus = 1
+ AND rfq_item.docstatus = 1
+ AND sq.supplier = %(supplier)s
+ AND sq_item.parent = sq.name
+ AND rfq_item.parent = rfq.name
+ AND rfq_sup.parent = rfq.name""",
+ {"supplier": supplier.name, "start_date": scorecard.start_date, "end_date": scorecard.end_date}, as_dict=0)[0][0]
+ if not data:
+ data = 0
+ return data
+
+def get_sq_total_items(scorecard):
+ """ Gets the total number of RFQ items sent to supplier"""
+ supplier = frappe.get_doc('Supplier', scorecard.supplier)
+
+ # Look up all PO Items with delivery dates between our dates
+ data = frappe.db.sql("""
+ SELECT
+ COUNT(sq_item.name) as total_sqs
+ FROM
+ `tabRequest for Quotation Item` rfq_item,
+ `tabSupplier Quotation Item` sq_item,
+ `tabSupplier Quotation` sq,
+ `tabRequest for Quotation Supplier` rfq_sup,
+ `tabRequest for Quotation` rfq
+ WHERE
+ rfq_sup.supplier = %(supplier)s
+ AND rfq.transaction_date BETWEEN %(start_date)s AND %(end_date)s
+ AND sq_item.request_for_quotation_item = rfq_item.name
+ AND sq_item.docstatus = 1
+ AND sq.supplier = %(supplier)s
+ AND sq_item.parent = sq.name
+ AND rfq_item.docstatus = 1
+ AND rfq_item.parent = rfq.name
+ AND rfq_sup.parent = rfq.name""",
+ {"supplier": supplier.name, "start_date": scorecard.start_date, "end_date": scorecard.end_date}, as_dict=0)[0][0]
+ if not data:
+ data = 0
+ return data
+
+def get_rfq_response_days(scorecard):
+ """ Gets the total number of days it has taken a supplier to respond to rfqs in the period"""
+ supplier = frappe.get_doc('Supplier', scorecard.supplier)
+ total_sq_days = frappe.db.sql("""
+ SELECT
+ SUM(DATEDIFF(sq.transaction_date, rfq.transaction_date))
+ FROM
+ `tabRequest for Quotation Item` rfq_item,
+ `tabSupplier Quotation Item` sq_item,
+ `tabSupplier Quotation` sq,
+ `tabRequest for Quotation Supplier` rfq_sup,
+ `tabRequest for Quotation` rfq
+ WHERE
+ rfq_sup.supplier = %(supplier)s
+ AND rfq.transaction_date BETWEEN %(start_date)s AND %(end_date)s
+ AND sq_item.request_for_quotation_item = rfq_item.name
+ AND sq_item.docstatus = 1
+ AND sq.supplier = %(supplier)s
+ AND sq_item.parent = sq.name
+ AND rfq_item.docstatus = 1
+ AND rfq_item.parent = rfq.name
+ AND rfq_sup.parent = rfq.name""",
+ {"supplier": supplier.name, "start_date": scorecard.start_date, "end_date": scorecard.end_date}, as_dict=0)[0][0]
+ if not total_sq_days:
+ total_sq_days = 0
+
+
+ return total_sq_days
\ No newline at end of file
diff --git a/erpnext/buying/doctype/supplier_scorecard_variable/test_supplier_scorecard_variable.py b/erpnext/buying/doctype/supplier_scorecard_variable/test_supplier_scorecard_variable.py
new file mode 100644
index 0000000..45a2c62
--- /dev/null
+++ b/erpnext/buying/doctype/supplier_scorecard_variable/test_supplier_scorecard_variable.py
@@ -0,0 +1,57 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors
+# See license.txt
+from __future__ import unicode_literals
+
+import frappe
+import unittest
+
+from erpnext.buying.doctype.supplier_scorecard_variable.supplier_scorecard_variable import VariablePathNotFound
+
+
+class TestSupplierScorecardVariable(unittest.TestCase):
+ def test_variable_exist(self):
+ for d in test_existing_variables:
+ my_doc = frappe.get_doc("Supplier Scorecard Variable", d.get("name"))
+ self.assertEquals(my_doc.param_name, d.get('param_name'))
+ self.assertEquals(my_doc.variable_label, d.get('variable_label'))
+ self.assertEquals(my_doc.path, d.get('path'))
+
+ def test_path_exists(self):
+ for d in test_good_variables:
+ if frappe.db.exists(d):
+ frappe.delete_doc(d.get("doctype"), d.get("name"))
+ frappe.get_doc(d).insert()
+
+ for d in test_bad_variables:
+ self.assertRaises(VariablePathNotFound,frappe.get_doc(d).insert)
+
+test_existing_variables = [
+ {
+ "param_name":"total_accepted_items",
+ "name":"Total Accepted Items",
+ "doctype":"Supplier Scorecard Variable",
+ "variable_label":"Total Accepted Items",
+ "path":"get_total_accepted_items"
+ },
+]
+
+test_good_variables = [
+ {
+ "param_name":"good_variable1",
+ "name":"Good Variable 1",
+ "doctype":"Supplier Scorecard Variable",
+ "variable_label":"Good Variable 1",
+ "path":"get_total_accepted_items"
+ },
+]
+
+test_bad_variables = [
+ {
+ "param_name":"fake_variable1",
+ "name":"Fake Variable 1",
+ "doctype":"Supplier Scorecard Variable",
+ "variable_label":"Fake Variable 1",
+ "path":"get_fake_variable1"
+ },
+]
\ No newline at end of file
diff --git a/erpnext/change_log/v6/v6_13_1.md b/erpnext/change_log/v6/v6_13_1.md
index 1f0a568..4b2c4a9 100644
--- a/erpnext/change_log/v6/v6_13_1.md
+++ b/erpnext/change_log/v6/v6_13_1.md
@@ -1 +1 @@
-- [ERPNext Manual in German](http://frappe.github.io/erpnext/user/manual/de/) contributed by [CWT Connector & Wire Technology GmbH](http://www.cwt-assembly.com/)
+- [ERPNext Manual in German](http://erpnext.org/docs/user/manual/de/) contributed by [CWT Connector & Wire Technology GmbH](http://www.cwt-assembly.com/)
diff --git a/erpnext/change_log/v6/v6_2_0.md b/erpnext/change_log/v6/v6_2_0.md
index 004e90c..f4da651 100644
--- a/erpnext/change_log/v6/v6_2_0.md
+++ b/erpnext/change_log/v6/v6_2_0.md
@@ -1 +1 @@
-- **[Multi-currency Accounting](https://frappe.github.io/erpnext/user/guides/accounts/multi-currency-accounting)**: You can now have an Account in a different currency than your Company's currency
+- **[Multi-currency Accounting](https://frappe.io/docs/user/guides/accounts/multi-currency-accounting)**: You can now have an Account in a different currency than your Company's currency
diff --git a/erpnext/config/buying.py b/erpnext/config/buying.py
index 990ca7a..ba29125 100644
--- a/erpnext/config/buying.py
+++ b/erpnext/config/buying.py
@@ -142,6 +142,32 @@
]
},
{
+ "label": _("Supplier Scorecard"),
+ "items": [
+ {
+ "type": "doctype",
+ "name": "Supplier Scorecard",
+ "description": _("All Supplier scorecards."),
+ },
+ {
+ "type": "doctype",
+ "name": "Supplier Scorecard Variable",
+ "description": _("Templates of supplier scorecard variables.")
+ },
+ {
+ "type": "doctype",
+ "name": "Supplier Scorecard Criteria",
+ "description": _("Templates of supplier scorecard criteria."),
+ },
+ {
+ "type": "doctype",
+ "name": "Supplier Scorecard Standing",
+ "description": _("Templates of supplier standings."),
+ },
+
+ ]
+ },
+ {
"label": _("Other Reports"),
"icon": "fa fa-list",
"items": [
diff --git a/erpnext/config/docs.py b/erpnext/config/docs.py
index 2d2cc0a..6e50564 100644
--- a/erpnext/config/docs.py
+++ b/erpnext/config/docs.py
@@ -1,34 +1,3 @@
from __future__ import unicode_literals
-docs_version = "7.x.x"
-
-source_link = "https://github.com/frappe/erpnext"
-docs_base_url = "https://frappe.github.io/erpnext"
-headline = "ERPNext Documentation"
-sub_heading = "Detailed explanation for all ERPNext features and developer API"
-long_description = """ERPNext is a fully featured ERP system designed for Small and Medium Sized
-business. ERPNext covers a wide range of features including Accounting, CRM,
-Inventory management, Selling, Purchasing, Manufacturing, Projects, HR &
-Payroll, Website, E-Commerce and much more.
-
-ERPNext is based on the Frappe Framework is highly customizable and extendable.
-You can create Custom Form, Fields, Scripts and can also create your own Apps
-to extend ERPNext functionality.
-
-ERPNext is Open Source under the GNU General Public Licence v3 and has been
-listed as one of the Best Open Source Softwares in the world by many online
-blogs."""
-
-splash_light_background = True
-google_analytics_id = 'UA-8911157-22'
-
-def get_context(context):
- context.brand_html = ('<img class="brand-logo" src="'+context.docs_base_url
- +'/assets/img/erpnext-docs.png"> ERPNext</img>')
- context.app.splash_light_background = True
- context.top_bar_items = [
- {"label": "User Manual", "url": context.docs_base_url + "/user/manual", "right": 1},
- {"label": "Videos", "url": context.docs_base_url + "/user/videos", "right": 1},
- {"label": "API", "url": context.docs_base_url + "/current", "right": 1},
- {"label": "Forum", "url": 'https://discuss.erpnext.com', "right": 1}
- ]
+source_link = "https://github.com/frappe/erpnext"
\ No newline at end of file
diff --git a/erpnext/config/projects.py b/erpnext/config/projects.py
index 1a70aee..a8514b2 100644
--- a/erpnext/config/projects.py
+++ b/erpnext/config/projects.py
@@ -18,6 +18,11 @@
"description": _("Project activity / task."),
},
{
+ "type": "doctype",
+ "name": "Project Type",
+ "description": _("Define Project type."),
+ },
+ {
"type": "report",
"route": "List/Task/Gantt",
"doctype": "Task",
diff --git a/erpnext/controllers/queries.py b/erpnext/controllers/queries.py
index 8130af9..6d69a48 100644
--- a/erpnext/controllers/queries.py
+++ b/erpnext/controllers/queries.py
@@ -60,6 +60,7 @@
# searches for customer
def customer_query(doctype, txt, searchfield, start, page_len, filters):
+ conditions = []
cust_master_name = frappe.defaults.get_user_default("cust_master_name")
if cust_master_name == "Customer Name":
@@ -79,7 +80,7 @@
return frappe.db.sql("""select {fields} from `tabCustomer`
where docstatus < 2
and ({scond}) and disabled=0
- {mcond}
+ {fcond} {mcond}
order by
if(locate(%(_txt)s, name), locate(%(_txt)s, name), 99999),
if(locate(%(_txt)s, customer_name), locate(%(_txt)s, customer_name), 99999),
@@ -88,7 +89,8 @@
limit %(start)s, %(page_len)s""".format(**{
"fields": fields,
"scond": searchfields,
- "mcond": get_match_cond(doctype)
+ "mcond": get_match_cond(doctype),
+ "fcond": get_filters_cond(doctype, filters, conditions).replace('%', '%%'),
}), {
'txt': "%%%s%%" % txt,
'_txt': txt.replace("%", ""),
diff --git a/erpnext/controllers/taxes_and_totals.py b/erpnext/controllers/taxes_and_totals.py
index b6f8b7d..97bd771 100644
--- a/erpnext/controllers/taxes_and_totals.py
+++ b/erpnext/controllers/taxes_and_totals.py
@@ -179,7 +179,6 @@
for n, item in enumerate(self.doc.get("items")):
item_tax_map = self._load_item_tax_rate(item.item_tax_rate)
-
for i, tax in enumerate(self.doc.get("taxes")):
# tax_amount represents the amount of tax for the current step
current_tax_amount = self.get_current_tax_amount(item, tax, item_tax_map)
@@ -202,36 +201,45 @@
# set tax after discount
tax.tax_amount_after_discount_amount += current_tax_amount
- if getattr(tax, "category", None):
- # if just for valuation, do not add the tax amount in total
- # hence, setting it as 0 for further steps
- current_tax_amount = 0.0 if (tax.category == "Valuation") \
- else current_tax_amount
+ current_tax_amount = self.get_tax_amount_if_for_valuation_or_deduction(current_tax_amount, tax)
- current_tax_amount *= -1.0 if (tax.add_deduct_tax == "Deduct") else 1.0
-
- # Calculate tax.total viz. grand total till that step
# note: grand_total_for_current_item contains the contribution of
# item's amount, previously applied tax and the current tax on that item
if i==0:
- tax.grand_total_for_current_item = flt(item.net_amount + current_tax_amount, tax.precision("total"))
+ tax.grand_total_for_current_item = flt(item.net_amount + current_tax_amount)
else:
tax.grand_total_for_current_item = \
- flt(self.doc.get("taxes")[i-1].grand_total_for_current_item + current_tax_amount, tax.precision("total"))
-
- # in tax.total, accumulate grand total of each item
- tax.total += tax.grand_total_for_current_item
+ flt(self.doc.get("taxes")[i-1].grand_total_for_current_item + current_tax_amount)
# set precision in the last item iteration
if n == len(self.doc.get("items")) - 1:
self.round_off_totals(tax)
+ self.set_cumulative_total(i, tax)
+
+ self._set_in_company_currency(tax,
+ ["total", "tax_amount", "tax_amount_after_discount_amount"])
# adjust Discount Amount loss in last tax iteration
if i == (len(self.doc.get("taxes")) - 1) and self.discount_amount_applied \
and self.doc.discount_amount and self.doc.apply_discount_on == "Grand Total":
self.adjust_discount_amount_loss(tax)
+ def get_tax_amount_if_for_valuation_or_deduction(self, tax_amount, tax):
+ # if just for valuation, do not add the tax amount in total
+ # if tax/charges is for deduction, multiply by -1
+ if getattr(tax, "category", None):
+ tax_amount = 0.0 if (tax.category == "Valuation") else tax_amount
+ tax_amount *= -1.0 if (tax.add_deduct_tax == "Deduct") else 1.0
+ return tax_amount
+ def set_cumulative_total(self, row_idx, tax):
+ tax_amount = tax.tax_amount_after_discount_amount
+ tax_amount = self.get_tax_amount_if_for_valuation_or_deduction(tax_amount, tax)
+
+ if row_idx == 0:
+ tax.total = flt(self.doc.net_total + tax_amount, tax.precision("total"))
+ else:
+ tax.total = flt(self.doc.get("taxes")[row_idx-1].total + tax_amount, tax.precision("total"))
def get_current_tax_amount(self, item, tax, item_tax_map):
tax_rate = self._get_tax_rate(tax, item_tax_map)
@@ -251,8 +259,6 @@
current_tax_amount = (tax_rate / 100.0) * \
self.doc.get("taxes")[cint(tax.row_id) - 1].grand_total_for_current_item
- current_tax_amount = flt(current_tax_amount, tax.precision("tax_amount"))
-
self.set_item_wise_tax(item, tax, tax_rate, current_tax_amount)
return current_tax_amount
@@ -267,11 +273,9 @@
tax.item_wise_tax_detail[key] = [tax_rate,flt(item_wise_tax_amount, tax.precision("base_tax_amount"))]
def round_off_totals(self, tax):
- tax.total = flt(tax.total, tax.precision("total"))
tax.tax_amount = flt(tax.tax_amount, tax.precision("tax_amount"))
- tax.tax_amount_after_discount_amount = flt(tax.tax_amount_after_discount_amount, tax.precision("tax_amount"))
-
- self._set_in_company_currency(tax, ["total", "tax_amount", "tax_amount_after_discount_amount"])
+ tax.tax_amount_after_discount_amount = flt(tax.tax_amount_after_discount_amount,
+ tax.precision("tax_amount"))
def adjust_discount_amount_loss(self, tax):
discount_amount_loss = self.doc.grand_total - flt(self.doc.discount_amount) - tax.total
diff --git a/erpnext/controllers/tests/test_mapper.py b/erpnext/controllers/tests/test_mapper.py
index 0e2d6d0..14738c5 100644
--- a/erpnext/controllers/tests/test_mapper.py
+++ b/erpnext/controllers/tests/test_mapper.py
@@ -4,7 +4,7 @@
import random, json
import frappe.utils
-from frappe.utils import nowdate
+from frappe.utils import nowdate, add_months
from frappe.model import mapper
from frappe.test_runner import make_test_records
@@ -44,7 +44,9 @@
"doctype": "Quotation",
"quotation_to": "Customer",
"customer": customer,
- "order_type": "Sales"
+ "order_type": "Sales",
+ "transaction_date" : nowdate(),
+ "valid_till" : add_months(nowdate(), 1)
})
for item in item_list:
qtn.append("items", {"qty": "2", "item_code": item.item_code})
diff --git a/erpnext/controllers/website_list_for_contact.py b/erpnext/controllers/website_list_for_contact.py
index b078036..04d1bc5 100644
--- a/erpnext/controllers/website_list_for_contact.py
+++ b/erpnext/controllers/website_list_for_contact.py
@@ -30,7 +30,7 @@
else:
filters.append((doctype, "docstatus", "=", 1))
- if user != "Guest" and is_website_user():
+ if (user != "Guest" and is_website_user()) or doctype == 'Request for Quotation':
parties_doctype = 'Request for Quotation Supplier' if doctype == 'Request for Quotation' else doctype
# find party for this contact
customers, suppliers = get_customers_suppliers(parties_doctype, user)
diff --git a/erpnext/crm/doctype/item/test_item.js b/erpnext/crm/doctype/item/test_item.js
new file mode 100644
index 0000000..b48f93a
--- /dev/null
+++ b/erpnext/crm/doctype/item/test_item.js
@@ -0,0 +1,120 @@
+QUnit.test("test: item", function (assert) {
+ assert.expect(6);
+ let done = assert.async();
+ let keyboard_cost = 800;
+ let screen_cost = 4000;
+ let CPU_cost = 15000;
+ let scrap_cost = 100;
+ let no_of_items_to_stock = 100;
+ let is_stock_item = 1;
+ frappe.run_serially([
+ // test item creation
+ () => frappe.set_route("List", "Item"),
+
+ // Create a keyboard item
+ () => frappe.tests.make(
+ "Item", [
+ {item_code: "Keyboard"},
+ {item_group: "Products"},
+ {is_stock_item: is_stock_item},
+ {standard_rate: keyboard_cost},
+ {opening_stock: no_of_items_to_stock},
+ {default_warehouse: "Stores - RB"}
+ ]
+ ),
+ () => {
+ assert.ok(cur_frm.doc.item_name.includes('Keyboard'),
+ 'Item Keyboard created correctly');
+ assert.ok(cur_frm.doc.item_code.includes('Keyboard'),
+ 'item_code for Keyboard set correctly');
+ assert.ok(cur_frm.doc.item_group.includes('Products'),
+ 'item_group for Keyboard set correctly');
+ assert.equal(cur_frm.doc.is_stock_item, is_stock_item,
+ 'is_stock_item for Keyboard set correctly');
+ assert.equal(cur_frm.doc.standard_rate, keyboard_cost,
+ 'standard_rate for Keyboard set correctly');
+ assert.equal(cur_frm.doc.opening_stock, no_of_items_to_stock,
+ 'opening_stock for Keyboard set correctly');
+ },
+
+ // Create a Screen item
+ () => frappe.tests.make(
+ "Item", [
+ {item_code: "Screen"},
+ {item_group: "Products"},
+ {is_stock_item: is_stock_item},
+ {standard_rate: screen_cost},
+ {opening_stock: no_of_items_to_stock},
+ {default_warehouse: "Stores - RB"}
+ ]
+ ),
+
+ // Create a CPU item
+ () => frappe.tests.make(
+ "Item", [
+ {item_code: "CPU"},
+ {item_group: "Products"},
+ {is_stock_item: is_stock_item},
+ {standard_rate: CPU_cost},
+ {opening_stock: no_of_items_to_stock},
+ {default_warehouse: "Stores - RB"}
+ ]
+ ),
+
+ // Create a laptop item
+ () => frappe.tests.make(
+ "Item", [
+ {item_code: "Laptop"},
+ {item_group: "Products"},
+ {default_warehouse: "Stores - RB"}
+ ]
+ ),
+ () => frappe.tests.make(
+ "Item", [
+ {item_code: "Computer"},
+ {item_group: "Products"},
+ {is_stock_item: 0},
+ ]
+ ),
+
+ // Create a scrap item
+ () => frappe.tests.make(
+ "Item", [
+ {item_code: "Scrap item"},
+ {item_group: "Products"},
+ {is_stock_item: is_stock_item},
+ {standard_rate: scrap_cost},
+ {opening_stock: no_of_items_to_stock},
+ {default_warehouse: "Stores - RB"}
+ ]
+ ),
+ () => frappe.tests.make(
+ "Item", [
+ {item_code: "Test Product 4"},
+ {item_group: "Products"},
+ {is_stock_item: 1},
+ {has_batch_no: 1},
+ {create_new_batch: 1},
+ {uoms:
+ [
+ [
+ {uom:"Unit"},
+ {conversion_factor: 10},
+ ]
+ ]
+ },
+ {taxes:
+ [
+ [
+ {tax_type:"SGST - "+frappe.get_abbr(frappe.defaults.get_default("Company"))},
+ {tax_rate: 0},
+ ]
+ ]},
+ {has_serial_no: 1},
+ {standard_rate: 100},
+ {opening_stock: 100},
+ ]
+ ),
+ () => done()
+ ]);
+});
diff --git a/erpnext/demo/user/hr.py b/erpnext/demo/user/hr.py
index 0b644c4..1570df5 100644
--- a/erpnext/demo/user/hr.py
+++ b/erpnext/demo/user/hr.py
@@ -67,7 +67,7 @@
if random.randint(0, 1):
#make journal entry against expense claim
- je = frappe.get_doc(make_bank_entry(expense_claim.name))
+ je = frappe.get_doc(make_bank_entry("Expense Claim", expense_claim.name))
je.posting_date = frappe.flags.current_date
je.cheque_no = random_string(10)
je.cheque_date = frappe.flags.current_date
diff --git a/erpnext/docs/assets/img/buying/supplier-scorecard-criteria.png b/erpnext/docs/assets/img/buying/supplier-scorecard-criteria.png
new file mode 100644
index 0000000..0bc73c8
--- /dev/null
+++ b/erpnext/docs/assets/img/buying/supplier-scorecard-criteria.png
Binary files differ
diff --git a/erpnext/docs/assets/img/buying/supplier-scorecard-standing.png b/erpnext/docs/assets/img/buying/supplier-scorecard-standing.png
new file mode 100644
index 0000000..8c507cb
--- /dev/null
+++ b/erpnext/docs/assets/img/buying/supplier-scorecard-standing.png
Binary files differ
diff --git a/erpnext/docs/assets/img/buying/supplier-scorecard-weighing.png b/erpnext/docs/assets/img/buying/supplier-scorecard-weighing.png
new file mode 100644
index 0000000..d32e69e
--- /dev/null
+++ b/erpnext/docs/assets/img/buying/supplier-scorecard-weighing.png
Binary files differ
diff --git a/erpnext/docs/assets/img/buying/supplier-scorecard.png b/erpnext/docs/assets/img/buying/supplier-scorecard.png
new file mode 100644
index 0000000..1f8de17
--- /dev/null
+++ b/erpnext/docs/assets/img/buying/supplier-scorecard.png
Binary files differ
diff --git a/erpnext/docs/assets/img/pos-setting/default_mop.png b/erpnext/docs/assets/img/pos-setting/default_mop.png
new file mode 100644
index 0000000..bd1e7a0
--- /dev/null
+++ b/erpnext/docs/assets/img/pos-setting/default_mop.png
Binary files differ
diff --git a/erpnext/docs/assets/img/pos-setting/item_customer_group.png b/erpnext/docs/assets/img/pos-setting/item_customer_group.png
new file mode 100644
index 0000000..6117a8f
--- /dev/null
+++ b/erpnext/docs/assets/img/pos-setting/item_customer_group.png
Binary files differ
diff --git a/erpnext/docs/assets/img/pos-setting/pos-setting.png b/erpnext/docs/assets/img/pos-setting/pos-setting.png
deleted file mode 100644
index 6061199..0000000
--- a/erpnext/docs/assets/img/pos-setting/pos-setting.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/pos-setting/pos_profile.png b/erpnext/docs/assets/img/pos-setting/pos_profile.png
new file mode 100644
index 0000000..a8bd4ac
--- /dev/null
+++ b/erpnext/docs/assets/img/pos-setting/pos_profile.png
Binary files differ
diff --git a/erpnext/docs/assets/img/setup/email/email-account-incoming-conditions.png b/erpnext/docs/assets/img/setup/email/email-account-incoming-conditions.png
new file mode 100644
index 0000000..61a86f5
--- /dev/null
+++ b/erpnext/docs/assets/img/setup/email/email-account-incoming-conditions.png
Binary files differ
diff --git a/erpnext/docs/assets/img/users-and-permissions/user-permission-company.png b/erpnext/docs/assets/img/users-and-permissions/user-permission-company.png
deleted file mode 100644
index eb529f1..0000000
--- a/erpnext/docs/assets/img/users-and-permissions/user-permission-company.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/users-and-permissions/user-permission-quotation.png b/erpnext/docs/assets/img/users-and-permissions/user-permission-quotation.png
deleted file mode 100644
index ee7a19b..0000000
--- a/erpnext/docs/assets/img/users-and-permissions/user-permission-quotation.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/users-and-permissions/user-permissions-company-role-all.png b/erpnext/docs/assets/img/users-and-permissions/user-permissions-company-role-all.png
deleted file mode 100644
index 0aececd..0000000
--- a/erpnext/docs/assets/img/users-and-permissions/user-permissions-company-role-all.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/users-and-permissions/user-permissions-ignore-user-permissions.png b/erpnext/docs/assets/img/users-and-permissions/user-permissions-ignore-user-permissions.png
deleted file mode 100644
index 5f55e37..0000000
--- a/erpnext/docs/assets/img/users-and-permissions/user-permissions-ignore-user-permissions.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/users-and-permissions/user-permissions-lead-role-permissions.png b/erpnext/docs/assets/img/users-and-permissions/user-permissions-lead-role-permissions.png
deleted file mode 100644
index 23564fa..0000000
--- a/erpnext/docs/assets/img/users-and-permissions/user-permissions-lead-role-permissions.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/users-and-permissions/user-permissions-new.gif b/erpnext/docs/assets/img/users-and-permissions/user-permissions-new.gif
deleted file mode 100644
index 609bf25..0000000
--- a/erpnext/docs/assets/img/users-and-permissions/user-permissions-new.gif
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/users-and-permissions/user-permissions-quotation-sales-user.png b/erpnext/docs/assets/img/users-and-permissions/user-permissions-quotation-sales-user.png
deleted file mode 100644
index dd9ed49..0000000
--- a/erpnext/docs/assets/img/users-and-permissions/user-permissions-quotation-sales-user.png
+++ /dev/null
Binary files differ
diff --git a/erpnext/docs/assets/img/users-and-permissions/user-perms/ignore-user-permissions.png b/erpnext/docs/assets/img/users-and-permissions/user-perms/ignore-user-permissions.png
new file mode 100644
index 0000000..56e0d44
--- /dev/null
+++ b/erpnext/docs/assets/img/users-and-permissions/user-perms/ignore-user-permissions.png
Binary files differ
diff --git a/erpnext/docs/assets/img/users-and-permissions/user-perms/new-user-permission.png b/erpnext/docs/assets/img/users-and-permissions/user-perms/new-user-permission.png
new file mode 100644
index 0000000..d2762dd
--- /dev/null
+++ b/erpnext/docs/assets/img/users-and-permissions/user-perms/new-user-permission.png
Binary files differ
diff --git a/erpnext/docs/assets/img/users-and-permissions/user-perms/permitted-documents.png b/erpnext/docs/assets/img/users-and-permissions/user-perms/permitted-documents.png
new file mode 100644
index 0000000..2558b62
--- /dev/null
+++ b/erpnext/docs/assets/img/users-and-permissions/user-perms/permitted-documents.png
Binary files differ
diff --git a/erpnext/docs/assets/img/users-and-permissions/user-perms/select-document-types.png b/erpnext/docs/assets/img/users-and-permissions/user-perms/select-document-types.png
new file mode 100644
index 0000000..b54d36a
--- /dev/null
+++ b/erpnext/docs/assets/img/users-and-permissions/user-perms/select-document-types.png
Binary files differ
diff --git a/erpnext/docs/assets/img/users-and-permissions/user-perms/view-selected-documents.png b/erpnext/docs/assets/img/users-and-permissions/user-perms/view-selected-documents.png
new file mode 100644
index 0000000..bc2ce78
--- /dev/null
+++ b/erpnext/docs/assets/img/users-and-permissions/user-perms/view-selected-documents.png
Binary files differ
diff --git a/erpnext/docs/contents.html b/erpnext/docs/contents.html
deleted file mode 100644
index 59d0b44..0000000
--- a/erpnext/docs/contents.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<!-- title: Table of Contents -->
-
-<h1>Table of Contents</h1>
-<br>
-
-{% include "templates/includes/full_index.html" %}
-
-<!-- autodoc -->
-<!-- jinja -->
-<!-- no-breadcrumbs -->
diff --git a/erpnext/docs/contents.py b/erpnext/docs/contents.py
deleted file mode 100644
index c23737a..0000000
--- a/erpnext/docs/contents.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
-# See license.txt
-
-from __future__ import unicode_literals
-import frappe
-from frappe.website.utils import get_full_index
-
-def get_context(context):
- context.full_index = get_full_index()
diff --git a/erpnext/docs/index.html b/erpnext/docs/index.html
deleted file mode 100644
index c0f9228..0000000
--- a/erpnext/docs/index.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!-- title: ERPNext: Documentation -->
-<!-- description: ERPNext Documentation -->
-<!-- no-breadcrumbs -->
-<style>
-
-</style>
-
-<!-- start-hero -->
-<div class="splash">
- <div class="container">
- <div class="col-sm-10 col-sm-offset-1">
- <div class="jumbotron">
- <h1>ERPNext Documentation</h1>
- <p>Detailed explanation for all ERPNext features and developer API</p>
- </div>
- <div class="section" style="padding-top: 0px; margin-top: -30px;">
- <div class="fake-browser-frame">
- <img class="img-responsive browser-image feature-image"
- src="assets/img/home.png">
- </div>
- </div>
- </div>
- </div>
-</div>
-<!-- end-hero -->
-
-
-<div class="container">
- <div class="col-sm-10 col-sm-offset-1">
- <div class="section">
- <p>ERPNext is a fully featured ERP system designed for Small and Medium Sized
-business. ERPNext covers a wide range of features including Accounting, CRM,
-Inventory management, Selling, Purchasing, Manufacturing, Projects, HR &
-Payroll, Website, E-Commerce and much more.</p>
-
-<p>ERPNext is based on the Frappe Framework is highly customizable and extendable.
-You can create Custom Form, Fields, Scripts and can also create your own Apps
-to extend ERPNext functionality.</p>
-
-<p>ERPNext is Open Source under the GNU General Public Licence v3 and has been
-listed as one of the Best Open Source Softwares in the world by many online
-blogs.</p>
-
- </div>
- </div>
-</div>
-
-
-
-<div class="container">
- <div class="col-sm-10 col-sm-offset-1">
- <div class="section" id="install">
- <h2>Install</h2>
- <h4>From your site</h4>
- <p>To install this app, login to your site and click on "Installer". Search for <b>ERPNext</b> and click on "Install"</p>
- <h4>Using Bench</h4>
- <p>Go to your bench folder and setup the new app</p>
- <pre><code class="sh">$ bench get-app erpnext https://github.com/frappe/erpnext
-$ bench new-site testsite
-$ bench --site testsite install-app erpnext</code></pre>
- <p>Login to your site to configure the app.</p>
- <p><a href="install.html">Detailed Installation Steps</a></p>
- </div>
- <div class="section">
- <h2>Author</h2>
-
- <p>Frappe Technologies Pvt. Ltd. (info@erpnext.com)</p>
- </div>
- </div>
-</div>
-
-
-<!-- autodoc -->
-<!-- jinja -->
\ No newline at end of file
diff --git a/erpnext/docs/index.md b/erpnext/docs/index.md
new file mode 100644
index 0000000..52df837
--- /dev/null
+++ b/erpnext/docs/index.md
@@ -0,0 +1,30 @@
+# ERP Made Simple
+
+### ERPNext User Guides and API References
+
+ERPNext is a fully featured ERP system designed for Small and Medium Sized
+business. ERPNext covers a wide range of features including Accounting, CRM,
+Inventory management, Selling, Purchasing, Manufacturing, Projects, HR &
+Payroll, Website, E-Commerce and much more.
+
+ERPNext is based on the Frappé Framework is highly customizable and extendable.
+You can create Custom Form, Fields, Scripts and can also create your own Apps
+to extend ERPNext functionality.
+
+ERPNext is Open Source under the GNU General Public Licence v3 and has been
+listed as one of the Best Open Source Softwares in the world by many online
+blogs.
+
+### Installing ERPNext
+
+To install ERPNext on a server, you will need to install [Frappé Bench](https://github.com/frappe/bench).
+
+You can also start a free 30 day trial at [https://erpnext.com](https://erpnext.com)
+
+### Getting Started
+
+The ERPNext User Manual will help you understand all the ERPNext modules. [Start learning how to use ERPNext by going through the manual](/docs/user/manual).
+
+### Feedback
+
+You're encouraged to help improve the quality of this documentation, by sending a pull request on the [GitHub Repository](https://github.com/frappe/erpnext). If you would like to have a discussion regarding the documentation, you can do so [at the forum](https://discuss.erpnext.com).
diff --git a/erpnext/docs/install.md b/erpnext/docs/install.md
index 26ad128..cb78af4 100644
--- a/erpnext/docs/install.md
+++ b/erpnext/docs/install.md
@@ -1,12 +1,14 @@
+# Install
+
<!-- title: ERPNext Installation -->
# Installation
-ERPNext is based on the <a href="https://frappe.io">Frappe Framework</a>, a full stack web framework based on Python, MariaDB, Redis, Node.
+ERPNext is based on the <a href="https://frappe.io">Frappé Framework</a>, a full stack web framework based on Python, MariaDB, Redis, Node.
-To intall ERPNext, you will have to install the <a href="https://github.com/frappe/bench">Frappe Bench</a>, the command-line, package manager and site manager for Frappe Framework. For more details, read the Bench README.
+To intall ERPNext, you will have to install the <a href="https://github.com/frappe/bench">Frappé Bench</a>, the command-line, package manager and site manager for Frappé Framework. For more details, read the Bench README.
-After you have installed Frappe Bench, go to you bench folder, which is `frappe.bench` by default and setup **erpnext**.
+After you have installed Frappé Bench, go to you bench folder, which is `frappe.bench` by default and setup **erpnext**.
bench get-app erpnext {{ source_link }}
diff --git a/erpnext/docs/license.html b/erpnext/docs/license.html
deleted file mode 100644
index 4740c5c..0000000
--- a/erpnext/docs/license.html
+++ /dev/null
@@ -1,690 +0,0 @@
-<!-- title: License GNU General Public License (v3) -->
-
-<h1>GNU General Public License (v3)</h1>
-
-<h3>GNU GENERAL PUBLIC LICENSE</h3>
-
-<p>Version 3, 29 June 2007</p>
-
-<p>Copyright (C) 2007 Free Software Foundation, Inc.
-<a href="http://fsf.org/">http://fsf.org/</a></p>
-
-<p>Everyone is permitted to copy and distribute verbatim copies of this
-license document, but changing it is not allowed.</p>
-
-<h3>Preamble</h3>
-
-<p>The GNU General Public License is a free, copyleft license for
-software and other kinds of works.</p>
-
-<p>The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom
-to share and change all versions of a program--to make sure it remains
-free software for all its users. We, the Free Software Foundation, use
-the GNU General Public License for most of our software; it applies
-also to any other work released this way by its authors. You can apply
-it to your programs, too.</p>
-
-<p>When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.</p>
-
-<p>To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you
-have certain responsibilities if you distribute copies of the
-software, or if you modify it: responsibilities to respect the freedom
-of others.</p>
-
-<p>For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.</p>
-
-<p>Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.</p>
-
-<p>For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.</p>
-
-<p>Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the
-manufacturer can do so. This is fundamentally incompatible with the
-aim of protecting users' freedom to change the software. The
-systematic pattern of such abuse occurs in the area of products for
-individuals to use, which is precisely where it is most unacceptable.
-Therefore, we have designed this version of the GPL to prohibit the
-practice for those products. If such problems arise substantially in
-other domains, we stand ready to extend this provision to those
-domains in future versions of the GPL, as needed to protect the
-freedom of users.</p>
-
-<p>Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish
-to avoid the special danger that patents applied to a free program
-could make it effectively proprietary. To prevent this, the GPL
-assures that patents cannot be used to render the program non-free.</p>
-
-<p>The precise terms and conditions for copying, distribution and
-modification follow.</p>
-
-<h3>TERMS AND CONDITIONS</h3>
-
-<h4>0. Definitions.</h4>
-
-<p>"This License" refers to version 3 of the GNU General Public License.</p>
-
-<p>"Copyright" also means copyright-like laws that apply to other kinds
-of works, such as semiconductor masks.</p>
-
-<p>"The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.</p>
-
-<p>To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of
-an exact copy. The resulting work is called a "modified version" of
-the earlier work or a work "based on" the earlier work.</p>
-
-<p>A "covered work" means either the unmodified Program or a work based
-on the Program.</p>
-
-<p>To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.</p>
-
-<p>To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user
-through a computer network, with no transfer of a copy, is not
-conveying.</p>
-
-<p>An interactive user interface displays "Appropriate Legal Notices" to
-the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.</p>
-
-<h4>1. Source Code.</h4>
-
-<p>The "source code" for a work means the preferred form of the work for
-making modifications to it. "Object code" means any non-source form of
-a work.</p>
-
-<p>A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.</p>
-
-<p>The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.</p>
-
-<p>The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.</p>
-
-<p>The Corresponding Source need not include anything that users can
-regenerate automatically from other parts of the Corresponding Source.</p>
-
-<p>The Corresponding Source for a work in source code form is that same
-work.</p>
-
-<h4>2. Basic Permissions.</h4>
-
-<p>All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.</p>
-
-<p>You may make, run and propagate covered works that you do not convey,
-without conditions so long as your license otherwise remains in force.
-You may convey covered works to others for the sole purpose of having
-them make modifications exclusively for you, or provide you with
-facilities for running those works, provided that you comply with the
-terms of this License in conveying all material for which you do not
-control copyright. Those thus making or running the covered works for
-you must do so exclusively on your behalf, under your direction and
-control, on terms that prohibit them from making any copies of your
-copyrighted material outside their relationship with you.</p>
-
-<p>Conveying under any other circumstances is permitted solely under the
-conditions stated below. Sublicensing is not allowed; section 10 makes
-it unnecessary.</p>
-
-<h4>3. Protecting Users' Legal Rights From Anti-Circumvention Law.</h4>
-
-<p>No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.</p>
-
-<p>When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such
-circumvention is effected by exercising rights under this License with
-respect to the covered work, and you disclaim any intention to limit
-operation or modification of the work as a means of enforcing, against
-the work's users, your or third parties' legal rights to forbid
-circumvention of technological measures.</p>
-
-<h4>4. Conveying Verbatim Copies.</h4>
-
-<p>You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.</p>
-
-<p>You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.</p>
-
-<h4>5. Conveying Modified Source Versions.</h4>
-
-<p>You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these
-conditions:</p>
-
-<ul>
-<li>a) The work must carry prominent notices stating that you modified
-it, and giving a relevant date.</li>
-<li>b) The work must carry prominent notices stating that it is
-released under this License and any conditions added under
-section 7. This requirement modifies the requirement in section 4
-to "keep intact all notices".</li>
-<li>c) You must license the entire work, as a whole, under this
-License to anyone who comes into possession of a copy. This
-License will therefore apply, along with any applicable section 7
-additional terms, to the whole of the work, and all its parts,
-regardless of how they are packaged. This License gives no
-permission to license the work in any other way, but it does not
-invalidate such permission if you have separately received it.</li>
-<li>d) If the work has interactive user interfaces, each must display
-Appropriate Legal Notices; however, if the Program has interactive
-interfaces that do not display Appropriate Legal Notices, your
-work need not make them do so.</li>
-</ul>
-
-<p>A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.</p>
-
-<h4>6. Conveying Non-Source Forms.</h4>
-
-<p>You may convey a covered work in object code form under the terms of
-sections 4 and 5, provided that you also convey the machine-readable
-Corresponding Source under the terms of this License, in one of these
-ways:</p>
-
-<ul>
-<li>a) Convey the object code in, or embodied in, a physical product
-(including a physical distribution medium), accompanied by the
-Corresponding Source fixed on a durable physical medium
-customarily used for software interchange.</li>
-<li>b) Convey the object code in, or embodied in, a physical product
-(including a physical distribution medium), accompanied by a
-written offer, valid for at least three years and valid for as
-long as you offer spare parts or customer support for that product
-model, to give anyone who possesses the object code either (1) a
-copy of the Corresponding Source for all the software in the
-product that is covered by this License, on a durable physical
-medium customarily used for software interchange, for a price no
-more than your reasonable cost of physically performing this
-conveying of source, or (2) access to copy the Corresponding
-Source from a network server at no charge.</li>
-<li>c) Convey individual copies of the object code with a copy of the
-written offer to provide the Corresponding Source. This
-alternative is allowed only occasionally and noncommercially, and
-only if you received the object code with such an offer, in accord
-with subsection 6b.</li>
-<li>d) Convey the object code by offering access from a designated
-place (gratis or for a charge), and offer equivalent access to the
-Corresponding Source in the same way through the same place at no
-further charge. You need not require recipients to copy the
-Corresponding Source along with the object code. If the place to
-copy the object code is a network server, the Corresponding Source
-may be on a different server (operated by you or a third party)
-that supports equivalent copying facilities, provided you maintain
-clear directions next to the object code saying where to find the
-Corresponding Source. Regardless of what server hosts the
-Corresponding Source, you remain obligated to ensure that it is
-available for as long as needed to satisfy these requirements.</li>
-<li>e) Convey the object code using peer-to-peer transmission,
-provided you inform other peers where the object code and
-Corresponding Source of the work are being offered to the general
-public at no charge under subsection 6d.</li>
-</ul>
-
-<p>A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.</p>
-
-<p>A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal,
-family, or household purposes, or (2) anything designed or sold for
-incorporation into a dwelling. In determining whether a product is a
-consumer product, doubtful cases shall be resolved in favor of
-coverage. For a particular product received by a particular user,
-"normally used" refers to a typical or common use of that class of
-product, regardless of the status of the particular user or of the way
-in which the particular user actually uses, or expects or is expected
-to use, the product. A product is a consumer product regardless of
-whether the product has substantial commercial, industrial or
-non-consumer uses, unless such uses represent the only significant
-mode of use of the product.</p>
-
-<p>"Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to
-install and execute modified versions of a covered work in that User
-Product from a modified version of its Corresponding Source. The
-information must suffice to ensure that the continued functioning of
-the modified object code is in no case prevented or interfered with
-solely because modification has been made.</p>
-
-<p>If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).</p>
-
-<p>The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or
-updates for a work that has been modified or installed by the
-recipient, or for the User Product in which it has been modified or
-installed. Access to a network may be denied when the modification
-itself materially and adversely affects the operation of the network
-or violates the rules and protocols for communication across the
-network.</p>
-
-<p>Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.</p>
-
-<h4>7. Additional Terms.</h4>
-
-<p>"Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.</p>
-
-<p>When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.</p>
-
-<p>Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders
-of that material) supplement the terms of this License with terms:</p>
-
-<ul>
-<li>a) Disclaiming warranty or limiting liability differently from the
-terms of sections 15 and 16 of this License; or</li>
-<li>b) Requiring preservation of specified reasonable legal notices or
-author attributions in that material or in the Appropriate Legal
-Notices displayed by works containing it; or</li>
-<li>c) Prohibiting misrepresentation of the origin of that material,
-or requiring that modified versions of such material be marked in
-reasonable ways as different from the original version; or</li>
-<li>d) Limiting the use for publicity purposes of names of licensors
-or authors of the material; or</li>
-<li>e) Declining to grant rights under trademark law for use of some
-trade names, trademarks, or service marks; or</li>
-<li>f) Requiring indemnification of licensors and authors of that
-material by anyone who conveys the material (or modified versions
-of it) with contractual assumptions of liability to the recipient,
-for any liability that these contractual assumptions directly
-impose on those licensors and authors.</li>
-</ul>
-
-<p>All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.</p>
-
-<p>If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.</p>
-
-<p>Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions; the
-above requirements apply either way.</p>
-
-<h4>8. Termination.</h4>
-
-<p>You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).</p>
-
-<p>However, if you cease all violation of this License, then your license
-from a particular copyright holder is reinstated (a) provisionally,
-unless and until the copyright holder explicitly and finally
-terminates your license, and (b) permanently, if the copyright holder
-fails to notify you of the violation by some reasonable means prior to
-60 days after the cessation.</p>
-
-<p>Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.</p>
-
-<p>Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.</p>
-
-<h4>9. Acceptance Not Required for Having Copies.</h4>
-
-<p>You are not required to accept this License in order to receive or run
-a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.</p>
-
-<h4>10. Automatic Licensing of Downstream Recipients.</h4>
-
-<p>Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.</p>
-
-<p>An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.</p>
-
-<p>You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.</p>
-
-<h4>11. Patents.</h4>
-
-<p>A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".</p>
-
-<p>A contributor's "essential patent claims" are all patent claims owned
-or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.</p>
-
-<p>Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.</p>
-
-<p>In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.</p>
-
-<p>If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.</p>
-
-<p>If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.</p>
-
-<p>A patent license is "discriminatory" if it does not include within the
-scope of its coverage, prohibits the exercise of, or is conditioned on
-the non-exercise of one or more of the rights that are specifically
-granted under this License. You may not convey a covered work if you
-are a party to an arrangement with a third party that is in the
-business of distributing software, under which you make payment to the
-third party based on the extent of your activity of conveying the
-work, and under which the third party grants, to any of the parties
-who would receive the covered work from you, a discriminatory patent
-license (a) in connection with copies of the covered work conveyed by
-you (or copies made from those copies), or (b) primarily for and in
-connection with specific products or compilations that contain the
-covered work, unless you entered into that arrangement, or that patent
-license was granted, prior to 28 March 2007.</p>
-
-<p>Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.</p>
-
-<h4>12. No Surrender of Others' Freedom.</h4>
-
-<p>If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under
-this License and any other pertinent obligations, then as a
-consequence you may not convey it at all. For example, if you agree to
-terms that obligate you to collect a royalty for further conveying
-from those to whom you convey the Program, the only way you could
-satisfy both those terms and this License would be to refrain entirely
-from conveying the Program.</p>
-
-<h4>13. Use with the GNU Affero General Public License.</h4>
-
-<p>Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.</p>
-
-<h4>14. Revised Versions of this License.</h4>
-
-<p>The Free Software Foundation may publish revised and/or new versions
-of the GNU General Public License from time to time. Such new versions
-will be similar in spirit to the present version, but may differ in
-detail to address new problems or concerns.</p>
-
-<p>Each version is given a distinguishing version number. If the Program
-specifies that a certain numbered version of the GNU General Public
-License "or any later version" applies to it, you have the option of
-following the terms and conditions either of that numbered version or
-of any later version published by the Free Software Foundation. If the
-Program does not specify a version number of the GNU General Public
-License, you may choose any version ever published by the Free
-Software Foundation.</p>
-
-<p>If the Program specifies that a proxy can decide which future versions
-of the GNU General Public License can be used, that proxy's public
-statement of acceptance of a version permanently authorizes you to
-choose that version for the Program.</p>
-
-<p>Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.</p>
-
-<h4>15. Disclaimer of Warranty.</h4>
-
-<p>THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
-WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
-PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
-DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
-CORRECTION.</p>
-
-<h4>16. Limitation of Liability.</h4>
-
-<p>IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR
-CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
-ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT
-NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
-LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
-TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER
-PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
-
-<h4>17. Interpretation of Sections 15 and 16.</h4>
-
-<p>If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.</p>
-
-<p>END OF TERMS AND CONDITIONS</p>
-
-<h3>How to Apply These Terms to Your New Programs</h3>
-
-<p>If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these
-terms.</p>
-
-<p>To do so, attach the following notices to the program. It is safest to
-attach them to the start of each source file to most effectively state
-the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.</p>
-
-<pre><code> <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <<a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>>.
-</code></pre>
-
-<p>Also add information on how to contact you by electronic and paper
-mail.</p>
-
-<p>If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:</p>
-
-<pre><code> <program> Copyright (C) <year> <name of author>
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-</code></pre>
-
-<p>The hypothetical commands `show w' and `show c' should show the
-appropriate parts of the General Public License. Of course, your
-program's commands might be different; for a GUI interface, you would
-use an "about box".</p>
-
-<p>You should also get your employer (if you work as a programmer) or
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. For more information on this, and how to apply and follow
-the GNU GPL, see <a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>.</p>
-
-<p>The GNU General Public License does not permit incorporating your
-program into proprietary programs. If your program is a subroutine
-library, you may consider it more useful to permit linking proprietary
-applications with the library. If this is what you want to do, use the
-GNU Lesser General Public License instead of this License. But first,
-please read <a href="http://www.gnu.org/philosophy/why-not-lgpl.html">http://www.gnu.org/philosophy/why-not-lgpl.html</a>.</p>
-
-
-<!-- autodoc -->
\ No newline at end of file
diff --git a/erpnext/docs/license.md b/erpnext/docs/license.md
index b0310f6..d3c0b8d 100644
--- a/erpnext/docs/license.md
+++ b/erpnext/docs/license.md
@@ -4,8 +4,8 @@
<h2>ERPNext License Info</h2>
-<p>(c) 2013 Frappe Technologies Pvt Ltd. Mumbai
-ERPNext is a trademark of Frappe Technologies</p>
+<p>(c) 2013 Frappé Technologies Pvt Ltd. Mumbai
+ERPNext is a trademark of Frappé Technologies</p>
<p>The ERPNext code is licensed under the GNU General Public License (v3) as mentioned below and the Documentation is licensed under Creative Commons (CC-BY-SA-3.0)</p>
diff --git a/erpnext/docs/temp.py b/erpnext/docs/temp.py
deleted file mode 100644
index 0cddeaa..0000000
--- a/erpnext/docs/temp.py
+++ /dev/null
@@ -1,10 +0,0 @@
-import os, re
-
-for basepath, folders, files in os.walk("."):
- for f in files:
- if f.endswith(".html") or f.endswith(".md"):
- with open(os.path.join(basepath, f), "r") as c:
- content = c.read()
-
- for path in re.findall("""{{.?docs_base_url.?}}([^'"\)]*)""", content):
- print path
diff --git a/erpnext/docs/user/index.md b/erpnext/docs/user/index.md
index 7ce09d3..2ed4ed3 100644
--- a/erpnext/docs/user/index.md
+++ b/erpnext/docs/user/index.md
@@ -2,5 +2,5 @@
Learn ERPNext by watching the user manual or training videos.
-1. [User Manual]({{docs_base_url}}/user/manual)
-1. [Help Videos]({{docs_base_url}}/user/videos/learn)
+1. [User Manual](/docs/user/manual)
+1. [Help Videos](/docs/user/videos/learn)
diff --git a/erpnext/docs/user/manual/de/Beispiel/index.md b/erpnext/docs/user/manual/de/Beispiel/index.md
index 1a61351..635507f 100644
--- a/erpnext/docs/user/manual/de/Beispiel/index.md
+++ b/erpnext/docs/user/manual/de/Beispiel/index.md
@@ -1,2 +1,4 @@
+# Beispiel
+
Hier steht die Übersetzung
<span class="text-muted contributed-by">Beigetragen von CWT Connector & Wire Technology GmbH</span>
diff --git a/erpnext/docs/user/manual/de/CRM/contact.md b/erpnext/docs/user/manual/de/CRM/contact.md
index b937c65..49b5ffb 100644
--- a/erpnext/docs/user/manual/de/CRM/contact.md
+++ b/erpnext/docs/user/manual/de/CRM/contact.md
@@ -7,11 +7,11 @@
> CRM > Dokumente > Kontakt > Neu
-<img class="screenshot" alt="Kontakt" src="{{docs_base_url}}/assets/img/crm/contact.png">
+<img class="screenshot" alt="Kontakt" src="/docs/assets/img/crm/contact.png">
Alternativ können Sie einen Kontakt oder eine Adresse auch direkt aus dem Kundendatensatz erstellen. Klicken Sie hierzu auf "Neuer Kontakt" oder "Neue Adresse".
-<img class="screenshot" alt="Kontakt" src="{{docs_base_url}}/assets/img/crm/contact-from-cust.png">
+<img class="screenshot" alt="Kontakt" src="/docs/assets/img/crm/contact-from-cust.png">
> Tipp: Wenn Sie in einer beliebigen Transaktion einen Kunden auswählen, wird ein Kontakt und eine Adresse vorselektiert. Das sind dann der Standardkontakt und die Standardadresse.
diff --git a/erpnext/docs/user/manual/de/CRM/customer.md b/erpnext/docs/user/manual/de/CRM/customer.md
index c730c68..c7d6654 100644
--- a/erpnext/docs/user/manual/de/CRM/customer.md
+++ b/erpnext/docs/user/manual/de/CRM/customer.md
@@ -7,7 +7,7 @@
> CRM > Dokumente > Kunde > Neu
-<img class="screenshot" alt="Kunde" src="{{docs_base_url}}/assets/img/crm/create-customer.gif">
+<img class="screenshot" alt="Kunde" src="/docs/assets/img/crm/create-customer.gif">
oder einen Upload über ein Datenimportwerkzeug durchführen.
@@ -17,7 +17,7 @@
Kontakte und Adressen werden in ERPNext getrennt gespeichert, damit Sie mehrere verschiedene Kontakte oder Adressen mit Kunden und Lieferanten verknüpfen können.
-Lesen Sie hierzu auch [Kontakt]({{docs_base_url}}/user/manual/de/CRM/contact.html).
+Lesen Sie hierzu auch [Kontakt](/docs/user/manual/de/CRM/contact.html).
### Einbindung in Konten
diff --git a/erpnext/docs/user/manual/de/CRM/lead.md b/erpnext/docs/user/manual/de/CRM/lead.md
index 8bb9ce4..47a4492 100644
--- a/erpnext/docs/user/manual/de/CRM/lead.md
+++ b/erpnext/docs/user/manual/de/CRM/lead.md
@@ -16,6 +16,6 @@
> CRM > Dokumente > Lead > Neu
-<img class="screenshot" alt="Lead" src="{{docs_base_url}}/assets/img/crm/lead.png">
+<img class="screenshot" alt="Lead" src="/docs/assets/img/crm/lead.png">
{next}
diff --git a/erpnext/docs/user/manual/de/CRM/newsletter.md b/erpnext/docs/user/manual/de/CRM/newsletter.md
index 8a18e64..bc7e989 100644
--- a/erpnext/docs/user/manual/de/CRM/newsletter.md
+++ b/erpnext/docs/user/manual/de/CRM/newsletter.md
@@ -7,8 +7,8 @@
Wählen Sie die Liste der Empfänger aus, an die Sie die E-Mail senden wollen. Tragen Sie Ihren Inhalt in das Nachrichtenfeld ein und versenden Sie den Newsletter. Wenn Sie die E-Mail vorher testen wollen, um zu sehen, wie sie für den Empfänger aussieht, können Sie die Testfunktion nutzen. Speichern Sie das Dokument vor dem Test. Eine Test-E-Mail wird dann an Ihr E-Mail-Konto gesendet. Sie können die E-Mail an alle vorgesehenen Empfänger senden, wenn Sie auf die Schaltfläche "Senden" klicken.
-<img class="screenshot" alt="Newsletter - Neu" src="{{docs_base_url}}/assets/img/crm/newsletter-new.png">
+<img class="screenshot" alt="Newsletter - Neu" src="/docs/assets/img/crm/newsletter-new.png">
-<img class="screenshot" alt="Newsletter - Test" src="{{docs_base_url}}/assets/img/crm/newsletter-test.png">
+<img class="screenshot" alt="Newsletter - Test" src="/docs/assets/img/crm/newsletter-test.png">
{next}
diff --git a/erpnext/docs/user/manual/de/CRM/opportunity.md b/erpnext/docs/user/manual/de/CRM/opportunity.md
index c9122f3..181348f 100644
--- a/erpnext/docs/user/manual/de/CRM/opportunity.md
+++ b/erpnext/docs/user/manual/de/CRM/opportunity.md
@@ -11,11 +11,11 @@
### Abbildung 1: Opportunity erstellen
-<img class="screenshot" alt="Opportunity" src="{{docs_base_url}}/assets/img/crm/opportunity.png">
+<img class="screenshot" alt="Opportunity" src="/docs/assets/img/crm/opportunity.png">
### Abbildung 2: Opportunity aus einem offenen Lead heraus erstellen
-<img class="screenshot" alt="Opportunity" src="{{docs_base_url}}/assets/img/crm/lead-to-opportunity.png">
+<img class="screenshot" alt="Opportunity" src="/docs/assets/img/crm/lead-to-opportunity.png">
Eine Opportunity kann auch aus einem bereits vorhandenen Kunden heraus entstehen. Sie können mehrere verschiedene Opportunities zum gleichen Lead erstellen. In einer Opportunity können Sie abgesehen von der Kommunikation auch die Artikel mit vermerken, nach denen der Lead oder Kontakt sucht.
diff --git a/erpnext/docs/user/manual/de/CRM/setup/campaign.md b/erpnext/docs/user/manual/de/CRM/setup/campaign.md
index c9b1ac8..700bb32 100644
--- a/erpnext/docs/user/manual/de/CRM/setup/campaign.md
+++ b/erpnext/docs/user/manual/de/CRM/setup/campaign.md
@@ -3,19 +3,19 @@
Eine Kampagne ist eine groß angelegte Umsetzung einer Vertriebsstrategie um ein Produkt oder eine Dienstleistung zu bewerben. Dies erfolgt in einem Marktsegment in einer bestimmten geographischen Region um bestimmte Ziele zu erreichen.
-<img class="screenshot" alt="Kampagne" src="{{docs_base_url}}/assets/img/crm/campaign.png">
+<img class="screenshot" alt="Kampagne" src="/docs/assets/img/crm/campaign.png">
-Sie können in einer Kampagne [Leads]({{docs_base_url}}/user/manual/de/CRM/lead.html), [Opportunities]({{docs_base_url}}/user/manual/de/CRM/opportunity.html) und [Angebote]({{docs_base_url}}/user/manual/de/selling/quotation.html) nachverfolgen.
+Sie können in einer Kampagne [Leads](/docs/user/manual/de/CRM/lead.html), [Opportunities](/docs/user/manual/de/CRM/opportunity.html) und [Angebote](/docs/user/manual/de/selling/quotation.html) nachverfolgen.
### Leads zu einer Kampagne nachverfolgen
* Um einen Lead zu einer Kampagne nach zu verfolgen, wählen Sie "Leads anzeigen" aus.
-<img class="screenshot" alt="Kampange - Leads ansehen" src="{{docs_base_url}}/assets/img/crm/campaign-view-leads.png">
+<img class="screenshot" alt="Kampange - Leads ansehen" src="/docs/assets/img/crm/campaign-view-leads.png">
* Sie sollten jetzt eine gefilterte Übersicht aller Leads erhalten, die zu dieser Kampagne gehören.
* Sie können auch einen neuen Lead erstellen indem Sie auf "Neu" klicken.
-<img class="screenshot" alt="Kampagne - Neuer Lead" src="{{docs_base_url}}/assets/img/crm/campaign-new-lead.png">
+<img class="screenshot" alt="Kampagne - Neuer Lead" src="/docs/assets/img/crm/campaign-new-lead.png">
{next}
diff --git a/erpnext/docs/user/manual/de/CRM/setup/customer-group.md b/erpnext/docs/user/manual/de/CRM/setup/customer-group.md
index 4cdeb22..c7ec3e2 100644
--- a/erpnext/docs/user/manual/de/CRM/setup/customer-group.md
+++ b/erpnext/docs/user/manual/de/CRM/setup/customer-group.md
@@ -3,10 +3,10 @@
Kundengruppen versetzen Sie in die Lage Ihre Kunden zu organisieren. Sie können auch Rabatte auf der Basis von Kundengruppen berechnen. Außerdem können Sie Trendanalysen für jede Gruppe erstellen. Typischerweise werden Kunden nach Marktsegmenten gruppiert (das basiert normalerweise auf Ihrer Domäne).
-<img class="screenshot" alt="Baumstruktur der Kundengruppen" src="{{docs_base_url}}/assets/img/crm/customer-group-tree.png">
+<img class="screenshot" alt="Baumstruktur der Kundengruppen" src="/docs/assets/img/crm/customer-group-tree.png">
> Tipp: Wenn Sie der Meinung sind, dass hier zu viel Aufwand getrieben wird, dann können Sie es bei einer Standard-Kundengruppe belassen. Aber der gesamte Aufwand wird sich dann auszahlen, wenn Sie die ersten Berichte erhalten. Ein Beispiel eines Berichts ist unten abgebildet.
-<img class="screenshot" alt="Vertriebsanalyse" src="{{docs_base_url}}/assets/img/crm/sales-analytics-customer.gif">
+<img class="screenshot" alt="Vertriebsanalyse" src="/docs/assets/img/crm/sales-analytics-customer.gif">
{next}
diff --git a/erpnext/docs/user/manual/de/CRM/setup/sales-person.md b/erpnext/docs/user/manual/de/CRM/setup/sales-person.md
index 77d6ea0..f615da4 100644
--- a/erpnext/docs/user/manual/de/CRM/setup/sales-person.md
+++ b/erpnext/docs/user/manual/de/CRM/setup/sales-person.md
@@ -3,7 +3,7 @@
Vertriebsmitarbeiter verhalten sich wie Regionen. Sie können ein Organigramm der Vertriebsmitarbeiter erstellen, in dem individuell das Vertriebsziel des Vertriebsmitarbeiters vermerkt werden kann. Genauso wie in der Region muss das Ziel einer Artikelgruppe zugeordnet werden.
-<img class="screenshot" alt="Baumstruktur der Vertriebsmitarbeiter" src="{{docs_base_url}}/assets/img/crm/sales-person-tree.png">
+<img class="screenshot" alt="Baumstruktur der Vertriebsmitarbeiter" src="/docs/assets/img/crm/sales-person-tree.png">
### Vertriebspersonen in Transaktionen
diff --git a/erpnext/docs/user/manual/de/accounts/accounting-entries.md b/erpnext/docs/user/manual/de/accounts/accounting-entries.md
index fc5a259..8367dbf 100644
--- a/erpnext/docs/user/manual/de/accounts/accounting-entries.md
+++ b/erpnext/docs/user/manual/de/accounts/accounting-entries.md
@@ -5,19 +5,19 @@
* Max Mustermann (Inhaber des Teeladens) investiert 25.000 Euro um die Geschäftstätigkeit zu beginnen.
-
+
**Analyse:** Max Mustermann investiert 25.000 Euro in das Unternehmen in der Hoffnung Gewinne zu erhalten. In anderen Worten schuldet die Firma 25.000 Euro an Max Mustermann, die in der Zukunft zurück gezahlt werden müssen. Deshalb ist das Konto Max Mustermann ein Verbindlichkeitenkonto und wird im Haben gebucht. Aufgrund der Investition steigen die Barmittel der Firma, "Kasse" ist ein Vermögenswert des Unternehmens und wird im Soll gebucht.
* Die Firma benötigt sofort Geschäftsausstattung (Kocher, Teekannen, Tassen, etc.) und Rohmaterial (Tee, Zucker, Milch, etc.). Max Mustermann beschliesst im nächstgelegenen Gemischtwarenladen "Superbasar", mit dem er freundschaftlich verbunden ist, einzukaufen, und erhält dort Kredit. Die Geschäftsausstattung hat einen Wert von 2.800 Euro und das Rohmaterial von 2.200 Euro. Er zahlt 2.000 Euro von den insgesamt 5.000 Euro.
-
+
**Analyse:** Die Geschäftsausstattung ist Anlagevermögen der Firma (weil sie eine lange Lebensdauer hat) und das Rohmaterial ist Umlaufvermögen (weil es für das Tagesgeschäft verwendet wird). Aus diesem Grund wurden die Konten "Geschäftsausstattung" und "Warenbestand" im Soll gebucht und im Bestand erhöht. Max Mustermann zahlt 2.000 Euro, deshalb reduziert sich das Konto "Kasse" um diesen Betrag, weil der Geschäftsvorfall im Haben gebucht wird. Weil Max Mustermann Kredit erhält, und vereinbart wurde, dass 3.000 Euro später an "Superbasar" gezahlt werden, werden 3.000 Euro im Soll auf das Verbindlichkeitenkonto "Superbasar" gebucht.
* Max Mustermann (, der sich um die Buchungen kümmert,) beschliesst zum Ende jeden Tages die Verkäufe zu buchen, so dass er täglich die Verkäufe analysieren kann. Am Ende des allerersten Tages hat der Teeladen 325 Tassen Tee verkauft, was einen Umsatz von 1.575 Euro ergibt. Der Inhaber verbucht hocherfreut die Umsätze seines ersten Tages.
-
+
**Analyse:** Der Ertrag wird auf dem Konto "Teeverkäufe" im Haben verbucht und der selbe Betrag wird auf dem Konto "Kasse" im Soll verbucht. Nehmen wir an, dass es 800 Euro kostet 325 Tassen Tea zuzubereiten. Deshalb reduziert sich das Konto "Waren" im Haben um 800 Euro und der Aufwand wird auf dem Konto "Warenaufwand" in selber Höhe im Soll gebucht.
@@ -27,7 +27,7 @@
Im Laufe des Monats kauft die Firma weiteres Rohmaterial für die Geschäftstätigkeit ein. Nach einem Monat bucht Max Mustermann den Gewinn um die Bilanz und die Gewinn- und Verlustrechnung auszugleichen. Den Gewinn erhält Max Mustermann und nicht die Firma, da es sich für die Firma um eine Verbindlichkeit handelt (sie muss ihn an Max Mustermann zahlen). Wenn die Bilanz nicht ausgeglichen ist, d. h. Aktive und Passive nicht gleich sind, dann wurde der Gewinn noch nicht verbucht. Um den Gewinn zu buchen, muss der folgende Buchungssatz erstellt werden:
-
+
Erklärung: Die Nettoumsätze und Aufwände der Firme belaufen sich auf 40.000 bzw. 20.000 Euro. Die Firma hat also einen Gewinn von 20.000 Euro erwirtschaftet. Bei der Verbuchung des Gewinns wird dieser auf dem Konto GuV im Soll gebucht und die Gegenbuchung auf dem Konto "Eigenkapital" im Haben. Der Saldo des Kassenkontos der Firma beträgt 44.000 Euro und es ist Rohmaterial im Wert von 1.000 Euro übrig.
diff --git a/erpnext/docs/user/manual/de/accounts/accounting-reports.md b/erpnext/docs/user/manual/de/accounts/accounting-reports.md
index b9f0fca..deab83b 100644
--- a/erpnext/docs/user/manual/de/accounts/accounting-reports.md
+++ b/erpnext/docs/user/manual/de/accounts/accounting-reports.md
@@ -8,7 +8,7 @@
Das Hauptbuch basiert auf der Tabelle der Hauptbucheinträge und kann nach einem Konto und einem Zeitraum gefiltert werden. Das hilft Ihnen dabei einen Überblick über alle Buchungen zu erhalten, die zu einem Konto in einem bestimmten Zeitraum getätigt wurden.
<img alt="Hauptbuch" class="screenshot"
- src="{{docs_base_url}}/assets/img/accounts/general-ledger.png">
+ src="/docs/assets/img/accounts/general-ledger.png">
### Probebilanz
@@ -19,7 +19,7 @@
* Summe Haben
* Schlußstand
-<img alt="Probebilanz" class="screenshot" src="{{docs_base_url}}/assets/img/accounts/trial-balance.png">
+<img alt="Probebilanz" class="screenshot" src="/docs/assets/img/accounts/trial-balance.png">
Die Summe aller Schlußstände in einer Probebilanz muss 0 sein.
@@ -27,12 +27,12 @@
Diese Berichte helfen Ihnen dabei, die offenen Posten bei Rechnungen von Kunden und Lieferanten nachzuverfolgen. In diesem Bericht sehen Sie die offenen Beträge nach Zeiträumen geordnet, d. h. 0-30 Tage, 30-60 Tage und so weiter.
-<img alt="Forderungskonten" class="screenshot" src="{{docs_base_url}}/assets/img/accounts/accounts-receivable.png">
+<img alt="Forderungskonten" class="screenshot" src="/docs/assets/img/accounts/accounts-receivable.png">
### Auflistung der Verkäufe und Einkäufe
In diesem Bericht wird jedes Steuerkonto in Spalten dargestellt. Für jede Rechnung und jeden Rechnungsposten erhalten Sie den Betrag und die individuelle Steuer, die gezahlt wurde, basierend auf der Tabelle der Steuern und Abgaben.
-<img alt="Übersicht Verkäufe" class="screenshot" src="{{docs_base_url}}/assets/img/accounts/sales-register.png">
+<img alt="Übersicht Verkäufe" class="screenshot" src="/docs/assets/img/accounts/sales-register.png">
{next}
diff --git a/erpnext/docs/user/manual/de/accounts/advance-payment-entry.md b/erpnext/docs/user/manual/de/accounts/advance-payment-entry.md
index 288b35e..54633b2 100644
--- a/erpnext/docs/user/manual/de/accounts/advance-payment-entry.md
+++ b/erpnext/docs/user/manual/de/accounts/advance-payment-entry.md
@@ -15,7 +15,7 @@
#### Abbildung 1: Journalbuchung bei Vorkasse
-<img class="screenshot" alt="Anzahlung" src="{{docs_base_url}}/assets/img/accounts/advance-payment-1.png">
+<img class="screenshot" alt="Anzahlung" src="/docs/assets/img/accounts/advance-payment-1.png">
### Doppelte Buchführung
@@ -23,7 +23,7 @@
#### Abbildung 2: Transaktion und Ausgleichsbuchung
-<img class="screenshot" alt="Anzahlung" src="{{docs_base_url}}/assets/img/accounts/advance-payment-2.png">
+<img class="screenshot" alt="Anzahlung" src="/docs/assets/img/accounts/advance-payment-2.png">
Speichern und übertragen Sie den Buchungssatz. Wenn das Dokument nicht gespeichert wird, dann wird es in anderen Buchungsdokumenten nicht übernommen.
@@ -33,7 +33,7 @@
#### Abbildung 3: Anzahlung erhalten
-<img class="screenshot" alt="Anzahlung" src="{{docs_base_url}}/assets/img/accounts/advance-payment-3.png">
+<img class="screenshot" alt="Anzahlung" src="/docs/assets/img/accounts/advance-payment-3.png">
Speichern und übertragen Sie die Ausgangsrechnung
diff --git a/erpnext/docs/user/manual/de/accounts/budgeting.md b/erpnext/docs/user/manual/de/accounts/budgeting.md
index 88ef179..7495e3c 100644
--- a/erpnext/docs/user/manual/de/accounts/budgeting.md
+++ b/erpnext/docs/user/manual/de/accounts/budgeting.md
@@ -11,29 +11,29 @@
#### Schritt 1: Klicken Sie auf "Öffnen
-<img class="screenshot" alt="Budget" src="{{docs_base_url}}/assets/img/accounts/budgeting-cost-center.png">
+<img class="screenshot" alt="Budget" src="/docs/assets/img/accounts/budgeting-cost-center.png">
#### Schritt 2: Monatliche Verteilung eingeben
-<img class="screenshot" alt="Budget" src="{{docs_base_url}}/assets/img/accounts/budget-account.png">
+<img class="screenshot" alt="Budget" src="/docs/assets/img/accounts/budget-account.png">
Wenn Sie die Verteilungs-ID leer lassen, kalkuliert ERPNext auf einer jährlichen Basis und bricht auf die Monate herunter.
#### Schritt 3: Fügen Sie eine neue Zeile hinzu und wählen Sie das Budget-Konto
-<img class="screenshot" alt="Budget" src="{{docs_base_url}}/assets/img/accounts/budget-account.png">
+<img class="screenshot" alt="Budget" src="/docs/assets/img/accounts/budget-account.png">
### Anlegen einer neuen Verteilungs-ID
ERPNext erlaubt es Ihnen einige Aktionen für Budgets einzustellen. Das legt fest, ob bei Überschreiten des Budgets gestoppt, gewarnte oder ignoriert werden soll.
-<img class="screenshot" alt="Monthly Distribution" src="{{docs_base_url}}/assets/img/accounts/monthly-budget-distribution.png">
+<img class="screenshot" alt="Monthly Distribution" src="/docs/assets/img/accounts/monthly-budget-distribution.png">
Das kann über die Firmenstammdaten eingestellt werden.
-<img class="screenshot" alt="Budget Variance Report" src="{{docs_base_url}}/assets/img/accounts/budget-variance-report.png">
+<img class="screenshot" alt="Budget Variance Report" src="/docs/assets/img/accounts/budget-variance-report.png">
Auch dann, wenn Sie für überschrittene Budgets "ignorieren" auswählen, bekommen Sie eine Fülle von Informationen über den Bericht zur Abweichung zwischen Budget und Istwert. Dieser Bericht zeigt Ihnen auf monatlicher Basis die tatsächlichen Ausgaben verglichen mit den budgetierten Ausgaben.
diff --git a/erpnext/docs/user/manual/de/accounts/chart-of-accounts.md b/erpnext/docs/user/manual/de/accounts/chart-of-accounts.md
index 551367e..b9e93e0 100644
--- a/erpnext/docs/user/manual/de/accounts/chart-of-accounts.md
+++ b/erpnext/docs/user/manual/de/accounts/chart-of-accounts.md
@@ -17,7 +17,7 @@
Sie können in ERPNext leicht die finanzielle Lage Ihres Unternehmens einsehen. Ein Beispiel für eine Finanzanalyse sehen Sie unten abgebildet.
-<img class="screenshot" alt="Finanzanalyse Bilanz" src="{{docs_base_url}}/assets/img/accounts/financial-analytics-bl.png">
+<img class="screenshot" alt="Finanzanalyse Bilanz" src="/docs/assets/img/accounts/financial-analytics-bl.png">
Um Ihren Kontenplan in ERPNext zu bearbeiten gehen Sie zu:
@@ -27,7 +27,7 @@
Lassen Sie uns die Hauptgruppen des Kontenplans besser verstehen lernen.
-<img class="screenshot" alt="Kontenplan" src="{{docs_base_url}}/assets/img/accounts/chart-of-accounts-1.png">
+<img class="screenshot" alt="Kontenplan" src="/docs/assets/img/accounts/chart-of-accounts-1.png">
### Bilanzkonten
@@ -47,7 +47,7 @@
In ERPNext ist es einfach eine graphische Auswertung von Gewinn und Verlust zu erstellen. Im Folgenden ist ein Beispiel einer GuV-Analyse abgebildet:
-<img class="screenshot" alt="Finanzanalyse GuV" src="{{docs_base_url}}/assets/img/accounts/financial-analytics-pl.png">
+<img class="screenshot" alt="Finanzanalyse GuV" src="/docs/assets/img/accounts/financial-analytics-pl.png">
(Am ersten Tag eines Jahres haben Sie noch keinen Gewinn oder Verlust gemacht, aber Sie haben bereits Vermögen, deshalb haben Bestandskonten zum Anfang oder Ende eines Zeitraums einen Wert.)
@@ -61,7 +61,7 @@
> Anmerkung: Ein Kontenbuch wird manchmal auch als Kontokopf bezeichnet.
-<img class="screenshot" alt="Kontenplan" src="{{docs_base_url}}/assets/img/accounts/chart-of-accounts-2.png">
+<img class="screenshot" alt="Kontenplan" src="/docs/assets/img/accounts/chart-of-accounts-2.png">
### Andere Kontentypen
@@ -71,7 +71,7 @@
Um ein neues Konto zu erstellen, gehen Sie Ihren Kontenplan durch und klicken Sie auf die Kontengruppe unter der Sie das neue Konto erstellen wollen. Auf der rechten Seite finden Sie die Option ein neues Konto zu "öffnen" oder ein Unterkonto zu erstellen.
-<img class="screenshot" alt="Kontenplan" src="{{docs_base_url}}/assets/img/accounts/chart-of-accounts-3.png">
+<img class="screenshot" alt="Kontenplan" src="/docs/assets/img/accounts/chart-of-accounts-3.png">
Die Option zum Erstellen erscheint nur dann, wenn Sie auf ein Konto vom Typ Gruppe (Ordner) klicken.
diff --git a/erpnext/docs/user/manual/de/accounts/credit-limit.md b/erpnext/docs/user/manual/de/accounts/credit-limit.md
index dc13819..b769817 100644
--- a/erpnext/docs/user/manual/de/accounts/credit-limit.md
+++ b/erpnext/docs/user/manual/de/accounts/credit-limit.md
@@ -9,7 +9,7 @@
### Abbildung 1: Kreditlinie
-<img class="screenshot" alt="Kreditlimit" src="{{docs_base_url}}/assets/img/accounts/credit-limit-1.png">
+<img class="screenshot" alt="Kreditlimit" src="/docs/assets/img/accounts/credit-limit-1.png">
Gehen Sie zum Abschnitt "Kreditlimit" und geben Sie den Betrag in das Feld "Kreditlimit" ein.
@@ -21,7 +21,7 @@
### Abbildung 2: Kredit-Controller
-<img class="screenshot" alt="Kreditlimit" src="{{docs_base_url}}/assets/img/accounts/credit-limit-2.png">
+<img class="screenshot" alt="Kreditlimit" src="/docs/assets/img/accounts/credit-limit-2.png">
Speichern Sie die Änderungen
diff --git a/erpnext/docs/user/manual/de/accounts/item-wise-tax.md b/erpnext/docs/user/manual/de/accounts/item-wise-tax.md
index 2ebe80f..768693c 100644
--- a/erpnext/docs/user/manual/de/accounts/item-wise-tax.md
+++ b/erpnext/docs/user/manual/de/accounts/item-wise-tax.md
@@ -7,7 +7,7 @@
Die Artikelstammdaten beinhalten eine Tabelle, in der Sie Steuern, die angewendet werden sollen, auflisten können.
-
+
Der im Artikelstamm angegebene Steuersatz hat gegenüber dem Steuersatz, der in Transaktionen angegeben wird, Vorrang.
@@ -19,7 +19,7 @@
Beispiel: Wenn Sie Artikel mit 5% Umsatzsteuer haben, bei anderen eine Dienstleistungssteuer anfällt und bei wieder anderen eine Luxussteuer, dann sollten Ihre Steuerstammdaten auch alle drei Steuern enthalten.
-
+
#### Schritt 3: Steuersatz in den Stammdaten für Steuern und Abgaben auf 0 einstellen
@@ -27,6 +27,6 @@
Basierend auf den obigen Einstellungen werden Steuern also wie in den Artikelstammdaten angegeben angewendet. Probieren Sie beispielsweise Folgendes aus:
-
+
{next}
diff --git a/erpnext/docs/user/manual/de/accounts/journal-entry.md b/erpnext/docs/user/manual/de/accounts/journal-entry.md
index 0885130..3ccc049 100644
--- a/erpnext/docs/user/manual/de/accounts/journal-entry.md
+++ b/erpnext/docs/user/manual/de/accounts/journal-entry.md
@@ -7,7 +7,7 @@
> Rechnungswesen > Dokumente > Journalbuchung > Neu
-<img class="screenshot" alt="Buchungssatz" src="{{docs_base_url}}/assets/img/accounts/journal-entry.png">
+<img class="screenshot" alt="Buchungssatz" src="/docs/assets/img/accounts/journal-entry.png">
In einem Buchungssatz müssen Sie folgendes tun:
diff --git a/erpnext/docs/user/manual/de/accounts/making-payments.md b/erpnext/docs/user/manual/de/accounts/making-payments.md
index 0c2e041..00c8d10 100644
--- a/erpnext/docs/user/manual/de/accounts/making-payments.md
+++ b/erpnext/docs/user/manual/de/accounts/making-payments.md
@@ -8,7 +8,7 @@
1. Geben Sie Schecknummer und Scheckdatum ein.
1. Speichern und Übertragen Sie.
-<img class="screenshot" alt="Zahlungen durchführen" src="{{docs_base_url}}/assets/img/accounts/make-payment.png">
+<img class="screenshot" alt="Zahlungen durchführen" src="/docs/assets/img/accounts/make-payment.png">
Zahlungen können auch unabhängig von Rechnungen erstellt werden, indem Sie einen neuen Journalbeleg erstellen und die Zahlungsart auswählen.
@@ -30,7 +30,7 @@
### Beispiel eines Buchungssatzes für eine Zahlung
-<img class="screenshot" alt="Zahlungen durchführen" src="{{docs_base_url}}/assets/img/accounts/new-bank-entry.png">
+<img class="screenshot" alt="Zahlungen durchführen" src="/docs/assets/img/accounts/new-bank-entry.png">
---
diff --git a/erpnext/docs/user/manual/de/accounts/multi-currency-accounting.md b/erpnext/docs/user/manual/de/accounts/multi-currency-accounting.md
index ad9eaaf..0b0adaa 100644
--- a/erpnext/docs/user/manual/de/accounts/multi-currency-accounting.md
+++ b/erpnext/docs/user/manual/de/accounts/multi-currency-accounting.md
@@ -7,15 +7,15 @@
Um mit Buchungen in unterschiedlichen Währungen zu beginnen, müssen Sie die Buchungswährung im Datensatz des Kontos einstellen. Sie können bei der Anlage eine Währung aus dem Kontenplan auswählen.
-<img class="screenshot" alt="Währung über den Kontenplan einstellen" src="{{docs_base_url}}/assets/img/accounts/multi-currency/chart-of-accounts.png">
+<img class="screenshot" alt="Währung über den Kontenplan einstellen" src="/docs/assets/img/accounts/multi-currency/chart-of-accounts.png">
Sie können die Währung auch zuordnen oder bearbeiten, indem Sie den jeweiligen Datensatz für bereits angelegte Konten öffnen.
-<img class="screenshot" alt="Kontenwährung anpassen" src="{{docs_base_url}}/assets/img/accounts/multi-currency/account.png">
+<img class="screenshot" alt="Kontenwährung anpassen" src="/docs/assets/img/accounts/multi-currency/account.png">
Für Kunden/Lieferanten können Sie die Buchungswährung auch im Gruppendatensatz einstellen. Wenn sich die Buchungswährung der Gruppe von der Firmenwährung unterscheidet, müssen Sie die Standardkonten für Forderungen und Verbindlichkeiten auf diese Währung einstellen.
-<img class="screenshot" alt="Währung des Kundenkontos" src="{{docs_base_url}}/assets/img/accounts/multi-currency/customer.png">
+<img class="screenshot" alt="Währung des Kundenkontos" src="/docs/assets/img/accounts/multi-currency/customer.png">
Wenn Sie die Buchungswährung für einen Artikel oder eine Gruppe eingestellt haben, können Sie Buchungen zu ihnen erstellen. Wenn sich die Buchungswährung der Gruppe von der Firmenwährung unterscheidet, dann beschränkt das System beim Erstellen von Transaktionen für diese Gruppe Buchungen auf diese Währung. Wenn die Buchungswährung die selbe wie die Firmenwährung ist, können Sie Transaktionen für diese Guppe in jeder beliebigen Währung erstellen. Aber die Hauptbuch-Buchungen werden immer in der Buchungswährung der Gruppe vorliegen. In jedem Fall ist die Wärung des Verbindlichkeitenkontos immer gleich der Buchungswährung der Gruppe.
@@ -33,7 +33,7 @@
Der ausstehende Betrag und Anzahlungsbeträge werden immer in der Währung des Kundenkontos kalkuliert und angezeigt.
-<img class="screenshot" alt="Offene Ausgangsrechnung" src="{{docs_base_url}}/assets/img/accounts/multi-currency/sales-invoice.png">
+<img class="screenshot" alt="Offene Ausgangsrechnung" src="/docs/assets/img/accounts/multi-currency/sales-invoice.png">
#### Eingangsrechnung
@@ -43,13 +43,13 @@
In einer Journalbuchung können Sie Transaktionen in unterschiedlichen Währungen erstellen. Es gibt ein Auswahlfeld "Unterschiedliche Währungen" um Buchungen in mehreren Währungen zu aktivieren. Wenn die Option "Unterschiedliche Währungen" ausgewählt wurde, können Sie Konten mit unterschiedlichen Währungen auswählen.
-<img class="screenshot" alt="Wechselkurs im Buchungssatz" src="{{docs_base_url}}/assets/img/accounts/multi-currency/journal-entry-multi-currency.png">
+<img class="screenshot" alt="Wechselkurs im Buchungssatz" src="/docs/assets/img/accounts/multi-currency/journal-entry-multi-currency.png">
In der Kontenübersicht zeigt das System den Abschnitt Währung an und holt sich die Kontenwährung und den Wechselkurs automatisch, wenn Sie ein Konto mit ausländischer Währung auswählen. Sie können den Wechselkurs später manuell ändern/anpassen.
In einem einzelnen Buchungssatz können Sie nur Konten mit einer alternativen Währung auswählen, abweichend von Konten in der Firmenwährung. Die Beträge für Soll und Haben sollten in der Kontenwährung eingegeben werden, das System berechnet und zeigt dann den Betrag für Soll und Haben automatisch in der Firmenwährung.
-<img class="screenshot" alt="Buchungssatz mit verschiedenen Währungen" src="{{docs_base_url}}/assets/img/accounts/multi-currency/journal-entry-row.png">
+<img class="screenshot" alt="Buchungssatz mit verschiedenen Währungen" src="/docs/assets/img/accounts/multi-currency/journal-entry-row.png">
#### Beispiel 1: Zahlungsbuchung eines Kunden in alternativer Währung
@@ -57,7 +57,7 @@
Der Wechselkurs in der Zahlungsbuchung sollte immer der selbe wie auf der Rechnung (60) sein, auch dann, wenn der Wechselkurs am Tag der Zahlung 62 beträgt. Dem Bankkonto wird der Betrag mit einem Wechselkurs von 62 gut geschrieben. Deshalb wird ein Wechelkursgewinn bzw. -verlust basierend auf dem Unterschied im Wechselkurs gebucht.
-<img class="screenshot" alt="Zahlungsbuchung" src="{{docs_base_url}}/assets/img/accounts/multi-currency/payment-entry.png">
+<img class="screenshot" alt="Zahlungsbuchung" src="/docs/assets/img/accounts/multi-currency/payment-entry.png">
#### Beispiel 2: Überweisung zwischen Banken (US-Dollar -> Indische Rupien)
@@ -100,7 +100,7 @@
Angenommen, der Wechselkurs am Zahlungstag ist 62, dann schaut die Buchung zur Banküberweisung wie folgt aus:
-<img class="screenshot" alt="Übertrag zwischen den Banken" src="{{docs_base_url}}/assets/img/accounts/multi-currency/bank-transfer.png">
+<img class="screenshot" alt="Übertrag zwischen den Banken" src="/docs/assets/img/accounts/multi-currency/bank-transfer.png">
### Berichte
@@ -108,12 +108,12 @@
Im Hauptbuch zeigt das System den Betrag einer Gutschrift/Lastschrift in beiden Währungen an, wenn nach Konto gefiltert wurde, und wenn die Kontenwährung unterschiedlich zur Firmenwährung ist.
-<img class="screenshot" alt="Bericht zum Hauptbuch" src="{{docs_base_url}}/assets/img/accounts/multi-currency/general-ledger.png">
+<img class="screenshot" alt="Bericht zum Hauptbuch" src="/docs/assets/img/accounts/multi-currency/general-ledger.png">
#### Forderungs- und Verbindlichkeitenkonten
Im Bericht zu den Konten Forderungen und Verbindlichkeiten zeigt das System alle Beträge in der Währung der Gruppe/in der Kontenwährung an.
-<img class="screenshot" alt="Bericht zu den Forderungen" src="{{docs_base_url}}/assets/img/accounts/multi-currency/accounts-receivable.png">
+<img class="screenshot" alt="Bericht zu den Forderungen" src="/docs/assets/img/accounts/multi-currency/accounts-receivable.png">
{next}
diff --git a/erpnext/docs/user/manual/de/accounts/opening-accounts.md b/erpnext/docs/user/manual/de/accounts/opening-accounts.md
index f264fc8..3edcadc 100644
--- a/erpnext/docs/user/manual/de/accounts/opening-accounts.md
+++ b/erpnext/docs/user/manual/de/accounts/opening-accounts.md
@@ -20,7 +20,7 @@
Sie können Konten basierend auf Belegarten auswählen. In so einem Szenario sollte Ihre Bilanz ausgeglichen sein.
-<img class="screenshot" alt="Eröffnungskonto" src="{{docs_base_url}}/assets/img/accounts/opening-account-1.png">
+<img class="screenshot" alt="Eröffnungskonto" src="/docs/assets/img/accounts/opening-account-1.png">
Beachten Sie bitte auch, dass das System abstürzt, wenn es mehr als 300 Bücher gibt. Um so eine Situation zu vermeiden, können Sie Konten über temporäre Konten eröffnen.
@@ -38,13 +38,13 @@
Vervollständigen Sie die Buchungssätze auf der Soll- und Haben-Seite.
-<img class="screenshot" alt="Opening Account" src="{{docs_base_url}}/assets/img/accounts/opening-6.png">
+<img class="screenshot" alt="Opening Account" src="/docs/assets/img/accounts/opening-6.png">
Um einen Eröffnungsstand einzupflegen, erstellen Sie einen Buchungssatz für ein Konto oder eine Gruppe von Konten.
Beispiel: Wenn Sie die Kontenstände von drei Bankkonten einpflegen möchten, dann erstellen Sie Buchungssätze der folgenden Art und Weise:
-<img class="screenshot" alt="Opening Account" src="{{docs_base_url}}/assets/img/accounts/opening-3.png">
+<img class="screenshot" alt="Opening Account" src="/docs/assets/img/accounts/opening-3.png">
Um einen Ausgleich herzustellen, wird ein temporäres Konto für Vermögen und Verbindlichkeiten verwendet. Wenn Sie einen Anfangsbestand in einem Verbindlichkeitenkonto einpflegen, können Sie zum Ausgleich ein temporäres Vermögenskonto verwenden.
@@ -59,7 +59,7 @@
Wenn Sie die Buchungen erstellt haben, schaut der Bericht zur Probebilanz in etwa wie folgt aus:
-<img class="screenshot" alt="Probebilanz" src="{{docs_base_url}}/assets/img/accounts/opening-4.png">
+<img class="screenshot" alt="Probebilanz" src="/docs/assets/img/accounts/opening-4.png">
### Offene Rechnungen
diff --git a/erpnext/docs/user/manual/de/accounts/opening-entry.md b/erpnext/docs/user/manual/de/accounts/opening-entry.md
index 8195faf..66c1439 100644
--- a/erpnext/docs/user/manual/de/accounts/opening-entry.md
+++ b/erpnext/docs/user/manual/de/accounts/opening-entry.md
@@ -3,6 +3,6 @@
Wenn Sie eine neue Firma erstellen, dann können Sie das ERPNext-Modul Rechnungswesen starten, indem Sie in den Kontenplan gehen.
-Wenn Sie aber von einem reinen Buchhaltungsprogramm wie Tally oder einer FoxPro-basieren Software migrieren, dann lesen Sie unter [Eröffnungsbilanz]({{docs_base_url}}/user/manual/de/accounts/opening-accounts.html) nach.
+Wenn Sie aber von einem reinen Buchhaltungsprogramm wie Tally oder einer FoxPro-basieren Software migrieren, dann lesen Sie unter [Eröffnungsbilanz](/docs/user/manual/de/accounts/opening-accounts.html) nach.
{next}
diff --git a/erpnext/docs/user/manual/de/accounts/point-of-sales-invoice.md b/erpnext/docs/user/manual/de/accounts/point-of-sales-invoice.md
index d64e272..d331259 100644
--- a/erpnext/docs/user/manual/de/accounts/point-of-sales-invoice.md
+++ b/erpnext/docs/user/manual/de/accounts/point-of-sales-invoice.md
@@ -12,7 +12,7 @@
In ERPNext können über den POS alle Verkaufs- und Einkaufstransaktionen, wie Ausgangsrechnung, Angebot, Kundenauftrag, Lieferantenauftrag, usw. bearbeitet werden. Über folgende zwei Schritte richten Sie den POS ein:
1. Aktivieren Sie die POS-Ansicht über Einstellungen > Anpassen > Funktionseinstellungen
-2. Erstellen Sie einen Datensatz für die [POS-Einstellungen]({{docs_base_url}}/user/manual/de/setting-up/pos-setting.html)
+2. Erstellen Sie einen Datensatz für die [POS-Einstellungen](/docs/user/manual/de/setting-up/pos-setting.html)
#### Auf die POS-Ansicht umschalten
@@ -33,7 +33,7 @@
**Barcode/Seriennummer:** Ein Barcode/eine Seriennummer ist eine optionale maschinenlesbare Möglichkeit Daten zu einem Objekt einzulesen, mit dem er/sie verbunden ist. Geben Sie wie auf dem Bild unten angegeben den Barcode/die Seriennummer in das Feld ein und warten Sie einen kurzen Moment, dann wird der Artikel automatisch zum Einkaufswagen hinzugefügt.
-
+
> Tipp: Um die Menge eines Artikels zu ändern, geben Sie die gewünschte Menge im Feld "Menge" ein. Das wird hauptsächliche dann verwendet, wenn ein Artikel in größeren Mengen gekauft wird.
@@ -50,7 +50,7 @@
> Die Schaltfläche "Löschen" erscheint nur, wenn Artikel ausgewählt wurden.
-
+
### Zahlung durchführen
@@ -60,7 +60,7 @@
2. Wählen Sie die Zahlungsart aus.
3. Klicken Sie auf die Schaltfläche "Zahlen" um das Dokument abzuspeichern.
-
+
Übertragen Sie das Dokument um den Datensatz abzuschliessen. Nachdem das Dokument übertragen wurde, können Sie es entweder ausdrucken oder per E-Mail versenden.
diff --git a/erpnext/docs/user/manual/de/accounts/purchase-invoice.md b/erpnext/docs/user/manual/de/accounts/purchase-invoice.md
index b3952ef..6aec9b5 100644
--- a/erpnext/docs/user/manual/de/accounts/purchase-invoice.md
+++ b/erpnext/docs/user/manual/de/accounts/purchase-invoice.md
@@ -9,7 +9,7 @@
oder klicken Sie in einem Lieferantenauftrag oder einem Kaufbeleg auf "Eingangsrechnung erstellen".
-<img class="screenshot" alt="Eingangsrechnung" src="{{docs_base_url}}/assets/img/accounts/purchase-invoice.png">
+<img class="screenshot" alt="Eingangsrechnung" src="/docs/assets/img/accounts/purchase-invoice.png">
Das Konzept des Veröffentlichungsdatums ist das gleiche wie bei der Ausgangsrechnung. Rechnungsnummer und Rechnungsdatum helfen Ihnen dabei nachzuvollziehen, unter welchen Daten die Rechnung bei Ihrem Lieferanten ausgewiesen ist.
diff --git a/erpnext/docs/user/manual/de/accounts/sales-invoice.md b/erpnext/docs/user/manual/de/accounts/sales-invoice.md
index 03b36d8..7ce30bb 100644
--- a/erpnext/docs/user/manual/de/accounts/sales-invoice.md
+++ b/erpnext/docs/user/manual/de/accounts/sales-invoice.md
@@ -9,7 +9,7 @@
oder indem Sie in der rechten Ecke des Lieferscheins auf "Rechnung erstellen" klicken.
-<img class="screenshot" alt="Ausgangsrechnung" src="{{docs_base_url}}/assets/img/accounts/sales-invoice.png">
+<img class="screenshot" alt="Ausgangsrechnung" src="/docs/assets/img/accounts/sales-invoice.png">
### Auswirkung auf die Buchhaltung
@@ -53,6 +53,6 @@
"Proforma" bezieht sich auf eine Formsache. Warum sollte man das tun? Wenn Sie eine Ausgangsrechnung buchen, dann erscheint diese bei den Forderungen und den Erträgen. Das ist genau dann nicht optimal, wenn nicht sicher ist, ob Ihr Kunden die Anzahlung auch wirklich leistet. Wenn Ihr Kunden aber dennoch eine "Rechnung" will, dann geben Sie ihm ein Angebot (in ERPNext) das als "Proforma-Rechnung" bezeichnet wird. Auf diese Weise ist jeder glücklich.
-Das ist ein weithin gebräuchliches Verfahren. Wir bei Frappe machen das genauso.
+Das ist ein weithin gebräuchliches Verfahren. Wir bei Frappé machen das genauso.
{next}
diff --git a/erpnext/docs/user/manual/de/accounts/setup/account-settings.md b/erpnext/docs/user/manual/de/accounts/setup/account-settings.md
index d0d9bef..44aafa4 100644
--- a/erpnext/docs/user/manual/de/accounts/setup/account-settings.md
+++ b/erpnext/docs/user/manual/de/accounts/setup/account-settings.md
@@ -1,7 +1,7 @@
# Konteneinstellungen
<span class="text-muted contributed-by">Beigetragen von CWT Connector & Wire Technology GmbH</span>
-<img class="screenshot" alt="Konteneinstellungen" src="{{docs_base_url}}/assets/img/accounts/account-settings.png">
+<img class="screenshot" alt="Konteneinstellungen" src="/docs/assets/img/accounts/account-settings.png">
* Konten gesperrt bis: Sperren Sie Konten-Transaktionen bis zu einem bestimmten Datum. Niemand bis auf die angegebene Rolle kann dann Buchungen zu diesem Konto erstellen oder verändern.
diff --git a/erpnext/docs/user/manual/de/accounts/setup/cost-center.md b/erpnext/docs/user/manual/de/accounts/setup/cost-center.md
index be42c80..a7ed877 100644
--- a/erpnext/docs/user/manual/de/accounts/setup/cost-center.md
+++ b/erpnext/docs/user/manual/de/accounts/setup/cost-center.md
@@ -22,7 +22,7 @@
>Rechnungswesen > Einstellungen > Kostenstellenplan
-<img class="screenshot" alt="Kostenstellenplan" src="{{docs_base_url}}/assets/img/accounts/budgeting-cost-center.png">
+<img class="screenshot" alt="Kostenstellenplan" src="/docs/assets/img/accounts/budgeting-cost-center.png">
Kostenstellen helfen Ihnen bei der Erstellung von Budgets für Geschäftstätigkeiten.
@@ -36,7 +36,7 @@
> Rechnungswesen > Einstellungen > Budgetverteilung > Neu
-
+
### Budgetaktionen
diff --git a/erpnext/docs/user/manual/de/accounts/setup/fiscal-year.md b/erpnext/docs/user/manual/de/accounts/setup/fiscal-year.md
index ce4c750..817c557 100644
--- a/erpnext/docs/user/manual/de/accounts/setup/fiscal-year.md
+++ b/erpnext/docs/user/manual/de/accounts/setup/fiscal-year.md
@@ -5,6 +5,6 @@
Ein Geschäftsjahr startet normalerweise zu Beginn eines Quartals, wie zum Beispiel am 1. April, 1. Juli oder 1. Oktober. Jedoch geht bei den meisten Firmen das Geschäftsjahr mit dem Kalenderjahr einher und startet am 1. Januar. In den meisten Fällen ist es der einfachere und leichtere Weg. Für einige Organisationen ist es vorteilhaft das Geschäftsjahr zu einem anderen Zeitpunkt zu starten. So können beispielsweise Geschäfte, die saisonal arbeiten zum 1. Juli oder 1. Oktober starten. Ein Geschäft, welches im Herbst den größten Gewinn erwirtschaftet und die größten Ausgaben im Frühling hat, könnte sich auch für den 1. Okober entscheiden. Auf diese Weise weis es wie hoch der Gewinn für das Jahr sein wird und kann seine Ausgaben so anpassen, dass das Gewinnziel erreicht wird.
-<img class="screenshot" alt="Geschäftsjahr" src="{{docs_base_url}}/assets/img/accounts/fiscal-year.png">
+<img class="screenshot" alt="Geschäftsjahr" src="/docs/assets/img/accounts/fiscal-year.png">
{next}
diff --git a/erpnext/docs/user/manual/de/accounts/setup/tax-rule.md b/erpnext/docs/user/manual/de/accounts/setup/tax-rule.md
index 73d4907..52fd1d7 100644
--- a/erpnext/docs/user/manual/de/accounts/setup/tax-rule.md
+++ b/erpnext/docs/user/manual/de/accounts/setup/tax-rule.md
@@ -1,9 +1,9 @@
# Steuerregeln
<span class="text-muted contributed-by">Beigetragen von CWT Connector & Wire Technology GmbH</span>
-Sie können festlegen, welche [Steuervorlage]({{docs_base_url}}/user/manual/de/setting-up/setting-up-taxes.html) auf eine Verkaufs-/Einkaufstransaktion angewendet wird, wenn Sie die Funktion Steuerregel verwenden.
+Sie können festlegen, welche [Steuervorlage](/docs/user/manual/de/setting-up/setting-up-taxes.html) auf eine Verkaufs-/Einkaufstransaktion angewendet wird, wenn Sie die Funktion Steuerregel verwenden.
-<img class="screenshot" alt="Steuerregel" src="{{docs_base_url}}/assets/img/accounts/tax-rule.png">
+<img class="screenshot" alt="Steuerregel" src="/docs/assets/img/accounts/tax-rule.png">
Sie können Steuerregeln für Umsatz- und für Vorsteuern erstellen. Wenn Sie eine Transaktion durchführen, wählt das System Steuervorlagen basierend auf den definierten Steuerregeln aus und wendet sie an. Das System filtert Steuerregeln nach der Anzahl der maximal zutreffenden Bedingungen.
@@ -11,9 +11,9 @@
Angenommen wird haben zwei Steuerregeln wie unten abgebildet erstellt.
-<img class="screenshot" alt="Steuerregel" src="{{docs_base_url}}/assets/img/accounts/tax-rule-1.png">
+<img class="screenshot" alt="Steuerregel" src="/docs/assets/img/accounts/tax-rule-1.png">
-<img class="screenshot" alt="Steuerregel" src="{{docs_base_url}}/assets/img/accounts/tax-rule-2.png">
+<img class="screenshot" alt="Steuerregel" src="/docs/assets/img/accounts/tax-rule-2.png">
In unserem Beispiel gilt Regel 1 für Indien und Regel 2 für Großbritannien.
diff --git a/erpnext/docs/user/manual/de/accounts/tools/bank-reconciliation.md b/erpnext/docs/user/manual/de/accounts/tools/bank-reconciliation.md
index da1901c..47a0dfe 100644
--- a/erpnext/docs/user/manual/de/accounts/tools/bank-reconciliation.md
+++ b/erpnext/docs/user/manual/de/accounts/tools/bank-reconciliation.md
@@ -11,7 +11,7 @@
#### Abbilung 1: Kontoauszug
-
+
Wenn Sie den Bericht erhalten, überprüfen Sie bitte, ob das Feld "Abwicklungsdatum" wie bei der Bank angegeben mit dem Kontoauszug übereinstimmt. Wenn die Beträge übereinstimmen, dann werden die Abwicklungsdaten abgeglichen. Wenn die Beträge nicht übereinstimmen, dann überprüfen Sie bitte die Abwicklungsdaten und die Journalbuchungen/Buchungssätze.
@@ -33,7 +33,7 @@
#### Abbildung 2: Werkzeug zum Kontenabgleich
-<img class="screenshot" alt="Kontenabgleich" src="{{docs_base_url}}/assets/img/accounts/bank-reconciliation.png">
+<img class="screenshot" alt="Kontenabgleich" src="/docs/assets/img/accounts/bank-reconciliation.png">
**Schritt 5:** Klicken Sie auf die Schaltfläche "Abwicklungsdatum aktualisieren"
diff --git a/erpnext/docs/user/manual/de/accounts/tools/payment-reconciliation.md b/erpnext/docs/user/manual/de/accounts/tools/payment-reconciliation.md
index 59b73e8..22e15d4 100644
--- a/erpnext/docs/user/manual/de/accounts/tools/payment-reconciliation.md
+++ b/erpnext/docs/user/manual/de/accounts/tools/payment-reconciliation.md
@@ -7,7 +7,7 @@
> Rechnungswesen > Werkzeuge > Zahlungsabgleich
-<img class="screenshot" alt="Zahlungsabgleich" src="{{docs_base_url}}/assets/img/accounts/payment-reconcile-tool.png">
+<img class="screenshot" alt="Zahlungsabgleich" src="/docs/assets/img/accounts/payment-reconcile-tool.png">
**Schritt 1:** Wählen Sie das Konto aus, zu dem die Zahlungen abgeglichen werden sollen.
diff --git a/erpnext/docs/user/manual/de/accounts/tools/payment-tool.md b/erpnext/docs/user/manual/de/accounts/tools/payment-tool.md
index 97795aa..b76945c 100644
--- a/erpnext/docs/user/manual/de/accounts/tools/payment-tool.md
+++ b/erpnext/docs/user/manual/de/accounts/tools/payment-tool.md
@@ -23,14 +23,14 @@
* **Hinweis**: Für den Fall, dass der Benutzer an einen Kunden zahlt oder von einem Lieferanten eine Zahlung erhält, fügen Sie manuell Anmerkungen hinzu, die sich auf zutreffende Rechnungen oder Aufträge beziehen.
-<img class="screenshot" alt="Zahlungswerkzeug" src="{{docs_base_url}}/assets/img/accounts/payment-tool-1.png">
+<img class="screenshot" alt="Zahlungswerkzeug" src="/docs/assets/img/accounts/payment-tool-1.png">
7\. Sobald die Daten angezogen wurden, klicken Sie auf die detaillierte Buchung und geben Sie den Zahlungsbetrag zur Rechnung/Bestellung/zum Beleg ein.
-<img class="screenshot" alt="Zahlungswerkzeug" src="{{docs_base_url}}/assets/img/accounts/payment-tool-2.png">
+<img class="screenshot" alt="Zahlungswerkzeug" src="/docs/assets/img/accounts/payment-tool-2.png">
8\. Klicken Sie auf "Buchungssatz erstellen" um einen neuen Buchungssatz mit den entsprechenden Einzelheiten zu erstellen.
-<img class="screenshot" alt="Zahlungswerkzeug" src="{{docs_base_url}}/assets/img/accounts/payment-tool-3.png">
+<img class="screenshot" alt="Zahlungswerkzeug" src="/docs/assets/img/accounts/payment-tool-3.png">
{next}
diff --git a/erpnext/docs/user/manual/de/accounts/tools/period-closing-voucher.md b/erpnext/docs/user/manual/de/accounts/tools/period-closing-voucher.md
index 539e7f9..0f94073 100644
--- a/erpnext/docs/user/manual/de/accounts/tools/period-closing-voucher.md
+++ b/erpnext/docs/user/manual/de/accounts/tools/period-closing-voucher.md
@@ -22,7 +22,7 @@
Das **abzuschließende Geschäftsjahr** ist das Jahr, für das Sie Ihre Finanzbuchhaltung abschliessen.
-<img class="screenshot" alt="Periodenabschlussbeleg" src="{{docs_base_url}}/assets/img/accounts/period-closing-voucher.png">
+<img class="screenshot" alt="Periodenabschlussbeleg" src="/docs/assets/img/accounts/period-closing-voucher.png">
Dieser Beleg überträgt den Gewinn oder Verlust (über die GuV ermittelt) in die Schlußbilanz. Sie sollten ein Konto vom Typ Verbindlichkeiten, wie Gewinnrücklagen oder Überschuss, oder vom Typ Kapital als Schlußkonto auswählen.
diff --git a/erpnext/docs/user/manual/de/buying/purchase-order.md b/erpnext/docs/user/manual/de/buying/purchase-order.md
index 7c72d1e..a161d64 100644
--- a/erpnext/docs/user/manual/de/buying/purchase-order.md
+++ b/erpnext/docs/user/manual/de/buying/purchase-order.md
@@ -7,7 +7,7 @@
### Flußdiagramm der Lieferantenbestellung
-<img class="screenshot" alt="Lieferantenauftrag" src="{{docs_base_url}}/assets/img/buying/purchase-order-f.jpg">
+<img class="screenshot" alt="Lieferantenauftrag" src="/docs/assets/img/buying/purchase-order-f.jpg">
In ERPNext können Sie einen Lieferantenauftrag auch direkt erstellen über:
@@ -15,7 +15,7 @@
### Einen Lieferantenauftrag erstellen
-<img class="screenshot" alt="Lieferantenauftrag" src="{{docs_base_url}}/assets/img/buying/purchase-order.png">
+<img class="screenshot" alt="Lieferantenauftrag" src="/docs/assets/img/buying/purchase-order.png">
Einen Lieferantenauftrag einzugeben ist sehr ähnlich zu einer Lieferantenanfrage. Zusätzlich müssen Sie Folgendes eingeben:
@@ -50,7 +50,7 @@
### Abbildung 3: Umrechung von Einkaufsmaßeinheit in Lagermaßeinheit
-<img class="screenshot" alt="Lieferantenauftrag - Maßeinheit" src="{{docs_base_url}}/assets/img/buying/purchase-order-uom.png">
+<img class="screenshot" alt="Lieferantenauftrag - Maßeinheit" src="/docs/assets/img/buying/purchase-order-uom.png">
**Schritt 4:** Geben Sie den Umrechnungsfaktor von einer in die andere Maßeinheit an. Beispiel: 100, wenn eine Kiste 100 Stück umfasst.
diff --git a/erpnext/docs/user/manual/de/buying/setup/buying-settings.md b/erpnext/docs/user/manual/de/buying/setup/buying-settings.md
index e6f0d97..e5ee4a4 100644
--- a/erpnext/docs/user/manual/de/buying/setup/buying-settings.md
+++ b/erpnext/docs/user/manual/de/buying/setup/buying-settings.md
@@ -3,7 +3,7 @@
Hier können Sie Werte einstellen, die in den Transaktionen des Moduls Einkauf zugrunde gelegt werden.
-
+
Lassen Sie uns die verschiedenen Optionen durckgehen.
@@ -17,7 +17,7 @@
> Einstellungen > Einstellungen > Nummernkreis
-[Klicken Sie hier, wenn Sie mehr über Nummernkreise wissen möchten]({{docs_base_url}}/user/manual/de/setting-up/settings/naming-series.html)
+[Klicken Sie hier, wenn Sie mehr über Nummernkreise wissen möchten](/docs/user/manual/de/setting-up/settings/naming-series.html)
### 2. Standard-Lieferantentyp
diff --git a/erpnext/docs/user/manual/de/buying/setup/supplier-type.md b/erpnext/docs/user/manual/de/buying/setup/supplier-type.md
index a379ec8..172aef7 100644
--- a/erpnext/docs/user/manual/de/buying/setup/supplier-type.md
+++ b/erpnext/docs/user/manual/de/buying/setup/supplier-type.md
@@ -9,7 +9,7 @@
> Einkauf > Einstellungen > Lieferantentyp > Neuer Lieferantentyp
-<img class="screenshot" alt="Lieferantentyp" src="{{docs_base_url}}/assets/img/buying/supplier-type.png">
+<img class="screenshot" alt="Lieferantentyp" src="/docs/assets/img/buying/supplier-type.png">
Sie können Ihre Lieferanten aus einem breiten Angebot verfügbarer Typen in ERPNext klassifizieren. Wählen Sie aus einem Satz vorgegebener Optionen wie Großhändler, Elekktro, Hardware, Regional, Pharma, Rohstoffe, Dienstleistungen, etc. aus.
diff --git a/erpnext/docs/user/manual/de/buying/supplier-quotation.md b/erpnext/docs/user/manual/de/buying/supplier-quotation.md
index 93db6a7..30487fc 100644
--- a/erpnext/docs/user/manual/de/buying/supplier-quotation.md
+++ b/erpnext/docs/user/manual/de/buying/supplier-quotation.md
@@ -7,7 +7,7 @@
### Flußdiagramm zum Lieferantenangebot
-<img class="screenshot" alt="Lieferantenangebot" src="{{docs_base_url}}/assets/img/buying/supplier-quotation-f.jpg">
+<img class="screenshot" alt="Lieferantenangebot" src="/docs/assets/img/buying/supplier-quotation-f.jpg">
Sie können ein Lieferantenangebot auch direkt erstellen über:
@@ -15,7 +15,7 @@
### Ein Lieferantenangebot erstellen
-<img class="screenshot" alt="Lieferantenangebot" src="{{docs_base_url}}/assets/img/buying/supplier-quotation.png">
+<img class="screenshot" alt="Lieferantenangebot" src="/docs/assets/img/buying/supplier-quotation.png">
Wenn Sie mehrere verschiedene Lieferanten, die Ihnen den selben Artikel liefern, haben, dann senden Sie normalerweise eine Nachricht (Lieferantenanfrage) an verschiedene Lieferanten. In vielen Fällen, besonders dann, wenn Sie den Einkauf zentralisiert haben, werden Sie alle diese Angebote aufzeichnen wollen, so dass
diff --git a/erpnext/docs/user/manual/de/buying/supplier.md b/erpnext/docs/user/manual/de/buying/supplier.md
index eadb4ce..37eb376 100644
--- a/erpnext/docs/user/manual/de/buying/supplier.md
+++ b/erpnext/docs/user/manual/de/buying/supplier.md
@@ -7,7 +7,7 @@
> Einkauf > Dokumente > Lieferant > Neu
-<img class="screenshot" alt="Lieferant" src="{{docs_base_url}}/assets/img/buying/supplier-master.png">
+<img class="screenshot" alt="Lieferant" src="/docs/assets/img/buying/supplier-master.png">
### Kontakte und Adressen
diff --git a/erpnext/docs/user/manual/de/customer-portal/customer-orders-invoices-and-shipping.md b/erpnext/docs/user/manual/de/customer-portal/customer-orders-invoices-and-shipping.md
index c74029b..ef40f45 100644
--- a/erpnext/docs/user/manual/de/customer-portal/customer-orders-invoices-and-shipping.md
+++ b/erpnext/docs/user/manual/de/customer-portal/customer-orders-invoices-and-shipping.md
@@ -4,18 +4,18 @@
Das Webportal von ERPNext gibt Ihren Kunden einen schnellen Zugriff auf Ihre Aufträge, Rechnungen und Sendungen.
Kunden können den Status Ihrer Bestellungen, Rechnungen und des Versandes nachprüfen, indem sie sich auf der Webseite einloggen.
-<img class="screenshot" alt="Customer Portal Order 1" src="{{docs_base_url}}/assets/img/website/portal-menu.png">
+<img class="screenshot" alt="Customer Portal Order 1" src="/docs/assets/img/website/portal-menu.png">
Sobald eine Bestellung aufgegeben wurde, entweder über den Einkaufswagen oder aus ERPNext heraus, kann Ihr Kunde die Bestellung ansehen und den Abrechnungs- und Versandstatus nachverfolgen. Wenn die Rechnung und die Zahlung zu einer Bestellung übertragen wurden, kann der Kunde auch hier den aktuellen Stand auf einen Blick nachvollziehen.
-<img class="screenshot" alt="Customer Portal Order 1" src="{{docs_base_url}}/assets/img/website/website-login.png">
+<img class="screenshot" alt="Customer Portal Order 1" src="/docs/assets/img/website/website-login.png">
### Rechnung mit Status "gezahlt"
-<img class="screenshot" alt="Customer Portal Order 1" src="{{docs_base_url}}/assets/img/website/invoice-unpaid.png">
+<img class="screenshot" alt="Customer Portal Order 1" src="/docs/assets/img/website/invoice-unpaid.png">
### Rechnung mit Status "abgerechnet"
-<img class="screenshot" alt="Customer Portal Order 1" src="{{docs_base_url}}/assets/img/website/invoice-paid.png">
+<img class="screenshot" alt="Customer Portal Order 1" src="/docs/assets/img/website/invoice-paid.png">
{next}
diff --git a/erpnext/docs/user/manual/de/customer-portal/issues.md b/erpnext/docs/user/manual/de/customer-portal/issues.md
index 8f0c7d3..dee8eb1 100644
--- a/erpnext/docs/user/manual/de/customer-portal/issues.md
+++ b/erpnext/docs/user/manual/de/customer-portal/issues.md
@@ -5,17 +5,17 @@
### Ticketliste leeren
-<img class="screenshot" alt="Ausgabeliste" src="{{docs_base_url}}/assets/img/website/portal-ticket-list-empty.png">
+<img class="screenshot" alt="Ausgabeliste" src="/docs/assets/img/website/portal-ticket-list-empty.png">
### Neuer Fall
-<img class="screenshot" alt="Neues Problem " src="{{docs_base_url}}/assets/img/website/portal-new-ticket.png">
+<img class="screenshot" alt="Neues Problem " src="/docs/assets/img/website/portal-new-ticket.png">
### Fall öffnen
-<img class="screenshot" alt="Ausgabe aufgehoben" src="{{docs_base_url}}/assets/img/website/portal-ticket-1.gif">
+<img class="screenshot" alt="Ausgabe aufgehoben" src="/docs/assets/img/website/portal-ticket-1.gif">
### Fall beantworten
-<img class="screenshot" alt="Frage beantworten" src="{{docs_base_url}}/assets/img/website/portal-ticket-reply.gif">
+<img class="screenshot" alt="Frage beantworten" src="/docs/assets/img/website/portal-ticket-reply.gif">
{next}
diff --git a/erpnext/docs/user/manual/de/customer-portal/portal-login.md b/erpnext/docs/user/manual/de/customer-portal/portal-login.md
index 455dfac..5bff275 100644
--- a/erpnext/docs/user/manual/de/customer-portal/portal-login.md
+++ b/erpnext/docs/user/manual/de/customer-portal/portal-login.md
@@ -3,6 +3,6 @@
Um sich in ein Kundenkonto einzuloggen, muss der Kunde seine Email-ID und das Passwort angeben, welche ihm von ERPNext während des Registrierungsprozesses zugesendet wurden.
-<img class="screenshot" alt="Website User Signup" src="{{docs_base_url}}/assets/img/website/website-login.png">
+<img class="screenshot" alt="Website User Signup" src="/docs/assets/img/website/website-login.png">
{next}
diff --git a/erpnext/docs/user/manual/de/customer-portal/sign-up.md b/erpnext/docs/user/manual/de/customer-portal/sign-up.md
index 0a91145..35a660d 100644
--- a/erpnext/docs/user/manual/de/customer-portal/sign-up.md
+++ b/erpnext/docs/user/manual/de/customer-portal/sign-up.md
@@ -6,11 +6,11 @@
### Schritt 1: Klicken Sie auf das Registrieren-Symbol
-<img class="screenshot" alt="Website User Signup" src="{{docs_base_url}}/assets/img/website/website-login.png">
+<img class="screenshot" alt="Website User Signup" src="/docs/assets/img/website/website-login.png">
### Schritt 3: Geben Sie Ihren Kundennamen und Ihre ID ein
-<img class="screenshot" alt="Website User Signup" src="{{docs_base_url}}/assets/img/website/website-signup-details.png">
+<img class="screenshot" alt="Website User Signup" src="/docs/assets/img/website/website-signup-details.png">
Wenn der Registrierungsprozess abgeschlossen ist, wird dem Kunden eine E-Mail mit dem Passwort zugeschickt.
diff --git a/erpnext/docs/user/manual/de/customize-erpnext/custom-doctype.md b/erpnext/docs/user/manual/de/customize-erpnext/custom-doctype.md
index 01bfaa7..315e062 100644
--- a/erpnext/docs/user/manual/de/customize-erpnext/custom-doctype.md
+++ b/erpnext/docs/user/manual/de/customize-erpnext/custom-doctype.md
@@ -17,7 +17,7 @@
4. Ist einzeln: Wenn diese Option aktiviert ist, wird dieser DocType zu einem einzeln verwendeten Formular, wie die Vertriebseinstellungen, die nicht von Benutzern reproduziert werden können.
5. Benutzerdefiniert?: Dieses Feld ist standardmäßig aktiviert, wenn ein benutzerdefinierter DocType hinzugefügt wird.
-
+
### Felder
@@ -32,7 +32,7 @@
5. Aktionen (Schaltflächen)
6. Anhänge oder Bilder
-
+
Wenn Sie Felder hinzufügen, müssen Sie den **Typ** angeben. Für eine Bereichs- oder Spaltentrennung ist die **Bezeichnung** optional. Der **Name** (Feldname) ist der Name der Spalte in der Datenbank.
@@ -42,19 +42,19 @@
In diesem Abschnitt können Sie Kriterien definieren nach denen Dokumente dieses DocTypes benannt werden. Es gibt viele verschiedene Kriterien nach denen ein Dokument benannt werden kann, wie z. B. dem Wert in diesem spezifischen Feld, oder die Benamungsserie, oder der Wert der vom Benutzer an der Eingabeaufforderung eingegeben wird, die angezeit wird, wenn ein Dokument abgespeichert wird. Im folgenden Beispiel benennen wir auf Grundlage des Wertes im Feld **book_name**.
-
+
### Berechtigung
In dieser Tabelle können Sie Rollen und Berechtigungs-Rollen für diese für die betreffenden DocTypes auswählen.
-
+
### DocTypes abspeichern
Wenn Sie einen DocType abspeichern, erscheint ein Popup-Fenster über welches Sie den Namen des DocTypes eingeben können.
-
+
### Der DocType im System
@@ -62,12 +62,12 @@
> Personalwesen > Dokumente > Buch
-
+
### Buchvorlage
Wenn Sie die Felder ausfüllen, schaut das ganze dann so aus.
-
+
{next}
diff --git a/erpnext/docs/user/manual/de/customize-erpnext/custom-field.md b/erpnext/docs/user/manual/de/customize-erpnext/custom-field.md
index 7d0f0fa..e890f5d 100644
--- a/erpnext/docs/user/manual/de/customize-erpnext/custom-field.md
+++ b/erpnext/docs/user/manual/de/customize-erpnext/custom-field.md
@@ -12,11 +12,11 @@
> Einstellungen > Anpassen > Benutzerdefiniertes Feld > Neu
-Sie können ein neues benutzerdefiniertes Feld auch über das [Werkzeug zum Anpassen von Feldern]({{docs_base_url}}/user/manual/de/customize-erpnext/customize-form) einfügen.
+Sie können ein neues benutzerdefiniertes Feld auch über das [Werkzeug zum Anpassen von Feldern](/docs/user/manual/de/customize-erpnext/customize-form) einfügen.
In einem benutzerdefinierten Formular finden Sie für jedes Feld die Plus(+)-Option. Wenn Sie auf dieses Symbol klicken, wird eine neue Zeile oberhalb dieses Feldes eingefügt. Sie können die Einstellungen für Ihr Feld in der neu eingefügten leeren Zeile eingeben.
-<img alt="Formular anpassen - benutzerdefiniertes Feld" class="screenshot" src="{{docs_base_url}}/assets/img/customize/custom-field-2.gif">
+<img alt="Formular anpassen - benutzerdefiniertes Feld" class="screenshot" src="/docs/assets/img/customize/custom-field-2.gif">
Im Folgenden sind die Schritte aufgeführt, wie man ein benutzerdefiniertes Feld in ein bestehendes Formular einfügt.
@@ -28,31 +28,31 @@
Wählen Sie die Transaktion oder die Vorlage, in die sie ein benutzerdefiniertes Feld einfügen wollen. Nehmen wir an, dass Sie ein benutzerdefiniertes Verknüpfungsfeld in ein Angebotsformular einfügen wollen; das Dokument soll "Angebot" heißen.
-<img alt="Select Document Type" class="screenshot" src="{{docs_base_url}}/assets/img/customize/custom-field-1.gif">
+<img alt="Select Document Type" class="screenshot" src="/docs/assets/img/customize/custom-field-1.gif">
### Feldbezeichnung einstellen
Die Bezeichnung des benutzerdefinierten Feldes wird basierend auf seinem Namen eingestellt. Wenn Sie ein benutzerdefiniertes Feld mit einem bestimmten Namen erstellen wollen, aber mit einer sich davon unterscheidenden Bezeichnung, dann sollten Sie erst die Bezeichnung angeben, da Sie den Feldnamen noch einstellen wollen. Nach dem Speichern des benutzerdefinierten Feldes können Sie die Feldbezeichnung wieder ändern.
-<img alt="Select Document Type" class="screenshot" src="{{docs_base_url}}/assets/img/customize/custom-field-2.gif">
+<img alt="Select Document Type" class="screenshot" src="/docs/assets/img/customize/custom-field-2.gif">
### Einstellen, nach welchem Element eingefügt werden soll ("Einfügen nach")
Diese Auswahl enthält alle bereits existierenden Felder des ausgewählten Formulars/des DocTypes. Ihr benutzerdefiniertes Feld wird nach dem Feld eingefügt, das Sie unter "Einfügen nach" auswählen.
-<img alt="Select Document Type" class="screenshot" src="{{docs_base_url}}/assets/img/customize/custom-field-3.png">
+<img alt="Select Document Type" class="screenshot" src="/docs/assets/img/customize/custom-field-3.png">
### Feldtyp auswählen
Klicken Sie hier um weitere Informationen über Feldtypen, die Sie bei einem benutzerdefinierten Feld auswählen können, zu erhalten.
-<img alt="Select Document Type" class="screenshot" src="{{docs_base_url}}/assets/img/customize/custom-field-4.png">
+<img alt="Select Document Type" class="screenshot" src="/docs/assets/img/customize/custom-field-4.png">
### Optionen einstellen
-Wenn Sie ein Verknüpfungsfeld erstellen,dann wird der Name des DocType, mit dem dieses Feld verknüpft werden soll, in das Feld "Optionen" eingefügt. Klicken Sie [hier]({{docs_base_url}}/user/manual/en/customize-erpnext/articles/creating-custom-link-field) um weitere Informationen darüber zu erhalten, wie man benutzerdefinierte Verknüpfungsfelder erstellt.
+Wenn Sie ein Verknüpfungsfeld erstellen,dann wird der Name des DocType, mit dem dieses Feld verknüpft werden soll, in das Feld "Optionen" eingefügt. Klicken Sie [hier](/docs/user/manual/en/customize-erpnext/articles/creating-custom-link-field) um weitere Informationen darüber zu erhalten, wie man benutzerdefinierte Verknüpfungsfelder erstellt.
-<img alt="Select Document Type" class="screenshot" src="{{docs_base_url}}/assets/img/customize/custom-field-5.png">
+<img alt="Select Document Type" class="screenshot" src="/docs/assets/img/customize/custom-field-5.png">
Wenn der Feldtyp als Auswahlfeld (Drop Down-Feld) angegeben ist, dann sollten alle möglichen Ergebnisse für dieses Feld im Optionen-Feld aufgelistet werden. Die möglichen Ergebnisse sollten alle in einer eigenen Zeile stehen.
@@ -69,7 +69,7 @@
5. Schreibgeschützt: Wenn diese Option aktiviert ist, kann das benutzerdefinierte Feld nicht geändert werden.
6. Beim Übertragen zulassen: Wenn diese Option ausgewählt wird, ist es erlaubt den Wert des Feldes zu ändern, wenn er in einer Transaktion übertragen wird.
-<img alt="Select Document Type" class="screenshot" src="{{docs_base_url}}/assets/img/customize/custom-field-6.png">
+<img alt="Select Document Type" class="screenshot" src="/docs/assets/img/customize/custom-field-6.png">
### Benutzerdefiniertes Feld löschen
diff --git a/erpnext/docs/user/manual/de/customize-erpnext/custom-scripts/custom-script-examples/custom-script-fetch-values-from-master.md b/erpnext/docs/user/manual/de/customize-erpnext/custom-scripts/custom-script-examples/custom-script-fetch-values-from-master.md
index c4e41ec..347a8a8 100644
--- a/erpnext/docs/user/manual/de/customize-erpnext/custom-scripts/custom-script-examples/custom-script-fetch-values-from-master.md
+++ b/erpnext/docs/user/manual/de/customize-erpnext/custom-scripts/custom-script-examples/custom-script-fetch-values-from-master.md
@@ -15,6 +15,6 @@
* * *
-Sehen Sie hierzu auch: [Wie man ein benutzerdefiniertes Skript erstellt]({{docs_base_url}}/user/manual/de/customize-erpnext/custom-scripts/).
+Sehen Sie hierzu auch: [Wie man ein benutzerdefiniertes Skript erstellt](/docs/user/manual/de/customize-erpnext/custom-scripts/).
{next}
diff --git a/erpnext/docs/user/manual/de/customize-erpnext/custom-scripts/index.md b/erpnext/docs/user/manual/de/customize-erpnext/custom-scripts/index.md
index 8e2e842..7c62ae5 100644
--- a/erpnext/docs/user/manual/de/customize-erpnext/custom-scripts/index.md
+++ b/erpnext/docs/user/manual/de/customize-erpnext/custom-scripts/index.md
@@ -5,7 +5,7 @@
> Einstellungen > Anpassen > Benutzerdefiniertes Skript
-<img alt="Custom Script" class="screenshot" src="{{docs_base_url}}/assets/img/customize/custom-script-1.png">
+<img alt="Custom Script" class="screenshot" src="/docs/assets/img/customize/custom-script-1.png">
### Themen
diff --git a/erpnext/docs/user/manual/de/customize-erpnext/customize-form.md b/erpnext/docs/user/manual/de/customize-erpnext/customize-form.md
index dbb9bc5..4060f43 100644
--- a/erpnext/docs/user/manual/de/customize-erpnext/customize-form.md
+++ b/erpnext/docs/user/manual/de/customize-erpnext/customize-form.md
@@ -13,13 +13,13 @@
Der Systemmanager findet die Option "Benutzerdefiniertes Formular" auch in der Liste Kundenauftrag (bzw. jedes andere Formular für diesen Sachverhalt).
-
+
### Schritt 2: Wählen Sie den DocType/das Dokument
Wählen Sie jetzt den DocType/das Dokument aus, welcher/s das anzupassende Feld enthält.
-
+
### Schritt 3: Bearbeiten Sie die Eigenschaften
@@ -27,7 +27,7 @@
Wenn Sie auf die Zeile "Projektname" klicken, werden Felder mit verschiedenen Eigenschaften für dieses Feld angezeigt. Um die Eigenschaft "Ist zwingend erforderlich" für ein Feld anzupassen gibt es ein Feld "Zwingend erfoderlich". Wenn Sie dieses Feld markieren, wird das Feld "Projektname" im Angebotsformular als zwingend erforderlich eingestellt.
-
+
Genauso können Sie folgende Eigenschaften eines Feldes anpassen.
@@ -40,7 +40,7 @@
### Schritt 4: Aktualisieren
-
+
Bevor Sie das Formular "Kundenauftrag" testen, sollten Sie den Cache leeren und den Inhalt des Browserfensters aktualiseren, um die Änderungen wirksam werden zu lassen.
@@ -71,7 +71,7 @@
</tr>
<tr>
<td>Feldtyp</td>
- <td>Klicken Sie <a href="{{docs_base_url}}/user/manual/en/customize-erpnext/articles/field-types">hier</a> um mehr über Feldtypen zu erfahren.</td>
+ <td>Klicken Sie <a href="/docs/user/manual/en/customize-erpnext/articles/field-types">hier</a> um mehr über Feldtypen zu erfahren.</td>
</tr>
<tr>
<td>Optionen</td>
diff --git a/erpnext/docs/user/manual/de/customize-erpnext/document-title.md b/erpnext/docs/user/manual/de/customize-erpnext/document-title.md
index 3b13208..5e5766b 100644
--- a/erpnext/docs/user/manual/de/customize-erpnext/document-title.md
+++ b/erpnext/docs/user/manual/de/customize-erpnext/document-title.md
@@ -24,14 +24,14 @@
> {customer_name} for {project}
<img class="screenshot" alt = "Bezeichnung anpassen"
- src="{{docs_base_url}}/assets/img/customize/customize-title.gif">
+ src="/docs/assets/img/customize/customize-title.gif">
### Fest eingestellte und bearbeitbare Bezeichnungen
Wenn Ihre Bezeichnung als Standard-Bezeichnung generiert wurde, kann sie vom Benutzer durch klicken auf den Kopf des Dokuments bearbeitet werden.
<img class="screenshot" alt = "Bearbeitbare Bezeichnung"
- src="{{docs_base_url}}/assets/img/customize/editable-title.gif">
+ src="/docs/assets/img/customize/editable-title.gif">
Wenn Sie eine fest eingestellte Bezeichnung haben wollen, können Sie dies als Regel unter **Optionen** einstellen. Auf diese Weise wird die Bezeichnung jedesmal automatisch aktualisiert, wenn das Dokument aktualisiert wird.
diff --git a/erpnext/docs/user/manual/de/customize-erpnext/hiding-modules-and-features.md b/erpnext/docs/user/manual/de/customize-erpnext/hiding-modules-and-features.md
index 831540b..3e3ebe0 100644
--- a/erpnext/docs/user/manual/de/customize-erpnext/hiding-modules-and-features.md
+++ b/erpnext/docs/user/manual/de/customize-erpnext/hiding-modules-and-features.md
@@ -7,7 +7,7 @@
> Einstellungen > Werkzeuge > Funktionen verbergen/einblenden
-
+
Aktivieren/Deaktivieren Sie die Funktionen, die Sie verwenden möchten bzw. nicht verwenden wollen und laden Sie Ihre Seite neu, damit die Änderungen übernommen werden.
@@ -19,7 +19,7 @@
> Einstellungen > Werkzeuge > Moduleinstellungen
-
+
> Anmerkung: Module werden automatisch für Benutzer verborgen, die keine Berechtigungen für Dokumente dieses Moduls haben. Beispiel: Wenn ein Benutzer keine Berechtigungen für Lieferantenauftrag, Materialanfrage und Lieferant hat, dann wird das Modul "Einkauf" automatisch verborgen.
diff --git a/erpnext/docs/user/manual/de/customize-erpnext/print-format.md b/erpnext/docs/user/manual/de/customize-erpnext/print-format.md
index 9448201..b23335d 100644
--- a/erpnext/docs/user/manual/de/customize-erpnext/print-format.md
+++ b/erpnext/docs/user/manual/de/customize-erpnext/print-format.md
@@ -14,13 +14,13 @@
> Einstellungen > Druck > Druckformate
-
+
Wählen Sie den Typ des Druckformats, welches Sie bearbeiten wollen, und klicken Sie auf die Schaltfläche "Kopieren" in der rechten Spalte. Es öffnet sich ein neues Druckformat mit der Einstellung NEIN für "für "Ist Standard" und Sie kännen das Druckformat bearbeiten.
Ein Druckformat zu bearbeiten ist eine langwierige Angelegenheit und Sie müssen etwas Grundwissen über HTML, CSS und Python mitbringen, um dies verstehen zu können. Wenn Sie Hilfe benötigen, erstellen Sie bitte im Forum eine Anfrage.
-Printformate werden auf der Serverseite über die [Programmiersprache Jinja Templating](http://jinja.pocoo.org/docs/templates/) erstellt. Alle Formulare haben Zugriff auf doc object, das Informationen über das Dokument enthält, welches formatiert wird. Sie können über das Frappe-Modul auch auf oft verwendete Hilfswerkzeuge zugreifen.
+Printformate werden auf der Serverseite über die [Programmiersprache Jinja Templating](http://jinja.pocoo.org/docs/templates/) erstellt. Alle Formulare haben Zugriff auf doc object, das Informationen über das Dokument enthält, welches formatiert wird. Sie können über das Frappé-Modul auch auf oft verwendete Hilfswerkzeuge zugreifen.
Zum Bearbeiten des Erscheinungsbildes bietet sich das [Bootstrap CSS Framework](http://getbootstrap.com/) an und Sie können die volle Bandbreite dieses Werkzeuges nutzen.
@@ -37,7 +37,7 @@
> Einstellungen > Druck und Branding > Druckeinstellungen
-
+
### Beispiel
diff --git a/erpnext/docs/user/manual/de/human-resources/appraisal.md b/erpnext/docs/user/manual/de/human-resources/appraisal.md
index ccec5b2..34a9217 100644
--- a/erpnext/docs/user/manual/de/human-resources/appraisal.md
+++ b/erpnext/docs/user/manual/de/human-resources/appraisal.md
@@ -7,13 +7,13 @@
#### Schritt 1: Wählen Sie eine Bewertungsvorlage aus
-<img class="screenshot" alt="Beurteilung" src="{{docs_base_url}}/assets/img/human-resources/appraisal.png">
+<img class="screenshot" alt="Beurteilung" src="/docs/assets/img/human-resources/appraisal.png">
Wenn Sie eine Vorlage ausgewählt haben, erscheint der restliche Teil des Formulars.
#### Schritt 2: Geben Sie die Daten des Mitarbeiters ein
-<img class="screenshot" alt="Beurteilung" src="{{docs_base_url}}/assets/img/human-resources/appraisal-employee.png">
+<img class="screenshot" alt="Beurteilung" src="/docs/assets/img/human-resources/appraisal-employee.png">
Wenn die Bewertungsvorlage fertig ist, können Sie für jeden Zeitraum Bewertungen aufzeichnen, über die Sie die Leistung nachverfolgen können. Sie können für jeden Paramter bis zu 5 Punkte vergeben und das System berechnet die Gesamtbeurteilung des Mitarbeiters.
diff --git a/erpnext/docs/user/manual/de/human-resources/attendance.md b/erpnext/docs/user/manual/de/human-resources/attendance.md
index 9dd45ab..9ec5f95 100644
--- a/erpnext/docs/user/manual/de/human-resources/attendance.md
+++ b/erpnext/docs/user/manual/de/human-resources/attendance.md
@@ -5,10 +5,10 @@
> Personalwesen > Dokumente > Anwesenheit > Neu
-<img class="screenshot" alt="Anwesenheit" src="{{docs_base_url}}/assets/img/human-resources/attendence.png">
+<img class="screenshot" alt="Anwesenheit" src="/docs/assets/img/human-resources/attendence.png">
Sie können einen monatlichen Report über Ihre Anwesenheiten erhalten, indem Sie zum "Monatlichen Anwesenheitsbericht" gehen.
-Sie können auch ganz einfach Anwesenheiten über das [Werkzeug zum Hochladen von Anwesenheiten]({{docs_base_url}}/user/manual/de/human-resources/tools/upload-attendance.html) hochladen.
+Sie können auch ganz einfach Anwesenheiten über das [Werkzeug zum Hochladen von Anwesenheiten](/docs/user/manual/de/human-resources/tools/upload-attendance.html) hochladen.
{next}
diff --git a/erpnext/docs/user/manual/de/human-resources/employee.md b/erpnext/docs/user/manual/de/human-resources/employee.md
index 7d39f6a..e599569 100644
--- a/erpnext/docs/user/manual/de/human-resources/employee.md
+++ b/erpnext/docs/user/manual/de/human-resources/employee.md
@@ -7,6 +7,6 @@
> Personalwesen > Dokumente > Mitarbeiter > Neu
-<img class="screenshot" alt="Mitarbeiter" src="{{docs_base_url}}/assets/img/human-resources/employee.png">
+<img class="screenshot" alt="Mitarbeiter" src="/docs/assets/img/human-resources/employee.png">
{next}
diff --git a/erpnext/docs/user/manual/de/human-resources/expense-claim.md b/erpnext/docs/user/manual/de/human-resources/expense-claim.md
index 3fda049..12e69bf 100644
--- a/erpnext/docs/user/manual/de/human-resources/expense-claim.md
+++ b/erpnext/docs/user/manual/de/human-resources/expense-claim.md
@@ -7,7 +7,7 @@
> Personalwesen > Dokumente > Aufwandsabrechnung > Neu
-<img class="screenshot" alt="Aufwandsabrechnung" src="{{docs_base_url}}/assets/img/human-resources/expense_claim.png">
+<img class="screenshot" alt="Aufwandsabrechnung" src="/docs/assets/img/human-resources/expense_claim.png">
Geben Sie die Mitarbeiter-ID, das Datum und die Auflistung der Ausgaben, die Sie zurückerstattet haben möchten, ein und "übertragen" Sie den Datensatz.
@@ -27,6 +27,6 @@
* Um eine Aufwandsabrechnung mit einer Aufgabe oder einem Projekt zu verknüpfen, geben Sie die Aufgabe oder das Projekt an, während Sie eine Aufwandsabrechnung erstellen.
-<img class="screenshot" alt="Aufwandsabrechnung - Verknüpfung zum Projekt" src="{{docs_base_url}}/assets/img/project/project_expense_claim_link.png">
+<img class="screenshot" alt="Aufwandsabrechnung - Verknüpfung zum Projekt" src="/docs/assets/img/project/project_expense_claim_link.png">
{next}
diff --git a/erpnext/docs/user/manual/de/human-resources/human-resources-reports.md b/erpnext/docs/user/manual/de/human-resources/human-resources-reports.md
index bf0e195..8cef87d 100644
--- a/erpnext/docs/user/manual/de/human-resources/human-resources-reports.md
+++ b/erpnext/docs/user/manual/de/human-resources/human-resources-reports.md
@@ -5,30 +5,30 @@
Der Bericht zur Mitarbeiter-Urlaubsauswertung zeigt Mitarbeiter und deren Urlaubsverteilung nach den unterschiedlichen Urlaubstypen an. Der Bericht richtet sich nach der Anzahl des genehmigten Urlaubs.
-<img alt="Mitarbeier-Urlaubskonto" class="screenshot" src="{{docs_base_url}}/assets/img/human-resources/employee-leave-balance-report.png">
+<img alt="Mitarbeier-Urlaubskonto" class="screenshot" src="/docs/assets/img/human-resources/employee-leave-balance-report.png">
### Mitarbeiter-Geburtstag
Dieser Bericht zeigt die Geburtstage der Mitarbeiter an.
-<img alt="Mitarbeiter-Geburtstag" class="screenshot" src="{{docs_base_url}}/assets/img/human-resources/employee-birthday-report.png">
+<img alt="Mitarbeiter-Geburtstag" class="screenshot" src="/docs/assets/img/human-resources/employee-birthday-report.png">
### Mitarbeiterinformationen
Dieser Bericht wichtige Informationen über Mitarbeiter in den Mitarbeiterdatensätzen.
-<img alt="Mitarbeiterinformation" class="screenshot" src="{{docs_base_url}}/assets/img/human-resources/employee-information-report.png">
+<img alt="Mitarbeiterinformation" class="screenshot" src="/docs/assets/img/human-resources/employee-information-report.png">
### Übersicht monatliche Gehälter
Dieser Bericht zeigt die Nettozahlungen der Mitarbeiter und deren einzelne Bestandteile im Überblick.
-<img alt="Übersicht monatliche Gehälter" class="screenshot" src="{{docs_base_url}}/assets/img/human-resources/monthly-salary-register-report.png">
+<img alt="Übersicht monatliche Gehälter" class="screenshot" src="/docs/assets/img/human-resources/monthly-salary-register-report.png">
### Monatliche Anwesenheitsliste
Dieser Bericht zeit die monatlichen Anwesenheiten ausgewählter Mitarbeiter im Überblick.
-<img alt="Monatliche Anwesenheitsliste" class="screenshot" src="{{docs_base_url}}/assets/img/human-resources/monthly-attendance-sheet-report.png">
+<img alt="Monatliche Anwesenheitsliste" class="screenshot" src="/docs/assets/img/human-resources/monthly-attendance-sheet-report.png">
{next}
diff --git a/erpnext/docs/user/manual/de/human-resources/job-applicant.md b/erpnext/docs/user/manual/de/human-resources/job-applicant.md
index 51b0359..62de801 100644
--- a/erpnext/docs/user/manual/de/human-resources/job-applicant.md
+++ b/erpnext/docs/user/manual/de/human-resources/job-applicant.md
@@ -1,13 +1,13 @@
# Bewerber
<span class="text-muted contributed-by">Beigetragen von CWT Connector & Wire Technology GmbH</span>
-Sie können eine Liste von Bewerbern auf [offene Stellen]({{docs_base_url}}/user/manual/de/human-resources/job-opening.html) verwalten.
+Sie können eine Liste von Bewerbern auf [offene Stellen](/docs/user/manual/de/human-resources/job-opening.html) verwalten.
Um einen neuen Bewerber anzulegen, gehen Sie zu:
> Personalwesen > Dokumente > Bewerber > Neu
-<img class="screenshot" alt="Bewerber" src="{{docs_base_url}}/assets/img/human-resources/job-applicant.png">
+<img class="screenshot" alt="Bewerber" src="/docs/assets/img/human-resources/job-applicant.png">
### Verknüpfung mit einem E-Mail-Konto
@@ -20,6 +20,6 @@
* Geben Sie die E-Mail-ID und das Passwort ein und aktivieren Sie "Eingehend aktivieren".
* Unter "Anhängen an" geben Sie "Bewerber" an.
-<img class="screenshot" alt="E-Mail-Konto" src="{{docs_base_url}}/assets/img/human-resources/email-account.png">
+<img class="screenshot" alt="E-Mail-Konto" src="/docs/assets/img/human-resources/email-account.png">
{next}
diff --git a/erpnext/docs/user/manual/de/human-resources/job-opening.md b/erpnext/docs/user/manual/de/human-resources/job-opening.md
index b14516e..0231df6 100644
--- a/erpnext/docs/user/manual/de/human-resources/job-opening.md
+++ b/erpnext/docs/user/manual/de/human-resources/job-opening.md
@@ -7,6 +7,6 @@
> Personalwesen > Dokumente > Offene Stellen > Neu
-<img class="screenshot" alt="Offene Stellen" src="{{docs_base_url}}/assets/img/human-resources/job-opening.png">
+<img class="screenshot" alt="Offene Stellen" src="/docs/assets/img/human-resources/job-opening.png">
{next}
diff --git a/erpnext/docs/user/manual/de/human-resources/leave-application.md b/erpnext/docs/user/manual/de/human-resources/leave-application.md
index fc16d83..faf5b6e 100644
--- a/erpnext/docs/user/manual/de/human-resources/leave-application.md
+++ b/erpnext/docs/user/manual/de/human-resources/leave-application.md
@@ -5,17 +5,17 @@
> Personalwesen > Dokumente > Urlaubsantrag > Neu
-<img class="screenshot" alt="Urlaubsantrag" src="{{docs_base_url}}/assets/img/human-resources/leave-application.png">
+<img class="screenshot" alt="Urlaubsantrag" src="/docs/assets/img/human-resources/leave-application.png">
### Urlaubsbewilliger einstellen
* Ein Urlaubsgenehmiger ist ein Benutzer der Urlaubsanträge eines Mitarbeiters bewilligen kann.
* Sie müssen eine Liste von Urlaubsbewilligern für einen Mitarbeiter in den Mitarbeiterstammdaten angeben.
-<img class="screenshot" alt="Urlaubsgenehmiger" src="{{docs_base_url}}/assets/img/human-resources/employee-leave-approver.png">
+<img class="screenshot" alt="Urlaubsgenehmiger" src="/docs/assets/img/human-resources/employee-leave-approver.png">
-> Tipp: Wenn Sie möchten, dass alle Benutzer ihre Urlaubsanträge selbst erstellen, können Sie in den Einstellungen zur Urlaubsgenehmigung Ihre Mitarbeiter-IDs als so einstellen, dass sie für die Regel zutreffend sind. Für weiterführende Informationen kesen Sie hierzu die Diskussion zum Thema [Einstellungen zu Genehmigungen]({{docs_base_url}}/user/manual/de/setting-up/users-and-permissions/user-permissions.html).
+> Tipp: Wenn Sie möchten, dass alle Benutzer ihre Urlaubsanträge selbst erstellen, können Sie in den Einstellungen zur Urlaubsgenehmigung Ihre Mitarbeiter-IDs als so einstellen, dass sie für die Regel zutreffend sind. Für weiterführende Informationen kesen Sie hierzu die Diskussion zum Thema [Einstellungen zu Genehmigungen](/docs/user/manual/de/setting-up/users-and-permissions/user-permissions.html).
-Um einem Mitarbeiter Urlaub zuzuteilen, kreuzen Sie [Urlaubszuteilung]({{docs_base_url}}/user/manual/de/human-resources/setup/leave-allocation.html) an.
+Um einem Mitarbeiter Urlaub zuzuteilen, kreuzen Sie [Urlaubszuteilung](/docs/user/manual/de/human-resources/setup/leave-allocation.html) an.
{next}
diff --git a/erpnext/docs/user/manual/de/human-resources/offer-letter.md b/erpnext/docs/user/manual/de/human-resources/offer-letter.md
index 5566071..e545774 100644
--- a/erpnext/docs/user/manual/de/human-resources/offer-letter.md
+++ b/erpnext/docs/user/manual/de/human-resources/offer-letter.md
@@ -7,12 +7,12 @@
> Personalwesen > Dokumente > Angebotsschreiben > Neu
-<img class="screenshot" alt="Angebotsschreiben" src="{{docs_base_url}}/assets/img/human-resources/offer-letter.png">
+<img class="screenshot" alt="Angebotsschreiben" src="/docs/assets/img/human-resources/offer-letter.png">
-> Anmerkung: Angebotsschreiben kann nur zu einem [Bewerber]({{docs_base_url}}/user/manual/de/human-resources/job-applicant.html) erstellt werden.
+> Anmerkung: Angebotsschreiben kann nur zu einem [Bewerber](/docs/user/manual/de/human-resources/job-applicant.html) erstellt werden.
Es gibt ein vordefiniertes Druckformat zum Angebotsschreiben.
-<img class="screenshot" alt="Angebotsschreiben" src="{{docs_base_url}}/assets/img/human-resources/offer-letter-print.png">
+<img class="screenshot" alt="Angebotsschreiben" src="/docs/assets/img/human-resources/offer-letter-print.png">
{next}
diff --git a/erpnext/docs/user/manual/de/human-resources/salary-and-payroll.md b/erpnext/docs/user/manual/de/human-resources/salary-and-payroll.md
index a8eb33a..f47dda2 100644
--- a/erpnext/docs/user/manual/de/human-resources/salary-and-payroll.md
+++ b/erpnext/docs/user/manual/de/human-resources/salary-and-payroll.md
@@ -43,7 +43,7 @@
#### Abbildung 1: Gehaltsstruktur
-<img class="screenshot" alt="Gehaltsstruktur" src="{{docs_base_url}}/assets/img/human-resources/salary-structure.png">
+<img class="screenshot" alt="Gehaltsstruktur" src="/docs/assets/img/human-resources/salary-structure.png">
### In der Gehaltsstruktur
@@ -67,7 +67,7 @@
#### Abbildung 2: Gehaltsabrechnung
-<img class="screenshot" alt="Lohnzettel" src="{{docs_base_url}}/assets/img/human-resources/salary-slip.png">
+<img class="screenshot" alt="Lohnzettel" src="/docs/assets/img/human-resources/salary-slip.png">
Sie können auch Gehaltsabrechnungen für mehrere verschiedene Mitarbeiter über "Gehaltsabrechnung bearbeiten" anlegen.
@@ -75,7 +75,7 @@
#### Abbildung 3: Gehaltsabrechnung durchführen
-<img class="screenshot" alt="Gehaltsabrechnung durchführen" src="{{docs_base_url}}/assets/img/human-resources/process-payroll.png">
+<img class="screenshot" alt="Gehaltsabrechnung durchführen" src="/docs/assets/img/human-resources/process-payroll.png">
Beim Bearbeiten einer Gehaltsabrechnung
diff --git a/erpnext/docs/user/manual/de/human-resources/setup/branch.md b/erpnext/docs/user/manual/de/human-resources/setup/branch.md
index f6913a7..1328d73 100644
--- a/erpnext/docs/user/manual/de/human-resources/setup/branch.md
+++ b/erpnext/docs/user/manual/de/human-resources/setup/branch.md
@@ -3,6 +3,6 @@
Filialen Ihres Unternehmens
-<img class="screenshot" alt="Filiale" src="{{docs_base_url}}/assets/img/human-resources/branch.png">
+<img class="screenshot" alt="Filiale" src="/docs/assets/img/human-resources/branch.png">
{next}
diff --git a/erpnext/docs/user/manual/de/human-resources/setup/deduction-type.md b/erpnext/docs/user/manual/de/human-resources/setup/deduction-type.md
index ddd3e9d..e50b51f 100644
--- a/erpnext/docs/user/manual/de/human-resources/setup/deduction-type.md
+++ b/erpnext/docs/user/manual/de/human-resources/setup/deduction-type.md
@@ -7,6 +7,6 @@
> Personalwesen > Einstellungen > Abzugsart > Neu
-<img class="screenshot" alt="Abzugsart" src="{{docs_base_url}}/assets/img/human-resources/deduction-type.png">
+<img class="screenshot" alt="Abzugsart" src="/docs/assets/img/human-resources/deduction-type.png">
{next}
diff --git a/erpnext/docs/user/manual/de/human-resources/setup/department.md b/erpnext/docs/user/manual/de/human-resources/setup/department.md
index c54928b..532174f 100644
--- a/erpnext/docs/user/manual/de/human-resources/setup/department.md
+++ b/erpnext/docs/user/manual/de/human-resources/setup/department.md
@@ -3,6 +3,6 @@
Abteilungen Ihres Unternehmens
-<img class="screenshot" alt="Abteilung" src="{{docs_base_url}}/assets/img/human-resources/department.png">
+<img class="screenshot" alt="Abteilung" src="/docs/assets/img/human-resources/department.png">
{next}
diff --git a/erpnext/docs/user/manual/de/human-resources/setup/designation.md b/erpnext/docs/user/manual/de/human-resources/setup/designation.md
index dee6658..0d01588 100644
--- a/erpnext/docs/user/manual/de/human-resources/setup/designation.md
+++ b/erpnext/docs/user/manual/de/human-resources/setup/designation.md
@@ -3,6 +3,6 @@
Stellenbezeichnungen in Ihrem Unternehmen
-<img class="screenshot" alt="Stellenbezeichnung" src="{{docs_base_url}}/assets/img/human-resources/designation.png">
+<img class="screenshot" alt="Stellenbezeichnung" src="/docs/assets/img/human-resources/designation.png">
{next}
diff --git a/erpnext/docs/user/manual/de/human-resources/setup/earning-type.md b/erpnext/docs/user/manual/de/human-resources/setup/earning-type.md
index d79e6bb..51eb375 100644
--- a/erpnext/docs/user/manual/de/human-resources/setup/earning-type.md
+++ b/erpnext/docs/user/manual/de/human-resources/setup/earning-type.md
@@ -7,6 +7,6 @@
> Personalwesen > Einstellungen > Einkommensart > Neu
-<img class="screenshot" alt="Einkommensart" src="{{docs_base_url}}/assets/img/human-resources/earning-type.png">
+<img class="screenshot" alt="Einkommensart" src="/docs/assets/img/human-resources/earning-type.png">
{next}
diff --git a/erpnext/docs/user/manual/de/human-resources/setup/employment-type.md b/erpnext/docs/user/manual/de/human-resources/setup/employment-type.md
index 9c334cf..c9d6ce2 100644
--- a/erpnext/docs/user/manual/de/human-resources/setup/employment-type.md
+++ b/erpnext/docs/user/manual/de/human-resources/setup/employment-type.md
@@ -3,6 +3,6 @@
Verschiedene Beschäftigungsverträge, die Sie mit Ihren Mitarbeitern abgeschlossen haben.
-<img class="screenshot" alt="Art der Beschäftigung" src="{{docs_base_url}}/assets/img/human-resources/employment-type.png">
+<img class="screenshot" alt="Art der Beschäftigung" src="/docs/assets/img/human-resources/employment-type.png">
{next}
diff --git a/erpnext/docs/user/manual/de/human-resources/setup/holyday-list.md b/erpnext/docs/user/manual/de/human-resources/setup/holyday-list.md
index cec5110..161a867 100644
--- a/erpnext/docs/user/manual/de/human-resources/setup/holyday-list.md
+++ b/erpnext/docs/user/manual/de/human-resources/setup/holyday-list.md
@@ -3,6 +3,6 @@
Sie können Urlaub für ein bestimmtes Jahr über die Urlaubsübersicht planen.
-<img class="screenshot" alt="Urlaubsübersicht" src="{{docs_base_url}}/assets/img/human-resources/holiday-list.png">
+<img class="screenshot" alt="Urlaubsübersicht" src="/docs/assets/img/human-resources/holiday-list.png">
{next}
diff --git a/erpnext/docs/user/manual/de/human-resources/setup/hr-settings.md b/erpnext/docs/user/manual/de/human-resources/setup/hr-settings.md
index c454598..8e2e5e2 100644
--- a/erpnext/docs/user/manual/de/human-resources/setup/hr-settings.md
+++ b/erpnext/docs/user/manual/de/human-resources/setup/hr-settings.md
@@ -3,6 +3,6 @@
Globale Einstellungen zu Dokumenten des Personalwesens
-<img class="screenshot" alt="Einstellungen zum Personalwesen" src="{{docs_base_url}}/assets/img/human-resources/hr-settings.png">
+<img class="screenshot" alt="Einstellungen zum Personalwesen" src="/docs/assets/img/human-resources/hr-settings.png">
{next}
diff --git a/erpnext/docs/user/manual/de/human-resources/setup/leave-allocation.md b/erpnext/docs/user/manual/de/human-resources/setup/leave-allocation.md
index 2e80ddf..d49121b 100644
--- a/erpnext/docs/user/manual/de/human-resources/setup/leave-allocation.md
+++ b/erpnext/docs/user/manual/de/human-resources/setup/leave-allocation.md
@@ -3,8 +3,8 @@
Hilft Ihnen Urlaub bestimmten Mitarbeitern zuzuteilen
-<img class="screenshot" alt="Urlaubszuordnung" src="{{docs_base_url}}/assets/img/human-resources/leave-allocation.png">
+<img class="screenshot" alt="Urlaubszuordnung" src="/docs/assets/img/human-resources/leave-allocation.png">
-Um mehreren verschhiedenen Mitarbeitern Urlaub zuzuteilen, nutzen Sie das [Urlaubszuordnungs-Werkzeug]({{docs_base_url}}/user/manual/de/human-resources/tools/leave-allocation-tool.html).
+Um mehreren verschhiedenen Mitarbeitern Urlaub zuzuteilen, nutzen Sie das [Urlaubszuordnungs-Werkzeug](/docs/user/manual/de/human-resources/tools/leave-allocation-tool.html).
{next}
diff --git a/erpnext/docs/user/manual/de/human-resources/setup/leave-type.md b/erpnext/docs/user/manual/de/human-resources/setup/leave-type.md
index ece1c58..97b5af8 100644
--- a/erpnext/docs/user/manual/de/human-resources/setup/leave-type.md
+++ b/erpnext/docs/user/manual/de/human-resources/setup/leave-type.md
@@ -3,7 +3,7 @@
Geben Sie den Urlaubstyp an, der Mitarbeitern zugeordnet werden kann.
-<img class="screenshot" alt="Urlaubstyp" src="{{docs_base_url}}/assets/img/human-resources/leave-type.png">
+<img class="screenshot" alt="Urlaubstyp" src="/docs/assets/img/human-resources/leave-type.png">
* "Maximale zulässige Urlaubstage" gibt die Maximalanzahl von Tagen dieses Urlaubstyps an, die zusammen genommen werden können.
* "Ist unbezahlter Urlaub" gibt an, dass es sich um unbezahlten Urlaub handelt.
diff --git a/erpnext/docs/user/manual/de/human-resources/tools/leave-allocation-tool.md b/erpnext/docs/user/manual/de/human-resources/tools/leave-allocation-tool.md
index de109f4..a4a7862 100644
--- a/erpnext/docs/user/manual/de/human-resources/tools/leave-allocation-tool.md
+++ b/erpnext/docs/user/manual/de/human-resources/tools/leave-allocation-tool.md
@@ -3,6 +3,6 @@
Das Urlaubszuordnungs-Werkzeug hilft Ihnen dabei eine bestimmte Menge an Urlaub einem Mitarbeiter zuzuteilen.
-<img class="screenshot" alt="Urlaubsantrag" src="{{docs_base_url}}/assets/img/human-resources/leave-application.png">
+<img class="screenshot" alt="Urlaubsantrag" src="/docs/assets/img/human-resources/leave-application.png">
{next}
diff --git a/erpnext/docs/user/manual/de/human-resources/tools/upload-attendance.md b/erpnext/docs/user/manual/de/human-resources/tools/upload-attendance.md
index 3f94e83..ba351b5 100644
--- a/erpnext/docs/user/manual/de/human-resources/tools/upload-attendance.md
+++ b/erpnext/docs/user/manual/de/human-resources/tools/upload-attendance.md
@@ -7,6 +7,6 @@
> Personalwesen > Werkzeuge > Anwesenheit hochladen
-<img class="screenshot" alt="Anwesenheit hochladen" src="{{docs_base_url}}/assets/img/human-resources/attendence-upload.png">
+<img class="screenshot" alt="Anwesenheit hochladen" src="/docs/assets/img/human-resources/attendence-upload.png">
{next}
diff --git a/erpnext/docs/user/manual/de/introduction/getting-started-with-erpnext.md b/erpnext/docs/user/manual/de/introduction/getting-started-with-erpnext.md
index b23be11..cba0442 100644
--- a/erpnext/docs/user/manual/de/introduction/getting-started-with-erpnext.md
+++ b/erpnext/docs/user/manual/de/introduction/getting-started-with-erpnext.md
@@ -11,7 +11,7 @@
### 2\. Richten Sie sich ein kostenloses Konto bei ERPNext.com ein
-ERPNext.com wird von der Organisation (Frappe), die ERPNext veröffentlicht, verwaltet. Sie können sich ein eigenes Konto anlegen, indem Sie sich auf der [Internetseite registrieren](https://erpnext.com).
+ERPNext.com wird von der Organisation (Frappé), die ERPNext veröffentlicht, verwaltet. Sie können sich ein eigenes Konto anlegen, indem Sie sich auf der [Internetseite registrieren](https://erpnext.com).
Sie können Sich außerdem auch dazu entscheiden, Ihre Software auf ERPNext.com zu speichern, wenn Sie einen Hostingvertrag abschliessen. Das ist eine Möglichkeit, wie Sie die Organisation, die ERPNext entwickelt und verbessert, unterstützen können. In diesem Fall bekommen Sie zusätzlich direkten Support bei Hostingfragen.
@@ -23,6 +23,6 @@
### 4\. Installieren Sie ERPNext auf Ihrem Unix/Linux/Mac-Rechner
-Wenn Sie sich mit der Installation von Anwendungen auf *nix-Plattformen auskennen, lesen Sie die Anweisungen zur Installation des [Frappe Bench](https://github.com/frappe/bench).
+Wenn Sie sich mit der Installation von Anwendungen auf *nix-Plattformen auskennen, lesen Sie die Anweisungen zur Installation des [Frappé Bench](https://github.com/frappe/bench).
{next}
diff --git a/erpnext/docs/user/manual/de/introduction/key-workflows.md b/erpnext/docs/user/manual/de/introduction/key-workflows.md
index ac5392c..1840479 100644
--- a/erpnext/docs/user/manual/de/introduction/key-workflows.md
+++ b/erpnext/docs/user/manual/de/introduction/key-workflows.md
@@ -4,7 +4,7 @@
Dieses Diagramm stellt dar, wie ERPNext die Informationen und Vorgänge in Ihrem Unternehmen über Schlüsselfunktionen nachverfolgt. Dieses Diagramm gibt nicht alle Funktionalitäten von ERPNext wieder.
-<img class="screenshot" alt="Hohe Auflösung" src="{{docs_base_url}}/assets/img/setup/overview.png">
+<img class="screenshot" alt="Hohe Auflösung" src="/docs/assets/img/setup/overview.png">
_Anmerkung: Nicht alle Schritte sind zwingend erforderlich. ERPNext erlaubt es Ihnen nach eigenem Gutdünken Schritte auszulassen, wenn Sie den Prozess vereinfachen wollen._
diff --git a/erpnext/docs/user/manual/de/introduction/the-champion.md b/erpnext/docs/user/manual/de/introduction/the-champion.md
index 912c252..b04de65 100644
--- a/erpnext/docs/user/manual/de/introduction/the-champion.md
+++ b/erpnext/docs/user/manual/de/introduction/the-champion.md
@@ -1,7 +1,7 @@
# Der Champion
<span class="text-muted contributed-by">Beigetragen von CWT Connector & Wire Technology GmbH</span>
-<img alt="Champion" class="screenshot" src="{{docs_base_url}}/assets/img/setup/implementation-image.png">
+<img alt="Champion" class="screenshot" src="/docs/assets/img/setup/implementation-image.png">
Wir haben uns in den letzten Jahren dutzende von ERP-Umsetzungen angesehen, und wir haben erkannt, dass eine erfolgreiche Umsetzung viel mit schwer greifbaren Dingen und persönlichen Einstellungen zu tun hat.
diff --git a/erpnext/docs/user/manual/de/manufacturing/bill-of-materials.md b/erpnext/docs/user/manual/de/manufacturing/bill-of-materials.md
index 55501e6..52ab420 100644
--- a/erpnext/docs/user/manual/de/manufacturing/bill-of-materials.md
+++ b/erpnext/docs/user/manual/de/manufacturing/bill-of-materials.md
@@ -7,11 +7,11 @@
>Fertigung > Dokumente > Stückliste > Neue Stückliste
-<img class="screenshot" alt="Task" src="{{docs_base_url}}/assets/img/manufacturing/bom.png">
+<img class="screenshot" alt="Task" src="/docs/assets/img/manufacturing/bom.png">
Um Arbeitsgänge hinzuzufügen, wählen Sie "Mit Arbeitsgängen". Die Übersicht der Arbeitsgänge erscheint.
-<img class="screenshot" alt="Task" src="{{docs_base_url}}/assets/img/manufacturing/bom-operations.png">
+<img class="screenshot" alt="Task" src="/docs/assets/img/manufacturing/bom-operations.png">
* Wählen Sie den Artikel für den Sie eine Stückliste erstellen wollen.
* Fügen Sie die Arbeitsgänge, die Sie durchlaufen müssen, um diesen Artikel zu fertigen, in der Tabelle der Arbeitsgänge hinzu. Für jeden Arbeitsgang werden Sie nach einem Arbeitsplatz gefragt. Wenn nötig, müssen Sie neue Arbeitsplätze anlegen.
@@ -23,16 +23,16 @@
* Der Bereich Kostenkalkulation der Stückliste gibt einen ungefähren Wert der Produktionskosten eines Artikels wieder
* Fügen Sie die Liste der Artikel, die Sie für jeden Arbeitsgang benötigen, mit der entsprechenden Menge hinzu. Bei dem Artikel kann es sich um einen Zukaufartikel oder um eine Unterfertigung mit eigener Stückliste handeln. Wenn der Artikel in der Zeile ein gefertigter Artikel ist und mehrere verschiedene Stücklisten hat, wählen Sie die passende Stückliste aus. Sie können auch festlegen, ob ein Teil des Artikels zu Ausschuss wird.
-<img class="screenshot" alt="Kostenkalkulation" src="{{docs_base_url}}/assets/img/manufacturing/bom-costing.png">
+<img class="screenshot" alt="Kostenkalkulation" src="/docs/assets/img/manufacturing/bom-costing.png">
* Diese Kosten können über die Schaltfläche "Kosten aktualisieren" aktualisiert werden.
-<img class="screenshot" alt="Kosten aktualisieren" src="{{docs_base_url}}/assets/img/manufacturing/bom-update-cost.png">
+<img class="screenshot" alt="Kosten aktualisieren" src="/docs/assets/img/manufacturing/bom-update-cost.png">
### Benötigtes Material (aufgelöst)
Diese Tabelle listet alles Material auf, welches benötigt wird um den Artikel zu fertigen. Sie zieht weiterhin Unterbaugruppen mit Menge an.
-<img class="screenshot" alt="Aufgelöste Ansicht" src="{{docs_base_url}}/assets/img/manufacturing/bom-exploded.png">
+<img class="screenshot" alt="Aufgelöste Ansicht" src="/docs/assets/img/manufacturing/bom-exploded.png">
{next}
diff --git a/erpnext/docs/user/manual/de/manufacturing/operation.md b/erpnext/docs/user/manual/de/manufacturing/operation.md
index 07ca860..cc16375 100644
--- a/erpnext/docs/user/manual/de/manufacturing/operation.md
+++ b/erpnext/docs/user/manual/de/manufacturing/operation.md
@@ -9,6 +9,6 @@
> Fertigung > Dokumente > Arbeitsgang > Neu
-<img class="screenshot" alt="Arbeitsgang" src="{{docs_base_url}}/assets/img/manufacturing/operation.png">
+<img class="screenshot" alt="Arbeitsgang" src="/docs/assets/img/manufacturing/operation.png">
{next}
diff --git a/erpnext/docs/user/manual/de/manufacturing/production-order.md b/erpnext/docs/user/manual/de/manufacturing/production-order.md
index e6ddd7b..d93391a 100644
--- a/erpnext/docs/user/manual/de/manufacturing/production-order.md
+++ b/erpnext/docs/user/manual/de/manufacturing/production-order.md
@@ -7,7 +7,7 @@
> Fertigung > Dokumente > Fertigungsauftrag > Neu
-<img class="screenshot" alt="Fertigungsauftrag" src="{{docs_base_url}}/assets/img/manufacturing/production-order.png">
+<img class="screenshot" alt="Fertigungsauftrag" src="/docs/assets/img/manufacturing/production-order.png">
### Einen Fertigungsauftrag erstellen
@@ -23,11 +23,11 @@
* Als Voreinstellung zieht das System Arbeitsplätze und die Dauer von Arbeitsgängen aus der gewählten Stückliste.
-<img class="screenshot" alt="Fertigungsauftrag - Arbeitsgänge" src="{{docs_base_url}}/assets/img/manufacturing/PO-operations.png">
+<img class="screenshot" alt="Fertigungsauftrag - Arbeitsgänge" src="/docs/assets/img/manufacturing/PO-operations.png">
* Wenn Sie den Arbeitsplatz für einen bestimmten Arbeitsgang im Fertigungsauftrag neu zuordnen möchten, können Sie das tun, bevor Sie den Fertigungsauftrag übertragen.
-<img class="screenshot" alt="Fertigungsauftrag - Arbeitsgänge neu zuordnen" src="{{docs_base_url}}/assets/img/manufacturing/PO-reassigning-operations.png">
+<img class="screenshot" alt="Fertigungsauftrag - Arbeitsgänge neu zuordnen" src="/docs/assets/img/manufacturing/PO-reassigning-operations.png">
* Wählen Sie den betreffenden Arbeitsgang aus und ändern Sie seinen Arbeitsplatz.
* Sie können auch die Dauer des Arbeitsgangs ändern.
@@ -42,28 +42,28 @@
* Das erstellt eine Lagerbuchung mit allen Artikeln, die benötigt werden, um diesen Fertigungsauftrag abzuschliessen. Die Artikel werden an das Fertigungslager übertragen (dieser Prozess fügt basierend auf Ihren Einstellungen Unterbaugruppen mit Stückliste als EINEN Artikel hinzu oder löst die Unterpunkte auf).
* Klicken Sie auf "Material der Fertigung übergeben".
-<img class="screenshot" alt="Materialübertrag" src="{{docs_base_url}}/assets/img/manufacturing/PO-material-transfer.png">
+<img class="screenshot" alt="Materialübertrag" src="/docs/assets/img/manufacturing/PO-material-transfer.png">
* Geben Sie die Menge des Materials an, das übertragen werden soll.
-<img class="screenshot" alt="Materialübertrag - Menge" src="{{docs_base_url}}/assets/img/manufacturing/PO-material-transfer-qty.png">
+<img class="screenshot" alt="Materialübertrag - Menge" src="/docs/assets/img/manufacturing/PO-material-transfer-qty.png">
* Übertragen Sie die Lagerbuchung.
-<img class="screenshot" alt="Lagerbuchung zum Kundenauftrag" src="{{docs_base_url}}/assets/img/manufacturing/PO-SE-for-material-transfer.png">
+<img class="screenshot" alt="Lagerbuchung zum Kundenauftrag" src="/docs/assets/img/manufacturing/PO-SE-for-material-transfer.png">
* Das an die Fertigung übertragene Material wird basierend auf der Lagerbuchung im Fertigungsauftrag aktualisiert.
-<img class="screenshot" alt="Lagerbuchung zum Fertigungsauftrag" src="{{docs_base_url}}/assets/img/manufacturing/PO-material-transfer-updated.png">
+<img class="screenshot" alt="Lagerbuchung zum Fertigungsauftrag" src="/docs/assets/img/manufacturing/PO-material-transfer-updated.png">
### Zeitprotokoll erstellen
-* Der Fortschritt des Fertigungsauftrages kann über ein [Zeitprotokoll]<img class="screenshot" alt="Make TL against PO" src="{{docs_base_url}}/assets/img/manufacturing/PO-operations-make-tl.png"> mitprotokolliert werden.
+* Der Fortschritt des Fertigungsauftrages kann über ein [Zeitprotokoll]<img class="screenshot" alt="Make TL against PO" src="/docs/assets/img/manufacturing/PO-operations-make-tl.png"> mitprotokolliert werden.
* Zeitprotokolle werden zu den Arbeitsgängen des Fertigungsauftrages erstellt.
* Vorlagen für Zeitprotokolle werden für die eingeplanten Arbeitsgänge zum Zeitpunkt des Übertragens des Fertigungsauftrages erstellt.
* Um weitere Zeitprotokolle zu einem Arbeitsgang zu erstellen, wählen Sie "Zeitprotokoll erstellen" im betreffenden Arbeitsgang aus.
-<img class="screenshot" alt="Zeitprotokoll zum Fertigungsauftrag erstellen" src="{{docs_base_url}}/assets/img/manufacturing/PO-operations-make-tl.png">
+<img class="screenshot" alt="Zeitprotokoll zum Fertigungsauftrag erstellen" src="/docs/assets/img/manufacturing/PO-operations-make-tl.png">
### Fertige Erzeugnisse aktualisieren
@@ -71,11 +71,11 @@
* Das erstellt eine Lagerbuchung, welche alle Unterartikel vom Fertigungslager abzieht und dem Lager "Fertige Erzeugnisse" gutschreibt.
* Klicken Sie auf "Fertige Erzeugnisse aktualisieren".
-<img class="screenshot" alt="Fertigerzeugnisse aktualiseren" src="{{docs_base_url}}/assets/img/manufacturing/PO-FG-update.png">
+<img class="screenshot" alt="Fertigerzeugnisse aktualiseren" src="/docs/assets/img/manufacturing/PO-FG-update.png">
* Geben Sie die Menge des übertragenen Materials an.
-<img class="screenshot" alt="Menge der Fertigerzeugnisse aktualisieren" src="{{docs_base_url}}/assets/img/manufacturing/PO-FG-update-qty.png">
+<img class="screenshot" alt="Menge der Fertigerzeugnisse aktualisieren" src="/docs/assets/img/manufacturing/PO-FG-update-qty.png">
>Tipp: Sie können einen Fertigungsauftrag auch teilweise fertig stellen, indem Sie über eine Lagerbuchung das Lager Fertige Erzeugnisse aktualisieren.
@@ -90,7 +90,7 @@
4. Fertigerzeugnisse aktualisieren: Dieser Schritt erstellt eine Lagerbuchung, welche alle Unterartikel vom Fertigungslager abzieht und dem Lager Fertige Erzeugnisse hinzufügt.
5. Um die zum Fertigungsauftrag erstellten Zeitprotokolle anzusehen, klicken Sie auf "Zeitprotokolle anzeigen".
-<img class="screenshot" alt="Fertigungsauftrag anhalten" src="{{docs_base_url}}/assets/img/manufacturing/PO-stop.png">
+<img class="screenshot" alt="Fertigungsauftrag anhalten" src="/docs/assets/img/manufacturing/PO-stop.png">
* Sie können auch einen angehaltenen Fertigungsauftrag wieder weiter laufen lassen.
diff --git a/erpnext/docs/user/manual/de/manufacturing/setup/manufacturing-settings.md b/erpnext/docs/user/manual/de/manufacturing/setup/manufacturing-settings.md
index 8f77716..fdf60b6 100644
--- a/erpnext/docs/user/manual/de/manufacturing/setup/manufacturing-settings.md
+++ b/erpnext/docs/user/manual/de/manufacturing/setup/manufacturing-settings.md
@@ -5,7 +5,7 @@
> Fertigung > Einstellungen > Fertigungseinstellungen
-<img class="screenshot" alt="Fertigungseinstellungen" src="{{docs_base_url}}/assets/img/manufacturing/manufacturing-settings.png">
+<img class="screenshot" alt="Fertigungseinstellungen" src="/docs/assets/img/manufacturing/manufacturing-settings.png">
Überstunden zulassen: Hier können Sie angeben, ob an Arbeitsplätzen Überstunden erlaubt sind (wichtig zur Planung von Arbeitsgängen außerhalb der Betriebsstunden).
diff --git a/erpnext/docs/user/manual/de/manufacturing/subcontracting.md b/erpnext/docs/user/manual/de/manufacturing/subcontracting.md
index 2796610..3c0e36f 100644
--- a/erpnext/docs/user/manual/de/manufacturing/subcontracting.md
+++ b/erpnext/docs/user/manual/de/manufacturing/subcontracting.md
@@ -11,7 +11,7 @@
2. Erstellen Sie ein Lager für den Lieferanten, damit Sie die übergebenen Artikel nachverfolgen können (möglicherweise geben Sie ja Artikel im Wert einer Monatslieferung außer Haus).
3. Stellen Sie für den bearbeiteten Artikel und der Artikelvorlage den Punkt "Ist Fremdvergabe" auf JA ein.
-<img class="screenshot" alt="Fremdvergabe" src="{{docs_base_url}}/assets/img/manufacturing/subcontract.png">
+<img class="screenshot" alt="Fremdvergabe" src="/docs/assets/img/manufacturing/subcontract.png">
**Schritt 1:** Erstellen Sie für den bearbeiteten Artikel eine Stückliste, die den unbearbeiteten Artikel als Unterartikel enthält. Beispiel: Wenn Sie einen Stift herstellen, wird der bearbeitete Stift mit der Stückliste benannt, wbei der Tintentank, der Knopf und andere Artikel, die in die Fertigung eingehen als Unterartikel verwaltet werden.
diff --git a/erpnext/docs/user/manual/de/manufacturing/tools/bom-replace-tool.md b/erpnext/docs/user/manual/de/manufacturing/tools/bom-replace-tool.md
index 922c32a..dbe772b 100644
--- a/erpnext/docs/user/manual/de/manufacturing/tools/bom-replace-tool.md
+++ b/erpnext/docs/user/manual/de/manufacturing/tools/bom-replace-tool.md
@@ -34,7 +34,7 @@
Um die Stückliste, bei der die Zentraleinheit als Rohmaterial enthalten ist, in der Stückliste des fertigen Produktes zu aktualisieren, können Sie das Stücklisten-Austauschwerkzeug verwenden.
-<img class="screenshot" alt="Stücklistenaustauschwerkzeug" src="{{docs_base_url}}/assets/img/manufacturing/bom-replace-tool.png">
+<img class="screenshot" alt="Stücklistenaustauschwerkzeug" src="/docs/assets/img/manufacturing/bom-replace-tool.png">
In diesem Werkzeug wählen Sie die aktuelle und die neue Stückliste aus. Wenn Sie auf die Schaltfläche "Austauschen" klicken, wird in der Stückliste des fertigen Produktes (Computer) die aktuelle Stückliste der Zentraleinheit durch die neue Stückliste ersetzt.
diff --git a/erpnext/docs/user/manual/de/manufacturing/tools/production-planning-tool.md b/erpnext/docs/user/manual/de/manufacturing/tools/production-planning-tool.md
index 63e51f8..b7ef2d0 100644
--- a/erpnext/docs/user/manual/de/manufacturing/tools/production-planning-tool.md
+++ b/erpnext/docs/user/manual/de/manufacturing/tools/production-planning-tool.md
@@ -12,30 +12,30 @@
> Fertigung > Werkzeuge > Werkzeug zur Fertigungsplanung
-<img class="screenshot" alt="Werkzeug zur Fertigungsplanung" src="{{docs_base_url}}/assets/img/manufacturing/ppt.png">
+<img class="screenshot" alt="Werkzeug zur Fertigungsplanung" src="/docs/assets/img/manufacturing/ppt.png">
### Schritt 1: Auswahl und Kundenauftrag
* Wählen Sie einen Kundenauftrag für die Materialanforderung über die Filterfunktion (Zeit, Artikel und Kunde) aus.
* Klicken Sie auf "Kundenaufträge aufrufen" um eine Übersicht zu erhalten.
-<img class="screenshot" alt="Werkzeug zur Fertigungsplanung" src="{{docs_base_url}}/assets/img/manufacturing/ppt-get-sales-orders.png">
+<img class="screenshot" alt="Werkzeug zur Fertigungsplanung" src="/docs/assets/img/manufacturing/ppt-get-sales-orders.png">
### Schritt 2: Artikel aus Kundenaufträgen abrufen
Sie können Artikel hinzufügen, entfernen oder die Menge dieser Artikel verändern.
-<img class="screenshot" alt="Werkzeug zur Fertigungsplanung" src="{{docs_base_url}}/assets/img/manufacturing/ppt-get-item.png">
+<img class="screenshot" alt="Werkzeug zur Fertigungsplanung" src="/docs/assets/img/manufacturing/ppt-get-item.png">
### Schritt 3: Fertigungsaufträge erstellen
-<img class="screenshot" alt="Werkzeug zur Fertigungsplanung" src="{{docs_base_url}}/assets/img/manufacturing/ppt-create-production-order.png">
+<img class="screenshot" alt="Werkzeug zur Fertigungsplanung" src="/docs/assets/img/manufacturing/ppt-create-production-order.png">
### Schritt 4: Materialanfragen erstellen
Erstellen Sie für Artikel mit prognostiziertem Engpass Materialanfragen.
-<img class="screenshot" alt="Werkzeug zur Fertigungsplanung" src="{{docs_base_url}}/assets/img/manufacturing/ppt-create-material-request.png">
+<img class="screenshot" alt="Werkzeug zur Fertigungsplanung" src="/docs/assets/img/manufacturing/ppt-create-material-request.png">
Das Werkzeug zur Fertigungsplanung wird auf zwei Ebenend verwendet:
diff --git a/erpnext/docs/user/manual/de/manufacturing/workstation.md b/erpnext/docs/user/manual/de/manufacturing/workstation.md
index 2405382..6584ebc 100644
--- a/erpnext/docs/user/manual/de/manufacturing/workstation.md
+++ b/erpnext/docs/user/manual/de/manufacturing/workstation.md
@@ -9,10 +9,10 @@
> Fertigung > Dokumente > Arbeitsplatz > Neu
-<img class="screenshot" alt="Arbeitsplatz" src="{{docs_base_url}}/assets/img/manufacturing/workstation.png">
+<img class="screenshot" alt="Arbeitsplatz" src="/docs/assets/img/manufacturing/workstation.png">
Geben Sie unter "Arbeitszeit" die Betriebszeiten des Arbeitsplatzes an. Sie können die Betriebszeiten auch mit Hilfe von Schichten angeben. Wenn Sie einen Fertigungauftrag einplanen, prüft das System die Verfügbarkeit des Arbeitsplatzes basierend auf den angegebenen Betrieszeiten.
-> Anmerkung: Sie können Überstunden für einen Arbeitsplatz über die [Fertigungseinstellungen]({{docs_base_url}}/user/manual/de/manufacturing/setup/manufacturing-settings.html) aktivieren.
+> Anmerkung: Sie können Überstunden für einen Arbeitsplatz über die [Fertigungseinstellungen](/docs/user/manual/de/manufacturing/setup/manufacturing-settings.html) aktivieren.
{next}
diff --git a/erpnext/docs/user/manual/de/projects/activity-cost.md b/erpnext/docs/user/manual/de/projects/activity-cost.md
index 705846b..25e6452 100644
--- a/erpnext/docs/user/manual/de/projects/activity-cost.md
+++ b/erpnext/docs/user/manual/de/projects/activity-cost.md
@@ -3,4 +3,4 @@
Die Aktivitätskosten erfassen den Stundensatz und die Kosten eines Mitarbeiters zu einer Aktivitätsart. Dieser Betrag wird beim Erstellen von Zeitprotokollen vom System angezogen. Er wird für die Aufwandsabrechnung des Projektes verwendet.
-<img class="screenshot" alt="Aktivitätskosten" src="{{docs_base_url}}/assets/img/project/activity_cost.png">
+<img class="screenshot" alt="Aktivitätskosten" src="/docs/assets/img/project/activity_cost.png">
diff --git a/erpnext/docs/user/manual/de/projects/activity-type.md b/erpnext/docs/user/manual/de/projects/activity-type.md
index ff61a76..1e8c534 100644
--- a/erpnext/docs/user/manual/de/projects/activity-type.md
+++ b/erpnext/docs/user/manual/de/projects/activity-type.md
@@ -3,7 +3,7 @@
Unter dem Punkt "Aktivitätsart" wird eine Liste verschiedener Typen von Aktivitäten erstellt zu denen Zeitprotokolle erstellt werden können.
-<img class="screenshot" alt="Aktivitätsart" src="{{docs_base_url}}/assets/img/project/activity_type.png">
+<img class="screenshot" alt="Aktivitätsart" src="/docs/assets/img/project/activity_type.png">
Standardmäßig sind die folgenden Aktivitätsarten angelegt:
diff --git a/erpnext/docs/user/manual/de/projects/project.md b/erpnext/docs/user/manual/de/projects/project.md
index 518443b..e9ce1b8 100644
--- a/erpnext/docs/user/manual/de/projects/project.md
+++ b/erpnext/docs/user/manual/de/projects/project.md
@@ -3,75 +3,75 @@
Das Projektmanagement in ERPNext ist aufgabengesteuert. Sie können ein Projekt erstellen und ihm mehrere unterschiedliche Aufgaben zuweisen.
-<img class="screenshot" alt="Projekt" src="{{docs_base_url}}/assets/img/project/project.png">
+<img class="screenshot" alt="Projekt" src="/docs/assets/img/project/project.png">
### Aufgaben verwalten
Ein Projekt kann in mehrere verschiedene Aufgaben aufgeteilt werden.
-Eine Aufgabe kann über das Projektdokument selbst erstellt werden oder über die Schaltfläche [Aufgabe]({{docs_base_url}}/user/manual/de/projects/tasks.html).
+Eine Aufgabe kann über das Projektdokument selbst erstellt werden oder über die Schaltfläche [Aufgabe](/docs/user/manual/de/projects/tasks.html).
-<img class="screenshot" alt="Projekt" src="{{docs_base_url}}/assets/img/project/project_task.png">
+<img class="screenshot" alt="Projekt" src="/docs/assets/img/project/project_task.png">
* Um eine Aufgabe, die zu einem Projekt erstellt wurde, anzusehen, klicken Sie auf "Aufgabe",
-<img class="screenshot" alt="Projekt - Aufgabe ansehen" src="{{docs_base_url}}/assets/img/project/project_view_task.png">
+<img class="screenshot" alt="Projekt - Aufgabe ansehen" src="/docs/assets/img/project/project_view_task.png">
-<img class="screenshot" alt="Projekt - List der Aufgaben" src="{{docs_base_url}}/assets/img/project/project_task_list.png">
+<img class="screenshot" alt="Projekt - List der Aufgaben" src="/docs/assets/img/project/project_task_list.png">
* Sie können Aufgaben auch über das Projektdokument selbst ansehen.
-<img class="screenshot" alt="Projekt - Aufgabenmatrix" src="{{docs_base_url}}/assets/img/project/project_task_grid.png">
+<img class="screenshot" alt="Projekt - Aufgabenmatrix" src="/docs/assets/img/project/project_task_grid.png">
### Zeitmanagement
-ERPNext verwendet [Zeitprotokolle]({{docs_base_url}}/user/manual/de/projects/time-log.html) um den Fortschritt eines Projektes nachzuverfolgen. Sie können Zeitprotokolle zu jeder Aufgabe erstellen. Das aktuelle Start- und Enddatum wird dann zusammen mit der Kostenberechnung basierend auf dem Zeitprotokoll aktualisiert.
+ERPNext verwendet [Zeitprotokolle](/docs/user/manual/de/projects/time-log.html) um den Fortschritt eines Projektes nachzuverfolgen. Sie können Zeitprotokolle zu jeder Aufgabe erstellen. Das aktuelle Start- und Enddatum wird dann zusammen mit der Kostenberechnung basierend auf dem Zeitprotokoll aktualisiert.
* Um ein Zeitprotokoll zu einem Projekt anzusehen, klicken Sie auf "Zeitprotokolle"
-<img class="screenshot" alt="Projekt - Zeitprotokoll ansehen" src="{{docs_base_url}}/assets/img/project/project_view_time_log.png">
+<img class="screenshot" alt="Projekt - Zeitprotokoll ansehen" src="/docs/assets/img/project/project_view_time_log.png">
-<img class="screenshot" alt="Projekt - Übersicht der Zeitprotokolle" src="{{docs_base_url}}/assets/img/project/project_time_log_list.png">
+<img class="screenshot" alt="Projekt - Übersicht der Zeitprotokolle" src="/docs/assets/img/project/project_time_log_list.png">
* Sie können ein Zeitprotokoll auch direkt erstellen und mit dem Projekt verknüpfen.
-<img class="screenshot" alt="Projekt - Zeitprotokoll verknüpfen" src="{{docs_base_url}}/assets/img/project/project_time_log_link.png">
+<img class="screenshot" alt="Projekt - Zeitprotokoll verknüpfen" src="/docs/assets/img/project/project_time_log_link.png">
### Aufwände verwalten
-Sie können [Aufwandsabrechnungen]({{docs_base_url}}/user/manual/de/human-resources/expense-claim.html) mit Projektaufgaben verbuchen. Das System aktualisiert die Gesamtsumme der Aufwände im Abschnitt Kostenabrechnung.
+Sie können [Aufwandsabrechnungen](/docs/user/manual/de/human-resources/expense-claim.html) mit Projektaufgaben verbuchen. Das System aktualisiert die Gesamtsumme der Aufwände im Abschnitt Kostenabrechnung.
* Um die Aufwandsabrechnungen zu einem Projekt anzusehen, klicken Sie auf "Aufwandsabrechnung".
-<img class="screenshot" alt="Projekt - Aufwandsabrechnung ansehen" src="{{docs_base_url}}/assets/img/project/project_view_expense_claim.png">
+<img class="screenshot" alt="Projekt - Aufwandsabrechnung ansehen" src="/docs/assets/img/project/project_view_expense_claim.png">
* Sie könne Aufwandsabrechnungen auch direkt erstellen und mit einem Projekt verknüpfen.
-<img class="screenshot" alt="Projekt - Aufwandsabrechnung verknüpfen" src="{{docs_base_url}}/assets/img/project/project_expense_claim_link.png">
+<img class="screenshot" alt="Projekt - Aufwandsabrechnung verknüpfen" src="/docs/assets/img/project/project_expense_claim_link.png">
* Der Gesamtbetrag der mit einem Projekt verbuchten Aufwandsabrechnungen wird unter "Gesammtsumme der Aufwandsabrechnungen" im Abschnitt "Kostenabrechnung" angezeigt.
-<img class="screenshot" alt="Projekt - Gesamtsumme Aufwandsabrechnung" src="{{docs_base_url}}/assets/img/project/project_total_expense_claim.png">
+<img class="screenshot" alt="Projekt - Gesamtsumme Aufwandsabrechnung" src="/docs/assets/img/project/project_total_expense_claim.png">
### Kostenstelle
-Sie können zu einem Projekt eine [Kostenstelle]({{docs_base_url}}/user/manual/de/accounts/setup/cost-center.html) erstellen oder Sie können eine existierende Kostenstelle verwenden um alle Aufwände die zu einem Projekt entstehen mitzuverfolgen.
+Sie können zu einem Projekt eine [Kostenstelle](/docs/user/manual/de/accounts/setup/cost-center.html) erstellen oder Sie können eine existierende Kostenstelle verwenden um alle Aufwände die zu einem Projekt entstehen mitzuverfolgen.
-<img class="screenshot" alt="Projekt - Kostenstelle" src="{{docs_base_url}}/assets/img/project/project_cost_center.png">
+<img class="screenshot" alt="Projekt - Kostenstelle" src="/docs/assets/img/project/project_cost_center.png">
### Projektkostenabrechnung
Der Abschnitt Projektkostenabrechnung hilft Ihnen dabei, die Zeit und die AUfwände die in einem Projekt anfallen, nachzuverfolgen.
-<img class="screenshot" alt="Projekt - Kostenabrechnung" src="{{docs_base_url}}/assets/img/project/project_costing.png">
+<img class="screenshot" alt="Projekt - Kostenabrechnung" src="/docs/assets/img/project/project_costing.png">
* Der Abschnitt Kostenabrechnung wird basierend auf den Zeitprotokollen aktualisiert.
* Die Bruttospanne ist die Differenz zwischen dem Betrag der gesamten Kosten und dem Gesamtbetrag der Rechnung.
### Abrechnung
-Sie können einen [Kundenauftrag]({{docs_base_url}}/user/manual/de/selling/sales-order.html) zu einem Projekt erstellen bzw. ihn mit dem Projekt verknüpfen. Wenn er einmal verlinkt ist, können Sie das Vertriebsmodul dazu nutzen, dass Projekt mit Ihrem Kunden abzurechnen.
+Sie können einen [Kundenauftrag](/docs/user/manual/de/selling/sales-order.html) zu einem Projekt erstellen bzw. ihn mit dem Projekt verknüpfen. Wenn er einmal verlinkt ist, können Sie das Vertriebsmodul dazu nutzen, dass Projekt mit Ihrem Kunden abzurechnen.
-<img class="screenshot" alt="Projekt - Kundenauftrag" src="{{docs_base_url}}/assets/img/project/project_sales_order.png">
+<img class="screenshot" alt="Projekt - Kundenauftrag" src="/docs/assets/img/project/project_sales_order.png">
### Gantt-Diagramm
@@ -79,8 +79,8 @@
* Um ein Gantt-Diagramm zu einem Projekt anzusehen, gehen Sie zu diesem Projekt und klicken Sie auf "Gantt-Diagramm".
-<img class="screenshot" alt="Projekt - Gantt-Diagramm ansehen" src="{{docs_base_url}}/assets/img/project/project_view_gantt_chart.png">
+<img class="screenshot" alt="Projekt - Gantt-Diagramm ansehen" src="/docs/assets/img/project/project_view_gantt_chart.png">
-<img class="screenshot" alt="Projekt - Gantt-Diagramm" src="{{docs_base_url}}/assets/img/project/project_gantt_chart.png">
+<img class="screenshot" alt="Projekt - Gantt-Diagramm" src="/docs/assets/img/project/project_gantt_chart.png">
[next]
diff --git a/erpnext/docs/user/manual/de/projects/tasks.md b/erpnext/docs/user/manual/de/projects/tasks.md
index 163fb68..75fd594 100644
--- a/erpnext/docs/user/manual/de/projects/tasks.md
+++ b/erpnext/docs/user/manual/de/projects/tasks.md
@@ -3,13 +3,13 @@
Ein Projekt wird in Aufgaben unterteilt. In ERPNext können Sie auch Abhängigkeiten zwischen Aufgaben erstellen.
-<img class="screenshot" alt="Aufgabe" src="{{docs_base_url}}/assets/img/project/task.png">
+<img class="screenshot" alt="Aufgabe" src="/docs/assets/img/project/task.png">
### Status der Aufgabe
Ein Aufgabe kann folgende Stati haben: "Offen", "In Arbeit", "Wartet auf Überprüfung", "Geschlossen" und "Abgebrochen".
-<img class="screenshot" alt="Aufgabe - Status" src="{{docs_base_url}}/assets/img/project/task_status.png">
+<img class="screenshot" alt="Aufgabe - Status" src="/docs/assets/img/project/task_status.png">
* Standardmäßig sollte jede neu erstellte Aufgabe den Status "Offen" haben.
* Wenn ein Zeitprotokoll für eine Aufgabe erstellt wird, sollte ihr Status "In Arbeit" sein.
@@ -18,40 +18,40 @@
Sie können eine Liste von abhängigen Aufgaben im Bereich "Hängt ab von" erstellen.
-<img class="screenshot" alt="Anhängigkeiten" src="{{docs_base_url}}/assets/img/project/task_depends_on.png">
+<img class="screenshot" alt="Anhängigkeiten" src="/docs/assets/img/project/task_depends_on.png">
* Sie können eine übergeordnete Aufgabe nicht abschliessen bis alle abhängigen Aufgaben abgeschlossen sind.
* Wenn sich die abhängige Aufgabe verzögert und sich mit dem voraussichtlichen Startdatum der übergeordneten Aufgabe überlappt, überarbeitet das System die übergeordnete Aufgabe.
### Zeitmanagement
-ERPNext verwendet [Zeitprotokolle]({{docs_base_url}}/user/manual/de/projects/time-log.html) um den Fortschritt einer Aufgabe mitzuprotokollieren. Sie können mehrere unterschiedliche Zeitprotokolle zu jeder Aufgabe erstellen. Das aktuelle Start- und Enddatum kann dann zusammen mit der auf dem Zeitprotokoll basierenden Kostenberechnung aktualisiert werden.
+ERPNext verwendet [Zeitprotokolle](/docs/user/manual/de/projects/time-log.html) um den Fortschritt einer Aufgabe mitzuprotokollieren. Sie können mehrere unterschiedliche Zeitprotokolle zu jeder Aufgabe erstellen. Das aktuelle Start- und Enddatum kann dann zusammen mit der auf dem Zeitprotokoll basierenden Kostenberechnung aktualisiert werden.
* Um ein zu einer Aufgabe erstelltes Zeitprotokoll anzuschauen, klicken Sie auf "Zeitprotokolle".
-<img class="screenshot" alt="Aufgabe - Zeitprotokoll ansehen" src="{{docs_base_url}}/assets/img/project/task_view_time_log.png">
+<img class="screenshot" alt="Aufgabe - Zeitprotokoll ansehen" src="/docs/assets/img/project/task_view_time_log.png">
-<img class="screenshot" alt="Aufgabe - Liste der Zeitprotokolle" src="{{docs_base_url}}/assets/img/project/task_time_log_list.png">
+<img class="screenshot" alt="Aufgabe - Liste der Zeitprotokolle" src="/docs/assets/img/project/task_time_log_list.png">
* Sie können ein Zeitprotokoll auch direkt erstellen und mit einer Aufgabe verknüpfen.
-<img class="screenshot" alt="Aufgabe - Zeitprotokoll verknüpfen" src="{{docs_base_url}}/assets/img/project/task_time_log_link.png">
+<img class="screenshot" alt="Aufgabe - Zeitprotokoll verknüpfen" src="/docs/assets/img/project/task_time_log_link.png">
### Ausgabenmanagement
-Sie können [Aufwandsabrechnungen]({{docs_base_url}}/user/manual/de/human-resources/expense-claim.html) mit einer Aufgabe verbuchen. Das System aktualisiert den Gesamtbetrag der Aufwandsabrechnungen im Abschnitt Kostenberechnung.
+Sie können [Aufwandsabrechnungen](/docs/user/manual/de/human-resources/expense-claim.html) mit einer Aufgabe verbuchen. Das System aktualisiert den Gesamtbetrag der Aufwandsabrechnungen im Abschnitt Kostenberechnung.
* Um eine Aufwandsabrechnung, die zu einer Aufgabe erstellt wurde, anzuschauen, klicken Sie auf "Aufwandsabrechnung".
-<img class="screenshot" alt="Aufgabe - Aufwandsabrechnung ansehen" src="{{docs_base_url}}/assets/img/project/task_view_expense_claim.png">
+<img class="screenshot" alt="Aufgabe - Aufwandsabrechnung ansehen" src="/docs/assets/img/project/task_view_expense_claim.png">
* Sie können eine Aufwandsabrechnung auch direkt erstellen und sie mit einer Aufgabe verknüpfen.
-<img class="screenshot" alt="Aufgabe - Aufwandsabrechnung verknüpfen" src="{{docs_base_url}}/assets/img/project/task_expense_claim_link.png">
+<img class="screenshot" alt="Aufgabe - Aufwandsabrechnung verknüpfen" src="/docs/assets/img/project/task_expense_claim_link.png">
* Der Gesamtbetrag der Aufwandsabrechnungen zu einer Aufgabe wird unter "Gesamtbetrag der Aufwandsabrechnungen" im Abschnitt Kostenabrechnung angezeigt.
-<img class="screenshot" alt="Aufgabe - Gesamtsumme Aufwandsabrechnung" src="{{docs_base_url}}/assets/img/project/task_total_expense_claim.png">
+<img class="screenshot" alt="Aufgabe - Gesamtsumme Aufwandsabrechnung" src="/docs/assets/img/project/task_total_expense_claim.png">
{next}
diff --git a/erpnext/docs/user/manual/de/projects/time-log-batch.md b/erpnext/docs/user/manual/de/projects/time-log-batch.md
index 6aa85cb..4383e1c 100644
--- a/erpnext/docs/user/manual/de/projects/time-log-batch.md
+++ b/erpnext/docs/user/manual/de/projects/time-log-batch.md
@@ -9,17 +9,17 @@
Öffnen Sie einfach Ihre Übersicht der Zeitprotokolle und kreuzen Sie die Artikel an, die Sie dem Zeitprotokollstapel hinzufügen möchten. Klicken Sie dann auf die Schaltfläche "Zeitprotokollstapel erstellen" und diese Zeitprotokolle werden ausgewählt.
-<img class="screenshot" alt="Zeitprotokoll - Kalender aufziehen" src="{{docs_base_url}}/assets/img/project/time_sheet.gif">
+<img class="screenshot" alt="Zeitprotokoll - Kalender aufziehen" src="/docs/assets/img/project/time_sheet.gif">
### Ausgangsrechnungen erstellen
* Sobald Sie einen Zeitprotokollstapel übertragen haben, sollte die Schaltfläche "Rechnung erstellen" erscheinen.
-<img class="screenshot" alt="Zeitprotokoll - Kalender aufziehen" src="{{docs_base_url}}/assets/img/project/time_sheet_make_invoice.png">
+<img class="screenshot" alt="Zeitprotokoll - Kalender aufziehen" src="/docs/assets/img/project/time_sheet_make_invoice.png">
* Klicken Sie auf diese Schaltfläche und erstellen Sie eine Ausgangsrechnung zu einem Zeitprotokollstapel.
-<img class="screenshot" alt="Zeitprotokoll - Kalender aufziehen" src="{{docs_base_url}}/assets/img/project/time_sheet_sales_invoice.png">
+<img class="screenshot" alt="Zeitprotokoll - Kalender aufziehen" src="/docs/assets/img/project/time_sheet_sales_invoice.png">
* Wenn Sie die Ausgangsrechnung "übertragen", wird die Nummer der Ausgangsrechnung in den Zeitprotokollen und im Zeitprotokollstapel aktualisiert und ihr Status wird auf "abgerechnet" geändert.
diff --git a/erpnext/docs/user/manual/de/projects/time-log.md b/erpnext/docs/user/manual/de/projects/time-log.md
index d90e27a..072837e 100644
--- a/erpnext/docs/user/manual/de/projects/time-log.md
+++ b/erpnext/docs/user/manual/de/projects/time-log.md
@@ -9,7 +9,7 @@
* Projekte
* Interne Referenzen
-<img class="screenshot" alt="Zeitprotokoll" src="{{docs_base_url}}/assets/img/project/time_log.png">
+<img class="screenshot" alt="Zeitprotokoll" src="/docs/assets/img/project/time_log.png">
### Zeitprotokolle erstellen
@@ -21,15 +21,15 @@
Um Zeitprotokolle über den Kalender zu erstellen, gehen Sie zu "Zeitprotokoll" und wählen Sie "Kalender" aus.
-<img class="screenshot" alt="Zeitprotokoll - Kalender ansehen" src="{{docs_base_url}}/assets/img/project/time_log_view_calendar.png">
+<img class="screenshot" alt="Zeitprotokoll - Kalender ansehen" src="/docs/assets/img/project/time_log_view_calendar.png">
* Um ein Zeitprotokoll für mehrere Tage zu erstellen, klicken Sie und ziehen Sie den Mauszeiger über die Tage.
-<img class="screenshot" alt="Zeitprotokoll - Kalender aufziehen" src="{{docs_base_url}}/assets/img/project/time_log_calendar_day.gif">
+<img class="screenshot" alt="Zeitprotokoll - Kalender aufziehen" src="/docs/assets/img/project/time_log_calendar_day.gif">
* Sie können Zeitprotokolle auch aus der Wochen- oder Tagesansicht des Kalender heraus erstellen.
-<img class="screenshot" alt="Zeitprotokoll - Kalender aufziehen" src="{{docs_base_url}}/assets/img/project/time_log_calendar_week.gif">
+<img class="screenshot" alt="Zeitprotokoll - Kalender aufziehen" src="/docs/assets/img/project/time_log_calendar_week.gif">
* Zeitprotokolle für Fertigungsprozesse müssen aus dem Fertigungsauftrag heraus erstellt werden.
* Um mehrere Zeitprotokolle zu Arbeitsgängen zu erstellen wählen Sie den entsprechenden Arbeitsgang und klicken Sie auf "Zeitprotokoll erstellen".
@@ -37,12 +37,12 @@
### Abrechnung über Zeitprotokolle
* Wenn Sie ein Zeitprotokoll abrechnen wollen, müssem Sie die Option "Abrechenbar" anklicken.
-* Im Abschnitt Kostenberechnung erstellt das System den Rechungsbetrag über die [Aktivitätskosten]({{docs_base_url}}/user/manual/de/projects/activity-cost.html) basierend auf dem angegebenen Mitarbeiter und der angegebenen Aktivitätsart.
+* Im Abschnitt Kostenberechnung erstellt das System den Rechungsbetrag über die [Aktivitätskosten](/docs/user/manual/de/projects/activity-cost.html) basierend auf dem angegebenen Mitarbeiter und der angegebenen Aktivitätsart.
* Das System kalkuliert dann den Rechnungsbetrag basierend auf den im Zeitprotokoll angegebenen Stunden.
* Wenn "Abrechenbar" nicht markiert wurde, zeigt das System beim "Rechnungsbetrag" 0 an.
-<img class="screenshot" alt="Zeitprotokoll - Abrechnung" src="{{docs_base_url}}/assets/img/project/time_log_costing.png">
+<img class="screenshot" alt="Zeitprotokoll - Abrechnung" src="/docs/assets/img/project/time_log_costing.png">
-* Nach dem Übertragen des Zeitprotokolls müssen Sie einen [Zeitprotokollstapel]({{docs_base_url}}/user/manual/de/projects/time-log-batch.html) erstellen um mit der Abrechnung fortfahren zu können.
+* Nach dem Übertragen des Zeitprotokolls müssen Sie einen [Zeitprotokollstapel](/docs/user/manual/de/projects/time-log-batch.html) erstellen um mit der Abrechnung fortfahren zu können.
{next}
diff --git a/erpnext/docs/user/manual/de/selling/quotation.md b/erpnext/docs/user/manual/de/selling/quotation.md
index 3434e26..94ff78b 100644
--- a/erpnext/docs/user/manual/de/selling/quotation.md
+++ b/erpnext/docs/user/manual/de/selling/quotation.md
@@ -11,11 +11,11 @@
Sie können auch ein Angebot aus einer Opportunity heraus erstellen.
-<img class="screenshot" alt="Angebot aus Opportunity erstellen" src="{{docs_base_url}}/assets/img/selling/make-quote-from-opp.png">
+<img class="screenshot" alt="Angebot aus Opportunity erstellen" src="/docs/assets/img/selling/make-quote-from-opp.png">
Oder Sie erstellen ein neues Angebot und übernehmen Details aus der Opportunity.
-<img class="screenshot" alt="Angebot aus Opportunity erstellen" src="{{docs_base_url}}/assets/img/selling/make-quotation.gif">
+<img class="screenshot" alt="Angebot aus Opportunity erstellen" src="/docs/assets/img/selling/make-quotation.gif">
Ein Angebot enthält Informationen über:
@@ -34,12 +34,12 @@
Die Preise, die sie abgeben, hängen von zwei Dingen ab:
-* Die Preisliste: Wenn Sie mehrere verschiedene Preislisten haben, können Sie eine Preisliste auswählen oder sie mit dem Kunden markieren (so dass sie automatisch vorselektiert wird). Ihre Artikelpreise werden automatisch über die Preisliste aktualisert. Für weitere Informationen bitte bei [Preisliste]({{docs_base_url}}/user/manual/de/setting-up/price-lists.html) weiterlesen.
+* Die Preisliste: Wenn Sie mehrere verschiedene Preislisten haben, können Sie eine Preisliste auswählen oder sie mit dem Kunden markieren (so dass sie automatisch vorselektiert wird). Ihre Artikelpreise werden automatisch über die Preisliste aktualisert. Für weitere Informationen bitte bei [Preisliste](/docs/user/manual/de/setting-up/price-lists.html) weiterlesen.
* Die Währung: Wenn Sie einem Kunden in einer anderen Währung anbieten, müssen Sie die Umrechnungsfaktoren aktualisieren um ERPNext in die Lage zu versetzen die Information in Ihrer Standardwährung zu speichern. Das hilft Ihnen dabei den Wert Ihres Angebots in der Standardwährung zu analysieren.
### Steuern
-Um Steuern zu Ihrem Angebot hinzu zu fügen, können Sie entweder eine Steuervorlage oder eine Verkaufssteuern- und Gebühren-Vorlage auswählen oder die Steuern selbst hinzufügen. Um Steuern im Einzelnen zu verstehen, lesen Sie bitte [Steuern]({{docs_base_url}}/user/manual/de/setting-up/setting-up-taxes.html).
+Um Steuern zu Ihrem Angebot hinzu zu fügen, können Sie entweder eine Steuervorlage oder eine Verkaufssteuern- und Gebühren-Vorlage auswählen oder die Steuern selbst hinzufügen. Um Steuern im Einzelnen zu verstehen, lesen Sie bitte [Steuern](/docs/user/manual/de/setting-up/setting-up-taxes.html).
Sie können Steuern auf die gleiche Art hinzufügen wie die Vorlage Verkaufssteuern und Gebühren.
diff --git a/erpnext/docs/user/manual/de/selling/sales-order.md b/erpnext/docs/user/manual/de/selling/sales-order.md
index 187aeab..d980518 100644
--- a/erpnext/docs/user/manual/de/selling/sales-order.md
+++ b/erpnext/docs/user/manual/de/selling/sales-order.md
@@ -9,7 +9,7 @@
### Flußdiagramm des Kundenauftrags
-<img class="screenshot" alt="Kundenauftrag aus Angebot erstellen" src="{{docs_base_url}}/assets/img/selling/sales-order-f.jpg">
+<img class="screenshot" alt="Kundenauftrag aus Angebot erstellen" src="/docs/assets/img/selling/sales-order-f.jpg">
Um einen neuen Kundenauftrag zu erstellen gehen Sie zu: > Vertrieb > Kundenauftrag > Neuer Kundenauftrag
@@ -17,11 +17,11 @@
Sie können einen Kundenauftrag auch aus einem übertragenen Angebot heraus erstellen.
-<img class="screenshot" alt="Kundenauftrag aus Angebot erstellen" src="{{docs_base_url}}/assets/img/selling/make-SO-from-quote.png">
+<img class="screenshot" alt="Kundenauftrag aus Angebot erstellen" src="/docs/assets/img/selling/make-SO-from-quote.png">
Oder Sie erstellen einen neuen Kundenauftrag und entnehmen die Details aus dem Angebot.
-<img class="screenshot" alt="Kundenauftrag aus Angebot erstellen" src="{{docs_base_url}}/assets/img/selling/make-so.gif">
+<img class="screenshot" alt="Kundenauftrag aus Angebot erstellen" src="/docs/assets/img/selling/make-so.gif">
Die meisten Informationen im Kundenauftrag sind dieselben wie im Angebot. Einige Dinge möchte der Kundenauftrag aber aktualisiert haben.
@@ -60,7 +60,7 @@
ERPNext erstellt automatisch eine neue Bestellung und versendet eine E-Mail-Mitteilung an die E-Mail-Konten, die Sie im Feld "Benachrichtigungs-E-Mail-Adresse" eingestellt haben.
-<img class="screenshot" alt="Wiederkehrende Kundenaufträge" src="{{docs_base_url}}/assets/img/selling/recurring-sales-order.png">
+<img class="screenshot" alt="Wiederkehrende Kundenaufträge" src="/docs/assets/img/selling/recurring-sales-order.png">
### Die nächsten Schritte
diff --git a/erpnext/docs/user/manual/de/selling/setup/product-bundle.md b/erpnext/docs/user/manual/de/selling/setup/product-bundle.md
index 30475eb..d97b31d 100644
--- a/erpnext/docs/user/manual/de/selling/setup/product-bundle.md
+++ b/erpnext/docs/user/manual/de/selling/setup/product-bundle.md
@@ -11,7 +11,7 @@
> Vertrieb > Einstellungen > Produkt-Bundle > Neu
-<img class="screenshot" alt="Produkt-Bundle" src="{{docs_base_url}}/assets/img/selling/product-bundle.png">
+<img class="screenshot" alt="Produkt-Bundle" src="/docs/assets/img/selling/product-bundle.png">
### Hauptartikel auswählen
@@ -27,7 +27,7 @@
Wenn Vertriebstransaktionen erstellt werden, wie z. B. Ausgangsrechnung, Kundenauftrag und Lieferschein, dann wird der übergeordnete Artikel aus der Hauptartikelliste ausgewählt.
-<img class="screenshot" alt="Produkt-Bundle" src="{{docs_base_url}}/assets/img/selling/product-bundle.gif">
+<img class="screenshot" alt="Produkt-Bundle" src="/docs/assets/img/selling/product-bundle.gif">
Beim Auswählen des übergeordneten Artikels aus der Hauptartikelliste werden die Unterartikel aus der Tabelle "Packliste" der Transaktion angezogen. Wenn der Unterartikel ein serialisierter Artikel ist, können Sie seine Seriennummer direkt in der Packlistentabelle angeben. Wenn die Transaktion versendet wird, reduziert das System den Lagerbestand der Unterartikel auf dem Lager der in der Packlistentabelle angegeben ist.
diff --git a/erpnext/docs/user/manual/de/selling/setup/sales-partner.md b/erpnext/docs/user/manual/de/selling/setup/sales-partner.md
index 66a95a0..c4d096e 100644
--- a/erpnext/docs/user/manual/de/selling/setup/sales-partner.md
+++ b/erpnext/docs/user/manual/de/selling/setup/sales-partner.md
@@ -13,7 +13,7 @@
Vertriebspartner werden mit einem vom Benutzer vergebenen Namen abgespeichert.
-<img class="screenshot" alt="Vertriebspartner" src="{{docs_base_url}}/assets/img/selling/sales-partner.png">
+<img class="screenshot" alt="Vertriebspartner" src="/docs/assets/img/selling/sales-partner.png">
Sie können die Adressen und Kontaktdaten von Vertriebsmitarbeitern erfassen und sie basierend auf Menge und Betrag jeder Artikelgruppe zuweisen.
@@ -21,13 +21,13 @@
Um die Namen Ihrer Partner auf Ihrer Webseite anzuzeigen, aktivieren Sie "Auf der Webseite anzeigen". Wenn Sie diese Option anklicken, erscheint ein Feld, über das Sie das Logo Ihres Partners und eine kurze Beschreibung eingeben können.
-<img class="screenshot" alt="Vertriebspartner" src="{{docs_base_url}}/assets/img/selling/sales-partner-website.png">
+<img class="screenshot" alt="Vertriebspartner" src="/docs/assets/img/selling/sales-partner-website.png">
Um eine Übersicht Ihrer Partner zu erhalten, gehen Sie zu:
https://example.erpnext.com/Partners
-<img class="screenshot" alt="Auflistung der Vertriebspartner" src="{{docs_base_url}}/assets/img/crm/sales-partner-listing.png">
+<img class="screenshot" alt="Auflistung der Vertriebspartner" src="/docs/assets/img/crm/sales-partner-listing.png">
{next}
diff --git a/erpnext/docs/user/manual/de/selling/setup/selling-settings.md b/erpnext/docs/user/manual/de/selling/setup/selling-settings.md
index 0e71d41..08492a6 100644
--- a/erpnext/docs/user/manual/de/selling/setup/selling-settings.md
+++ b/erpnext/docs/user/manual/de/selling/setup/selling-settings.md
@@ -3,7 +3,7 @@
In den Vertriebseinstellungen können Sie Eigenheiten angeben, die bei Ihren Vertriebstransaktionen mit berücksichtigt werden. Im Folgenden sprechen wir jeden einzelnen Punkt an.
-<img class="screenshot" alt="Vertriebseinstellungen" src="{{docs_base_url}}/assets/img/selling/selling-settings.png">
+<img class="screenshot" alt="Vertriebseinstellungen" src="/docs/assets/img/selling/selling-settings.png">
### 1\. Benennung der Kunden nach
diff --git a/erpnext/docs/user/manual/de/selling/setup/shipping-rule.md b/erpnext/docs/user/manual/de/selling/setup/shipping-rule.md
index fc59f02..8bf609d 100644
--- a/erpnext/docs/user/manual/de/selling/setup/shipping-rule.md
+++ b/erpnext/docs/user/manual/de/selling/setup/shipping-rule.md
@@ -3,6 +3,6 @@
Wenn Sie eine Versandregel verwenden, können Sie die Kosten der Lieferung des Produktes an einen Kunden festlegen. Sie können für den gleichen Artikel für verschiedene Regionen verschiedene Versandregeln definieren.
-<img class="screenshot" alt="Versandregel" src="{{docs_base_url}}/assets/img/selling/shipping-rule.png">
+<img class="screenshot" alt="Versandregel" src="/docs/assets/img/selling/shipping-rule.png">
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/authorization-rule.md b/erpnext/docs/user/manual/de/setting-up/authorization-rule.md
index 7b202f1..bcc5674 100644
--- a/erpnext/docs/user/manual/de/setting-up/authorization-rule.md
+++ b/erpnext/docs/user/manual/de/setting-up/authorization-rule.md
@@ -37,7 +37,7 @@
Geben Sie "Autorisierter Wert" ein. Im Beispiel stellen wir das auf 10.000 Euro ein.
-<img class="screenshot" alt="Autorisierungsregel" src="{{docs_base_url}}/assets/img/setup/auth-rule.png">
+<img class="screenshot" alt="Autorisierungsregel" src="/docs/assets/img/setup/auth-rule.png">
Wenn ein Benutzer aus dem Vertrieb versucht eine Kundenbestellung mit einem Wert über 10.000 Euro zu übertragen, dann bekommt er eine Fehlermeldung.
diff --git a/erpnext/docs/user/manual/de/setting-up/bar-code.md b/erpnext/docs/user/manual/de/setting-up/bar-code.md
index ec9ac4c..e85c698 100644
--- a/erpnext/docs/user/manual/de/setting-up/bar-code.md
+++ b/erpnext/docs/user/manual/de/setting-up/bar-code.md
@@ -11,7 +11,7 @@
### Abbildung 1: Markieren Sie das Feld "Artikelbarcode"
-<img class="screenshot" alt="Barcode" src="{{docs_base_url}}/assets/img/setup/barcode-1.png">
+<img class="screenshot" alt="Barcode" src="/docs/assets/img/setup/barcode-1.png">
Wenn Sie einen Barcode einlesen wollen, gehen Sie zu:
@@ -25,7 +25,7 @@
### Abbildung 2: Aktivieren Sie das Feld "Ist POS"
-<img class="screenshot" alt="Barcode" src="{{docs_base_url}}/assets/img/setup/barcode-2.png">
+<img class="screenshot" alt="Barcode" src="/docs/assets/img/setup/barcode-2.png">
Gehen Sie zu "Artikel" und klicken Sie auf "Neue Zeile einfügen".
diff --git a/erpnext/docs/user/manual/de/setting-up/data/bulk-rename.md b/erpnext/docs/user/manual/de/setting-up/data/bulk-rename.md
index c793463..851424a 100644
--- a/erpnext/docs/user/manual/de/setting-up/data/bulk-rename.md
+++ b/erpnext/docs/user/manual/de/setting-up/data/bulk-rename.md
@@ -13,4 +13,4 @@
Um mehrere Datensätze umzubenennen, laden Sie eine CSV-Datei mit den alten Namen in der ersten Spalte und den neuen Namen in der zweiten Spalte hoch indem Sie auf "Hochladen" klicken.
-<img class="screenshot" alt="Bulk Rename" src="{{docs_base_url}}/assets/img/setup/data/rename.png">
\ No newline at end of file
+<img class="screenshot" alt="Bulk Rename" src="/docs/assets/img/setup/data/rename.png">
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/de/setting-up/data/data-import-tool.md b/erpnext/docs/user/manual/de/setting-up/data/data-import-tool.md
index 90dc38c..1ea4e48 100644
--- a/erpnext/docs/user/manual/de/setting-up/data/data-import-tool.md
+++ b/erpnext/docs/user/manual/de/setting-up/data/data-import-tool.md
@@ -5,7 +5,7 @@
Um das Werkzeug zum Datenimport zu öffnen, gehen Sie entweder zu den Einstellungen oder zur Transaktion, für die Sie importieren wollen. Wenn der Datenimport erlaubt ist, sehen Sie eine Importschaltfläche:
-<img alt="Importvorgang starten" class="screenshot" src="{{docs_base_url}}/assets/img/setup/data-import/data-import-1.png">
+<img alt="Importvorgang starten" class="screenshot" src="/docs/assets/img/setup/data-import/data-import-1.png">
Das Werkzeug hat zwei Abschnitte, einen um eine Vorlage herunter zu laden, und einen zweiten um Daten hoch zu laden.
@@ -15,7 +15,7 @@
Daten werden in ERPNext in Tabellen gespeichert, sehr ähnlich einer Tabellenkalkulation mit Spalten und Zeilen voller Daten. Jede Instanz in ERPNext kann mehrere verschiedene mit Ihr verbundene Untertabellen haben. Die Untertabellen sind mit Ihren übergeordneten Tabellen verknüpft und werden dort eingesetzt, wo es für eine Eigenschaft mehrere verschiedene Werte gibt. So kann z. B. ein Artikel mehrere verschiedene Preise haben, eine Rechnung hat mehrere verschiedene Artikel usw.
-<img alt="Vorlage herunterladen" class="screenshot" src="{{docs_base_url}}/assets/img/setup/data-import/data-import-2.png">
+<img alt="Vorlage herunterladen" class="screenshot" src="/docs/assets/img/setup/data-import/data-import-2.png">
* Klicken Sie auf die Tabelle, die Sie herunter laden wollen, oder auf "Alle Tabellen".
* Für Massenbearbeitung klicken Sie auf "Mit Daten herunterladen".
@@ -24,17 +24,17 @@
Öffnen Sie die Vorlage nach dem Herunterladen in einer Tabellenkalkulationsanwendung und fügen Sie die Daten unterhalb der Spaltenköpfe ein.
-
+
Exportieren Sie dann Ihre Vorlage oder speichern Sie sie im CSV-Format (**Comma Separated Values**).
-
+
### 3. Hochladen der CSV-Datei
Fügen Sie abschliessend die CSV-Datei im Abschnitt Import hinzu. Klicken Sie auf die Schaltfläche "Hochladen und Importieren".
-<img alt="Upload" class="screenshot" src="{{docs_base_url}}/assets/img/setup/data-import/data-import-3.png">
+<img alt="Upload" class="screenshot" src="/docs/assets/img/setup/data-import/data-import-3.png">
#### Anmerkungen
diff --git a/erpnext/docs/user/manual/de/setting-up/email/email-account.md b/erpnext/docs/user/manual/de/setting-up/email/email-account.md
index e2923f6..1a315d2 100644
--- a/erpnext/docs/user/manual/de/setting-up/email/email-account.md
+++ b/erpnext/docs/user/manual/de/setting-up/email/email-account.md
@@ -11,7 +11,7 @@
Es gibt zwei Arten von E-Mail-Konten, ausgehend und eingehend. E-Mail-Konten für ausgehende E-Mails verwenden einen SMTP-Service, eingehende E-Mails verwenden einen POP-Service. Die meisten E-Mail-Anbieter wie GMail, Outlook oder Yahoo bieten diese Seriveleistungen an.
-<img class="screenshot" alt="Kriterien definieren" src="{{docs_base_url}}/assets/img/setup/email/email-account-list.png">
+<img class="screenshot" alt="Kriterien definieren" src="/docs/assets/img/setup/email/email-account-list.png">
### Konten zu ausgehenden E-Mails
@@ -19,13 +19,13 @@
Um ein Konto für ausgehende E-Mails einzurichten, markieren Sie die Option **Ausgehend aktivieren** und geben Sie die Einstellungen zum SMTP-Server an. Wenn Sie einen bekannten E-Mail-Service nutzen, wird das vom System für Sie voreingestellt.
-<img class="screenshot" alt="Ausgehende E-Mails" src="{{docs_base_url}}/assets/img/setup/email/email-account-sending.png">
+<img class="screenshot" alt="Ausgehende E-Mails" src="/docs/assets/img/setup/email/email-account-sending.png">
### Konten zu eingehenden E-Mails
Um ein Konto für eingehende E-Mails einzurichten, markieren Sie die Option **Eingehend aktivieren** und geben Sie die Einstellungen zum POP3-Server an. Wenn Sie einen bekannten E-Mail-Service nutzen, wird das vom System für Sie voreingestellt.
-<img class="screenshot" alt="Eingehende E-Mails" src="{{docs_base_url}}/assets/img/setup/email/email-account-incoming.png">
+<img class="screenshot" alt="Eingehende E-Mails" src="/docs/assets/img/setup/email/email-account-incoming.png">
### Wie ERPNext Antworten handhabt
@@ -35,6 +35,6 @@
Wenn Sie möchten, dass ERPNext Sie benachrichtigt, wenn eine E-Mail für eine bestimmte Zeit unbeantwortet bleibt, dann können Sie die Option **Benachrichtigen, wenn unbeantwortet** markieren. Hier können Sie die Anzahl der Minuten einstellen, die das System warten soll, bevor eine Benachrichtigung gesendet wird, und den Empfänger.
-<img class="screenshot" alt="Eingehende Email" src="{{docs_base_url}}/assets/img/setup/email/email-account-unreplied.png">
+<img class="screenshot" alt="Eingehende Email" src="/docs/assets/img/setup/email/email-account-unreplied.png">
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/email/email-alerts.md b/erpnext/docs/user/manual/de/setting-up/email/email-alerts.md
index 58f6fe3..c965c9b 100644
--- a/erpnext/docs/user/manual/de/setting-up/email/email-alerts.md
+++ b/erpnext/docs/user/manual/de/setting-up/email/email-alerts.md
@@ -32,7 +32,7 @@
---
#### Beispiel
-1. [Kriterien definieren](<img class="screenshot" src="{{docs_base_url}}/assets/img/setup/email/email-alert-1.png">)
-2. [Empfänger und Nachrichtentext eingeben](<img class="screenshot" src="{{docs_base_url}}/assets/img/setup/email/email-alert-2.png">)
+1. [Kriterien definieren](<img class="screenshot" src="/docs/assets/img/setup/email/email-alert-1.png">)
+2. [Empfänger und Nachrichtentext eingeben](<img class="screenshot" src="/docs/assets/img/setup/email/email-alert-2.png">)
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/email/email-digest.md b/erpnext/docs/user/manual/de/setting-up/email/email-digest.md
index 18117a3..9199ee2 100644
--- a/erpnext/docs/user/manual/de/setting-up/email/email-digest.md
+++ b/erpnext/docs/user/manual/de/setting-up/email/email-digest.md
@@ -13,6 +13,6 @@
Stellen Sie ein, wie oft Sie eine Benachrichtigung erhalten wollen, markieren Sie alle Artikel, über die Sie in Ihrer wöchentlichen Aktualisierung benachrichtig werden wollen und wählen Sie die Benutzer-IDs aus, an die die Zusammenfassung gesendet werden soll.
-<img class="screenshot" alt="E-Mail-Bericht" src="{{docs_base_url}}/assets/img/setup/email/email-digest.png">
+<img class="screenshot" alt="E-Mail-Bericht" src="/docs/assets/img/setup/email/email-digest.png">
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/email/sending-email.md b/erpnext/docs/user/manual/de/setting-up/email/sending-email.md
index d2087ca..e1f23b9 100644
--- a/erpnext/docs/user/manual/de/setting-up/email/sending-email.md
+++ b/erpnext/docs/user/manual/de/setting-up/email/sending-email.md
@@ -3,8 +3,8 @@
In ERPNext können sie jedes beliebige Dokument per E-Mail versenden (als PDF-Anhang) indem Sie in einem beliebigen geöffneten Dokument auf `Menü > E-Mail` gehen.
-<img class="screenshot" alt="Emails versenden" src="{{docs_base_url}}/assets/img/setup/email/send-email.gif">
+<img class="screenshot" alt="Emails versenden" src="/docs/assets/img/setup/email/send-email.gif">
-**Anmerkung:** Es müssen Konten zum [E-Mail-Versand]({{docs_base_url}}/user/manual/de/setting-up/email/email-account.html) eingerichtet sein.
+**Anmerkung:** Es müssen Konten zum [E-Mail-Versand](/docs/user/manual/de/setting-up/email/email-account.html) eingerichtet sein.
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/pos-setting.md b/erpnext/docs/user/manual/de/setting-up/pos-setting.md
index 1849911..b75f96c 100644
--- a/erpnext/docs/user/manual/de/setting-up/pos-setting.md
+++ b/erpnext/docs/user/manual/de/setting-up/pos-setting.md
@@ -9,7 +9,7 @@
Setzen Sie die Standardeinstellungen wie definiert.
-<img class="screenshot" alt="POS-Einstellungen" src="{{docs_base_url}}/assets/img/pos-setting/pos-setting.png">
+<img class="screenshot" alt="POS-Einstellungen" src="/docs/assets/img/pos-setting/pos-setting.png">
> Wichtig: Wenn Sie einen bestimmten Benutzer angeben, werden die POS-Einstellungen nur auf diesen Benutzer angewendet. Wenn diese Optin leer bleibt, werden die Einstellungen auf alle Benutzer angewendet. Um mehr über POS zu erfahren, gehen Sie zu POS.
diff --git a/erpnext/docs/user/manual/de/setting-up/price-lists.md b/erpnext/docs/user/manual/de/setting-up/price-lists.md
index b58e191..6fc5f08 100644
--- a/erpnext/docs/user/manual/de/setting-up/price-lists.md
+++ b/erpnext/docs/user/manual/de/setting-up/price-lists.md
@@ -11,7 +11,7 @@
> Vertrieb/Einkauf/Lagerbestand > Einstellungen > Preisliste > Neu
-<img class="screenshot" alt="Preisliste" src="{{docs_base_url}}/assets/img/price-list/price-list.png">
+<img class="screenshot" alt="Preisliste" src="/docs/assets/img/price-list/price-list.png">
* Diese Preislisten werden verwendet, wenn der Datensatz zum Artikelpreis erstellt wird, um den Verkaufs- oder Einkaufspreis eines Artikels nachvollziehen zu können. Klicken Sie hier, wenn Sie mehr über Artikelpreise erfahren wollen.
* Um eine bestimmte Preisliste zu deaktivieren, deaktivieren Sie das Feld "Aktiviert" im der Preisliste. Die deaktivierte Preisliste ist dann in der Auswahl nicht mehr in Verkaufs- oder Einkaufstransaktionen verfügbar.
diff --git a/erpnext/docs/user/manual/de/setting-up/print/address-template.md b/erpnext/docs/user/manual/de/setting-up/print/address-template.md
index b3f37f7..0622e0c 100644
--- a/erpnext/docs/user/manual/de/setting-up/print/address-template.md
+++ b/erpnext/docs/user/manual/de/setting-up/print/address-template.md
@@ -28,6 +28,6 @@
### Beispiel
-<img class="screenshot" alt="Adressvorlage" src="{{docs_base_url}}/assets/img/setup/print/address-format.png">
+<img class="screenshot" alt="Adressvorlage" src="/docs/assets/img/setup/print/address-format.png">
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/print/letter-head.md b/erpnext/docs/user/manual/de/setting-up/print/letter-head.md
index cc05b85..e08da28 100644
--- a/erpnext/docs/user/manual/de/setting-up/print/letter-head.md
+++ b/erpnext/docs/user/manual/de/setting-up/print/letter-head.md
@@ -15,10 +15,10 @@
#### Beispiel
-<img class="screenshot" alt="Briefkopf" src="{{docs_base_url}}/assets/img/setup/print/letter-head.png">
+<img class="screenshot" alt="Briefkopf" src="/docs/assets/img/setup/print/letter-head.png">
So sieht der Briefkopf eines Ausdruckes aus:
-<img class="screenshot" alt="Briefkopf" src="{{docs_base_url}}/assets/img/setup/print/letter-head-1.png">
+<img class="screenshot" alt="Briefkopf" src="/docs/assets/img/setup/print/letter-head-1.png">
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/print/print-format-builder.md b/erpnext/docs/user/manual/de/setting-up/print/print-format-builder.md
index e4236ae..14ba200 100644
--- a/erpnext/docs/user/manual/de/setting-up/print/print-format-builder.md
+++ b/erpnext/docs/user/manual/de/setting-up/print/print-format-builder.md
@@ -11,19 +11,19 @@
### Schritt 1: Erstellen Sie ein neues Format
-<img class="screenshot" alt="E-Mail senden" src="{{docs_base_url}}/assets/img/setup/print/print-format-builder-1.gif">
+<img class="screenshot" alt="E-Mail senden" src="/docs/assets/img/setup/print/print-format-builder-1.gif">
### Schritt 2: Ein neues Feld hinzufügen
Um ein Feld hinzuzufügen, nehmen Sie es auf der linken Seitenleiste mit der Maus auf und fügen Sie es Ihrem Layout hinzu. Sie können das Layout bearbeiten, indem Sie auf das Symbol für Einstellungen klicken.
-<img class="screenshot" alt="E-Mail senden" src="{{docs_base_url}}/assets/img/setup/print/print-format-builder-2.gif">
+<img class="screenshot" alt="E-Mail senden" src="/docs/assets/img/setup/print/print-format-builder-2.gif">
### Schritt 3: Ein Feld entfernen
Um ein Feld zu entfernen, legen Sie es einfach zurück in die Seitenleiste.
-<img class="screenshot" alt="E-Mail senden" src="{{docs_base_url}}/assets/img/setup/print/print-format-builder-3.gif">
+<img class="screenshot" alt="E-Mail senden" src="/docs/assets/img/setup/print/print-format-builder-3.gif">
### Schritt 4
@@ -31,7 +31,7 @@
Klicken Sie dann auf **HTML bearbeiten** um den Inhalt zu bearbeiten.
-<img class="screenshot" alt="E-Mail senden" src="{{docs_base_url}}/assets/img/setup/print/print-format-builder-4.gif">
+<img class="screenshot" alt="E-Mail senden" src="/docs/assets/img/setup/print/print-format-builder-4.gif">
Um Ihr Format abzuspeichern klicken Sie einfach auf die Schaltfläche **Speichern**.
diff --git a/erpnext/docs/user/manual/de/setting-up/print/print-headings.md b/erpnext/docs/user/manual/de/setting-up/print/print-headings.md
index cf6b48a..b695a3c 100644
--- a/erpnext/docs/user/manual/de/setting-up/print/print-headings.md
+++ b/erpnext/docs/user/manual/de/setting-up/print/print-headings.md
@@ -9,10 +9,10 @@
#### Abbildung 1: Druckköpfe abspeichern
-<img class="screenshot" alt="Druckköpfe" src="{{docs_base_url}}/assets/img/setup/print/print-heading.png">
+<img class="screenshot" alt="Druckköpfe" src="/docs/assets/img/setup/print/print-heading.png">
Hier ist ein Beispiel abgebildet, wie man einen Druckkopf auswechselt:
-<img class="screenshot" alt="Druckköpfe" src="{{docs_base_url}}/assets/img/setup/print/print-heading-1.png">
+<img class="screenshot" alt="Druckköpfe" src="/docs/assets/img/setup/print/print-heading-1.png">
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/print/print-settings.md b/erpnext/docs/user/manual/de/setting-up/print/print-settings.md
index 7dc8067..995edd6 100644
--- a/erpnext/docs/user/manual/de/setting-up/print/print-settings.md
+++ b/erpnext/docs/user/manual/de/setting-up/print/print-settings.md
@@ -7,6 +7,6 @@
> Einstellungen > Druck > Druckeinstellungen
-<img class="screenshot" alt="Druckeinstellungen" src="{{docs_base_url}}/assets/img/setup/print/print-settings.png">
+<img class="screenshot" alt="Druckeinstellungen" src="/docs/assets/img/setup/print/print-settings.png">
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/print/terms-and-conditions.md b/erpnext/docs/user/manual/de/setting-up/print/terms-and-conditions.md
index 718fcc2..071d757 100644
--- a/erpnext/docs/user/manual/de/setting-up/print/terms-and-conditions.md
+++ b/erpnext/docs/user/manual/de/setting-up/print/terms-and-conditions.md
@@ -9,13 +9,13 @@
> Vertrieb > Einstellungen > Vorlage für Allgemeine Geschäftsbedingungen > Neu
-<img class="screenshot" alt="Geschäftsbedingungen" src="{{docs_base_url}}/assets/img/setup/print/terms-1.png">
+<img class="screenshot" alt="Geschäftsbedingungen" src="/docs/assets/img/setup/print/terms-1.png">
### 2\. Bearbeitung in HTML
Der Inhalt der Allgemeinen Geschäftsbedingungen kann nach Ihren Vorstellungen formatiert werden und es können bei Bedarf auch Bilder eingefügt werden. Für diejenigen, die sich in HTML auskennen, findet Sich auch eine Möglichkeit den Inhalt der Allgemeinen Geschäftsbedingungen in HTML zu formatieren.
-<img class="screenshot" alt="Geschäfsbedingungen - HTML bearbeiten" src="{{docs_base_url}}/assets/img/setup/print/terms-2.png">
+<img class="screenshot" alt="Geschäfsbedingungen - HTML bearbeiten" src="/docs/assets/img/setup/print/terms-2.png">
Dies erlaubt es Ihnen auch die Vorlage für die Allgemeinen Geschäftsbedingungen als Fußzeile zu verwenden, was sonst in ERPNext nicht als dedizierte Funktionalität zur Verfügung steht. Da die Inhalte der Allgemeinen Geschäftsbedingungen im Druckformat immer zuletzt erscheinen, sollten die Einzelheiten zur Fußzeile am Ende des Inhaltes eingefügt werden.
@@ -23,6 +23,6 @@
In Transaktionen finden Sie den Abschnitt Allgemeine Geschäftsbedingungen, wo Sie nach einer Vorlage für die Allgemeinen Geschäftsbedingungen suchen und diese auswählen können.
-<img class="screenshot" alt="Geschäfsbedingungen - Im Dokument auswählen" src="{{docs_base_url}}/assets/img/setup/print/terms-3.png">
+<img class="screenshot" alt="Geschäfsbedingungen - Im Dokument auswählen" src="/docs/assets/img/setup/print/terms-3.png">
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/setting-up-taxes.md b/erpnext/docs/user/manual/de/setting-up/setting-up-taxes.md
index 612cf9a..4f45dfc 100644
--- a/erpnext/docs/user/manual/de/setting-up/setting-up-taxes.md
+++ b/erpnext/docs/user/manual/de/setting-up/setting-up-taxes.md
@@ -13,11 +13,11 @@
Die Tabelle zu den Artikelsteuern ist ein Abschnitt in den Artikelstammdaten.
-<img class="screenshot" alt="Artikelsteuer" src="{{docs_base_url}}/assets/img/taxes/item-tax.png">
+<img class="screenshot" alt="Artikelsteuer" src="/docs/assets/img/taxes/item-tax.png">
* **Inklusive oder Exklusive Steuer:** ERPNext erlaubt es Ihnen Artikelpreise inklusive Steuer einzugeben.
-<img class="screenshot" alt="Steuer inklusive" src="{{docs_base_url}}/assets/img/taxes/inclusive-tax.png">
+<img class="screenshot" alt="Steuer inklusive" src="/docs/assets/img/taxes/inclusive-tax.png">
* **Ausnahme von der Regel:** Die Einstellungen zur Artikelsteuer werden nur dann benötigt, wenn sich der Steuersatz eines bestimmten Artikels von demjenigen, den Sie im Standard-Steuerkonto definiert haben, unterscheidet.
* **Die Artikelsteuer kann überschrieben werden:** Sie können den Artikelsteuersatz überschreiben oder ändern, wenn Sie in der Artikelsteuertabelle zu den Artikelstammdaten gehen.
@@ -34,7 +34,7 @@
> Einstellungen > Rechnungswesen > Vorlage für Verkaufssteuern und -abgaben
-<img class="screenshot" alt="Vorlage für Verkaufssteuern" src="{{docs_base_url}}/assets/img/taxes/sales-tax-master.png">
+<img class="screenshot" alt="Vorlage für Verkaufssteuern" src="/docs/assets/img/taxes/sales-tax-master.png">
Wenn Sie eine neue Vorlage erstellen, müssen Sie für jeden Steuertyp eine neue Zeile einfügen.
diff --git a/erpnext/docs/user/manual/de/setting-up/settings/global-defaults.md b/erpnext/docs/user/manual/de/setting-up/settings/global-defaults.md
index 44ec38e..ef9bc22 100644
--- a/erpnext/docs/user/manual/de/setting-up/settings/global-defaults.md
+++ b/erpnext/docs/user/manual/de/setting-up/settings/global-defaults.md
@@ -7,6 +7,6 @@
Immer dann, wenn ein neues Dokument erstellt wird, werden diese Werte als Standardeinstellungen verwendet.
-<img class="screenshot" alt="Globale Voreinstellungen" src="{{docs_base_url}}/assets/img/setup/settings/global-defaults.png">
+<img class="screenshot" alt="Globale Voreinstellungen" src="/docs/assets/img/setup/settings/global-defaults.png">
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/settings/module-settings.md b/erpnext/docs/user/manual/de/setting-up/settings/module-settings.md
index 996f3dc..8aaf923 100644
--- a/erpnext/docs/user/manual/de/setting-up/settings/module-settings.md
+++ b/erpnext/docs/user/manual/de/setting-up/settings/module-settings.md
@@ -11,6 +11,6 @@
Markieren oder demarkieren Sie die Elemente die angezeigt / ausgeblendet werden sollen.
-<img class="screenshot" alt="Moduleinstellungen" src="{{docs_base_url}}/assets/img/setup/settings/show-hide-modules.png">
+<img class="screenshot" alt="Moduleinstellungen" src="/docs/assets/img/setup/settings/show-hide-modules.png">
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/settings/naming-series.md b/erpnext/docs/user/manual/de/setting-up/settings/naming-series.md
index 1a6f336..0c66c5e 100644
--- a/erpnext/docs/user/manual/de/setting-up/settings/naming-series.md
+++ b/erpnext/docs/user/manual/de/setting-up/settings/naming-series.md
@@ -33,6 +33,6 @@
Sehen Sie hier, wie der Nummernkreis eingestellt wird.
-<img class="screenshot" alt="Nummernkreise" src="{{docs_base_url}}/assets/img/setup/settings/naming-series.gif">
+<img class="screenshot" alt="Nummernkreise" src="/docs/assets/img/setup/settings/naming-series.gif">
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/settings/system-settings.md b/erpnext/docs/user/manual/de/setting-up/settings/system-settings.md
index 856d016..d804901 100644
--- a/erpnext/docs/user/manual/de/setting-up/settings/system-settings.md
+++ b/erpnext/docs/user/manual/de/setting-up/settings/system-settings.md
@@ -7,6 +7,6 @@
> Einstellungen > Einstellungen > Systemeinstellungen
-<img class="screenshot" alt="Systemeinstellungen" src="{{docs_base_url}}/assets/img/setup/settings/system-settings.png">
+<img class="screenshot" alt="Systemeinstellungen" src="/docs/assets/img/setup/settings/system-settings.png">
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-1-language.md b/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-1-language.md
index 0fc2a1f..eb37836 100644
--- a/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-1-language.md
+++ b/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-1-language.md
@@ -3,7 +3,7 @@
Wählen Sie Ihre Sprache. ERPNext gibt es in mehr als 20 Sprachen.
-<img alt="Sprache" class="screenshot" src="{{docs_base_url}}/assets/img/setup-wizard/step-1.png">
+<img alt="Sprache" class="screenshot" src="/docs/assets/img/setup-wizard/step-1.png">
---
diff --git a/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-10-item.md b/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-10-item.md
index 3b6d1ac..6116247 100644
--- a/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-10-item.md
+++ b/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-10-item.md
@@ -4,7 +4,7 @@
In diesem letzten Schritt geben Sie bitte die Bezeichnungen der Artikel ein, die Sie kaufen oder verkaufen.
<img alt="Artikel hinzufügen" class="screenshot"
-src="{{docs_base_url}}/assets/img/setup-wizard/step-10.png">
+src="/docs/assets/img/setup-wizard/step-10.png">
Bitte stellen Sie auch die Artikelart (Produkt oder Dienstleistung) und die Standardmaßeinheit ein. Machen Sie sich keine Sorgen, Sie können das alles später noch bearbeiten.
diff --git a/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-2-currency-and-timezone.md b/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-2-currency-and-timezone.md
index be327ae..5387b0a 100644
--- a/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-2-currency-and-timezone.md
+++ b/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-2-currency-and-timezone.md
@@ -3,7 +3,7 @@
Stellen Sie den Namen Ihres Landes, die Währung und die Zeitzone ein.
-<img alt="Währung" class="screenshot" src="{{docs_base_url}}/assets/img/setup-wizard/step-2.png">
+<img alt="Währung" class="screenshot" src="/docs/assets/img/setup-wizard/step-2.png">
---
diff --git a/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-3-user-details.md b/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-3-user-details.md
index 2d1789d..97b246d 100644
--- a/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-3-user-details.md
+++ b/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-3-user-details.md
@@ -4,7 +4,7 @@
Geben Sie Details zum Benutzerprofil, wie Name, Benutzer-ID und das bevorzugte Passwort ein.
<img alt="Benutzer" class="screenshot"
-src="{{docs_base_url}}/assets/img/setup-wizard/step-3.png">
+src="/docs/assets/img/setup-wizard/step-3.png">
---
diff --git a/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-4-company-details.md b/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-4-company-details.md
index 4c131b5..aca7823 100644
--- a/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-4-company-details.md
+++ b/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-4-company-details.md
@@ -4,7 +4,7 @@
Geben Sie Details zum Unternehmen wie Name, Kürzel und Geschäftsjahr ein.
<img alt="Unternehmensdetails" class="screenshot"
-src="{{docs_base_url}}/assets/img/setup-wizard/step-4.png">
+src="/docs/assets/img/setup-wizard/step-4.png">
---
diff --git a/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-5-letterhead-and-logo.md b/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-5-letterhead-and-logo.md
index f32815d..d8a5c0d 100644
--- a/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-5-letterhead-and-logo.md
+++ b/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-5-letterhead-and-logo.md
@@ -4,7 +4,7 @@
Fügen Sie einen Firmenbriefkopf und ein Firmenlogo hinzu.
<img alt="Firmenlogo und Briefkopf" class="screenshot"
-src="{{docs_base_url}}/assets/img/setup-wizard/step-5.png">
+src="/docs/assets/img/setup-wizard/step-5.png">
---
@@ -15,7 +15,7 @@
Wenn Ihr Briefkopf noch nicht fertig ist, können Sie diesen Schritt auch überspringen.
-Um später einen Briefkopf über das Modul "Einstellungen" auszuwählen, lesen Sie im Bereich [Briefkopf]({{docs_base_url}}/user/manual/de/setting-up/print/letter-head.html) weiter.
+Um später einen Briefkopf über das Modul "Einstellungen" auszuwählen, lesen Sie im Bereich [Briefkopf](/docs/user/manual/de/setting-up/print/letter-head.html) weiter.
### Anhang als Internetverknüpfung
diff --git a/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-6-add-users.md b/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-6-add-users.md
index 692bb20..07832e1 100644
--- a/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-6-add-users.md
+++ b/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-6-add-users.md
@@ -4,6 +4,6 @@
Fügen Sie weitere Benutzer hinzu und teilen Sie ihnen gemäß Ihren Verantwortungsbereichen am Arbeitsplatz Rollen zu.
<img alt="Benutzer" class="screenshot"
-src="{{docs_base_url}}/assets/img/setup-wizard/step-6.png">
+src="/docs/assets/img/setup-wizard/step-6.png">
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-7-tax-details.md b/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-7-tax-details.md
index 76f1538..edf6476 100644
--- a/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-7-tax-details.md
+++ b/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-7-tax-details.md
@@ -4,7 +4,7 @@
Geben Sie bis zu drei Steuerarten an, die Sie regelmäßig in Bezug auf Ihr Gehalt zahlen. Dieser Assistent erstellt eine Steuervorlage, die die Steuren für jede Steuerart berechnet.
<img alt="Steuerdetails" class="screenshot"
-src="{{docs_base_url}}/assets/img/setup-wizard/step-7.png">
+src="/docs/assets/img/setup-wizard/step-7.png">
Geben Sie einfach den Namen der Steuerart und den Steuersatz ein.
@@ -18,6 +18,6 @@
Das Anliegen der Mehrwertsteuer ist es, für den Staat ähnlich der Körperschaftssteuer und der Einkommensteuer Steuererträge zu generieren. Beispiel: Wenn Sie in einem Kaufhaus einkaufen schlägt Ihnen das Geschäft 19% als Mehrwertsteuer auf die Rechnung auf.
-Um im Einstellungsassistenten die Mehrwertsteuer einzustellen, geben Sie einfach den Prozentsatz der vom Staat erhoben wird, ein. Um die Mehrwertsteuer zu einem späteren Zeitpunkt einzustellen, lesen Sie bitte den Abschnitt [Einstellen von Steuern]({{docs_base_url}}/user/manual/de/setting-up/setting-up-taxes.html).
+Um im Einstellungsassistenten die Mehrwertsteuer einzustellen, geben Sie einfach den Prozentsatz der vom Staat erhoben wird, ein. Um die Mehrwertsteuer zu einem späteren Zeitpunkt einzustellen, lesen Sie bitte den Abschnitt [Einstellen von Steuern](/docs/user/manual/de/setting-up/setting-up-taxes.html).
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-8-customer-names.md b/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-8-customer-names.md
index 69fed2b..4525c34 100644
--- a/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-8-customer-names.md
+++ b/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-8-customer-names.md
@@ -4,7 +4,7 @@
Geben Sie die Namen Ihrer Kunden und die Kontaktpersonen ein.
<img alt="Customers" class="screenshot"
-src="{{docs_base_url}}/assets/img/setup-wizard/step-8.png">
+src="/docs/assets/img/setup-wizard/step-8.png">
---
@@ -18,6 +18,6 @@
Kontaktname: Shiv Agarwal
-Um mehr über Kunden zu erfahren, lesen Sie im Abschnitt [Details zu Kunden]({{docs_base_url}}/user/manual/de/CRM/customer.html) nach.
+Um mehr über Kunden zu erfahren, lesen Sie im Abschnitt [Details zu Kunden](/docs/user/manual/de/CRM/customer.html) nach.
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-9-suppliers.md b/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-9-suppliers.md
index 7d398b5..2769879 100644
--- a/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-9-suppliers.md
+++ b/erpnext/docs/user/manual/de/setting-up/setup-wizard/step-9-suppliers.md
@@ -4,10 +4,10 @@
Geben Sie ein paar Namen Ihrer Lieferanten ein.
<img alt="Lieferanten" class="screenshot"
-src="{{docs_base_url}}/assets/img/setup-wizard/step-9.png">
+src="/docs/assets/img/setup-wizard/step-9.png">
---
-Um den Begriff "Lieferant" besser zu verstehen, lesen Sie unter [Lieferantenstammdaten]({{docs_base_url}}/user/manual/de/buying/supplier.html) nach.
+Um den Begriff "Lieferant" besser zu verstehen, lesen Sie unter [Lieferantenstammdaten](/docs/user/manual/de/buying/supplier.html) nach.
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/sms-setting.md b/erpnext/docs/user/manual/de/setting-up/sms-setting.md
index 1bcc058..0a1e73b 100644
--- a/erpnext/docs/user/manual/de/setting-up/sms-setting.md
+++ b/erpnext/docs/user/manual/de/setting-up/sms-setting.md
@@ -10,7 +10,7 @@
http://instant.smses.com/web2sms.php?username=<USERNAME>&password;=<PASSWORD>&to;=<MOBILENUMBER>&sender;=<SENDERID>&message;=<MESSAGE>
-<img class="screenshot" alt="SMS-Einstellungen" src="{{docs_base_url}}/assets/img/setup/sms-settings2.jpg">
+<img class="screenshot" alt="SMS-Einstellungen" src="/docs/assets/img/setup/sms-settings2.jpg">
> Anmerkung: Die Zeichenfolge bis zum "?" ist die URL des SMS-Gateways.
@@ -23,7 +23,7 @@
Beachten Sie, dass einige Parameter in der URL statisch sind. Sie bekommen von Ihrem SMS-Anbieter statische Werte wie Benutzername, Passwort usw. Diese statischen Werte sollten in die Tabelle der statischen Parameter eingetragen werden.
-<img class="screenshot" alt="SMS-Einstellungen" src="{{docs_base_url}}/assets/img/setup/sms-settings1.png">
+<img class="screenshot" alt="SMS-Einstellungen" src="/docs/assets/img/setup/sms-settings1.png">
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/stock-reconciliation-for-non-serialized-item.md b/erpnext/docs/user/manual/de/setting-up/stock-reconciliation-for-non-serialized-item.md
index 01f2281..a1c8dbb 100644
--- a/erpnext/docs/user/manual/de/setting-up/stock-reconciliation-for-non-serialized-item.md
+++ b/erpnext/docs/user/manual/de/setting-up/stock-reconciliation-for-non-serialized-item.md
@@ -23,18 +23,18 @@
Sie sollten sich an eine spezielle Vorlage eines Tabellenblattes halten um den Bestand und den Wert eines Artikels zu importieren. Öffnen Sie ein neues Formular zum Bestandsabgleich um die Optionen für den Download zu sehen.
-<img class="screenshot" alt="Bestandsabgleich" src="{{docs_base_url}}/assets/img/setup/stock-recon-1.png">
+<img class="screenshot" alt="Bestandsabgleich" src="/docs/assets/img/setup/stock-recon-1.png">
#### Schritt 2: Geben Sie Daten in die CSV-Datei ein.
-<img class="screenshot" alt="Bestandsabgleich" src="{{docs_base_url}}/assets/img/setup/stock-reco-data.png">
+<img class="screenshot" alt="Bestandsabgleich" src="/docs/assets/img/setup/stock-reco-data.png">
Das CSV-Format beachtet Groß- und Kleinschreibung. Verändern Sie nicht die Kopfbezeichnungen, die in der Vorlage vordefiniert wurden. In den Spalten "Artikelnummer" und "Lager" geben Sie bitte die richtige Artikelnummer und das Lager ein, so wie es in ERPNext bezeichnet wird. Für die Menge geben Sie den Lagerbestand, den Sie für diesen Artikel erfassen wollen, in einem bestimmten Lager ein. Wenn Sie die Menge oder den wertmäßigen Betrag eines Artikels nicht ändern wollen, dann lassen Sie den Eintrag leer.
Anmerkung: Geben Sie keine "0" ein, wenn sie die Menge oder den wertmäßigen Betrag nicht ändern wollen. Sonst kalkuliert das System eine Menge von "0". Lassen Sie also das Feld leer!
#### Schritt 3: Laden Sie die Datei hoch und geben Sie in das Formular "Bestandsableich" Werte ein.
-<img class="screenshot" alt="Bestandsabgleich" src="{{docs_base_url}}/assets/img/setup/stock-recon-2.png">
+<img class="screenshot" alt="Bestandsabgleich" src="/docs/assets/img/setup/stock-recon-2.png">
##### Buchungsdatum
@@ -52,11 +52,11 @@
#### Schritt 4: Überprüfen Sie die Daten zum Bestandsabgleich
-<img class="screenshot" alt="Bestandsabgleich Überprüfung" src="{{docs_base_url}}/assets/img/setup/stock-reco-upload.gif">
+<img class="screenshot" alt="Bestandsabgleich Überprüfung" src="/docs/assets/img/setup/stock-reco-upload.gif">
### Bericht zum Lagerbuch
-<img class="screenshot" alt="Bestandsabgleich" src="{{docs_base_url}}/assets/img/setup/stock-reco-ledger.png">
+<img class="screenshot" alt="Bestandsabgleich" src="/docs/assets/img/setup/stock-reco-ledger.png">
##### So arbeitet der Bestandsabgleich
diff --git a/erpnext/docs/user/manual/de/setting-up/territory.md b/erpnext/docs/user/manual/de/setting-up/territory.md
index 22743d0..24ce34c 100644
--- a/erpnext/docs/user/manual/de/setting-up/territory.md
+++ b/erpnext/docs/user/manual/de/setting-up/territory.md
@@ -3,6 +3,6 @@
Wenn sich Ihre Geschäftstätigkeit in verschiedenen Regionen abspielt (das können z. B. Länder, Bundesländer oder Städte sein), ist es normalerweise eine großartige Idee, diese Struktur auch im System abzubilden. Wenn Sie Ihre Kunden erst einmal nach Regionen eingeteilt haben, können für jede Artikelgruppe Ziele aufstellen und bekommen Berichte, die Ihnen Ihre aktuelle Leistung in einem Gebiet zeigen und auch das, was Sie geplant haben. Sie können zudem auch eine unterschiedliche Preispolitik für ein und dasselbe Produkt in unterschiedlichen Regionen einstellen.
-<img class="screenshot" alt="Baumstruktur Regionen" src="{{docs_base_url}}/assets/img/crm/territory-tree.png">
+<img class="screenshot" alt="Baumstruktur Regionen" src="/docs/assets/img/crm/territory-tree.png">
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/users-and-permissions/adding-users.md b/erpnext/docs/user/manual/de/setting-up/users-and-permissions/adding-users.md
index 8c4c914..ac4093b 100644
--- a/erpnext/docs/user/manual/de/setting-up/users-and-permissions/adding-users.md
+++ b/erpnext/docs/user/manual/de/setting-up/users-and-permissions/adding-users.md
@@ -11,7 +11,7 @@
### 1. Übersicht der Benutzer
-<img class="screenshot" src="{{docs_base_url}}/assets/img/setup/users/user-1.png" alt="Benutzerliste">
+<img class="screenshot" src="/docs/assets/img/setup/users/user-1.png" alt="Benutzerliste">
Um einen neuen Benutzer hinzuzufügen, klicken Sie auf "Neu".
@@ -28,18 +28,18 @@
Nach dem Speichern sehen Sie eine Liste der Rollen und daneben jeweils eine Schaltfläche zum Anklicken. Markieren Sie alle Rollen, von denen Sie möchten, dass sie der Benutzer bekommt, und speichern Sie das Dokument ab. Um zu sehen, welche Berechtigungen die einzelnen Rollen haben, klicken Sie auf den Rollennamen.
-<img class="screenshot" src="{{docs_base_url}}/assets/img/setup/users/user-2.png" alt="Benutzerrollen">
+<img class="screenshot" src="/docs/assets/img/setup/users/user-2.png" alt="Benutzerrollen">
### 4. Zugriff auf Module einstellen
Benutzer haben Zugriff auf alle Module, für die sie aufgrund Ihrer Rollen Berechtigungen haben. Wenn Sie bestimmte Module für den Zugriff sperren möchten, entfernen Sie die Markierung in der Liste.
-<img class="screenshot" src="{{docs_base_url}}/assets/img/setup/users/user-3.png" alt="Geblockte Module für Benutzer">
+<img class="screenshot" src="/docs/assets/img/setup/users/user-3.png" alt="Geblockte Module für Benutzer">
### 5. Sicherheitseinstellungen
Wenn Sie dem Benutzer nur zu bestimmten Bürozeiten oder an Wochenenden Zugriff auf das System gewähren möchten, stellen Sie das unter den Sicherheitseinstellungen ein.
-<img class="screenshot" src="{{docs_base_url}}/assets/img/setup/users/user-4.png" alt="Sicherheitseinstellungen für Benutzer">
+<img class="screenshot" src="/docs/assets/img/setup/users/user-4.png" alt="Sicherheitseinstellungen für Benutzer">
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/users-and-permissions/role-based-permissions.md b/erpnext/docs/user/manual/de/setting-up/users-and-permissions/role-based-permissions.md
index 6d8108a..1d121c8 100644
--- a/erpnext/docs/user/manual/de/setting-up/users-and-permissions/role-based-permissions.md
+++ b/erpnext/docs/user/manual/de/setting-up/users-and-permissions/role-based-permissions.md
@@ -7,7 +7,7 @@
> Einstellungen > Berechtigungen > Rollenberechtigungen-Manager
-<img alt="Berechtigungen für Lesen, Schreiben, Erstellen, Übertragen und Abändern mit Hilfe des Rollenberechtigungen-Managers einstellen" class="screenshot" src="{{docs_base_url}}/assets/img/users-and-permissions/setting-up-permissions-leave-application.png">
+<img alt="Berechtigungen für Lesen, Schreiben, Erstellen, Übertragen und Abändern mit Hilfe des Rollenberechtigungen-Managers einstellen" class="screenshot" src="/docs/assets/img/users-and-permissions/setting-up-permissions-leave-application.png">
Berechtigungen werden angewandt auf einer Kombination von:
@@ -31,7 +31,7 @@
Um Benutzerberechtigungen zu setzen, gehen Sie zu:
-> Einstellungen > Berechtigungen > [Benutzerrechte-Manager]({{docs_base_url}}/user/manual/de/setting-up/users-and-permissions/user-permissions.html)
+> Einstellungen > Berechtigungen > [Benutzerrechte-Manager](/docs/user/manual/de/setting-up/users-and-permissions/user-permissions.html)
@@ -43,30 +43,30 @@
Der Urlaubsantrag ist ein gutes **Beispiel**, welches alle Bereiche des Berechtigungssystems abdeckt.
-<img class="screenshot" alt="Der Urlaubsantrag sollte von einem Mitarbeiter erstellt werden, und von einem Urlaubsgenehmiger oder Mitarbeiter des Personalwesens genehmigt werden." src="{{docs_base_url}}/assets/img/users-and-permissions/setting-up-permissions-leave-application-form.png">
+<img class="screenshot" alt="Der Urlaubsantrag sollte von einem Mitarbeiter erstellt werden, und von einem Urlaubsgenehmiger oder Mitarbeiter des Personalwesens genehmigt werden." src="/docs/assets/img/users-and-permissions/setting-up-permissions-leave-application-form.png">
1\. **Er sollte von einem "Mitarbeiter" erstellt werden.** Aus diesem Grund sollte die Rolle "Mitarbeiter" Berechtigungen zum Lesen, Schreiben und Erstellen haben.
-<img class="screenshot" alt="Einem Mitarbeiter Lese-, Schreib- und Erstellrechte für einen Urlaubsantrag geben." src="{{docs_base_url}}/assets/img/users-and-permissions/setting-up-permissions-employee-role.png">
+<img class="screenshot" alt="Einem Mitarbeiter Lese-, Schreib- und Erstellrechte für einen Urlaubsantrag geben." src="/docs/assets/img/users-and-permissions/setting-up-permissions-employee-role.png">
2\. **Ein Mitarbeiter sollte nur auf seine/Ihre eigenen Urlaubsanträge zugreifen können.** Daher sollte der Punkt "Benutzerberechtigungen anwenden" für die Rolle "Mitarbeiter" aktiviert sein und es sollte ein Datensatz "Benutzerberechtigung" für jede Kombination von Benutzer und Mitarbeiter erstellt werden. (Dieser Aufwand reduziert sich für den Dokumententyp, indem über das Programm Datensätze für Benutzerberechtigungen erstellt werden.)
-<img class="screenshot" alt="Den Zugriff für einen Benutzer mit der Rolle Mitarbeiter auf Urlaubsanträge über den Benutzerberechtigungen-Manager einschränken." src="{{docs_base_url}}/assets/img/users-and-permissions/setting-up-permissions-employee-user-permissions.png">
+<img class="screenshot" alt="Den Zugriff für einen Benutzer mit der Rolle Mitarbeiter auf Urlaubsanträge über den Benutzerberechtigungen-Manager einschränken." src="/docs/assets/img/users-and-permissions/setting-up-permissions-employee-user-permissions.png">
3\. **Der Personalmanager sollte alle Urlaubsanträge sehen können.** Erstellen Sie für den Personalmanager eine Berechtigungsregel auf der Ebene 0 mit Lese-Rechten. Die Option "Benutzerberechtigungen anwenden" sollte deaktiviert sein.
-<img class="screenshot" alt="Einem Personalmanager Rechte für Übertragen und Stornieren für Urlaubsanträge geben. 'Benutzerberechtigungen anwenden' ist demarkiert um vollen Zugriff zu ermöglichen." src="{{docs_base_url}}/assets/img/users-and-permissions/setting-up-permissions-hr-manager-role.png">
+<img class="screenshot" alt="Einem Personalmanager Rechte für Übertragen und Stornieren für Urlaubsanträge geben. 'Benutzerberechtigungen anwenden' ist demarkiert um vollen Zugriff zu ermöglichen." src="/docs/assets/img/users-and-permissions/setting-up-permissions-hr-manager-role.png">
4\. **Der Urlaubsgenehmiger sollte die ihn betreffenden Urlaubsanträge lesen und aktualisieren können.** Der Urlaubsgenehmiger erhält Lese- und Schreibzugriff auf Ebene 0, und die Option "Benutzerberechtigungen anwenden" wird aktiviert. Zutreffende Mitarbeiter-Dokumente sollten in den Benutzerberechtigungen des Urlaubsgenehmigers aufgelistet sein. (Dieser Aufwand reduziert sich für Urlaubsgenehmiger, die in Mitarbeiterdokumenten aufgeführt werden, indem über das Programm Datensätze für Benutzerberechtigungen erstellt werden.)
-<img class="screenshot" alt="Rechte für Schreiben, Lesen und Übertragen an einen Urlaubsgenehmiger zum Genehmigen von Urlauben geben. 'Benutzerberechtigungen anwenden' ist markiert, um den Zugriff basierend auf dem Mitarbeitertyp einzuschränken." src="{{docs_base_url}}/assets/img/users-and-permissions/setting-up-permissions-leave-approver-role.png">
+<img class="screenshot" alt="Rechte für Schreiben, Lesen und Übertragen an einen Urlaubsgenehmiger zum Genehmigen von Urlauben geben. 'Benutzerberechtigungen anwenden' ist markiert, um den Zugriff basierend auf dem Mitarbeitertyp einzuschränken." src="/docs/assets/img/users-and-permissions/setting-up-permissions-leave-approver-role.png">
5\. **Ein Urlaubsantrag sollte nur von einem Mitarbeiter der Personalverwaltung oder einem Urlaubsgenehmiger bestätigt oder abgelehnt werden können.** Das Statusfeld des Urlaubsantrags wird auf Ebene 1 gesetzt. Mitarbeiter der Personalverwaltung und Urlaubsgenehmiger bekommen Lese- und Schreibrechte für Ebene 1, während allen anderen Leserechte für Ebene 1 gegeben werden.
-<img class="screenshot" alt="Leserechte auf einen Satz von Feldern auf bestimmte Rollen beschränken." src="{{docs_base_url}}/assets/old_images/erpnext/setting-up-permissions-level-1.png">
+<img class="screenshot" alt="Leserechte auf einen Satz von Feldern auf bestimmte Rollen beschränken." src="/docs/assets/old_images/erpnext/setting-up-permissions-level-1.png">
6\. **Der Mitarbeiter der Personalverwaltung sollte die Möglichkeit haben Urlaubsanträge an seine Untergebenen zu delegieren.** Er erhält die Erlaubis Benutzerberechtigungen einzustellen. Ein Nutzer mit der Rolle "Benutzer Personalverwaltung" wäre dann also in der Lage Benutzer-Berechtigungen und Urlaubsanträge für andere Benutzer zu definieren.
-<img class="screenshot" alt="Es dem Benutzer der Personalverwaltung ermöglichen, den Zugriff auf Urlaubsanträge zu delegieren, indem er 'Benutzerberechtigungen einstellen' markiert. Dies erlaubt es dem Benutzer der Personalverwaltung auf den Benutzerberechtigungen-Manager für 'Urlaubsanträge' zuzugreifen" src="{{docs_base_url}}/assets/img/users-and-permissions/setting-up-permissions-hr-user-role.png">
+<img class="screenshot" alt="Es dem Benutzer der Personalverwaltung ermöglichen, den Zugriff auf Urlaubsanträge zu delegieren, indem er 'Benutzerberechtigungen einstellen' markiert. Dies erlaubt es dem Benutzer der Personalverwaltung auf den Benutzerberechtigungen-Manager für 'Urlaubsanträge' zuzugreifen" src="/docs/assets/img/users-and-permissions/setting-up-permissions-hr-user-role.png">
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/users-and-permissions/sharing.md b/erpnext/docs/user/manual/de/setting-up/users-and-permissions/sharing.md
index 2436439..aea4770 100644
--- a/erpnext/docs/user/manual/de/setting-up/users-and-permissions/sharing.md
+++ b/erpnext/docs/user/manual/de/setting-up/users-and-permissions/sharing.md
@@ -5,6 +5,6 @@
Um ein Dokument zu teilen, öffnen Sie das Dokument, klicken Sie auf das "+"-Symbol im Abschnitt "Freigegeben für" und wählen Sie den Benutzer aus.
-<img class="screenshot" src="{{docs_base_url}}/assets/img/setup/users/share.gif">
+<img class="screenshot" src="/docs/assets/img/setup/users/share.gif">
{next}
diff --git a/erpnext/docs/user/manual/de/setting-up/users-and-permissions/user-permissions.md b/erpnext/docs/user/manual/de/setting-up/users-and-permissions/user-permissions.md
index a751693..6499cc2 100644
--- a/erpnext/docs/user/manual/de/setting-up/users-and-permissions/user-permissions.md
+++ b/erpnext/docs/user/manual/de/setting-up/users-and-permissions/user-permissions.md
@@ -1,45 +1,5 @@
# Benutzer-Berechtigungen
-<span class="text-muted contributed-by">Beigetragen von CWT Connector & Wire Technology GmbH</span>
-Verwenden Sie den Benutzerberechtigungen-Manager um den Zugriff eines Benutzers auf eine Menge von Dokumenten einzuschränken.
+This document has been changed but not yet translated. Please see the English Version
-Rollenbasierte Berechtigungen definieren den Rahmen an Dokumententypen, innerhalb derer sich ein Benutzer mit einer Anzahl von Rollen bewegen darf. Sie können jedoch noch feinere Einstellungen treffen, wenn Sie für einen Benutzer Benutzerberechtigungen definieren. Wenn Sie bestimmte Dokumente in der Liste der Benutzerberechtigungen eintragen, dann können Sie den Zugriff dieses Benutzers auf bestimmte Dokumente eines bestimmten DocTypes begrenzen, unter der Bedingung, dass die Option "Benutzerberechtigungen anwenden" im Rollenberechtigungs-Manager aktiviert ist.
-
-Beginnen Sie wie folgt:
-
-> Einstellungen > Berechtigungen > Benutzerrechte-Manager
-
-
-Abbildung: Übersicht aus dem Benutzerberechtigungs-Manager die aufzeigt, wie Benutzer nur auf bestimmte Firmen zugreifen können
-
-#### Beispiel
-
-Der Benutzer "aromn@example.com" hat die Rolle "Nutzer Vertrieb" und wir möchten die Zugriffsrechte des Benutzers so einschränken, dass er nur auf Datensätze einer bestimmten Firma, nämlich der Wind Power LLC, zugreifen kann.
-
-1\. Wir fügen eine Benutzerberechtigungs-Zeile für die Firma hinzu.
-
-Abbildung: Hinzufügen einer Zeile "Benutzer-Berechtigung" für die Kombination aus dem Benutzer "aromn@example.com" und der Firma Wind Power LLC
-
-2\. Die Rolle "Alle" hat nur Leseberechtigungen für die Firma, "Benutzer-Berechtigungen anwenden" ist aktiviert.
-
-Abbildung: Leseberechtigung mit aktivierter Option "Benutzer-Berechtigungen anwenden" für den DocType Firma
-
-3\. Die oben abgebildete Kombination der zwei Regeln führt dazu, dass der Benutzer "aromn@example.com" für die Firma Wind Power LLC nur Leserechte hat.
-
-Abbildung: Der Zugriff wird auf die Firma Wind Power LLC beschränkt
-
-4\. Wir möchten nun diese Benutzer-Berechtigung für "Firma" auf andere Dokumente wie "Angebot", "Kundenauftrag" etc. übertragen. Diese Formulare haben **Verknüpfungsfelder zu "Firma"**. Als Ergebnis werden Benutzer-Berechtigungen von "Firma" auch auf diese Dokumente übertragen, was dazu führt, dass der Benutzer "aromn@example.com" auf diese Dokumente zugreifen kann, wenn Sie mit Wind Power LLC verbunden sind.
-
-Abbildung: Benutzer mit der Rolle "Nutzer Vertrieb" können, basierend auf Ihren Benutzer-Berechtigungen, Angebote lesen, schreiben, erstellen, übertragen und stornieren, wenn "Benutzer-Berechtigungen anwenden" aktiviert ist.
-
-Abbildung: Die Auflistung der Angebote enthält nur Ergebnisse für die Firma Wind Power LLC für den Benutzer "aromn@example.com"
-
-5\. Benutzer-Berechtigungen werden automatisch auf Basis von verknüpften Feldern angewandt, genauso wie wir es bei den Angeboten gesehen haben. Aber: Das Lead-Formular hat vier Verknüpfungsfelder: "Region", "Firma", "Eigentümer des Leads" und "Nächster Kontakt durch". Nehmen wir an, Sie möchten dass die Leads den Zugriff des Benutzers basierend auf Ihrer Region einschränken, obwohl Sie für die DocTypes "Benutzer", "Region" und "Firma" Benutzer-Berechtigungen angelegt haben. Dann gehen Sie wir folgt vor: Aktivieren Sie die Option "Benutzer-Berechtigungen ignorieren" für die Verknüpfungsfelder "Firma", "Eigentümer des Leads" und "Nächster Kontakt durch".
-
-Abbildung: Der Vertriebsmitarbeiter kann Leads lesen, schreiben und erstellen, eingeschränkt durch Benutzer-Berechtigungen.
-
-Abbildung: Markieren Sie "Benutzer-Berechtigungen ignorieren" für die Felder "Firma", "Lead-Inhaber" und "Nächster Kontakt durch" über Setup > Anpassen > Formular anpassen > Lead.
-
-Abbildung: Aufgrund der obigen Kombination kann der Benutzer "aromn@example.com" nur auf Leads der Region "United States" zugreifen.
-
-{next}
+<a href="/docs/erpnext/user/manual/en/setting-up/users-and-permissions/user-permissions">User Permission</a>
diff --git a/erpnext/docs/user/manual/de/setting-up/workflows.md b/erpnext/docs/user/manual/de/setting-up/workflows.md
index 7879a0a..c53a264 100644
--- a/erpnext/docs/user/manual/de/setting-up/workflows.md
+++ b/erpnext/docs/user/manual/de/setting-up/workflows.md
@@ -7,7 +7,7 @@
Wenn ein Benutzer einen Urlaub beantragt, dann wird seine Anfrage an die Personalabteilung weiter geleitet. Die Personalabteilung, repräsentiert durch einen Mitarbeiter der Personalabteilung, wird diese Anfrage dann entweder genehmigen oder ablehnen. Wenn dieser Prozess abgeschlossen ist, dann bekommt der Vorgesetzte des Benutzers (der Urlaubsgenehmiger) eine Mitteilung, dass die Personalabteilung den Antrag genehmigt oder abgelehnt hat. Der Vorgesetzte, der die genehmigende Instanz ist, wird dann den Antrag entweder genehmigen oder ablehnen. Dementsprechend bekommt der Benutzer dann eine Genehmigung oder eine Ablehnung.
-<img class="screenshot" alt="Workflow" src="{{docs_base_url}}/assets/img/setup/workflow-leave-fl.jpg">
+<img class="screenshot" alt="Workflow" src="/docs/assets/img/setup/workflow-leave-fl.jpg">
Um einen Workflow und Übergangsregeln zu erstellen, gehen Sie zu:
@@ -15,11 +15,11 @@
#### Schritt 1: Geben Sie die unterschiedlichen Zustände des Prozesses Urlaubsantrag ein.
-<img class="screenshot" alt="Workflow" src="{{docs_base_url}}/assets/img/setup/workflow-1.png">
+<img class="screenshot" alt="Workflow" src="/docs/assets/img/setup/workflow-1.png">
#### Schritt 2: Geben Sie die Übergangsregeln ein.
-<img class="screenshot" alt="Workflow" src="{{docs_base_url}}/assets/img/setup/workflow-2.png">
+<img class="screenshot" alt="Workflow" src="/docs/assets/img/setup/workflow-2.png">
Hinweise:
@@ -37,14 +37,14 @@
Wenn ein Urlaubsantrag übertragen wird, steht der Status in der Ecke der rechten Seite auf "Beantragt".
-<img class="screenshot" alt="Workflow" src="{{docs_base_url}}/assets/img/setup/workflow-3.png">
+<img class="screenshot" alt="Workflow" src="/docs/assets/img/setup/workflow-3.png">
Wenn sich ein Mitarbeiter der Personalabteilung anmeldet, dann kann er den Antrag genehmigen oder ablehnen. Wenn eine Genehmigung erfolgt, wechselt der Status in der rechten Ecke zu "Genehmigt". Es wird jedoch ein blaues Informationssymbol angezeigt, welches aussagt, dass der Urlaubsantrag noch anhängig ist.
-<img class="screenshot" alt="Workflow" src="{{docs_base_url}}/assets/img/setup/workflow-4.png">
+<img class="screenshot" alt="Workflow" src="/docs/assets/img/setup/workflow-4.png">
Wenn der Urlaubsgenehmiger die Seite mit den Urlaubsanträgen öffnet, kann er den Status von "Genehmigt" auf "Abgelehnt" ändern.
-<img class="screenshot" alt="Workflow" src="{{docs_base_url}}/assets/img/setup/workflow-5.png">
+<img class="screenshot" alt="Workflow" src="/docs/assets/img/setup/workflow-5.png">
{next}
diff --git a/erpnext/docs/user/manual/de/stock/accounting-of-inventory-stock/index.md b/erpnext/docs/user/manual/de/stock/accounting-of-inventory-stock/index.md
index 1a17675..fb427e1 100644
--- a/erpnext/docs/user/manual/de/stock/accounting-of-inventory-stock/index.md
+++ b/erpnext/docs/user/manual/de/stock/accounting-of-inventory-stock/index.md
@@ -9,7 +9,7 @@
Wenn Sie Artikel kaufen und erhalten, werden diese Artikel als Vermögen des Unternehmens gebucht (Warenbestand/Anlagevermögen). Wenn Sie diese Artikel wieder verkaufen und ausliefern, werden Kosten (Selbstkosten) in Höhe der Bezugskosten der Artikel verbucht. Nach jeder Lagertransaktion werden Buchungen im Hauptbuch erstellt. Dies hat zum Ergebnis, dass der Wert im Lagerbuch immer gleich dem Wert in der Bilanz bleibt. Das verbessert die Aussagekraft der Bilanz und der Gewinn- und Verlustrechnung.
-Um Buchungen für bestimmte Lagertransaktionen zu überprüfen, bitte unter [Beispiele]({{docs_base_url}}/user/manual/de/stock/accounting-of-inventory-stock/perpetual-inventory.html) nachlesen.
+Um Buchungen für bestimmte Lagertransaktionen zu überprüfen, bitte unter [Beispiele](/docs/user/manual/de/stock/accounting-of-inventory-stock/perpetual-inventory.html) nachlesen.
#### Vorteile
@@ -33,6 +33,6 @@
Dieser Gesamtprozess wird als Stichtagsinventur bezeichnet.
-Wenn Sie als bereits existierender Benutzer die Stichtagsinventur nutzen aber zur Ständigen Inventur wechseln möchten, müssen Sie der Migrationsanleitung folgen. Für weitere Details lesen Sie [Migration aus der Stichtagsinventur]({{docs_base_url}}/user/manual/de/stock/accounting-of-inventory-stock/migrate-to-perpetual-inventory.html).
+Wenn Sie als bereits existierender Benutzer die Stichtagsinventur nutzen aber zur Ständigen Inventur wechseln möchten, müssen Sie der Migrationsanleitung folgen. Für weitere Details lesen Sie [Migration aus der Stichtagsinventur](/docs/user/manual/de/stock/accounting-of-inventory-stock/migrate-to-perpetual-inventory.html).
{next}
diff --git a/erpnext/docs/user/manual/de/stock/accounting-of-inventory-stock/migrate-to-perpetual-inventory.md b/erpnext/docs/user/manual/de/stock/accounting-of-inventory-stock/migrate-to-perpetual-inventory.md
index 742d246..62a9166 100644
--- a/erpnext/docs/user/manual/de/stock/accounting-of-inventory-stock/migrate-to-perpetual-inventory.md
+++ b/erpnext/docs/user/manual/de/stock/accounting-of-inventory-stock/migrate-to-perpetual-inventory.md
@@ -21,7 +21,7 @@
> Einstellungen > Rechnungswesen > Konteneinstellungen > Eine Buchung für jede Lagerbewegung erstellen
-
+
* Erstellen Sie Lagerbuchungen (Materialübertrag) um verfügbare Lagerbestände von einem existierenden Lager auf ein neues Lager zu übertragen. Sobald im neuen Lager der Lagerbestand verfügbar wird, sollten Sie für zukünftige Transaktionen nur noch das neue Lager verwenden.
diff --git a/erpnext/docs/user/manual/de/stock/accounting-of-inventory-stock/perpetual-inventory.md b/erpnext/docs/user/manual/de/stock/accounting-of-inventory-stock/perpetual-inventory.md
index f0e1f7a..639e140 100644
--- a/erpnext/docs/user/manual/de/stock/accounting-of-inventory-stock/perpetual-inventory.md
+++ b/erpnext/docs/user/manual/de/stock/accounting-of-inventory-stock/perpetual-inventory.md
@@ -133,11 +133,11 @@
<p><strong>Lagerbuch</strong>
</p>
-<img class="screenshot" alt="Lagerbuch" src="{{docs_base_url}}/assets/img/accounts/perpetual-receipt-sl-1.png">
+<img class="screenshot" alt="Lagerbuch" src="/docs/assets/img/accounts/perpetual-receipt-sl-1.png">
**Hauptbuch:**
-<img class="screenshot" alt="Hauptbuch" src="{{docs_base_url}}/assets/img/accounts/perpetual-receipt-gl-2.png">
+<img class="screenshot" alt="Hauptbuch" src="/docs/assets/img/accounts/perpetual-receipt-gl-2.png">
Um ein System der doppelten Buchhaltung zu erhalten, werden dadurch, dass sich der Kontensaldo durch den Kaufbeleg erhöht, die Konten "In Verkaufsstellen" und "Anlagevermögen im Lager" belastet und das temporäre Konto "Lagerware erhalten aber noch nicht abgerechnet" entlastet. Zum selben Zeitpunkt wird eine negative Aufwendung auf das Konto "In der Bewertung enthaltene Kosten" verbucht, um die Bewertung hinzuzufügen und um eine doppelte Aufwandsverbuchung zu vermeiden.
@@ -149,7 +149,7 @@
#### Hauptbuch
-<img class="screenshot" alt="Hauptbuch" src="{{docs_base_url}}/assets/img/accounts/perpetual-pinv-gl-3.png">
+<img class="screenshot" alt="Hauptbuch" src="/docs/assets/img/accounts/perpetual-pinv-gl-3.png">
Hier wird das Konto "Lagerware erhalten aber noch nicht bewertet" belastet und hebt den Effekt des Kaufbeleges auf.
@@ -206,11 +206,11 @@
**Lagerbuch**
-<img class="screenshot" alt="Lagerbuch" src="{{docs_base_url}}/assets/img/accounts/perpetual-dn-sl-4.png">
+<img class="screenshot" alt="Lagerbuch" src="/docs/assets/img/accounts/perpetual-dn-sl-4.png">
**Hauptbuch**
-<img class="screenshot" alt="Hauptbuch" src="{{docs_base_url}}/assets/img/accounts/perpetual-dn-gl-5.png">
+<img class="screenshot" alt="Hauptbuch" src="/docs/assets/img/accounts/perpetual-dn-gl-5.png">
Da der Artikel aus dem Lager "In Verkaufsstellen" geliefert wird, wird das Konto "In Verkaufsstellen" entlastet und ein Betrag in gleicher Höhe dem Aufwandskonto "Selbstkosten" belastet. Der belastete/entlastete Betrag ist gleich dem Gesamtwert (Einkaufskosten) des Verkaufsartikels. Und der Wert wird gemäß der bevorzugten Bewertungsmethode (FIFO/Gleitender Durchschnitt) oder den tatsächlichen Kosten eines serialisierten Artikels kalkuliert.
@@ -231,11 +231,11 @@
**Lagerbuch**
-<img class="screenshot" alt="Lagerbuch" src="{{docs_base_url}}/assets/img/accounts/perpetual-inv-sl-6.png">
+<img class="screenshot" alt="Lagerbuch" src="/docs/assets/img/accounts/perpetual-inv-sl-6.png">
**Hauptbuch**
-<img class="screenshot" alt="Hauptbuch" src="{{docs_base_url}}/assets/img/accounts/perpetual-inv-gl-7.png">
+<img class="screenshot" alt="Hauptbuch" src="/docs/assets/img/accounts/perpetual-inv-gl-7.png">
Hier werden, im Gegensatz zu den normalen Buchungen für Rechnungen, die Konten "In Verkaufsstellen" und "Selbstkosten" basierend auf der Bewertung beeinflusst.
@@ -268,11 +268,11 @@
**Lagerbuch**
-<img class="screenshot" alt="Lagerbuch" src="{{docs_base_url}}/assets/img/accounts/perpetual-st-receipt-sl.png">
+<img class="screenshot" alt="Lagerbuch" src="/docs/assets/img/accounts/perpetual-st-receipt-sl.png">
**Hauptbuch**
-<img class="screenshot" alt="Hauptbuch" src="{{docs_base_url}}/assets/img/accounts/perpetual-st-receipt-gl.png">
+<img class="screenshot" alt="Hauptbuch" src="/docs/assets/img/accounts/perpetual-st-receipt-gl.png">
* * *
@@ -303,11 +303,11 @@
**Lagerbuch**
-<img class="screenshot" alt="Lagerbuch" src="{{docs_base_url}}/assets/img/accounts/perpetual-st-issue-sl.png">
+<img class="screenshot" alt="Lagerbuch" src="/docs/assets/img/accounts/perpetual-st-issue-sl.png">
**Hauptbuch**
-<img class="screenshot" alt="Hauptbuch" src="{{docs_base_url}}/assets/img/accounts/perpetual-st-issue-gl.png">
+<img class="screenshot" alt="Hauptbuch" src="/docs/assets/img/accounts/perpetual-st-issue-gl.png">
* * *
@@ -340,8 +340,8 @@
**Lagerbuch**
-<img class="screenshot" alt="Lagerbuch" src="{{docs_base_url}}/assets/img/accounts/perpetual-st-transfer-sl.png">
+<img class="screenshot" alt="Lagerbuch" src="/docs/assets/img/accounts/perpetual-st-transfer-sl.png">
**Hauptbuch**
-<img class="screenshot" alt="Hauptbuch" src="{{docs_base_url}}/assets/img/accounts/perpetual-st-transfer-gl.png">
\ No newline at end of file
+<img class="screenshot" alt="Hauptbuch" src="/docs/assets/img/accounts/perpetual-st-transfer-gl.png">
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/de/stock/articles/article-variants.md b/erpnext/docs/user/manual/de/stock/articles/article-variants.md
index afd5347..a54ccd6 100644
--- a/erpnext/docs/user/manual/de/stock/articles/article-variants.md
+++ b/erpnext/docs/user/manual/de/stock/articles/article-variants.md
@@ -1,3 +1,5 @@
+# Article Variants
+
<span class="text-muted contributed-by">Beigetragen von CWT Connector & Wire Technology GmbH</span>
## 4.6.2 Artikelvarianten
diff --git a/erpnext/docs/user/manual/de/stock/batch.md b/erpnext/docs/user/manual/de/stock/batch.md
index 783e7e3..69171e1 100644
--- a/erpnext/docs/user/manual/de/stock/batch.md
+++ b/erpnext/docs/user/manual/de/stock/batch.md
@@ -13,7 +13,7 @@
Die Chargenstammdaten werden vor der Ausfertigung des Kaufbelegs erstellt. Somit erstellen Sie immer dann, wenn für einen Chargenartikel ein Kaufbeleg oder ein Produktionsauftrag ausgegeben werden, zuerst die Chargennummer des Artikels und wählen diese dann im Kaufbeleg oder im Produktionsauftrag aus.
-<img class="screenshot" alt="Charge" src="{{docs_base_url}}/assets/img/stock/batch.png">
+<img class="screenshot" alt="Charge" src="/docs/assets/img/stock/batch.png">
> Anmerkung: Bei Lagertransaktionen werden die Chargen-IDs basierend auf dem Code, dem Lager, dem Verfallsdatum der Charge (verglichen mit dem Veröffentlichungsdatum der Transaktion) und der aktuellen Menge im Lager gefiltert.
diff --git a/erpnext/docs/user/manual/de/stock/delivery-note.md b/erpnext/docs/user/manual/de/stock/delivery-note.md
index 00e66ca..5ee2567 100644
--- a/erpnext/docs/user/manual/de/stock/delivery-note.md
+++ b/erpnext/docs/user/manual/de/stock/delivery-note.md
@@ -11,7 +11,7 @@
oder aber über eine "übertragene" Kundenbestellung (die noch nicht versandt wurde) indem Sie auf "Lieferschein erstellen" klicken.
-<img class="screenshot" alt="Lieferschein" src="{{docs_base_url}}/assets/img/stock/delivery-note.png">
+<img class="screenshot" alt="Lieferschein" src="/docs/assets/img/stock/delivery-note.png">
Sie können die Details auch aus einer noch nicht gelieferten Kundenbestellung "herausziehen".
@@ -19,7 +19,7 @@
### Pakete oder Artikel mit Produkt-Bundles versenden
-Wenn Sie Artikel, die ein [Produkt-Bundle]({{docs_base_url}}/user/manual/de/selling/setup/product-bundle.html), ERPNext will automatically beinhalten, versenden, erstellt Ihnen ERPNext automatisch eine Tabelle "Packliste" basierend auf den Unterartikeln dieses Artikels.
+Wenn Sie Artikel, die ein [Produkt-Bundle](/docs/user/manual/de/selling/setup/product-bundle.html), ERPNext will automatically beinhalten, versenden, erstellt Ihnen ERPNext automatisch eine Tabelle "Packliste" basierend auf den Unterartikeln dieses Artikels.
Wenn Ihre Artikel serialisiert sind, dann müssen Sie für Artikel vom Typ Produkt-Bundle die Seriennummer in der Tabelle "Packliste" aktualisieren.
diff --git a/erpnext/docs/user/manual/de/stock/material-request.md b/erpnext/docs/user/manual/de/stock/material-request.md
index 5a47b13..2a59ecb 100644
--- a/erpnext/docs/user/manual/de/stock/material-request.md
+++ b/erpnext/docs/user/manual/de/stock/material-request.md
@@ -3,7 +3,7 @@
Eine Materialanfrage ist ein einfaches Dokument, welches einen Bedarf an Artikeln (Produkte oder Dienstleistungen) für einen bestimmten Zweck erfasst.
-<img class="screenshot" alt="Materialanfrage" src="({{docs_base_url}}/assets/img/buying/material-request-workflow.jpg">
+<img class="screenshot" alt="Materialanfrage" src="(/docs/assets/img/buying/material-request-workflow.jpg">
Um eine Materialanfrage manuell zu erstellen, gehen Sie bitte zu:
@@ -11,14 +11,14 @@
### Materialanfrage erstellen
-<img class="screenshot" alt="Materialanfrage" src="{{docs_base_url}}/assets/img/buying/material-request.png">
+<img class="screenshot" alt="Materialanfrage" src="/docs/assets/img/buying/material-request.png">
Eine Materialanfrage kann auf folgende Arten erstellt werden:
* Automatisch aus einem Kundenauftrag heraus.
* Automatisch, wenn die projizierte Menge eines Artikels in den Lagern einen bestimmten Bestand erreicht.
* Automatisch aus einer Stückliste heraus, wenn Sie das Modul "Produktionsplanung" benutzen, um Ihre Fertigungsaktivitäten zu planen.
-* Wenn Ihre Artikel Bestandsposten sind, müssen Sie überdies das Lager angeben, auf welches diese Artikel geliefert werden sollen. Das hilft dabei die [projizierte Menge]({{docs_base_url}}/user/manual/de/stock/projected-quantity.html) für diesen Artikel im Auge zu behalten.
+* Wenn Ihre Artikel Bestandsposten sind, müssen Sie überdies das Lager angeben, auf welches diese Artikel geliefert werden sollen. Das hilft dabei die [projizierte Menge](/docs/user/manual/de/stock/projected-quantity.html) für diesen Artikel im Auge zu behalten.
Es gibt folgende Typen von Materialanfragen:
diff --git a/erpnext/docs/user/manual/de/stock/projected-quantity.md b/erpnext/docs/user/manual/de/stock/projected-quantity.md
index 2b3d9e7..2f6e001 100644
--- a/erpnext/docs/user/manual/de/stock/projected-quantity.md
+++ b/erpnext/docs/user/manual/de/stock/projected-quantity.md
@@ -7,7 +7,7 @@
Eine strikte Kontrolle des projizierten Lagerbestandes ist entscheidend um Engpässe vorherzusagen und die richtige Bestellmenge kalkulieren zu können.
-<img class="screenshot" alt="Bericht zur projizierten Menge" src="{{docs_base_url}}/assets/img/stock/projected-quantity-stock-report.png">
+<img class="screenshot" alt="Bericht zur projizierten Menge" src="/docs/assets/img/stock/projected-quantity-stock-report.png">
> Projizierte Menge = Momentan vorhandene Menge + Geplante Menge + Angefragte Menge + Bestellte Menge - Reservierte Menge
diff --git a/erpnext/docs/user/manual/de/stock/purchase-receipt.md b/erpnext/docs/user/manual/de/stock/purchase-receipt.md
index f78600d..5303895 100644
--- a/erpnext/docs/user/manual/de/stock/purchase-receipt.md
+++ b/erpnext/docs/user/manual/de/stock/purchase-receipt.md
@@ -11,7 +11,7 @@
oder aus einer "übertragenen" Einkaufsbestellung heraus, in dem Sie auf die Schaltfläche "Kaufbeleg erstellen" klicken.
-<img class="screenshot" alt="Kaufbeleg" src="{{docs_base_url}}/assets/img/stock/purchase-receipt.png">
+<img class="screenshot" alt="Kaufbeleg" src="/docs/assets/img/stock/purchase-receipt.png">
### Ausschuss
diff --git a/erpnext/docs/user/manual/de/stock/purchase-return.md b/erpnext/docs/user/manual/de/stock/purchase-return.md
index 1da0bc4..0805d75 100644
--- a/erpnext/docs/user/manual/de/stock/purchase-return.md
+++ b/erpnext/docs/user/manual/de/stock/purchase-return.md
@@ -7,18 +7,18 @@
Öffnen Sie hierzu zuerst die ursprüngliche Eingangsrechnung zu der der Lieferant die Artikel geliefert hat.
-<img class="screenshot" alt="Original-Eingangsrechnung" src="{{docs_base_url}}/assets/img/stock/purchase-return-original-purchase-receipt.png">
+<img class="screenshot" alt="Original-Eingangsrechnung" src="/docs/assets/img/stock/purchase-return-original-purchase-receipt.png">
Klicken Sie dann auf "Lieferantenreklamation erstellen", dies öffnet einen neuen Kaufbeleg bei dem "Ist Reklamation" markiert ist, und bei dem die Artikel mit negativer Menge aufgeführt sind.
-<img class="screenshot" alt="Reklamation zum Lieferschein" src="{{docs_base_url}}/assets/img/stock/purchase-return-against-purchase-receipt.png">
+<img class="screenshot" alt="Reklamation zum Lieferschein" src="/docs/assets/img/stock/purchase-return-against-purchase-receipt.png">
Bei der Ausgabe eines Reklamations-Kaufbelegs vermindert das System die Menge des Artikels auf dem entsprechenden Lager. Um einen korrekten Lagerwert zu erhalten, verändert sich der Lagersaldo entsprechend dem Einkaufspreis des zurückgesendeten Artikels.
-<img class="screenshot" alt="Reklamation und Lagerbuch" src="{{docs_base_url}}/assets/img/stock/purchase-return-stock-ledger.png">
+<img class="screenshot" alt="Reklamation und Lagerbuch" src="/docs/assets/img/stock/purchase-return-stock-ledger.png">
Wenn die Ständige Inventur aktiviert wurde, verbucht das System weiterhin Buchungssätze zum Lagerkonto um den Lagersaldo mit dem Lagerbestand des Lagerbuchs zu synchronisieren.
-<img class="screenshot" alt="Reklamation und Lagerbuch" src="{{docs_base_url}}/assets/img/stock/purchase-return-general-ledger.png">
+<img class="screenshot" alt="Reklamation und Lagerbuch" src="/docs/assets/img/stock/purchase-return-general-ledger.png">
{next}
diff --git a/erpnext/docs/user/manual/de/stock/sales-return.md b/erpnext/docs/user/manual/de/stock/sales-return.md
index 2b4fbb4..0daef5c 100644
--- a/erpnext/docs/user/manual/de/stock/sales-return.md
+++ b/erpnext/docs/user/manual/de/stock/sales-return.md
@@ -7,22 +7,22 @@
Öffnen Sie dazu zuerst den Lieferschein/die Ausgangsrechnung zu dem/der der Kunde einen Artikel zurück sendet.
-<img class="screenshot" alt="Original-Lieferschein" src="{{docs_base_url}}/assets/img/stock/sales-return-original-delivery-note.png">
+<img class="screenshot" alt="Original-Lieferschein" src="/docs/assets/img/stock/sales-return-original-delivery-note.png">
Klicken Sie dann auf "Kundenreklamation erstellen", das öffnet einen neuen Lieferschein, bei dem "Ist Reklamation" aktiviert ist, und die Artikel und Steuern mit negativem Betrag angezeigt werden.
Sie können die Reklamation auch über die Originalausgangsrechnung erstellen. Um Material mit einer Gutschrift zurück zu geben, markieren Sie die Option "Lager aktualisieren" in der Reklamationsrechnung.
-<img class="screenshot" alt="Kundenreklamation zum Lieferschein" src="{{docs_base_url}}/assets/img/stock/sales-return-against-delivery-note.png">
+<img class="screenshot" alt="Kundenreklamation zum Lieferschein" src="/docs/assets/img/stock/sales-return-against-delivery-note.png">
Bei der Ausgabe eines Rücksendelieferscheins / einer Reklamationsrechnung erhöht das System den Lagerbestand im entsprechenden Lager. Um den richtigen Lagerwert zu erhalten erhöht sich der Lagerbestand um den Wert des ursprünglichen Einkaufspreises des zurückgeschickten Artikels.
-<img class="screenshot" alt="Kundenreklamation zur Eingangsrechnung" src="{{docs_base_url}}/assets/img/stock/sales-return-against-sales-invoice.png">
+<img class="screenshot" alt="Kundenreklamation zur Eingangsrechnung" src="/docs/assets/img/stock/sales-return-against-sales-invoice.png">
Für den Fall einer Reklamationsrechnung erhält das Kundenkonto eine Gutschrift und die damit verknüpften Konten für Erträge und Steuern werden belastet.
Wenn die ständige Inventur aktiviert ist, erstellt das System auch Buchungen für das Lagerkonto um den Kontostand des Lagers mit dem Lagerbuch zu synchronisieren.
-<img class="screenshot" alt="Lagerbuch und Reklamation" src="{{docs_base_url}}/assets/img/stock/sales-return-stock-ledger.png">
+<img class="screenshot" alt="Lagerbuch und Reklamation" src="/docs/assets/img/stock/sales-return-stock-ledger.png">
-<img class="screenshot" alt="Lagerbuch und Reklamation" src="{{docs_base_url}}/assets/img/stock/sales-return-general-ledger.png">
+<img class="screenshot" alt="Lagerbuch und Reklamation" src="/docs/assets/img/stock/sales-return-general-ledger.png">
{next}
diff --git a/erpnext/docs/user/manual/de/stock/serial-no.md b/erpnext/docs/user/manual/de/stock/serial-no.md
index 1fb8bd8..883a45e 100644
--- a/erpnext/docs/user/manual/de/stock/serial-no.md
+++ b/erpnext/docs/user/manual/de/stock/serial-no.md
@@ -13,7 +13,7 @@
Der Lagerbestand eines Artikels kann nur dann beeinflusst werden, wenn die Seriennummer mit Hilfe einer Lagertransaktion (Lagerbuchung, Kaufbeleg, Lieferschein, Ausgangsrechnung) übertragen wird. Wenn eine neue Seriennummer direkt erstellt wird, kann der Lagerort nicht eingestellt werden.
-<img class="screenshot" alt="Seriennummer" src="{{docs_base_url}}/assets/img/stock/serial-no.png">
+<img class="screenshot" alt="Seriennummer" src="/docs/assets/img/stock/serial-no.png">
* Der Status wird aufgrund der Lagerbuchung eingestellt.
* Nur Seriennummern mit dem Status "Verfügbar" können geliefert werden.
diff --git a/erpnext/docs/user/manual/de/stock/setup/item-attribute.md b/erpnext/docs/user/manual/de/stock/setup/item-attribute.md
index 6deabb3..d61c6fc 100644
--- a/erpnext/docs/user/manual/de/stock/setup/item-attribute.md
+++ b/erpnext/docs/user/manual/de/stock/setup/item-attribute.md
@@ -3,18 +3,18 @@
Sie können Attribute und Attributwerte für Ihre Artikelvarianten hier auswählen.
-<img class="screenshot" alt="Attributvorlage" src="{{docs_base_url}}/assets/img/stock/item-attribute.png">
+<img class="screenshot" alt="Attributvorlage" src="/docs/assets/img/stock/item-attribute.png">
### Nicht-numerische Attribute
* Für nicht-numerische Attribute definieren Sie Attributwerte und deren Abkürzungen in der Tabelle Attributwerte.
-<img class="screenshot" alt="Attributvorlage" src="{{docs_base_url}}/assets/img/stock/item-attribute-non-numeric.png">
+<img class="screenshot" alt="Attributvorlage" src="/docs/assets/img/stock/item-attribute-non-numeric.png">
### Numerische Attribute
* Wenn Ihr Attribut numerisch ist, wählen Sie numerische Werte.
* Geben Sie den Bereich an und die Schrittweite.
-<img class="screenshot" alt="Attributvorlage" src="{{docs_base_url}}/assets/img/stock/item-attribute-numeric.png">
+<img class="screenshot" alt="Attributvorlage" src="/docs/assets/img/stock/item-attribute-numeric.png">
diff --git a/erpnext/docs/user/manual/de/stock/setup/item-group.md b/erpnext/docs/user/manual/de/stock/setup/item-group.md
index 8be1a60..c911c6c 100644
--- a/erpnext/docs/user/manual/de/stock/setup/item-group.md
+++ b/erpnext/docs/user/manual/de/stock/setup/item-group.md
@@ -3,19 +3,19 @@
Die Artikelgruppe ist die Klassifikationskategorie. Ordnen Sie ein Produkt abhängig von seiner Art in einen entsprechenden Bereich ein. Wenn das Produkt dienstleistungsorientiert ist, ordnen Sie es unter dem Hauptpunkt Dienstleistung ein. Wenn das Produkt als Rohmaterial verwendet wird, müssen Sie es in der Kategorie Rohmaterial einordnen. Für den Fall, dass es sich bei dem Produkt um reine Handelsware handelt, können Sie es im Bereich Handelsware einordnen.
-<img class="screenshot" alt="Baumstruktur Artikelgruppe" src="{{docs_base_url}}/assets/img/stock/item-group-tree.png">
+<img class="screenshot" alt="Baumstruktur Artikelgruppe" src="/docs/assets/img/stock/item-group-tree.png">
### Eine Artikelgruppe erstellen
* Wählen Sie eine Artikelgruppe aus unter der Sie eine Artikelgruppe erstellen wollen.
* Klicken Sie auf "Unterpunkt hinzufügen".
-<img class="screenshot" alt="Artikelgruppe hinzufügen" src="{{docs_base_url}}/assets/img/stock/item-group-new.gif">
+<img class="screenshot" alt="Artikelgruppe hinzufügen" src="/docs/assets/img/stock/item-group-new.gif">
### Eine Artikelgruppe löschen
* Wählen Sie die zu löschende Artikelgruppe aus.
* Klicken Sie auf "Löschen"
-<img class="screenshot" alt="Artikelgruppe hinzufügen" src="{{docs_base_url}}/assets/img/stock/item-group-del.gif">
+<img class="screenshot" alt="Artikelgruppe hinzufügen" src="/docs/assets/img/stock/item-group-del.gif">
{next}
diff --git a/erpnext/docs/user/manual/de/stock/setup/stock-settings.md b/erpnext/docs/user/manual/de/stock/setup/stock-settings.md
index c7237b0..2eb84eb 100644
--- a/erpnext/docs/user/manual/de/stock/setup/stock-settings.md
+++ b/erpnext/docs/user/manual/de/stock/setup/stock-settings.md
@@ -3,6 +3,6 @@
Sie können Standardeinstellungen für Ihre mit dem Lager verbundenen Transaktionen hier voreinstellen.
-<img class="screenshot" alt="Lagereinstellungen" src="{{docs_base_url}}/assets/img/stock/stock-settings.png">
+<img class="screenshot" alt="Lagereinstellungen" src="/docs/assets/img/stock/stock-settings.png">
{next}
diff --git a/erpnext/docs/user/manual/de/stock/stock-entry.md b/erpnext/docs/user/manual/de/stock/stock-entry.md
index 4b9fe08..442c42d 100644
--- a/erpnext/docs/user/manual/de/stock/stock-entry.md
+++ b/erpnext/docs/user/manual/de/stock/stock-entry.md
@@ -7,7 +7,7 @@
> Lagerbestand > Dokumente > Lagerbuchung > Neu
-<img class="screenshot" alt="Lagerbuchung" src="{{docs_base_url}}/assets/img/stock/stock-entry.png">
+<img class="screenshot" alt="Lagerbuchung" src="/docs/assets/img/stock/stock-entry.png">
Lagerbuchungen können aus folgenden Gründen erstellt werden:
@@ -27,15 +27,15 @@
Um Zusatzkosten hinzuzufügen, geben Sie die Beschreibung und den Betrag der Kosten in die Tabelle Zusatzkosten ein.
-<img class="screenshot" alt="Lagerbuchung Zusatzlkosten" src="{{docs_base_url}}/assets/img/stock/additional-costs-table.png">
+<img class="screenshot" alt="Lagerbuchung Zusatzlkosten" src="/docs/assets/img/stock/additional-costs-table.png">
Die hinzugefügten Zusatzkosten werden basierend auf dem Grundwert der Artikel proportional auf die erhaltenen Artikel verteilt. Dann werden die verteilten Zusatzkosten zum Grundpreis hinzugerechnet, um den Wert neu zu berechnen.
-<img class="screenshot" alt="Lagerbuchung Preis für Artikelvarianten" src="{{docs_base_url}}/assets/img/stock/stock-entry-item-valuation-rate.png">
+<img class="screenshot" alt="Lagerbuchung Preis für Artikelvarianten" src="/docs/assets/img/stock/stock-entry-item-valuation-rate.png">
Wenn die laufende Inventur aktiviert ist, werden Zusatzkosten auf das Konto "Aufwendungen im Wert beinhaltet" gebucht.
-<img class="screenshot" alt="Zusatzkosten Hauptbuch" src="{{docs_base_url}}/assets/img/stock/additional-costs-general-ledger.png">
+<img class="screenshot" alt="Zusatzkosten Hauptbuch" src="/docs/assets/img/stock/additional-costs-general-ledger.png">
> Hinweis: Um den Lagerbestand über eine Tabellenkalkulation zu aktualisieren, bitte unter Lagerabgleich nachlesen.
{next}
diff --git a/erpnext/docs/user/manual/de/stock/tools/landed-cost-voucher.md b/erpnext/docs/user/manual/de/stock/tools/landed-cost-voucher.md
index 340e104..0cb6ea1 100644
--- a/erpnext/docs/user/manual/de/stock/tools/landed-cost-voucher.md
+++ b/erpnext/docs/user/manual/de/stock/tools/landed-cost-voucher.md
@@ -23,7 +23,7 @@
Im Dokument können Sie verschiedene Kaufbelege auswählen und alle Artikel daraus abrufen. Dann sollten Sie zutreffende Abgaben aus der Tabelle "Steuern und Abgaben" hinzufügen. Die hinzugefügten Abgaben werden proportional auf die Artikel aufgeteilt, basierend auf ihrem Wert.
-<img class="screenshot" alt="Einstandskostenbeleg" src="{{docs_base_url}}/assets/img/stock/landed-cost.png">
+<img class="screenshot" alt="Einstandskostenbeleg" src="/docs/assets/img/stock/landed-cost.png">
### Was passiert bei der Ausgabe?
diff --git a/erpnext/docs/user/manual/de/stock/tools/packing-slip.md b/erpnext/docs/user/manual/de/stock/tools/packing-slip.md
index 93752be..474f2d5 100644
--- a/erpnext/docs/user/manual/de/stock/tools/packing-slip.md
+++ b/erpnext/docs/user/manual/de/stock/tools/packing-slip.md
@@ -3,6 +3,6 @@
Ein Packzettel ist ein Dokument, welches die Artikel einer Sendung auflistet. Normalerweise wird er den gelieferten Waren beigelegt. Beim Versand eines Produktes wird ein Entwurf für einen Lieferschein erstellt. Sie können aus diesem Lieferschein (Entwurf) einen Packzettel erstellen.
-<img class="screenshot" alt="Packzettel" src="{{docs_base_url}}/assets/img/stock/packing-slip.png">
+<img class="screenshot" alt="Packzettel" src="/docs/assets/img/stock/packing-slip.png">
{next}
diff --git a/erpnext/docs/user/manual/de/stock/tools/quality-inspection.md b/erpnext/docs/user/manual/de/stock/tools/quality-inspection.md
index 9c375df..76ef650 100644
--- a/erpnext/docs/user/manual/de/stock/tools/quality-inspection.md
+++ b/erpnext/docs/user/manual/de/stock/tools/quality-inspection.md
@@ -5,6 +5,6 @@
> Lagerbestand > Werkzeuge > Qualitätsprüfung > Neu
-<img class="screenshot" alt="Qualitätsprüfung" src="{{docs_base_url}}/assets/img/stock/quality-inspection.png">
+<img class="screenshot" alt="Qualitätsprüfung" src="/docs/assets/img/stock/quality-inspection.png">
{next}
diff --git a/erpnext/docs/user/manual/de/stock/warehouse.md b/erpnext/docs/user/manual/de/stock/warehouse.md
index a2e6c43..56c5913 100644
--- a/erpnext/docs/user/manual/de/stock/warehouse.md
+++ b/erpnext/docs/user/manual/de/stock/warehouse.md
@@ -7,7 +7,7 @@
> Lagerbestand > Einstellungen > Lager > Neu
-<img class="screenshot" alt="Lager" src="{{docs_base_url}}/assets/img/stock/warehouse.png">
+<img class="screenshot" alt="Lager" src="/docs/assets/img/stock/warehouse.png">
In ERPNext muss jedes Lager einer festen Firma zugeordnet sein, um einen unternehmensbezogenen Lagerbestand zu erhalten. Die Lager werden mit den ihnen zugeordneten Firmenkürzeln abgespeichert. Dies erleichtert es auf einen Blick herauszufinden, welches Lager zu welcher Firma gehört.
diff --git a/erpnext/docs/user/manual/de/support/issue.md b/erpnext/docs/user/manual/de/support/issue.md
index 37a1b84..7b8e911 100644
--- a/erpnext/docs/user/manual/de/support/issue.md
+++ b/erpnext/docs/user/manual/de/support/issue.md
@@ -3,11 +3,11 @@
Bei einem Fall handelt es ich um eine eingehende Nachricht vom Kunden, normalerweise per Email oder aus der Kontaktschnittstelle Ihrer Webseite (Um das Supportticket vollständig in Ihre Emails einzubinden, lesen Sie bitte bei "Email-Einstellungen" nach).
-> Tipp: Eine eigens eingerichtete Email-Adresse für Supportanfragen ist eine gute Möglichkeit um per Email eingehende Anfragen zu handhaben. Beispiel: Sie können Supportanfragen über support@erpnext.com an ERPNext senden und es werden automatisch im Frappe-System Einträge erstellt.
+> Tipp: Eine eigens eingerichtete Email-Adresse für Supportanfragen ist eine gute Möglichkeit um per Email eingehende Anfragen zu handhaben. Beispiel: Sie können Supportanfragen über support@erpnext.com an ERPNext senden und es werden automatisch im Frappé-System Einträge erstellt.
> Support > Dokumente > Anfrage > Neu
-<img class="screenshot" alt="Fall" src="{{docs_base_url}}/assets/img/support/issue.png">
+<img class="screenshot" alt="Fall" src="/docs/assets/img/support/issue.png">
### Gesprächsaufzeichnung
diff --git a/erpnext/docs/user/manual/de/support/maintenance-schedule.md b/erpnext/docs/user/manual/de/support/maintenance-schedule.md
index dcc88ae..df08375 100644
--- a/erpnext/docs/user/manual/de/support/maintenance-schedule.md
+++ b/erpnext/docs/user/manual/de/support/maintenance-schedule.md
@@ -9,7 +9,7 @@
> Support > Dokumente > Wartungsplan > Neu
-<img class="screenshot" alt="Wartungsplan" src="{{docs_base_url}}/assets/img/support/maintenance-schedule.png">
+<img class="screenshot" alt="Wartungsplan" src="/docs/assets/img/support/maintenance-schedule.png">
Im Wartungsplan gibt es zwei Abschnitte:
diff --git a/erpnext/docs/user/manual/de/support/maintenance-visit.md b/erpnext/docs/user/manual/de/support/maintenance-visit.md
index d215c73..86ed897 100644
--- a/erpnext/docs/user/manual/de/support/maintenance-visit.md
+++ b/erpnext/docs/user/manual/de/support/maintenance-visit.md
@@ -5,7 +5,7 @@
> Support > Dokumente > Wartungsbesuch > Neu
-<img class="screenshot" alt="Wartungsbesuch" src="{{docs_base_url}}/assets/img/support/maintenance-visit.png">
+<img class="screenshot" alt="Wartungsbesuch" src="/docs/assets/img/support/maintenance-visit.png">
Der Wartungsbesuch inhält Informationen über:
diff --git a/erpnext/docs/user/manual/de/support/warranty-claim.md b/erpnext/docs/user/manual/de/support/warranty-claim.md
index 42ae52d..a54aac8 100644
--- a/erpnext/docs/user/manual/de/support/warranty-claim.md
+++ b/erpnext/docs/user/manual/de/support/warranty-claim.md
@@ -11,7 +11,7 @@
> Support > Dokukumente > Garantieantrag > Neu
-
+
Wenn für die Lösung des Problems ein Besuch beim Kunden notwendig ist, können Sie einen neuen Wartungsbesuch erstellen.
diff --git a/erpnext/docs/user/manual/de/using-erpnext/assignment.md b/erpnext/docs/user/manual/de/using-erpnext/assignment.md
index 6631491..e24d132 100644
--- a/erpnext/docs/user/manual/de/using-erpnext/assignment.md
+++ b/erpnext/docs/user/manual/de/using-erpnext/assignment.md
@@ -11,9 +11,9 @@
Die Option "Zuweisen zu" befindet sich in der Fußzeile des Dokuments. Wenn Sie auf das Zuteilungs-Symbol in der Werkzeugleiste klicken, werden Sie schnell zur Fußzeile des selben Dokuments weiter geleitet.
-
+
-
+
### Schritt 2: Zu einem Benutzer zuweisen
@@ -21,19 +21,19 @@
Bei der Zuordnung können Sie auch einen Kommentar für denjenigen hinterlassen, dem das Dokument zugeordnet wird.
-
+
### Aufgabenliste des Empfängers
Diese Transaktion erscheint in der Aufgabenliste des Empfängers.
-
+
Zuordnung entfernen
Ein Benutzer kann eine Zuordnung entfernen, indem im Dokument die Schaltfläche "Zuordnung abgeschlossen" angeklickt wird.
-
+
Wenn die Zuordnung einmal als abgeschlossen markiert wurde, wird der Status des zugehörigen Eintrages in der Aufgabenliste auf "Abgeschlossen" gesetzt.
diff --git a/erpnext/docs/user/manual/de/using-erpnext/calendar.md b/erpnext/docs/user/manual/de/using-erpnext/calendar.md
index 42d884b..8be1609 100644
--- a/erpnext/docs/user/manual/de/using-erpnext/calendar.md
+++ b/erpnext/docs/user/manual/de/using-erpnext/calendar.md
@@ -5,7 +5,7 @@
Sie können die Kalenderansicht umschalten zwischen Monatsansicht, Wochenansicht und Tagesansicht.
-<img class="screenshot" alt="Calendar" src="{{docs_base_url}}/assets/img/collaboration-tools/calendar-1.png">
+<img class="screenshot" alt="Calendar" src="/docs/assets/img/collaboration-tools/calendar-1.png">
### Ereignisse im Kalender erstellen
@@ -15,7 +15,7 @@
Diese Ansicht zeigt die 24 Stunden des Tages aufgeteilt in verschiedene Zeitfenster an. Klicken Sie für den Startzeitpunkt auf ein Zeitfenster und ziehen Sie den Rahmen auf bis Sie den Endzeitpunkt erreichen.
-<img class="screenshot" alt="Calendar" src="{{docs_base_url}}/assets/img/collaboration-tools/calendar-2.gif">
+<img class="screenshot" alt="Calendar" src="/docs/assets/img/collaboration-tools/calendar-2.gif">
Auf Grundlage der Auswahl des Zeitfensters werden Start- und Endzeitpunkt in die Ereignisvorlage übernommen. Sie können dann noch die Bezeichnung des Ereignisses angeben und speichern.
@@ -23,7 +23,7 @@
Im Leadformular finden Sie die Felder "Nächster Kontakt durch" und "Nächstes Kontaktdatum". Wenn Sie in diesen Feldern einen Termin und eine Kontaktperson eintragen, wird automatisch ein Ereignis erstellt.
-<img class="screenshot" alt="Lead Event" src="{{docs_base_url}}/assets/img/collaboration-tools/calendar-3.png">
+<img class="screenshot" alt="Lead Event" src="/docs/assets/img/collaboration-tools/calendar-3.png">
#### Geburtstag
@@ -33,7 +33,7 @@
Sie können Ereignisse als wiederkehrend in bestimmten Intervallen markieren, indem Sie "Dieses Ereignis wiederholen" aktivieren.
-<img class="screenshot" alt="Calendar Recurring Event" src="{{docs_base_url}}/assets/img/collaboration-tools/calendar-4.png">
+<img class="screenshot" alt="Calendar Recurring Event" src="/docs/assets/img/collaboration-tools/calendar-4.png">
### Erinnerungen an Ereignisse
@@ -43,7 +43,7 @@
Wenn Sie in der Ereignisvorlage den Punkt "E-Mail-Erinnerung am Morgen senden" anklicken, erhalten alle Teilnehmer an diesem Ereignis eine Benachrichtungs-E-Mail.
-<img class="screenshot" alt="Calendar Recurring Event" src="{{docs_base_url}}/assets/img/collaboration-tools/calendar-6.png">
+<img class="screenshot" alt="Calendar Recurring Event" src="/docs/assets/img/collaboration-tools/calendar-6.png">
#### Einen täglichen E-Mail-Bericht erstellen
@@ -53,6 +53,6 @@
> Einstellungen > E-Mail > Täglicher E-Mail-Bericht
-<img class="screenshot" alt="Calendar Recurring Event" src="{{docs_base_url}}/assets/img/collaboration-tools/calender-email-digest.png">
+<img class="screenshot" alt="Calendar Recurring Event" src="/docs/assets/img/collaboration-tools/calender-email-digest.png">
{next}
diff --git a/erpnext/docs/user/manual/de/using-erpnext/collaborating-around-forms.md b/erpnext/docs/user/manual/de/using-erpnext/collaborating-around-forms.md
index 3107a2b..956a774 100644
--- a/erpnext/docs/user/manual/de/using-erpnext/collaborating-around-forms.md
+++ b/erpnext/docs/user/manual/de/using-erpnext/collaborating-around-forms.md
@@ -5,7 +5,7 @@
Sie können jedwede Transaktion aus dem System versenden, indem Sie auf die Schaltfläche "Zugeordnet zu" klicken. Im Menü "Kommunikation" wird ein Protokoll aller von Ihnen versendeter E-Mails gepflegt.
-
+
### Kommentar
@@ -13,6 +13,6 @@
### Schlagworte
-Lesen Sie hier mehr über [Schlagworte]({{docs_base_url}}/user/manual/de/using-erpnext/tags.html)
+Lesen Sie hier mehr über [Schlagworte](/docs/user/manual/de/using-erpnext/tags.html)
{next}
diff --git a/erpnext/docs/user/manual/de/using-erpnext/messages.md b/erpnext/docs/user/manual/de/using-erpnext/messages.md
index 11722a6..f9d1796 100644
--- a/erpnext/docs/user/manual/de/using-erpnext/messages.md
+++ b/erpnext/docs/user/manual/de/using-erpnext/messages.md
@@ -3,10 +3,10 @@
Sie können mithilfe des Nachrichtenwerkzeuges Mitteilungen über das System versenden und empfangen. Wenn Sie einem Benutzer eine Mitteilung senden, und der Benutzer angemeldet ist, öffnet sich ein Mitteilungsfenster und der Zähler für ungelesene Mitteilungen in der Kopfleiste wird angepasst.
-
+
Sie können Mitteilungen an alle Benutzer oder nur an bestimmte versenden.
-
+
{next}
diff --git a/erpnext/docs/user/manual/de/using-erpnext/notes.md b/erpnext/docs/user/manual/de/using-erpnext/notes.md
index a791352..cb79771 100644
--- a/erpnext/docs/user/manual/de/using-erpnext/notes.md
+++ b/erpnext/docs/user/manual/de/using-erpnext/notes.md
@@ -11,13 +11,13 @@
Geben Sie Titel und Inhalt ein.
-
+
## Berechtigungen für ausgewählte Benutzer setzen
Damit alle auf eine Anmerkung zugreifen können, aktivieren Sie "Öffentlich" unter dem Abschnitt Verknüpfungen. Damit ein Benutzer auf eine bestimmte Anmerkung zugreifen kann, können diese in der Tabelle "Teilen mit" ausgewählt werden.
-
+
Anmerkungen können intern auch als Wissensdatenbank genutzt werden. Sie können an die Anmerkungen auch Dateien anhängen und diese einer bestimmten Auswahl an Benutzern zugänglich machen.
diff --git a/erpnext/docs/user/manual/de/using-erpnext/tags.md b/erpnext/docs/user/manual/de/using-erpnext/tags.md
index 68282b8..e61a598 100644
--- a/erpnext/docs/user/manual/de/using-erpnext/tags.md
+++ b/erpnext/docs/user/manual/de/using-erpnext/tags.md
@@ -3,6 +3,6 @@
Genauso wie Zuordnungen und Kommentare können Sie auch Ihre eigenen Schlagworte zu jeder Art von Transaktionen hinzufügen. Diese Schlagworte helfen Ihnen bei der Suche nach einem Dokument und klassifizieren dieses. ERPNext zeigt Ihnen die wichtigen Schlagworte in der Dokumentenliste an.
-
+
{next}
diff --git a/erpnext/docs/user/manual/de/using-erpnext/to-do.md b/erpnext/docs/user/manual/de/using-erpnext/to-do.md
index 70e7188..54b6cf4 100644
--- a/erpnext/docs/user/manual/de/using-erpnext/to-do.md
+++ b/erpnext/docs/user/manual/de/using-erpnext/to-do.md
@@ -3,10 +3,10 @@
"Aufgaben" ist ein einfaches Werkzeug, welches alle Aktivitäten, die Ihnen [zugeordnet](https://erpnext.com/collaboration-tools/assignment) wurden, und die Sie zugeordnet haben, auflistet. Sie können zudem Ihre eigenen ToDos der Liste hinzufügen.
-
+
Wenn eine Aufgabe abgeschlossen wurde, können Sie einfach die Zuweisung vom Dokument entfernen. Dabei wird die Aufgabe von der ToDo-Liste entfernt. Bei Aufgaben, die nicht über ein Dokument zugeordnet wurden, können Sie den Status über den ToDo-Datensatz selbst auf "abgeschlossen" setzen.
-
+
{next}
diff --git a/erpnext/docs/user/manual/de/website/blog-post.md b/erpnext/docs/user/manual/de/website/blog-post.md
index 1641ea9..c316577 100644
--- a/erpnext/docs/user/manual/de/website/blog-post.md
+++ b/erpnext/docs/user/manual/de/website/blog-post.md
@@ -9,12 +9,12 @@
> Webseite > Blog-Eintrag > Neu
-<img class="screenshot" alt="Blogeintrag" src="{{docs_base_url}}/assets/img/website/blog-post.png">
+<img class="screenshot" alt="Blogeintrag" src="/docs/assets/img/website/blog-post.png">
Sie können einen Blog mit Hilfe des Markdown-Formats formatieren. Sie können auf Ihren Blog auch zugreifen, indem Sie zur Seite "blog.html" gehen.
#### Ein Beispiel für einen Blog.
-<img class="screenshot" alt="Beispiel für ein Blog" src="{{docs_base_url}}/assets/img/website/blog-sample.png">
+<img class="screenshot" alt="Beispiel für ein Blog" src="/docs/assets/img/website/blog-sample.png">
{next}
diff --git a/erpnext/docs/user/manual/de/website/blogger.md b/erpnext/docs/user/manual/de/website/blogger.md
index 8d81b39..6332fb6 100644
--- a/erpnext/docs/user/manual/de/website/blogger.md
+++ b/erpnext/docs/user/manual/de/website/blogger.md
@@ -3,6 +3,6 @@
Ein Blogger ist ein Benutzer, der Blog-Einträge erstellen kann. Sie können eine Kurzbiografie des Bloggers angeben und dazu einen Avatar.
-<img class="screenshot" alt="Blogger" src="{{docs_base_url}}/assets/img/website/blogger.png">
+<img class="screenshot" alt="Blogger" src="/docs/assets/img/website/blogger.png">
{next}
diff --git a/erpnext/docs/user/manual/de/website/setup/website-settings.md b/erpnext/docs/user/manual/de/website/setup/website-settings.md
index 45a4498..2082455 100644
--- a/erpnext/docs/user/manual/de/website/setup/website-settings.md
+++ b/erpnext/docs/user/manual/de/website/setup/website-settings.md
@@ -3,11 +3,11 @@
Die meisten der Einstellungen, die Ihre Webseite betreffen, können hier eingestellt werden.
-<img class="screenshot" alt="Webseiten-Einstellungen" src="{{docs_base_url}}/assets/img/website/website-settings.png">
+<img class="screenshot" alt="Webseiten-Einstellungen" src="/docs/assets/img/website/website-settings.png">
### Zielseite
-* Homepage: Sie können angeben, welche [Webseite]({{docs_base_url}}/user/manual/de/website/web-page.html) die Startseite der Homepage ist.
+* Homepage: Sie können angeben, welche [Webseite](/docs/user/manual/de/website/web-page.html) die Startseite der Homepage ist.
* Startseite ist "Products": Wenn diese Option markiert ist, ist die Standard-Artikelgruppe die Startseite der Webseite.
* Titel-Präfix: Stellt den Browser-Titel ein.
@@ -15,7 +15,7 @@
Wählen Sie das Thema für Ihre Webseite aus. Sie können auch neue Themen für Ihre Webseite erstellen.
-<img class="screenshot" alt="Webseiten-Themen" src="{{docs_base_url}}/assets/img/website/website-theme.png">
+<img class="screenshot" alt="Webseiten-Themen" src="/docs/assets/img/website/website-theme.png">
* Wählen "Neues Webseiten-Thema erstellen" wenn Sie das Standars-Thema der Webseite anpassen wollen.
@@ -23,13 +23,13 @@
Hier können Sie ein Banner/Logo auf Ihrer Webseite hinzufügen. Hängen Sie das Bild an und klicken Sie auf "Banner aus Bild einrichten". Das System erstellt einen HTML-Kode unter Banner HTML.
-<img class="screenshot" alt="Banner" src="{{docs_base_url}}/assets/img/website/banner.png">
+<img class="screenshot" alt="Banner" src="/docs/assets/img/website/banner.png">
### Kopfleiste
Hier können Sie die Menüeinträge in der Kopfleiste einstellen.
-<img class="screenshot" alt="Kopfleiste" src="{{docs_base_url}}/assets/img/website/top-bar.png">
+<img class="screenshot" alt="Kopfleiste" src="/docs/assets/img/website/top-bar.png">
* In ähnlicher Art und Weise können Sie auch die Verknüpfungen auf der Seitenleiste und in der Fußzeile einstellen.
@@ -37,7 +37,7 @@
Sie können Google Analytics und soziale Netzwerke in Ihre Webseite mit einbinden und Einträge auf der Webseite teilen.
-<img class="screenshot" alt="Einbindungen" src="{{docs_base_url}}/assets/img/website/integrations.png">
+<img class="screenshot" alt="Einbindungen" src="/docs/assets/img/website/integrations.png">
* Sie können ein öffentliches Anmelden auf Ihr ERPNext-Konto unterbinden indem Sie auf "Anmelden deaktivieren" klicken.
diff --git a/erpnext/docs/user/manual/de/website/web-form.md b/erpnext/docs/user/manual/de/website/web-form.md
index 473f2c7..e8c9850 100644
--- a/erpnext/docs/user/manual/de/website/web-form.md
+++ b/erpnext/docs/user/manual/de/website/web-form.md
@@ -18,7 +18,7 @@
3. Geben Sie an, ob sich der Benutzer einloggen muss, Daten ändern muss, mehrere verschiedene Datensätze verwalten soll, etc.
4. Fügen Sie die Felder, die Sie in den Datensätzen haben wollen, hinzu.
-<img class="screenshot" alt="Webformular" src="{{docs_base_url}}/assets/img/website/web-form.png">
+<img class="screenshot" alt="Webformular" src="/docs/assets/img/website/web-form.png">
* * *
@@ -26,7 +26,7 @@
Wenn Sie das Web-Formular erstellt haben, können Sie es unter der URL ansehen und ausprobieren!
-<img class="screenshot" alt="Webformular" src="{{docs_base_url}}/assets/img/website/web-form-view.png">
+<img class="screenshot" alt="Webformular" src="/docs/assets/img/website/web-form-view.png">
* * *
diff --git a/erpnext/docs/user/manual/de/website/web-page.md b/erpnext/docs/user/manual/de/website/web-page.md
index 91bd7d5..96f917f 100644
--- a/erpnext/docs/user/manual/de/website/web-page.md
+++ b/erpnext/docs/user/manual/de/website/web-page.md
@@ -7,7 +7,7 @@
> Webseite > Webseite > Neu
-<img class="screenshot" alt="Webseit" src="{{docs_base_url}}/assets/img/website/web-page.png">
+<img class="screenshot" alt="Webseit" src="/docs/assets/img/website/web-page.png">
### Bezeichnung
diff --git a/erpnext/docs/user/manual/en/CRM/contact.md b/erpnext/docs/user/manual/en/CRM/contact.md
index f87f82c..dcc8e17 100644
--- a/erpnext/docs/user/manual/en/CRM/contact.md
+++ b/erpnext/docs/user/manual/en/CRM/contact.md
@@ -18,12 +18,12 @@
> CRM > Contact > New
-<img class="screenshot" alt="Contact" src="{{docs_base_url}}/assets/img/crm/contact.png">
+<img class="screenshot" alt="Contact" src="/docs/assets/img/crm/contact.png">
Or you can add a Contact or Address directly from the Customer record, click on “New
Contact” or “New Address”.
-<img class="screenshot" alt="Contact" src="{{docs_base_url}}/assets/img/crm/contact-from-cust.png">
+<img class="screenshot" alt="Contact" src="/docs/assets/img/crm/contact-from-cust.png">
> Tip: When you select a Customer in any transaction, one Contact and Address
gets pre-selected. This is the “Default Contact or Address”.
diff --git a/erpnext/docs/user/manual/en/CRM/crm_reports.md b/erpnext/docs/user/manual/en/CRM/crm_reports.md
index 4ff9aa5..4ac90bb 100644
--- a/erpnext/docs/user/manual/en/CRM/crm_reports.md
+++ b/erpnext/docs/user/manual/en/CRM/crm_reports.md
@@ -1,9 +1,11 @@
+# Crm Reports
+
CRM module's reports helps users to get the information about the prospects. Using Following reports, user can analyze the data about prospect's history with a company and will helps user to build strong relationships with them.
###Lead Details
It has data about the leads and their contact and address details.
<img alt="Lead Details" class="screenshot"
- src="{{docs_base_url}}/assets/img/crm/report/lead.png">
+ src="/docs/assets/img/crm/report/lead.png">
###Sales Funnel
By using the sales funnel report, and by quantifying the number of prospects at each stage of the process, you can get an idea of your potential customers.
@@ -13,28 +15,28 @@
For example, if you notice that very few communications with the prospects has taken place in a month which might indicate a decrease in the sales. From the next month, organization should make sure that more communications has to take place with the prospects.
<img alt="Lead Details" class="screenshot"
- src="{{docs_base_url}}/assets/img/crm/report/sales_funnel.png">
+ src="/docs/assets/img/crm/report/sales_funnel.png">
###Prospects Engaged But Not Converted
Using this report, user gets the information about the leads who has shown interest in the business with you but due to some reason they were not converted into the customers.
<img alt="Lead Details" class="screenshot"
- src="{{docs_base_url}}/assets/img/crm/report/prospects_engaged_but_not_converted.png">
+ src="/docs/assets/img/crm/report/prospects_engaged_but_not_converted.png">
###Minutes to First Response for Opportunity
Immediacy is so important – and so valued
In this internet area, we all expect a quicker response time to any of our query. This report gives you the information about the first response time given to an opportunities or issues. Using this report, the organization can improve their first response time to the prospects which can help to the better sales in the future.
<img alt="Lead Details" class="screenshot"
- src="{{docs_base_url}}/assets/img/crm/report/minutes_to_first_response.png">
+ src="/docs/assets/img/crm/report/minutes_to_first_response.png">
###Customer Addresses And Contacts
It has data about the customers and their contact and address details.
<img alt="Lead Details" class="screenshot"
- src="{{docs_base_url}}/assets/img/crm/report/customer_address_and_contact.png">
+ src="/docs/assets/img/crm/report/customer_address_and_contact.png">
###Inactive Customers
This report shows the list of customers who has not purchased since long time.
<img alt="Lead Details" class="screenshot"
- src="{{docs_base_url}}/assets/img/crm/report/inactive_customers.png">
+ src="/docs/assets/img/crm/report/inactive_customers.png">
diff --git a/erpnext/docs/user/manual/en/CRM/customer.md b/erpnext/docs/user/manual/en/CRM/customer.md
index 24971bf..5924665 100644
--- a/erpnext/docs/user/manual/en/CRM/customer.md
+++ b/erpnext/docs/user/manual/en/CRM/customer.md
@@ -1,3 +1,5 @@
+# Customer
+
A customer, who is sometimes known as a client, buyer, or purchaser is the one
who receives goods, services, products, or ideas, from a seller for a monetary
consideration. A customer can also receive goods or services from a vendor or
@@ -9,20 +11,20 @@
> Selling > Customer
-<img class="screenshot" alt="Create Customer" src="{{docs_base_url}}/assets/img/crm/create-customer.gif">
+<img class="screenshot" alt="Create Customer" src="/docs/assets/img/crm/create-customer.gif">
-or upload it via the [Data Import Tool]({{docs_base_url}}/user/manual/en/setting-up/data/data-import-tool.html).
+or upload it via the [Data Import Tool](/docs/user/manual/en/setting-up/data/data-import-tool.html).
A Customer can avail the features (operations) in the selling process. The general flow can be summarised as:
-<img class="screenshot" alt="Customer" src="{{docs_base_url}}/assets/img/crm/customer-to selling-flowchart.jpeg">
+<img class="screenshot" alt="Customer" src="/docs/assets/img/crm/customer-to selling-flowchart.jpeg">
> Note: Customers are separate from Contacts and Addresses. A Customer can
have multiple Contacts and Addresses.
### Contacts and Addresses
-[Contacts and Addresses]({{docs_base_url}}/user/manual/en/CRM/contact.html) in ERPNext are stored separately so that you can
+[Contacts and Addresses](/docs/user/manual/en/CRM/contact.html) in ERPNext are stored separately so that you can
attach multiple Contacts or Addresses to Customers and Suppliers
Thus we may have identical Customer Names that are uniquely identified by the ID. Since the email address is not part of the
@@ -45,7 +47,7 @@
By default, the system does not generate an account for every customer. All
Customers can be booked in one account called Debtors. In order to manage a
separate account for each customer, you have to first create the account under
-Accounts Receivable in the [Chart of Accounts]({{docs_base_url}}/user/manual/en/accounts/chart-of-accounts.html) and then add it on the customer's
+Accounts Receivable in the [Chart of Accounts](/docs/user/manual/en/accounts/chart-of-accounts.html) and then add it on the customer's
form accounts table.
### Customer Settings
@@ -60,12 +62,12 @@
“Credit Limit”. You can also set a global “Credit Limit” in the Company
master. Classifying Customers
-ERPNext allows you to group your Customers using [Customer Group]({{docs_base_url}}/user/manual/en/CRM/setup/customer-group.html)
-and also divide them into [Territories]({{docs_base_url}}/user/manual/en/setting-up/territory.html)
+ERPNext allows you to group your Customers using [Customer Group](/docs/user/manual/en/CRM/setup/customer-group.html)
+and also divide them into [Territories](/docs/user/manual/en/setting-up/territory.html)
Grouping will help you get better analysis of your data and
identify which Customers are profitable and which are not. Territories will
help you set sales targets for the respective territories.
-You can also mention [Sales Person]({{docs_base_url}}/user/manual/en/CRM/setup/sales-person.html) against a customer.
+You can also mention [Sales Person](/docs/user/manual/en/CRM/setup/sales-person.html) against a customer.
### Sales Partner
diff --git a/erpnext/docs/user/manual/en/CRM/lead.md b/erpnext/docs/user/manual/en/CRM/lead.md
index 52fa2cc..15b1159 100644
--- a/erpnext/docs/user/manual/en/CRM/lead.md
+++ b/erpnext/docs/user/manual/en/CRM/lead.md
@@ -1,3 +1,5 @@
+# Lead
+
To get the customer through the door, you may be doing all or any of the
following:
@@ -24,7 +26,7 @@
> CRM > Lead > New Lead
-<img class="screenshot" alt="Lead" src="{{docs_base_url}}/assets/img/crm/lead.png">
+<img class="screenshot" alt="Lead" src="/docs/assets/img/crm/lead.png">
ERPNext gives you a lot of options you may want to store about your Leads. For
example what is the source, how likely are they to give you business etc. If
@@ -46,7 +48,7 @@
further Opportunities from the same source can be created against this
Customer.
-<img class="screenshot" alt="Create Customer" src="{{docs_base_url}}/assets/img/crm/lead-to-customer.gif">
+<img class="screenshot" alt="Create Customer" src="/docs/assets/img/crm/lead-to-customer.gif">
---
diff --git a/erpnext/docs/user/manual/en/CRM/newsletter.md b/erpnext/docs/user/manual/en/CRM/newsletter.md
index 9749e17..2aac1b2 100644
--- a/erpnext/docs/user/manual/en/CRM/newsletter.md
+++ b/erpnext/docs/user/manual/en/CRM/newsletter.md
@@ -1,3 +1,5 @@
+# Newsletter
+
A newsletter is a short written report that tells about the recent activities
of an organization. It is generally sent to members of the organization,
potential clients customers or potential leads.
@@ -12,8 +14,8 @@
document before testing. A test email will be sent to your Email Address. You can
send the email to all the intended receipients by clicking on the send button.
-<img class="screenshot" alt="Newsletter - New" src="{{docs_base_url}}/assets/img/crm/newsletter-new.png">
+<img class="screenshot" alt="Newsletter - New" src="/docs/assets/img/crm/newsletter-new.png">
-<img class="screenshot" alt="Newsletter - Test" src="{{docs_base_url}}/assets/img/crm/newsletter-test.png">
+<img class="screenshot" alt="Newsletter - Test" src="/docs/assets/img/crm/newsletter-test.png">
{next}
diff --git a/erpnext/docs/user/manual/en/CRM/opportunity.md b/erpnext/docs/user/manual/en/CRM/opportunity.md
index 4651a75..94338f9 100644
--- a/erpnext/docs/user/manual/en/CRM/opportunity.md
+++ b/erpnext/docs/user/manual/en/CRM/opportunity.md
@@ -1,3 +1,5 @@
+# Opportunity
+
When you know a Lead is looking for some products or services to buy, you can
track that as an Opportunity. Also opportunity document helps user to collect the requirement of a customer/lead.
@@ -7,17 +9,17 @@
#### Figure 1: Create Opportunity
-<img class="screenshot" alt="Opportunity" src="{{docs_base_url}}/assets/img/crm/new-opportunity.gif">
+<img class="screenshot" alt="Opportunity" src="/docs/assets/img/crm/new-opportunity.gif">
You can also go to an “Open” Lead and select “Opportunity” from the **Make** dropdown.
#### Figure 2: Create Opportunity from an open Lead
-<img class="screenshot" alt="Opportunity" src="{{docs_base_url}}/assets/img/crm/lead-to-opportunity.png">
+<img class="screenshot" alt="Opportunity" src="/docs/assets/img/crm/lead-to-opportunity.png">
#### Figure 3: Create Opportunity for Customer to Collect their Requirement
-<img class="screenshot" alt="Opportunity" src="{{docs_base_url}}/assets/img/crm/requirement-gathering.png">
+<img class="screenshot" alt="Opportunity" src="/docs/assets/img/crm/requirement-gathering.png">
An Opportunity can also come from an existing Customer. You can create
multiple Opportunities against the same Lead. In Opportunity, apart from the
@@ -27,7 +29,7 @@
#### Make Supplier Quotation
In some businesses, users collect the rates from their supplier against the customer requirement and based on the supplier rates they prepare the quotation for the customer. With ERPNext, you can make a supplier quotation from the opportunity itself.
-<img class="screenshot" alt="Opportunity" src="{{docs_base_url}}/assets/img/crm/make-sq-from-opportunity.png">
+<img class="screenshot" alt="Opportunity" src="/docs/assets/img/crm/make-sq-from-opportunity.png">
> Best Practice: Leads and Opportunities are often referred as your “Sales
Pipeline” this is what you need to track if you want to be able to predict how
diff --git a/erpnext/docs/user/manual/en/CRM/setup/campaign.md b/erpnext/docs/user/manual/en/CRM/setup/campaign.md
index 9714350..17b06f1 100644
--- a/erpnext/docs/user/manual/en/CRM/setup/campaign.md
+++ b/erpnext/docs/user/manual/en/CRM/setup/campaign.md
@@ -1,20 +1,22 @@
+# Campaign
+
A Campaign is a full-scale implementation of a sales strategy to promote a
product or a service. This is done in a market segment of a particular
geographical area, to achieve specified objectives.
-<img class="screenshot" alt="Campaign" src="{{docs_base_url}}/assets/img/crm/campaign.png">
+<img class="screenshot" alt="Campaign" src="/docs/assets/img/crm/campaign.png">
-You can track [Lead]({{docs_base_url}}/user/manual/en/CRM/lead.html), [Opportunity]({{docs_base_url}}/user/manual/en/CRM/opportunity.html), [Quotation]({{docs_base_url}}/user/manual/en/selling/quotation.html) against a campaign.
+You can track [Lead](/docs/user/manual/en/CRM/lead.html), [Opportunity](/docs/user/manual/en/CRM/opportunity.html), [Quotation](/docs/user/manual/en/selling/quotation.html) against a campaign.
###Track Leads against Campaign
* To track a 'Lead' against a campaign select 'View Leads'.
-<img class="screenshot" alt="Campaign - View Leads" src="{{docs_base_url}}/assets/img/crm/campaign-view-leads.png">
+<img class="screenshot" alt="Campaign - View Leads" src="/docs/assets/img/crm/campaign-view-leads.png">
* You shall get a filtered list of all leads made against that campaign.
* You can also create new leads by clicking 'New'
-<img class="screenshot" alt="Campaign - New Lead" src="{{docs_base_url}}/assets/img/crm/campaign-new-lead.png">
+<img class="screenshot" alt="Campaign - New Lead" src="/docs/assets/img/crm/campaign-new-lead.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/CRM/setup/customer-group.md b/erpnext/docs/user/manual/en/CRM/setup/customer-group.md
index 505c4fb..628057a 100644
--- a/erpnext/docs/user/manual/en/CRM/setup/customer-group.md
+++ b/erpnext/docs/user/manual/en/CRM/setup/customer-group.md
@@ -1,14 +1,16 @@
+# Customer Group
+
Customer groups allow you to organize your customers. You can also have discounts based on customer groups.
You can also get trend analysis for each
group. Typically Customers are grouped by market segment (that is usually
based on your domain).
-<img class="screenshot" alt="Customer Group Tree" src="{{docs_base_url}}/assets/img/crm/customer-group-tree.png">
+<img class="screenshot" alt="Customer Group Tree" src="/docs/assets/img/crm/customer-group-tree.png">
> Tip: If you think all this is too much effort, you can leave it at “Default
Customer Group”. But all this effort, will pay off when you start getting
reports. An example of a sample report is given below:
-<img class="screenshot" alt="Customer Group report" src="{{docs_base_url}}/assets/img/crm/sales-analytics-customer.gif">
+<img class="screenshot" alt="Customer Group report" src="/docs/assets/img/crm/sales-analytics-customer.gif">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/CRM/setup/index.md b/erpnext/docs/user/manual/en/CRM/setup/index.md
index 259b5eb..2d85ad2 100644
--- a/erpnext/docs/user/manual/en/CRM/setup/index.md
+++ b/erpnext/docs/user/manual/en/CRM/setup/index.md
@@ -1,3 +1,5 @@
+# Setup
+
### Topics
diff --git a/erpnext/docs/user/manual/en/CRM/setup/sales-person.md b/erpnext/docs/user/manual/en/CRM/setup/sales-person.md
index ce5ed93..b96020e 100644
--- a/erpnext/docs/user/manual/en/CRM/setup/sales-person.md
+++ b/erpnext/docs/user/manual/en/CRM/setup/sales-person.md
@@ -1,14 +1,16 @@
+# Sales Person
+
Sales Persons behave exactly like Territories. You can create an organization
chart of Sales Persons where each Sales Person’s target can be set
individually. Again as in Territory, the target has to be set against Item
Group.
-<img class="screenshot" alt="Sales Person Tree" src="{{docs_base_url}}/assets/img/crm/sales-person-tree.png">
+<img class="screenshot" alt="Sales Person Tree" src="/docs/assets/img/crm/sales-person-tree.png">
####Sales Person in Transactions
You can use this Sales Person in Customer and sales transactions like Sales Order, Delivery Note and Sales Invoice.
-Click [here]({{docs_base_url}}/user/manual/en/selling/articles/sales-persons-in-the-sales-transactions) to learn more
+Click [here](/docs/user/manual/en/selling/articles/sales-persons-in-the-sales-transactions) to learn more
about how Sales Persons are used in the transactions of Sales Cycle.
{next}
diff --git a/erpnext/docs/user/manual/en/accounts/accounting-entries.md b/erpnext/docs/user/manual/en/accounts/accounting-entries.md
index 7aeff24..abd2322 100644
--- a/erpnext/docs/user/manual/en/accounts/accounting-entries.md
+++ b/erpnext/docs/user/manual/en/accounts/accounting-entries.md
@@ -1,10 +1,12 @@
+# Accounting Entries
+
The concept of accounting is explained with an example given below: We will
take a "Tea Stall" as a company and see how to book accounting entries for the
business.
* Mama (The Tea-stall owner) invests Rs 25000 to start the business.
-
+
__Analysis:__ Mama invested 25000 in company, hoping to get some profit. In other
words, company is liable to pay 25000 to Mama in the future. So, account
@@ -14,7 +16,7 @@
* The company needs equipments (Stove, teapot, cups etc) and raw materials (tea, sugar, milk etc) immediately. He decides to buy from the nearest general store "Super Bazaar" who is a friend so that he gets some credit. Equipments cost him 2800 and raw materials worth of 2200. He pays 2000 out of total cost 5000.
-
+
__Analysis:__ Equipments are "Fixed Assets" (because they have a long life) of the
company and raw materials "Current Assets" (since they are used for day-to-day
@@ -25,7 +27,7 @@
* Mama (who takes care of all entries) decides to book sales at the end of the every day, so that he can analyze daily sales. At the end of the very first day, the tea stall sells 325 cups of tea, which gives net sales of Rs. 1575. The owner happily books his first day sales.
-
+
__Analysis:__ Income has been booked in "Sales of Tea" account which has been
credited to increase the value and the same amount will be debited to "Cash"
@@ -36,7 +38,7 @@
At the end of the month, the company paid the rent amount of stall (5000) and
salary of one employee (8000), who joined from the very first day.
-
+
### Booking Profit
@@ -47,7 +49,7 @@
Sheet is not balanced i.e. Debit is not equal to Credit, the profit has not
yet been booked. To book profit, the following entry has to be made:
-
+
Explanation: Company's net sales and expenses are 40000 and 20000
respectively. So, company made a profit of 20000. To make the profit booking
diff --git a/erpnext/docs/user/manual/en/accounts/accounting-reports.md b/erpnext/docs/user/manual/en/accounts/accounting-reports.md
index 61470b1..99d7029 100644
--- a/erpnext/docs/user/manual/en/accounts/accounting-reports.md
+++ b/erpnext/docs/user/manual/en/accounts/accounting-reports.md
@@ -1,3 +1,5 @@
+# Accounting Reports
+
Some of the major accounting reports are:
### General Ledger
@@ -7,7 +9,7 @@
done in that period for that Account.
<img alt="General Ledger" class="screenshot"
- src="{{docs_base_url}}/assets/img/accounts/general-ledger.png">
+ src="/docs/assets/img/accounts/general-ledger.png">
### Trial Balance
@@ -20,7 +22,7 @@
* Credits
* Closing
-<img alt="Trial Balance" class="screenshot" src="{{docs_base_url}}/assets/img/accounts/trial-balance.png">
+<img alt="Trial Balance" class="screenshot" src="/docs/assets/img/accounts/trial-balance.png">
The sum of all closing balances in a Trial Balance must be zero.
@@ -30,7 +32,7 @@
Suppliers. In this report, you will get your outstanding amounts period wise.
i.e. between 0-30 days, 30-60 days and so on.
-<img alt="Accounts Receivable" class="screenshot" src="{{docs_base_url}}/assets/img/accounts/accounts-receivable.png">
+<img alt="Accounts Receivable" class="screenshot" src="/docs/assets/img/accounts/accounts-receivable.png">
### Sales and Purchase Register
@@ -38,6 +40,6 @@
invoice Item, you will get the amount of individual tax that has been paid,
based on the Taxes and Charges table.
-<img alt="Sales Register" class="screenshot" src="{{docs_base_url}}/assets/img/accounts/sales-register.png">
+<img alt="Sales Register" class="screenshot" src="/docs/assets/img/accounts/sales-register.png">
{next}
diff --git a/erpnext/docs/user/manual/en/accounts/advance-payment-entry.md b/erpnext/docs/user/manual/en/accounts/advance-payment-entry.md
index 010d897..9627ff2 100644
--- a/erpnext/docs/user/manual/en/accounts/advance-payment-entry.md
+++ b/erpnext/docs/user/manual/en/accounts/advance-payment-entry.md
@@ -1,3 +1,5 @@
+# Advance Payment Entry
+
Payment done by the customer before accepting delivery of the product is an
Advance Payment. For Orders of high value, the business houses expect to
receive advance.
@@ -22,7 +24,7 @@
#### Figure 1 : Journal Entry -Advance Entry
-<img class="screenshot" alt="Advace Payment" src="{{docs_base_url}}/assets/img/accounts/advance-payment-1.png">
+<img class="screenshot" alt="Advace Payment" src="/docs/assets/img/accounts/advance-payment-1.png">
### Double Entry Accounting
@@ -39,7 +41,7 @@
#### Figure 2: Transaction and Difference Entry
-<img class="screenshot" alt="Advace Payment" src="{{docs_base_url}}/assets/img/accounts/advance-payment-2.png">
+<img class="screenshot" alt="Advace Payment" src="/docs/assets/img/accounts/advance-payment-2.png">
Save and submit the Journal Entry. If this document is not saved it will not be pulled in
other accounting documents.
@@ -53,7 +55,7 @@
#### Figure 3: Receive Advance
-<img class="screenshot" alt="Advace Payment" src="{{docs_base_url}}/assets/img/accounts/advance-payment-3.png">
+<img class="screenshot" alt="Advace Payment" src="/docs/assets/img/accounts/advance-payment-3.png">
Save and submit the Sales Invoice.
diff --git a/erpnext/docs/user/manual/en/accounts/articles/adjust-withhold-amount-payment-entry.md b/erpnext/docs/user/manual/en/accounts/articles/adjust-withhold-amount-payment-entry.md
index d469b28..01f6ef5 100644
--- a/erpnext/docs/user/manual/en/accounts/articles/adjust-withhold-amount-payment-entry.md
+++ b/erpnext/docs/user/manual/en/accounts/articles/adjust-withhold-amount-payment-entry.md
@@ -1,3 +1,5 @@
+# Adjust Withhold Amount Payment Entry
+
#Adjust Withhold Amount in the Payment Entry
###Question
@@ -22,7 +24,7 @@
Enter Payment Amount as 19,600.
-<img alt="Sales Invoice Payment Amount" class="screenshot" src="{{docs_base_url}}/assets/img/articles/withhold-1.png">
+<img alt="Sales Invoice Payment Amount" class="screenshot" src="/docs/assets/img/articles/withhold-1.png">
#####Step 2.2: Allocate Against Sales Invoice
@@ -32,6 +34,6 @@
You can notice that there is a difference of 400 in the Payment Amount and the Amount Allocated against Sales Invoice. You can book this difference account under Withhold Account.
-<img alt="Deduction/Loss Account" class="screenshot" src="{{docs_base_url}}/assets/img/articles/withhold-2.gif">
+<img alt="Deduction/Loss Account" class="screenshot" src="/docs/assets/img/articles/withhold-2.gif">
Following same steps, you can also manage difference availed due to Currency Exchange Gain/Loss.
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/accounts/articles/c-form.md b/erpnext/docs/user/manual/en/accounts/articles/c-form.md
index 3c6e091..78d15ac 100644
--- a/erpnext/docs/user/manual/en/accounts/articles/c-form.md
+++ b/erpnext/docs/user/manual/en/accounts/articles/c-form.md
@@ -1,3 +1,5 @@
+# C Form
+
#C-Form
C-Form functionality is only applicable for Indian customers.
@@ -14,7 +16,7 @@
While creating Sales invoice for the customer, set C-Form applicability in Sales Invoice. In More Info section of Sales Invoice, set field called **Is C-Form Applicable** as **Yes**. Bydefault, this field will have No for a value.
-
+
Updating this field as Yes will allow you to pull this Sales Invoice in the C-Form Tool, and update C-Form No. as received from the Customer.
@@ -26,22 +28,22 @@
Enter details like C-Form No, Received Date, State and Amount etc. Select Customer and pull related Sales Invoices under provided table.
-
+
####Save & Submit C-Form
After entering details, save and submit C-Form record. On save system will generate C-Form record and on submission update that C-Form No. in the Sales Invoice.
-
+
C-Form serial no will be updated in related invoice under the field 'C-Form No'.
-
+
####Tracking Pending Invoice for C-Form
To track invoices for which C-Form has not yet been received from Customer, you can create custom report on Sales Invoice. In this report, you can filter invoices which doesn't have C-Form updated in them yet, and followup with the customer accordingly.
-
+
<!-- markdown -->
diff --git a/erpnext/docs/user/manual/en/accounts/articles/changing-parent-account.md b/erpnext/docs/user/manual/en/accounts/articles/changing-parent-account.md
index e4a33e0..1b6c0fb 100644
--- a/erpnext/docs/user/manual/en/accounts/articles/changing-parent-account.md
+++ b/erpnext/docs/user/manual/en/accounts/articles/changing-parent-account.md
@@ -1,3 +1,5 @@
+# Changing Parent Account
+
#Changing Parent Account
Chart of Account has hierarchical structure. Each account has a parent it is listed under.
@@ -14,22 +16,22 @@
####2. Edit Account
-<img alt="Project Default Cost Center" class="screenshot" src="{{docs_base_url}}/assets/img/articles/change-parent-1.png">
+<img alt="Project Default Cost Center" class="screenshot" src="/docs/assets/img/articles/change-parent-1.png">
####3. Change Parent Account
Search and select preferred Parent Account and save.
-<img alt="Project Default Cost Center" class="screenshot" src="{{docs_base_url}}/assets/img/articles/change-parent-2.png">
+<img alt="Project Default Cost Center" class="screenshot" src="/docs/assets/img/articles/change-parent-2.png">
Refresh system from Help menu to experience the change.
-<img alt="Project Default Cost Center" class="screenshot" src="{{docs_base_url}}/assets/img/articles/change-parent-3.png">
+<img alt="Project Default Cost Center" class="screenshot" src="/docs/assets/img/articles/change-parent-3.png">
<div class="well"> Note: Parent cannot be customized for the Root Accounts, like Asset, Liability, Income, Expense, Equity.</div>
#### Quick Help
-<img alt="Project Default Cost Center" class="screenshot" src="{{docs_base_url}}/assets/img/articles/change-parent-account-1.gif">
+<img alt="Project Default Cost Center" class="screenshot" src="/docs/assets/img/articles/change-parent-account-1.gif">
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/accounts/articles/difference-entry-button.md b/erpnext/docs/user/manual/en/accounts/articles/difference-entry-button.md
index acac407..06a4479 100644
--- a/erpnext/docs/user/manual/en/accounts/articles/difference-entry-button.md
+++ b/erpnext/docs/user/manual/en/accounts/articles/difference-entry-button.md
@@ -1,14 +1,16 @@
+# Difference Entry Button
+
#Difference Entry
As per accounting standards, debit in a accounting entry must be equal to credit. If not, system does allow submission of accounting transaction, thereby stops ledger posting. In ERPNext, on saving accounting entry, system validates if debit and credit is tallying.
-<img alt="Debit Credit Not Equal" class="screenshot" src="{{docs_base_url}}/assets/img/articles/difference-entry-1.png">
+<img alt="Debit Credit Not Equal" class="screenshot" src="/docs/assets/img/articles/difference-entry-1.png">
To have entry balanced, you should one more row, select another account, and update different amount in it. Or you can add difference amount in one of the Account's row itself.
On clicking 'Make Difference Entry' button, new Row will be added under Journal Entry Accounts table, with difference amount. You can edit that row to select appropriate Account.
-<img alt="Debit Credit Not Equal" class="screenshot" src="{{docs_base_url}}/assets/img/articles/difference-entry-2.gif">
+<img alt="Debit Credit Not Equal" class="screenshot" src="/docs/assets/img/articles/difference-entry-2.gif">
On selecting account under new row, debit and credit an entry will be tallying, and you should be able to submit Journal Entri correctly.
diff --git a/erpnext/docs/user/manual/en/accounts/articles/fiscal-year-error.md b/erpnext/docs/user/manual/en/accounts/articles/fiscal-year-error.md
index 003ad31..4a1b54b 100644
--- a/erpnext/docs/user/manual/en/accounts/articles/fiscal-year-error.md
+++ b/erpnext/docs/user/manual/en/accounts/articles/fiscal-year-error.md
@@ -12,19 +12,19 @@
`Accounts > Setup > Fiscal Year`
-Click [here]({{docs_base_url}}/user/manual/en/accounts/setup/fiscal-year.html) to learn more about Fiscal Year.
+Click [here](/docs/user/manual/en/accounts/setup/fiscal-year.html) to learn more about Fiscal Year.
#### Set Fiscal Year as Default
After Fiscal Year is saved, you will find option to set that Fiscal year as Default.
-<img alt="Debit Credit Not Equal" class="screenshot" src="{{docs_base_url}}/assets/img/articles/fiscal-year-error-1.png">
+<img alt="Debit Credit Not Equal" class="screenshot" src="/docs/assets/img/articles/fiscal-year-error-1.png">
Default Fiscal Year will be updated in the Global Default setting as well. You can manually update Default Fiscal Year from:
`Setup > Settings > Global Default`
-<img alt="Debit Credit Not Equal" class="screenshot" src="{{docs_base_url}}/assets/img/articles/fiscal-year-error-2.png">
+<img alt="Debit Credit Not Equal" class="screenshot" src="/docs/assets/img/articles/fiscal-year-error-2.png">
Save Global Default, and Reload your ERPNext account. Then, default Fiscal Year will be auto-updated in your transactions.
diff --git a/erpnext/docs/user/manual/en/accounts/articles/freeze-accounting-entries.md b/erpnext/docs/user/manual/en/accounts/articles/freeze-accounting-entries.md
index 9d5f614..677bb81 100644
--- a/erpnext/docs/user/manual/en/accounts/articles/freeze-accounting-entries.md
+++ b/erpnext/docs/user/manual/en/accounts/articles/freeze-accounting-entries.md
@@ -1,3 +1,5 @@
+# Freeze Accounting Entries
+
#Freeze Accounting Entries
To freeze accounting entries upto a certain date, follow below given steps.
@@ -10,12 +12,12 @@
Set date in the **Accounts Frozen Upto** field.
-<img alt="Accounts Frozen Date" class="screenshot" src="{{docs_base_url}}/assets/img/articles/frozen-date-1.png">
+<img alt="Accounts Frozen Date" class="screenshot" src="/docs/assets/img/articles/frozen-date-1.png">
Now, the system will not allow to make any accounting entries before set date. If at all someone tries creating entries, system will show error message as below.
-<img alt="Frozen Date Error" class="screenshot" src="{{docs_base_url}}/assets/img/articles/frozen-date-2.png">
+<img alt="Frozen Date Error" class="screenshot" src="/docs/assets/img/articles/frozen-date-2.png">
You can still allow user with certain role to create/edit entries within accounts frozen date. You can set that Role in the Account Settings itself.
-<img alt="Frozen Date Error" class="screenshot" src="{{docs_base_url}}/assets/img/articles/frozen-date-3.png">
+<img alt="Frozen Date Error" class="screenshot" src="/docs/assets/img/articles/frozen-date-3.png">
diff --git a/erpnext/docs/user/manual/en/accounts/articles/how-to-freeze-accounting-ledger.md b/erpnext/docs/user/manual/en/accounts/articles/how-to-freeze-accounting-ledger.md
index 80aed6d..9ddee07 100644
--- a/erpnext/docs/user/manual/en/accounts/articles/how-to-freeze-accounting-ledger.md
+++ b/erpnext/docs/user/manual/en/accounts/articles/how-to-freeze-accounting-ledger.md
@@ -1,3 +1,5 @@
+# How To Freeze Accounting Ledger
+
#How To Freeze Accounting Ledger?
If you want to discontinue using specific Account, you can freeze it.
@@ -12,7 +14,7 @@
`Explore > Accounts > Chart of Accounts`
-<img class="screenshot" alt="Freeze Account" src="{{docs_base_url}}/assets/img/articles/freeze-account-1.png">
+<img class="screenshot" alt="Freeze Account" src="/docs/assets/img/articles/freeze-account-1.png">
Click on Account in which Frozen Date is to be updated.
@@ -20,7 +22,7 @@
In the Account form, you will find a field called **Frozen**. Set value in this field as 'Yes'
-<img class="screenshot" alt="Freeze Account" src="{{docs_base_url}}/assets/img/articles/freeze-account-2.png">
+<img class="screenshot" alt="Freeze Account" src="/docs/assets/img/articles/freeze-account-2.png">
####Step 3: Save
diff --git a/erpnext/docs/user/manual/en/accounts/articles/index.md b/erpnext/docs/user/manual/en/accounts/articles/index.md
index 0dff60b..fb11735 100644
--- a/erpnext/docs/user/manual/en/accounts/articles/index.md
+++ b/erpnext/docs/user/manual/en/accounts/articles/index.md
@@ -1 +1,3 @@
+# Articles
+
{index}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/accounts/articles/manage-foreign-exchange-difference.md b/erpnext/docs/user/manual/en/accounts/articles/manage-foreign-exchange-difference.md
index a9a9fef..643636b 100644
--- a/erpnext/docs/user/manual/en/accounts/articles/manage-foreign-exchange-difference.md
+++ b/erpnext/docs/user/manual/en/accounts/articles/manage-foreign-exchange-difference.md
@@ -6,7 +6,7 @@
To mange currency difference, create Account **Foreign Exchange Gain/Loss**. This account is generally created on the Expense side of P&L statement. However, you can place it under another group as per your accounting requirement.
-<img alt="Accounts Frozen Date" class="screenshot" src="{{docs_base_url}}/assets/img/articles/exchange-rate-difference-1.png">
+<img alt="Accounts Frozen Date" class="screenshot" src="/docs/assets/img/articles/exchange-rate-difference-1.png">
#### Book Payment Entry
@@ -16,7 +16,7 @@
One receipt of payment, exchange rate changed. As per the new exchange rate, payment received in the base currency was $1080. This means gain of $80 due to change in exchange rate. Following is how Foreign Exchange Gain will be booked in this scenerio.
-<img alt="Accounts Frozen Date" class="screenshot" src="{{docs_base_url}}/assets/img/articles/exchange-rate-difference-2.gif">
+<img alt="Accounts Frozen Date" class="screenshot" src="/docs/assets/img/articles/exchange-rate-difference-2.gif">
In case you incur loss due to change foriegn exchnage rate, then different amount about be updated in the debit of Foreign Exchange Gain/Loss account. Also you can add another row to update another expenses like bank charges, remittance charges etc.
diff --git a/erpnext/docs/user/manual/en/accounts/articles/managing-transactions-in-multiple-currency.md b/erpnext/docs/user/manual/en/accounts/articles/managing-transactions-in-multiple-currency.md
index d89c199..46b9e4e 100644
--- a/erpnext/docs/user/manual/en/accounts/articles/managing-transactions-in-multiple-currency.md
+++ b/erpnext/docs/user/manual/en/accounts/articles/managing-transactions-in-multiple-currency.md
@@ -1,3 +1,5 @@
+# Managing Transactions In Multiple Currency
+
#Managing Transactions In Multiple Currency
In ERPNext, transactions can be created in the base currency as well as in parties (customer or supplier) currency. If transaction is created in the parties currency, their currency symbol is updated in the print format as well.
@@ -16,7 +18,7 @@
Currency Exchange between base currency and customer currency will auto-fetch.
-<img alt="Accounts Frozen Date" class="screenshot" src="{{docs_base_url}}/assets/img/articles/multiple-currency-1.gif">
+<img alt="Accounts Frozen Date" class="screenshot" src="/docs/assets/img/articles/multiple-currency-1.gif">
#### Step 4: Update Details
@@ -26,7 +28,7 @@
Save Sales Invoice and then check Print Format. For all the Currency field (rate, amount, totals) Customer's Currency symbol will be updated as well.
-<img alt="Accounts Frozen Date" class="screenshot" src="{{docs_base_url}}/assets/img/articles/multiple-currency-2.png">
+<img alt="Accounts Frozen Date" class="screenshot" src="/docs/assets/img/articles/multiple-currency-2.png">
#### Currency Exchange Masters
diff --git a/erpnext/docs/user/manual/en/accounts/articles/post-dated-cheque-entry.md b/erpnext/docs/user/manual/en/accounts/articles/post-dated-cheque-entry.md
index 0b61000..a2436f3 100644
--- a/erpnext/docs/user/manual/en/accounts/articles/post-dated-cheque-entry.md
+++ b/erpnext/docs/user/manual/en/accounts/articles/post-dated-cheque-entry.md
@@ -1,3 +1,5 @@
+# Post Dated Cheque Entry
+
#Post Dated Cheque Entry
Post Dated Cheque is a cheque dated on future date. Party generally give post dated cheque, as advance payment. This cheque would be cleared only when cheque date arrives.
@@ -14,7 +16,7 @@
Assuming your Cheque Date is 31st December, 2016 (or any future date). As a result, this posting in your bank ledger will appear on Posting Date updated.
-<img alt="JE Posting Date" class="screenshot" src="{{docs_base_url}}/assets/img/articles/post-dated-1.png">
+<img alt="JE Posting Date" class="screenshot" src="/docs/assets/img/articles/post-dated-1.png">
Note: Payment Entry Reference Date should equal to or less than Posting Date.
@@ -24,9 +26,9 @@
####Adjusting Post Dated Cheque Entry
-You can adjust Post Dated Payment Entry against an invoice via [Payment Reconciliation Tool]({{docs_base_url}}/user/manual/en/accounts/tools/payment-reconciliation.html).
+You can adjust Post Dated Payment Entry against an invoice via [Payment Reconciliation Tool](/docs/user/manual/en/accounts/tools/payment-reconciliation.html).
-When cheque is cleared, i.e. on actual date on the cheque, you can update its Clearance Date via [Bank Reconciliation Tool]({{docs_base_url}}/user/manual/en/accounts/tools/bank-reconciliation.html).
+When cheque is cleared, i.e. on actual date on the cheque, you can update its Clearance Date via [Bank Reconciliation Tool](/docs/user/manual/en/accounts/tools/bank-reconciliation.html).
In the Chart of Accounts, you might find value of this Payment Entry already reflecting against bank Account. You should check **Bank Reconciliation Statement**, a report in the account module to know difference of bank balance as per system, and actual balance in the bank's statement.
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/accounts/articles/tracking-project-profitability-using-cost-center.md b/erpnext/docs/user/manual/en/accounts/articles/tracking-project-profitability-using-cost-center.md
index b8310ad..921a7fa 100644
--- a/erpnext/docs/user/manual/en/accounts/articles/tracking-project-profitability-using-cost-center.md
+++ b/erpnext/docs/user/manual/en/accounts/articles/tracking-project-profitability-using-cost-center.md
@@ -1,3 +1,5 @@
+# Tracking Project Profitability Using Cost Center
+
#Tracking Project Profibitability using Cost Center
To track expenses and profibility for a project, you can use Cost Centers. You should create separate Cost Center for each Project. This will allow you to.
@@ -15,7 +17,7 @@
`Projects > Project > New`
-<img alt="Project Default Cost Center" class="screenshot" src="{{docs_base_url}}/assets/img/articles/project-cost-center-4.png">
+<img alt="Project Default Cost Center" class="screenshot" src="/docs/assets/img/articles/project-cost-center-4.png">
#### 1.2 Create Cost Center
@@ -25,13 +27,13 @@
`Accounts > Setup > Cost Center`
-[Click here to learn how to manage Cost Centers.]({{docs_base_url}}/user/manual/en/accounts/setup/cost-center.html)
+[Click here to learn how to manage Cost Centers.](/docs/user/manual/en/accounts/setup/cost-center.html)
#### 1.3 Update Cost Center in the Project
Update Cost Center in the Project master.
-<img alt="Project Default Cost Center" class="screenshot" src="{{docs_base_url}}/assets/img/articles/project-cost-center-1.png">
+<img alt="Project Default Cost Center" class="screenshot" src="/docs/assets/img/articles/project-cost-center-1.png">
In the sales and purchase transactions, if Project is selected, then Cost Center will fetched from the Project master.
@@ -43,7 +45,7 @@
In the sales transactions (which are Sales Order, Delivery Note and Sales Invoice), Project will be selected in the More Info section. On selection of a Project, respective Cost Center will be updated for all the items in that transaction. Cost Center will be updated on in the transactions which has Cost Center field.
-<img alt="Project Default Cost Center" class="screenshot" src="{{docs_base_url}}/assets/img/articles/project-cost-center-2.png">
+<img alt="Project Default Cost Center" class="screenshot" src="/docs/assets/img/articles/project-cost-center-2.png">
#### 2.2 Project in the Purchase Transactions
@@ -51,7 +53,7 @@
As per perpetual inventory valuation system, expense for the purchased item will be booked when raw-materials are consumed. On consumption of goods, if you are creating Material Issue (stock) entry, then Expense Cost (says Cost of Goods Sold) and Project's Cost Center should be updated in that entry.
-<img alt="Project Default Cost Center" class="screenshot" src="{{docs_base_url}}/assets/img/articles/project-cost-center-3.png">
+<img alt="Project Default Cost Center" class="screenshot" src="/docs/assets/img/articles/project-cost-center-3.png">
### 3. Accounting Report for a Project
@@ -61,11 +63,11 @@
**Monthly Project Analysis**
-<img alt="Project Default Cost Center" class="screenshot" src="{{docs_base_url}}/assets/img/articles/project-cost-center-5.png">
+<img alt="Project Default Cost Center" class="screenshot" src="/docs/assets/img/articles/project-cost-center-5.png">
**Overall Profitability**
-<img alt="Project Default Cost Center" class="screenshot" src="{{docs_base_url}}/assets/img/articles/project-cost-center-6.png">
+<img alt="Project Default Cost Center" class="screenshot" src="/docs/assets/img/articles/project-cost-center-6.png">
#### 3.2 Projectwise Budgeting
@@ -75,6 +77,6 @@
`Accounts > Budget and Cost Center > Budget Variance Report`
-[Click here to learn how to do budgeting from Cost Center]({{docs_base_url}}/user/manual/en/accounts/budgeting.html).
+[Click here to learn how to do budgeting from Cost Center](/docs/user/manual/en/accounts/budgeting.html).
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/accounts/articles/update-stock-option-in-sales-invoice.md b/erpnext/docs/user/manual/en/accounts/articles/update-stock-option-in-sales-invoice.md
index 4c6c659..6fb7915 100644
--- a/erpnext/docs/user/manual/en/accounts/articles/update-stock-option-in-sales-invoice.md
+++ b/erpnext/docs/user/manual/en/accounts/articles/update-stock-option-in-sales-invoice.md
@@ -1,8 +1,10 @@
+# Update Stock Option In Sales Invoice
+
#Delivery from Sales Invoice
If you have items delivery and invoicing happening at the same time, you can create delivery from with Sales Invoice itself. Sales Invoice has field called **Update Stock**, just before Item table. If this field is checked, on submission of Sales Invoice, stock of Item will be deducted from selected Warehouse.
-<img alt="Update Stock" class="screenshot" src="{{docs_base_url}}/assets/img/articles/update-stock.png">
+<img alt="Update Stock" class="screenshot" src="/docs/assets/img/articles/update-stock.png">
On checking Update Stock, Sales Invoice Item will show relevant fields like Warehouse, Serial No., Batch No., Item valuation etc.
diff --git a/erpnext/docs/user/manual/en/accounts/articles/what-is-the-differences-of-total-and-valuation-in-tax-and-charges.md b/erpnext/docs/user/manual/en/accounts/articles/what-is-the-differences-of-total-and-valuation-in-tax-and-charges.md
index a23b6e7..0273f5c 100644
--- a/erpnext/docs/user/manual/en/accounts/articles/what-is-the-differences-of-total-and-valuation-in-tax-and-charges.md
+++ b/erpnext/docs/user/manual/en/accounts/articles/what-is-the-differences-of-total-and-valuation-in-tax-and-charges.md
@@ -1,3 +1,5 @@
+# What Is The Differences Of Total And Valuation In Tax And Charges
+
#Purchase Tax or Charges Categories
Consider Tax or Charge field in Purchase Taxes and Charges master has three values.
@@ -6,7 +8,7 @@
- Valuation
- Total and Valuation
-<img alt="Purchase Tax and Charges Categories" class="screenshot" src="{{docs_base_url}}/assets/img/articles/purchase-other-charges-1.png">
+<img alt="Purchase Tax and Charges Categories" class="screenshot" src="/docs/assets/img/articles/purchase-other-charges-1.png">
Let's consider an example to understand an effect of each charge type. We purchase ten units of item, at the rate of 800. total purchase amount is 800. Purchased item has 4% VAT applied on it, and INR 100 was incurred in transportation.
@@ -24,7 +26,7 @@
Transportation charge of INR 100 should be categorized as valuation. With this, the value of purchased item will be increased from 800 to 900. Also, this charge will be not be added to the total of purchase transaction, because it your expense, and should not be reflected to the supplier.
-Check [here]({{docs_base_url}}/user/manual/en/stock/accounting-of-inventory-stock/perpetual-inventory.html) to learn general posting done for expense categorized as Valuation.
+Check [here](/docs/user/manual/en/stock/accounting-of-inventory-stock/perpetual-inventory.html) to learn general posting done for expense categorized as Valuation.
####Total and Valuation:
diff --git a/erpnext/docs/user/manual/en/accounts/articles/withdrawing-salary-from-owners-equity-account.md b/erpnext/docs/user/manual/en/accounts/articles/withdrawing-salary-from-owners-equity-account.md
index 1e7a993..ab84396 100644
--- a/erpnext/docs/user/manual/en/accounts/articles/withdrawing-salary-from-owners-equity-account.md
+++ b/erpnext/docs/user/manual/en/accounts/articles/withdrawing-salary-from-owners-equity-account.md
@@ -1,3 +1,5 @@
+# Withdrawing Salary From Owners Equity Account
+
#Withdrawing Salary from Owner's Equity Account
### Question
diff --git a/erpnext/docs/user/manual/en/accounts/bank-guarantee.md b/erpnext/docs/user/manual/en/accounts/bank-guarantee.md
index db60300..c0c6d7a 100644
--- a/erpnext/docs/user/manual/en/accounts/bank-guarantee.md
+++ b/erpnext/docs/user/manual/en/accounts/bank-guarantee.md
@@ -1,9 +1,11 @@
+# Bank Guarantee
+
A Bank Guarantee is a guarantee from a lending institution such as a bank ensuring the liabilities of a debtor will be met. In other words, if the debtor fails to settle a debt, the bank covers it. A Bank Guarantee enables the customer, or debtor, to acquire goods, buy equipment or draw down loans, and thereby expand business activity.
A client may ask you to provide a Bank Guarantee from a third party such as a bank. This guarantee is for a specified amount, which is usually a percentage of the total value of the contract. The Bank Guarantee is valid for a specified duration after which it expires and must be returned to you by the client.
This document allows you to track Bank Guarantees given to clients. You can set Email Alerts as the Bank Guarantee expiry date approaches to remind yourself to get the Bank Guarantee back from your client.
-<img class="screenshot" alt="Bank Guarantee" src="{{docs_base_url}}/assets/img/accounts/bank-guarantee.png">
+<img class="screenshot" alt="Bank Guarantee" src="/docs/assets/img/accounts/bank-guarantee.png">
{next}
diff --git a/erpnext/docs/user/manual/en/accounts/budgeting.md b/erpnext/docs/user/manual/en/accounts/budgeting.md
index fad128c..3e7db19 100644
--- a/erpnext/docs/user/manual/en/accounts/budgeting.md
+++ b/erpnext/docs/user/manual/en/accounts/budgeting.md
@@ -1,3 +1,5 @@
+# Budgeting
+
In ERPNext, you can set and manage Budgets against a specific Account. This is useful when, for example, you are doing online sales. You have a budget for search ads, and you want ERPNext to stop or warn you from over spending, based on that budget.
Budgets are also great for planning purposes. When you are making plans for the next financial year, you would typically target a revenue based on which you would set your expenses. Setting a budget will ensure that your expenses do not get out of hand, at any point, as per your plans.
@@ -10,7 +12,7 @@
> Accounts > Budget and Cost Center > Chart of Cost Center > Add New Cost Center
-<img class="screenshot" alt="Budget" src="{{docs_base_url}}/assets/img/accounts/budgeting-cost-center.png">
+<img class="screenshot" alt="Budget" src="/docs/assets/img/accounts/budgeting-cost-center.png">
###Budgeting
@@ -28,20 +30,20 @@
In the Budgets table, select Income / Expense account for which Budget is to be defined.
-<img class="screenshot" alt="Budget" src="{{docs_base_url}}/assets/img/accounts/budget-account.png">
+<img class="screenshot" alt="Budget" src="/docs/assets/img/accounts/budget-account.png">
####Step 4: Monthly Distribution
If you have seasonal business, you can also define a Monthly Distribution record, to distribute the budget between months. If you don't set the monthly distribution, ERPNext will calculate the budget on yearly
basis or in equal proportion for every month.
-<img class="screenshot" alt="Monthly Distribution" src="{{docs_base_url}}/assets/img/accounts/monthly-budget-distribution.png">
+<img class="screenshot" alt="Monthly Distribution" src="/docs/assets/img/accounts/monthly-budget-distribution.png">
####Step 5: Alert on Budget
While setting budget, you can also define the actions when expenses will exceed the allocated budget for a period. You can set separate action for monthly and annual budgets. There are 3 types of actions: Stop, Warn and Ignore. If Stop, system will not allow to book expenses more than allocated budget. In Case of Warn, it will just warn the user that expenses has been exceeded from the allocated budget. And Ignore will do nothing.
-<img class="screenshot" alt="Monthly Distribution" src="{{docs_base_url}}/assets/img/accounts/budget-warning.png">
+<img class="screenshot" alt="Monthly Distribution" src="/docs/assets/img/accounts/budget-warning.png">
####Budget Variance Report
@@ -51,6 +53,6 @@
Accounts > Budget and Cost Center > Budget Variance Report
-<img class="screenshot" alt="Budget Variance Report" src="{{docs_base_url}}/assets/img/accounts/budget-variance-report.png">
+<img class="screenshot" alt="Budget Variance Report" src="/docs/assets/img/accounts/budget-variance-report.png">
{next}
diff --git a/erpnext/docs/user/manual/en/accounts/chart-of-accounts.md b/erpnext/docs/user/manual/en/accounts/chart-of-accounts.md
index ae6847e..f2208b4 100644
--- a/erpnext/docs/user/manual/en/accounts/chart-of-accounts.md
+++ b/erpnext/docs/user/manual/en/accounts/chart-of-accounts.md
@@ -1,3 +1,5 @@
+# Chart Of Accounts
+
The Chart of Accounts forms the blueprint of your organization. The overall
structure of your Chart of Accounts is based on a system of double entry
accounting that has become a standard all over the world to quantify how a
@@ -25,13 +27,13 @@
An Example of various financial statement are given below:
#### Cash Flow Report
-<img class="screenshot" alt="Cash Flow Report" src="{{docs_base_url}}/assets/img/accounts/cash_flow_report.png">
+<img class="screenshot" alt="Cash Flow Report" src="/docs/assets/img/accounts/cash_flow_report.png">
#### Profit and Loss Report
-<img class="screenshot" alt="Profit and Loss Report" src="{{docs_base_url}}/assets/img/accounts/profit_n_loss_report.png">
+<img class="screenshot" alt="Profit and Loss Report" src="/docs/assets/img/accounts/profit_n_loss_report.png">
#### Balance Sheet Report
-<img class="screenshot" alt="Balance Sheet Report" src="{{docs_base_url}}/assets/img/accounts/balance_sheet_report.png">
+<img class="screenshot" alt="Balance Sheet Report" src="/docs/assets/img/accounts/balance_sheet_report.png">
To edit your Chart of Accounts in ERPNext go to:
@@ -46,7 +48,7 @@
Let us understand the main groups of the Chart of Accounts.
-<img class="screenshot" alt="Chart of Accounts" src="{{docs_base_url}}/assets/img/accounts/chart-of-accounts-1.png">
+<img class="screenshot" alt="Chart of Accounts" src="/docs/assets/img/accounts/chart-of-accounts-1.png">
### Balance Sheet Accounts
@@ -84,7 +86,7 @@
In ERPNext it is easy to create a Profit and Loss analysis chart. An example
of a Profit and Loss analysis chart is given below:
-<img class="screenshot" alt="Financial Analytics Profit and Loss Statement" src="{{docs_base_url}}/assets/img/accounts/financial-analytics-pl.png">
+<img class="screenshot" alt="Financial Analytics Profit and Loss Statement" src="/docs/assets/img/accounts/financial-analytics-pl.png">
(On the first day of the year you have not made any profit or loss, but you
still have assets, hence balance sheet accounts never become zero at the
@@ -104,7 +106,7 @@
> Note: An Account “Ledger” is also sometimes called as Account “Head”.
-<img class="screenshot" alt="Chart of Accounts" src="{{docs_base_url}}/assets/img/accounts/chart-of-accounts-2.png">
+<img class="screenshot" alt="Chart of Accounts" src="/docs/assets/img/accounts/chart-of-accounts-2.png">
### Other Account Types
@@ -119,7 +121,7 @@
group under which you want to create the new Account. On the right side, you
will see an option to “Open” or “Add Child” a new Account.
-<img class="screenshot" alt="Chart of Accounts" src="{{docs_base_url}}/assets/img/accounts/chart-of-accounts-3.png">
+<img class="screenshot" alt="Chart of Accounts" src="/docs/assets/img/accounts/chart-of-accounts-3.png">
Option to create will only appear if you click on a Group (folder) type
Account.
diff --git a/erpnext/docs/user/manual/en/accounts/credit-limit.md b/erpnext/docs/user/manual/en/accounts/credit-limit.md
index 299e670..8f92f90 100644
--- a/erpnext/docs/user/manual/en/accounts/credit-limit.md
+++ b/erpnext/docs/user/manual/en/accounts/credit-limit.md
@@ -1,3 +1,5 @@
+# Credit Limit
+
A credit limit is the maximum amount of credit that a financial institution or
@@ -12,7 +14,7 @@
#### Figure 1: Credit Limit
-<img class="screenshot" alt="Credit Limit" src="{{docs_base_url}}/assets/img/accounts/credit-limit-1.png">
+<img class="screenshot" alt="Credit Limit" src="/docs/assets/img/accounts/credit-limit-1.png">
Go to the 'More Info section' and enter the amount in the field Credit Limit.
@@ -27,7 +29,7 @@
#### Figure 2: Credit Controller
-<img class="screenshot" alt="Credit Limit" src="{{docs_base_url}}/assets/img/accounts/credit-limit-2.png">
+<img class="screenshot" alt="Credit Limit" src="/docs/assets/img/accounts/credit-limit-2.png">
Save the changes.
diff --git a/erpnext/docs/user/manual/en/accounts/index.md b/erpnext/docs/user/manual/en/accounts/index.md
index 84c901d..d9e94c0 100644
--- a/erpnext/docs/user/manual/en/accounts/index.md
+++ b/erpnext/docs/user/manual/en/accounts/index.md
@@ -1,3 +1,5 @@
+# Accounts
+
At the end of sales and purchase cycle comes billing and payments. You may have
an accountant in your team, or you may be doing accounting yourself, or you may
have outsourced your accounting. In all the cases financial accounting forms the core of any business management system like an ERP.
diff --git a/erpnext/docs/user/manual/en/accounts/item-wise-taxation.md b/erpnext/docs/user/manual/en/accounts/item-wise-taxation.md
index 1750f41..a2aefc3 100644
--- a/erpnext/docs/user/manual/en/accounts/item-wise-taxation.md
+++ b/erpnext/docs/user/manual/en/accounts/item-wise-taxation.md
@@ -1,3 +1,5 @@
+# Item Wise Taxation
+
In the sales and purchase transactions, you can apply taxes and other charges on the items. For the ease of applying taxes, you can fetch values from the [Sales Taxes and Charges master](/contents//setting-up/setting-up-taxes). Taxes and charges are applied equally on all the items. For example, if tax GST 16% is added in the tax table, then it will be applied on all the items. However, if you need to have different tax rate applied on some of the items, following is how you should setup Items and Sales Taxes and Other Charges master in your ERPNext account.
Let's assume that we are creating a Sales Order. We have Sales Taxes and Charges master for GST 16%. Out of all the Sales Items, on one item, only 12% GST will be applied, while one more item is exempted from the tax.
@@ -10,17 +12,17 @@
Here is the example of Item on which 12% GST is applied only.
-<img class="screenshot" alt="Opening Account" src="{{docs_base_url}}/assets/img/accounts/item-wise-tax.png">
+<img class="screenshot" alt="Opening Account" src="/docs/assets/img/accounts/item-wise-tax.png">
For the item which is exempted from GST totally, mention 0% as tax rate in the Item master.
-<img class="screenshot" alt="Opening Account" src="{{docs_base_url}}/assets/img/accounts/exempted-item.png">
+<img class="screenshot" alt="Opening Account" src="/docs/assets/img/accounts/exempted-item.png">
####Step 2: Setup Taxes and Other Charges
In Sales Taxes and Other Charges master, select GST 16% account and mention Tax Rate as 16. This tax rate will be applied on all the Items selected in the Sales Order, unless specific Tax Rate is defined in the Item master.
-<img class="screenshot" alt="Opening Account" src="{{docs_base_url}}/assets/img/accounts/tax-master.png">
+<img class="screenshot" alt="Opening Account" src="/docs/assets/img/accounts/tax-master.png">
<div class="well">If you want to have tax rate always applied from the Item master, then you should update Rate for the tax account as zero in the Taxes and Charges master.</div>
@@ -28,7 +30,7 @@
In the Sales Order, we have selected many Items. For the items mentioned in blue, tax rate is applied based on tax rate mentioned in the taxes table. For the items highlited in red, tax rate has fetched for them from the respective item master.
-<img class="screenshot" alt="Opening Account" src="{{docs_base_url}}/assets/img/accounts/tax-calulation.png">
+<img class="screenshot" alt="Opening Account" src="/docs/assets/img/accounts/tax-calulation.png">
Please note that item's tax rate will be pulled from the item master only if you have update same tax account (GST 16% in this case) in both Item master and tax master.
diff --git a/erpnext/docs/user/manual/en/accounts/journal-entry.md b/erpnext/docs/user/manual/en/accounts/journal-entry.md
index 061bd62..ebfc9f5 100644
--- a/erpnext/docs/user/manual/en/accounts/journal-entry.md
+++ b/erpnext/docs/user/manual/en/accounts/journal-entry.md
@@ -1,3 +1,5 @@
+# Journal Entry
+
All types of accounting entries other than **Sales Invoice** and **Purchase
Invoice** are made using the **Journal Entry**. A **Journal Entry**
is a standard accounting transaction that affects
@@ -7,7 +9,7 @@
> Accounts > Documents > Journal Entry > New
-<img class="screenshot" alt="Journal Entry" src="{{docs_base_url}}/assets/img/accounts/journal-entry.png">
+<img class="screenshot" alt="Journal Entry" src="/docs/assets/img/accounts/journal-entry.png">
In a Journal Entry, you must select.
diff --git a/erpnext/docs/user/manual/en/accounts/managing-fixed-assets.md b/erpnext/docs/user/manual/en/accounts/managing-fixed-assets.md
index e82ec92..45bd227 100644
--- a/erpnext/docs/user/manual/en/accounts/managing-fixed-assets.md
+++ b/erpnext/docs/user/manual/en/accounts/managing-fixed-assets.md
@@ -1,10 +1,12 @@
+# Managing Fixed Assets
+
In ERPNext, you can maintain fixed asset records like Computers, Furnitures, Cars, etc. and manage depreciations, sale or disposal of those assets.
## Asset Category
Based on the type of assets, create Asset Category. For example, all your desktops and laptops can be part of an Asset Category named "Computers". Here you can set default depreciation method, periodicity and depreciation related accounts, which will be applicable to all the assets under the category.
-<img class="screenshot" alt="Asset Category" src="{{docs_base_url}}/assets/img/accounts/asset-category.png">
+<img class="screenshot" alt="Asset Category" src="/docs/assets/img/accounts/asset-category.png">
> **Note:** You can also set default depreciation related Accounts and Cost Centers in Company master.
@@ -12,13 +14,13 @@
Asset master is the heart of fixed asset management feature. All the transactions related to Asset like purchasing, sales, depreciation, scrapping will be managed from the Asset master.
-<img class="screenshot" alt="Asset" src="{{docs_base_url}}/assets/img/accounts/asset.png">
+<img class="screenshot" alt="Asset" src="/docs/assets/img/accounts/asset.png">
Explanation of the fields:
1. Item Code: An Item for the Asset must be a non-stock item, with "Is Asset" field checked.
- <img class="screenshot" alt="Asset Item" src="{{docs_base_url}}/assets/img/accounts/asset-item.png">
+ <img class="screenshot" alt="Asset Item" src="/docs/assets/img/accounts/asset-item.png">
2. Asset Category: The category of assets it belongs to.
3. Is Existing Asset: Check if the asset is being carried forward from the previous Fiscal Year. The existing assets which are partially / fully depreciated can also be created/maintained for the future reference.
@@ -40,24 +42,24 @@
The system automatically creates a schedule for depreciation based on depreciation method and other related inputs in the Asset record.
-<img class="screenshot" alt="Asset" src="{{docs_base_url}}/assets/img/accounts/depreciation-schedule.png">
+<img class="screenshot" alt="Asset" src="/docs/assets/img/accounts/depreciation-schedule.png">
On the scheduled date, system creates depreciation entry by creating a Journal Entry and the same Journal Entry is updated in the depreciation table for reference. Next Depreciation Date and Current Value are also updated on submission of depreciation entry.
-<img class="screenshot" alt="Asset" src="{{docs_base_url}}/assets/img/accounts/depreciation-entry.png">
+<img class="screenshot" alt="Asset" src="/docs/assets/img/accounts/depreciation-entry.png">
In the depreciation entry, the "Accumulated Depreciation Account" is credited and "Depreciation Expense Account" is debited. The related accounts can be set in the Asset Category or Company.
For better visibility, net value of the asset on different depreciation dates are shown in a line graph.
-<img class="screenshot" alt="Asset" src="{{docs_base_url}}/assets/img/accounts/asset-graph.png">
+<img class="screenshot" alt="Asset" src="/docs/assets/img/accounts/asset-graph.png">
## Purchase an Asset
For purchasing a new asset, create and submit the asset record with all the depreciation settings. Then create a Purchase Invoice via "Make Purchase Invoice" button. On clicking the button, system will load a new Purchase Invoice form with pre-loaded items table. It will also set proper fixed asset account (defined in the Asset Category) in the Expense Account field. You need to select Supplier and other necessary details and submit the Purchase Invoice.
-<img class="screenshot" alt="Asset" src="{{docs_base_url}}/assets/img/accounts/asset-purchase-invoice.png">
+<img class="screenshot" alt="Asset" src="/docs/assets/img/accounts/asset-purchase-invoice.png">
On submission of the invoice, the "Fixed Asset Account" will be debited and payable account will be credited. It also updates purchase date, supplier and Purchase Invoice no. in the Asset master.
@@ -71,23 +73,23 @@
- "Accumulated Depreciation Account" will be debited by the total depreciated amount till now.
- "Gain/Loss Account on Asset Disposal" will be credited/debited based on gain/loss amount. The Gain/Loss account can be set in Company record.
-<img class="screenshot" alt="Asset" src="{{docs_base_url}}/assets/img/accounts/asset-sales.png">
+<img class="screenshot" alt="Asset" src="/docs/assets/img/accounts/asset-sales.png">
## Scrap an Asset
You can scrap an asset anytime using the "Scrap Asset" button in the Asset record. The "Gain/Loss Account on Asset Disposal" mentioned in the Company is debited by the Current Value (After Depreciation) of the asset. After scrapping, you can also restore the asset using "Restore Asset" button.
-<img class="screenshot" alt="Asset" src="{{docs_base_url}}/assets/img/accounts/scrap-journal-entry.png">
+<img class="screenshot" alt="Asset" src="/docs/assets/img/accounts/scrap-journal-entry.png">
## Asset Movement
The movement of the assets (from one warehouse to another) is also tracked via Asset Movement form.
-<img class="screenshot" alt="Asset" src="{{docs_base_url}}/assets/img/accounts/asset-movement.png">
+<img class="screenshot" alt="Asset" src="/docs/assets/img/accounts/asset-movement.png">
There is also a dedicated button "Transfer Asset" inside the Asset form to track the Asset Movement.
-<img class="screenshot" alt="Asset" src="{{docs_base_url}}/assets/img/accounts/asset-movement-using-button.png">
+<img class="screenshot" alt="Asset" src="/docs/assets/img/accounts/asset-movement-using-button.png">
{next}
diff --git a/erpnext/docs/user/manual/en/accounts/multi-currency-accounting.md b/erpnext/docs/user/manual/en/accounts/multi-currency-accounting.md
index 4e44490..598aa0e 100644
--- a/erpnext/docs/user/manual/en/accounts/multi-currency-accounting.md
+++ b/erpnext/docs/user/manual/en/accounts/multi-currency-accounting.md
@@ -1,18 +1,20 @@
+# Multi Currency Accounting
+
In ERPNext, you can make accounting entries in multiple currency. For example, if you have a bank account in foreign currency, you can make transactions in that currency and system will show bank balance in that specific currency only.
## Setup
To get started with multi-currency accounting, you need to assign accounting currency in Account record. You can define Currency from Chart of Accounts while creating Account.
-<img class="screenshot" alt="Set Currency from Chart of Accounts" src="{{docs_base_url}}/assets/img/accounts/multi-currency/chart-of-accounts.png">
+<img class="screenshot" alt="Set Currency from Chart of Accounts" src="/docs/assets/img/accounts/multi-currency/chart-of-accounts.png">
You can also assign / modify the currency by opening specific Account record for existing Accounts.
-<img class="screenshot" alt="Modify Account Currency" src="{{docs_base_url}}/assets/img/accounts/multi-currency/account.png">
+<img class="screenshot" alt="Modify Account Currency" src="/docs/assets/img/accounts/multi-currency/account.png">
For Customer / Supplier (Party), you can also define it's billing currency in the Party record. If the Party's accounting currency is different from Company Currency, you should mention Default Receivable / Payable Account in that currency.
-<img class="screenshot" alt="Customer Accounting Currency" src="{{docs_base_url}}/assets/img/accounts/multi-currency/customer.png">
+<img class="screenshot" alt="Customer Accounting Currency" src="/docs/assets/img/accounts/multi-currency/customer.png">
Once you defined Currency in the Account and selected relevant accounts in the Party record , you are ready to make transactions against them. If Party account currency is different from Company Currency, system will restrict to make transaction for that party with that currency only. If account currency is same as Company Currency, you can make transactions for that Party in any currency. But accounting entries (GL Entries) will always be in Party Account Currency.
@@ -31,7 +33,7 @@
Outstanding Amount and Advance Amount will always be calculated and shown in Customer's Account Currency.
-<img class="screenshot" alt="Sales Invoice Outstanding" src="{{docs_base_url}}/assets/img/accounts/multi-currency/sales-invoice.png">
+<img class="screenshot" alt="Sales Invoice Outstanding" src="/docs/assets/img/accounts/multi-currency/sales-invoice.png">
### Purchase Invoice
@@ -41,12 +43,12 @@
In Journal Entry, you can make transactions in different currencies. There is a checkbox "Multi Currency", to enable multi-currency entries. If "Multi Currency" option selected, you will be able to select accounts with different currencies.
-<img class="screenshot" alt="Journal Entry Exchange Rate" src="{{docs_base_url}}/assets/img/accounts/multi-currency/journal-entry-multi-currency.png">
+<img class="screenshot" alt="Journal Entry Exchange Rate" src="/docs/assets/img/accounts/multi-currency/journal-entry-multi-currency.png">
In Accounts table, on selection of foreign currency account, system will show Currency section and fetch Account Currency and Exchange Rate automatically. You can change / modify the Exchange Rate later manually. Debit / Credit amount should be entered in Account Currency, system will calculate and show the Debit / Credit amount in Company Currency automatically.
-<img class="screenshot" alt="Journal Entry in multi currency" src="{{docs_base_url}}/assets/img/accounts/multi-currency/journal-entry-row.png">
+<img class="screenshot" alt="Journal Entry in multi currency" src="/docs/assets/img/accounts/multi-currency/journal-entry-row.png">
#### Example 1: Payment Entry Against Customer With Alternate Currency
@@ -54,7 +56,7 @@
Exchange Rate in the payment entry should always be same as invoice (60), even if exchange rate on the payment date is 62. The bank account will be credited by the amount considering exchange rate as 62. Hence, Exchnage Gain / Loss will be booked based on exchange rate difference.
-<img class="screenshot" alt="Payment Entry" src="{{docs_base_url}}/assets/img/accounts/multi-currency/payment-entry.png">
+<img class="screenshot" alt="Payment Entry" src="/docs/assets/img/accounts/multi-currency/payment-entry.png">
#### Example 2: Inter-bank Transfer (USD -> INR)
@@ -100,7 +102,7 @@
Suppose, Exchange Rate on the payment date is 62 and Bank Transfer Entry will be look like below:
-<img class="screenshot" alt="Inter Bank Transfer" src="{{docs_base_url}}/assets/img/accounts/multi-currency/bank-transfer.png">
+<img class="screenshot" alt="Inter Bank Transfer" src="/docs/assets/img/accounts/multi-currency/bank-transfer.png">
## Reports
@@ -109,12 +111,12 @@
In General Ledger, system shows debit / credit amount in both currency if filtered by an Account and Account Currency is different from Company Currency.
-<img class="screenshot" alt="General Ledger Report" src="{{docs_base_url}}/assets/img/accounts/multi-currency/general-ledger.png">
+<img class="screenshot" alt="General Ledger Report" src="/docs/assets/img/accounts/multi-currency/general-ledger.png">
### Accounts Receivable / Payable
In Accounts Receivable / Payable report, system shows all the amounts in Party / Account Currency.
-<img class="screenshot" alt="Accounts Receivable Report" src="{{docs_base_url}}/assets/img/accounts/multi-currency/accounts-receivable.png">
+<img class="screenshot" alt="Accounts Receivable Report" src="/docs/assets/img/accounts/multi-currency/accounts-receivable.png">
{next}
diff --git a/erpnext/docs/user/manual/en/accounts/opening-accounts.md b/erpnext/docs/user/manual/en/accounts/opening-accounts.md
index 11e4acb..1ad9090 100644
--- a/erpnext/docs/user/manual/en/accounts/opening-accounts.md
+++ b/erpnext/docs/user/manual/en/accounts/opening-accounts.md
@@ -1,3 +1,5 @@
+# Opening Accounts
+
#Updating Opening Balance in Accounts
If you are a new company you can start using ERPNext accounting module by going to chart of accounts. However, if you are migrating from a legacy accounting system like Tally or a Fox Pro based software
@@ -8,7 +10,7 @@
* List of outstanding sales and purchase invoices (Payables and Receivables).
-If you were using another accounting software before, firstly you should close financial statements in that software. The closing balance of the accounts should be updated as an opening balance in the ERPNext. Before starting to update opening balance, ensure that your [Chart of Accounts]({{docs_base_url}}/user/manual/en/accounts/chart-of-accounts.html) has all the Accounts required.
+If you were using another accounting software before, firstly you should close financial statements in that software. The closing balance of the accounts should be updated as an opening balance in the ERPNext. Before starting to update opening balance, ensure that your [Chart of Accounts](/docs/user/manual/en/accounts/chart-of-accounts.html) has all the Accounts required.
> Opening entry is only for Balance Sheet accounts and not for the Accounts in the Profit and Loss statement.
@@ -28,7 +30,7 @@
If Entry Type is selected as Opening Entry, all the Balance Sheet Accounts will be auto-fetched in the Journal Entry.
-<img class="screenshot" alt="Opening Account" src="{{docs_base_url}}/assets/img/accounts/opening-account-1.png">
+<img class="screenshot" alt="Opening Account" src="/docs/assets/img/accounts/opening-account-1.png">
####Step 3: Posting Date
@@ -38,13 +40,13 @@
For each Account, enter opening value in the Debit or Credit column. As per the double entry valuation system, Total Debit value in a entry must be equal to Total Credit value.
-<img class="screenshot" alt="Opening Account" src="{{docs_base_url}}/assets/img/accounts/opening-6.png">
+<img class="screenshot" alt="Opening Account" src="/docs/assets/img/accounts/opening-6.png">
####Step 5: Is Opening
Set field `Is Opening` as `Yes`.
-<img class="screenshot" alt="Opening Account" src="{{docs_base_url}}/assets/img/accounts/opening-3.png">
+<img class="screenshot" alt="Opening Account" src="/docs/assets/img/accounts/opening-3.png">
####Step 6: Save and Submit
@@ -56,13 +58,13 @@
If you are updating account opening balance in few accounts at a time, you can use **Temporary Opening** account for balancing purpose. In the standard chart of accounts, a Temporary Opening Account is auto-created under Assets.
-<img class="screenshot" alt="Opening Account" src="{{docs_base_url}}/assets/img/accounts/opening-7.png">
+<img class="screenshot" alt="Opening Account" src="/docs/assets/img/accounts/opening-7.png">
In the Journal Entry, manually select an Account for which opening balance is to be updated. For each Account, enter opening balance value in the Debit or Credit column, based on it's Account Type (Asset or Liability).
For example, if you want to update balance in bank accounts, create Journal Entry as following.
-<img class="screenshot" alt="Opening Account" src="{{docs_base_url}}/assets/img/accounts/opening-2.png">
+<img class="screenshot" alt="Opening Account" src="/docs/assets/img/accounts/opening-2.png">
Once all your invoices are entered, your **Temporary Opening** account will have a balance of zero!
@@ -70,7 +72,7 @@
After completing the accounting entries, the trial balance report will look like the one given below:
-<img class="screenshot" alt="Opening Account" src="{{docs_base_url}}/assets/img/accounts/opening-4.png">
+<img class="screenshot" alt="Opening Account" src="/docs/assets/img/accounts/opening-4.png">
###Stock Opening
@@ -78,13 +80,13 @@
`Chart of Accounts > Assets > Current Asset > StocK Assets > (Warehouse Account)`
-<img class="screenshot" alt="Opening Account" src="{{docs_base_url}}/assets/img/accounts/opening-5.png">
+<img class="screenshot" alt="Opening Account" src="/docs/assets/img/accounts/opening-5.png">
-To update stock opening balance, create [Stock Reconciliation entry]({{docs_base_url}}/user/manual/en/stock/opening-stock.html). Based on the valuation of items's update in the Warehouse, balance will be updated in the Warehouse account.
+To update stock opening balance, create [Stock Reconciliation entry](/docs/user/manual/en/stock/opening-stock.html). Based on the valuation of items's update in the Warehouse, balance will be updated in the Warehouse account.
###Fixed Asset Opening
-Opening balance for the fixed asset account should be updated via Journal Entry. Assets which are not fully depreciated should be added in the [Asset master]({{docs_base_url}}/user/manual/en/accounts/managing-fixed-assets.html). For adding Assets in your possession, ensure to check **Is Existing Asset** field.
+Opening balance for the fixed asset account should be updated via Journal Entry. Assets which are not fully depreciated should be added in the [Asset master](/docs/user/manual/en/accounts/managing-fixed-assets.html). For adding Assets in your possession, ensure to check **Is Existing Asset** field.
### Outstanding Invoices
diff --git a/erpnext/docs/user/manual/en/accounts/payment-entry.md b/erpnext/docs/user/manual/en/accounts/payment-entry.md
index 62dd9b4..ae82eb2 100644
--- a/erpnext/docs/user/manual/en/accounts/payment-entry.md
+++ b/erpnext/docs/user/manual/en/accounts/payment-entry.md
@@ -1,33 +1,36 @@
+# Payment Entry
+
Payment Entry can be made against following transactions.
1. Sales Invoice.
2. Purchase Invoice.
3. Sales Order (Advance Payment)
4. Purchase Order (Advance Payment)
+ 5. Expense Claim
####Step 1: Make Payment
On submitting a document against which Payment Entry can be made, you will find Make Payment button.
-<img class="screenshot" alt="Making Payment" src="{{docs_base_url}}/assets/img/accounts/payment-entry-1.png">
+<img class="screenshot" alt="Making Payment" src="/docs/assets/img/accounts/payment-entry-1.png">
####Step 2: Mode of Payment
In the Payment Entry, select Mode of Payment (eg: Bank, Cash, Wire Transfer). In the Mode of Payment master, default Account can be set. This default payment Account will fetch into Payment Entry.
-<img class="screenshot" alt="Making Paymentt" src="{{docs_base_url}}/assets/img/accounts/payment-entry-2.gif">
+<img class="screenshot" alt="Making Paymentt" src="/docs/assets/img/accounts/payment-entry-2.gif">
####Step 3: Payment Amount
-Enter actual payment amount received from the Customer or paid to the Supplier.
+Enter actual payment amount received from the Customer or paid to the Supplier or Employee.
-<img class="screenshot" alt="Making Payment" src="{{docs_base_url}}/assets/img/accounts/payment-entry-3.png">
+<img class="screenshot" alt="Making Payment" src="/docs/assets/img/accounts/payment-entry-3.png">
####Step 4: Allocate Amount
If creating Payment Entry for the Customer, Payment Amount will be allocated against Sales Invoice.
-<img class="screenshot" alt="Making Payment" src="{{docs_base_url}}/assets/img/accounts/payment-entry-4.gif">
+<img class="screenshot" alt="Making Payment" src="/docs/assets/img/accounts/payment-entry-4.gif">
On the same lines, when creating Payment Entry for a Supplier, Payment Amount will be allocated against Purchase Invoice.
@@ -37,13 +40,13 @@
When making payment entry, there could be some difference in the actual payment amount and the invoice outstanding. This difference could be due to rounding error, or change in the currency exchange rate. You can set an Account here where this difference amount will be booked.
-<img class="screenshot" alt="Making Payment" src="{{docs_base_url}}/assets/img/accounts/payment-entry-5.gif">
+<img class="screenshot" alt="Making Payment" src="/docs/assets/img/accounts/payment-entry-5.gif">
####Step 6: Submit
Save and Submit Payment Entry. On submission, outstanding will be updated in the Invoices.
-<img class="screenshot" alt="Making Payment" src="{{docs_base_url}}/assets/img/accounts/payment-entry-8.png">
+<img class="screenshot" alt="Making Payment" src="/docs/assets/img/accounts/payment-entry-8.png">
If payment entry was created against Sales Order or Purchase Order, field Advance Paid will be updated in them. when creating Payment invoice against those transactions, Payment Entry will auto-update in that Invoice, so that you can allocate invoice amount against advance payment entry.
@@ -59,13 +62,13 @@
###Multi Currency Payment Entry
-ERPNext allows you maintain accounts and invoicing in the [multiple currency]({{docs_base_url}}/user/manual/en/accounts/multi-currency-accounting.html). If invoice is made in the party currency, Currency Exchange Rate between companies base currency and party currency is also entered in the invoice. When creating Payment Entry against that invoice, you will again have to mention the Currency Exchange Rate at the time of payment.
+ERPNext allows you maintain accounts and invoicing in the [multiple currency](/docs/user/manual/en/accounts/multi-currency-accounting.html). If invoice is made in the party currency, Currency Exchange Rate between companies base currency and party currency is also entered in the invoice. When creating Payment Entry against that invoice, you will again have to mention the Currency Exchange Rate at the time of payment.
-<img class="screenshot" alt="Making Payment" src="{{docs_base_url}}/assets/img/accounts/payment-entry-6.png">
+<img class="screenshot" alt="Making Payment" src="/docs/assets/img/accounts/payment-entry-6.png">
Since Currency Exchange Rate is fluctuating all the time, it can lead to difference in the payment amount against invoice total. This difference amount can be booked in the Currency Exchange Gain/Loss Amount.
-<img class="screenshot" alt="Making Payment" src="{{docs_base_url}}/assets/img/accounts/payment-entry-7.png">
+<img class="screenshot" alt="Making Payment" src="/docs/assets/img/accounts/payment-entry-7.png">
Payments can also be made independent of invoices by creating a new Payment Entry.
@@ -78,7 +81,7 @@
3. Cash - Cash
4. Bank - Bank
-<img class="screenshot" alt="Making Payment" src="{{docs_base_url}}/assets/img/accounts/payment-entry-9.png">
+<img class="screenshot" alt="Making Payment" src="/docs/assets/img/accounts/payment-entry-9.png">
###Difference between Payment Entry and Journal Entry?
@@ -88,7 +91,7 @@
- Updating opening balance in an Accounts.
- Fixed Asset Depreciation entry.
- For adjusting Credit Note against Sales Invoice and Debit Note against Purchase Invoice, incase there is no payment happening at all.
-
+ 4. Payment Entries are used if a cheque is printed.
* * *
## Managing Outstanding Payments
diff --git a/erpnext/docs/user/manual/en/accounts/payment-request.md b/erpnext/docs/user/manual/en/accounts/payment-request.md
index 30f5b1b..7ee397e 100644
--- a/erpnext/docs/user/manual/en/accounts/payment-request.md
+++ b/erpnext/docs/user/manual/en/accounts/payment-request.md
@@ -1,10 +1,12 @@
+# Payment Request
+
Payment Request is sent via Email and will contain a link to a Payment Gateway if setup. You can create payment request via Sales Order or Sales Invoice.
- Create Payment Request via Sales Order
-<img class="screenshot" alt="Payment Request" src="{{docs_base_url}}/assets/img/accounts/pr-from-so.png">
+<img class="screenshot" alt="Payment Request" src="/docs/assets/img/accounts/pr-from-so.png">
- Create payment Request via Sales Invoice
-<img class="screenshot" alt="Payment Request" src="{{docs_base_url}}/assets/img/accounts/pr-from-si.png">
+<img class="screenshot" alt="Payment Request" src="/docs/assets/img/accounts/pr-from-si.png">
---
@@ -13,16 +15,16 @@
Note: Invoice/Order currency and Payment Gateway Account currency should be same.
-<img class="screenshot" alt="Payment Request" src="{{docs_base_url}}/assets/img/accounts/pr-details-1.png">
+<img class="screenshot" alt="Payment Request" src="/docs/assets/img/accounts/pr-details-1.png">
---
##### Notify Customer
You can notify customer from Payment Request with print format. If customer contact email is mentioned, it will automatically fetch email. If not so you can set Email Address on Payment Request.
-<img class="screenshot" alt="Payment Request" src="{{docs_base_url}}/assets/img/accounts/pr-details-2.png">
+<img class="screenshot" alt="Payment Request" src="/docs/assets/img/accounts/pr-details-2.png">
##### Request Mail
-<img class="screenshot" alt="Payment Request" src="{{docs_base_url}}/assets/img/accounts/pr-email.png">
+<img class="screenshot" alt="Payment Request" src="/docs/assets/img/accounts/pr-email.png">
{next}
diff --git a/erpnext/docs/user/manual/en/accounts/payments.md b/erpnext/docs/user/manual/en/accounts/payments.md
index 74da054..e2d8ade 100644
--- a/erpnext/docs/user/manual/en/accounts/payments.md
+++ b/erpnext/docs/user/manual/en/accounts/payments.md
@@ -1,3 +1,5 @@
+# Payments
+
Payment can be made against following transactions.
1. Sales Invoice.
@@ -16,13 +18,13 @@
On submitting a document against which Payment Entry can be made, you will find Make Payment button.
-<img class="screenshot" alt="Making Payment" src="{{docs_base_url}}/assets/img/accounts/payment-entry-1.png">
+<img class="screenshot" alt="Making Payment" src="/docs/assets/img/accounts/payment-entry-1.png">
####Step 2: Payment Entry
-<img class="screenshot" alt="Making Payment" src="{{docs_base_url}}/assets/img/accounts/payment-entry-9.png">
+<img class="screenshot" alt="Making Payment" src="/docs/assets/img/accounts/payment-entry-9.png">
-For more details about payment entry [check here.]({{docs_base_url}}/user/manual/en/accounts/payment-entry)
+For more details about payment entry [check here.](/docs/user/manual/en/accounts/payment-entry)
## Journal Entry
@@ -32,19 +34,19 @@
Goto Accounts Settings > checked Make Payment via Journal Entry
-<img class="screenshot" alt="Making Payment" src="{{docs_base_url}}/assets/img/accounts/account-settings.png">
+<img class="screenshot" alt="Making Payment" src="/docs/assets/img/accounts/account-settings.png">
####Step 2: Make Payment
On submitting a document against which Journal Entry can be made, you will find Make Payment button.
-<img class="screenshot" alt="Making Payment" src="{{docs_base_url}}/assets/img/accounts/payment-entry-1.png">
+<img class="screenshot" alt="Making Payment" src="/docs/assets/img/accounts/payment-entry-1.png">
####Step 3: Journal Entry
Save and submit the journal entry to record the payament against the invoice
-<img class="screenshot" alt="Making Payment" src="{{docs_base_url}}/assets/img/accounts/journal-entry.png">
+<img class="screenshot" alt="Making Payment" src="/docs/assets/img/accounts/journal-entry.png">
-For more details about journal entry [check here.]({{docs_base_url}}/user/manual/en/accounts/journal-entry)
+For more details about journal entry [check here.](/docs/user/manual/en/accounts/journal-entry)
{next}
diff --git a/erpnext/docs/user/manual/en/accounts/point-of-sale-pos-invoice.md b/erpnext/docs/user/manual/en/accounts/point-of-sale-pos-invoice.md
index 78d2226..7458f0d 100644
--- a/erpnext/docs/user/manual/en/accounts/point-of-sale-pos-invoice.md
+++ b/erpnext/docs/user/manual/en/accounts/point-of-sale-pos-invoice.md
@@ -15,7 +15,7 @@
In ERPNext all Sales and Purchase transactions, like Sales Invoice, Quotation, Sales Order, Purchase Order etc. can be edited via the POS. There two steps to Setup POS:
1. Enable POS View via (Setup > Customize > Feature Setup)
-2. Create a [POS Setting]({{docs_base_url}}/user/manual/en/setting-up/pos-setting.html) record
+2. Create a [POS Profile](/docs/user/manual/en/setting-up/pos-setting.html) record
#### Different sections of the POS
@@ -29,7 +29,7 @@
In POS, user can select the existing customer during making an order or create the new customer. This features works in the offline mode also. User can also add the customer details like contact number, address details etc on the form. The customer which has been created from the POS will be synced when the internet connection is active.
-<img class="screenshot" alt="POS Customer" src="{{docs_base_url}}/assets/img/accounts/pos-customer.png">
+<img class="screenshot" alt="POS Customer" src="/docs/assets/img/accounts/pos-customer.png">
### Adding an Item
@@ -39,7 +39,7 @@
**Barcode / Serial No** \- A Barcode / Serial No is an optical machine-readable representation of data relating to the object to which it is attached. Enter Barcode / Serial No in the box as shown in the image below and pause for a second, the item will be automatically added to the cart.
-<img class="screenshot" alt="POS Item" src="{{docs_base_url}}/assets/img/accounts/pos-item.png">
+<img class="screenshot" alt="POS Item" src="/docs/assets/img/accounts/pos-item.png">
> Tip: To change the quantity of an Item, enter your desired quantity in the
quantity box. These are mostly used if the same Item is purchased in bulk.
@@ -51,7 +51,7 @@
1. Select row in the cart and clik on delete button in the numeric keypad
-<img class="screenshot" alt="POS Item" src="{{docs_base_url}}/assets/img/accounts/pos_deleted_item.gif">
+<img class="screenshot" alt="POS Item" src="/docs/assets/img/accounts/pos_deleted_item.gif">
2. Set Qty as zero to remove Item from the POS invoice. There are two ways to remove an Item.
@@ -69,7 +69,7 @@
2. Select your “Mode of Payment”.
3. Click on “Pay” button to Save the document.
-<img class="screenshot" alt="POS Payment" src="{{docs_base_url}}/assets/img/accounts/pos-payment.png">
+<img class="screenshot" alt="POS Payment" src="/docs/assets/img/accounts/pos-payment.png">
Submit the document to finalise the record. After the document is submitted,
you can either print or email it directly to the customer.
@@ -78,7 +78,7 @@
Outstanding amount can be write off from the POS, user has to enter the amount under write off field on the payment screen.
-<img class="screenshot" alt="POS Payment" src="{{docs_base_url}}/assets/img/accounts/write-off.png">
+<img class="screenshot" alt="POS Payment" src="/docs/assets/img/accounts/write-off.png">
System books the write off amount into the ledger which has selected on the POS Profile.
@@ -86,12 +86,12 @@
POS calculate the extra amount paid by the customer, which user can return from the cash account. User has to set the account for the change amount on the POS profile.
-<img class="screenshot" alt="POS Payment" src="{{docs_base_url}}/assets/img/accounts/change-amount.png">
+<img class="screenshot" alt="POS Payment" src="/docs/assets/img/accounts/change-amount.png">
### Offline Records
All the records from the POS stores into the browser's local storegae and sync submitted records after every minute of the interval if system is connected to internet. User can view the offline records by clicking on Menu > View Offline Records
-<img class="screenshot" alt="POS Payment" src="{{docs_base_url}}/assets/img/accounts/offline-records.png">
+<img class="screenshot" alt="POS Payment" src="/docs/assets/img/accounts/offline-records.png">
#### Accounting entries (GL Entry) for a Point of Sale:
@@ -112,7 +112,7 @@
### Email
User can send email from the POS, after submission of an order, user has to click on menu > email
-<img class="screenshot" alt="POS Payment" src="{{docs_base_url}}/assets/img/accounts/pos-email.png">
+<img class="screenshot" alt="POS Payment" src="/docs/assets/img/accounts/pos-email.png">
After sync of an order, email sent to the customer with the print of the bill in the attachment
{next}
diff --git a/erpnext/docs/user/manual/en/accounts/pricing-rule.md b/erpnext/docs/user/manual/en/accounts/pricing-rule.md
index bd3c51a..c2a273a 100644
--- a/erpnext/docs/user/manual/en/accounts/pricing-rule.md
+++ b/erpnext/docs/user/manual/en/accounts/pricing-rule.md
@@ -1,3 +1,5 @@
+# Pricing Rule
+
#Pricing Rule
Pricing Rule is a master where you can define rules based on which discount is applied to specific Customer or Supplier.
@@ -25,7 +27,7 @@
####1.1 Applicable On:
-<img alt="Applicable On" class="screenshot" src="{{docs_base_url}}/assets/img/articles/pricing-rule-on.png">
+<img alt="Applicable On" class="screenshot" src="/docs/assets/img/articles/pricing-rule-on.png">
If you want Pricing Rule to be applied on all the items, select based on Item Group. For value, select **All Item Group** (parent Item Group).
@@ -33,31 +35,31 @@
Applicability option will updated based on our selection for Selling or Buying or both. You can set applicability on one of the following master.
-<img alt="Applicable for" class="screenshot" src="{{docs_base_url}}/assets/img/articles/pricing-rule-for.png">
+<img alt="Applicable for" class="screenshot" src="/docs/assets/img/articles/pricing-rule-for.png">
####1.3 Quantity:
Specify minimum and maximum qty of an item when this Pricing Rule should be applicable.
-<img alt="Applicable Qty" class="screenshot" src="{{docs_base_url}}/assets/img/articles/pricing-rule-qty.png">
+<img alt="Applicable Qty" class="screenshot" src="/docs/assets/img/articles/pricing-rule-qty.png">
###2. Application:
Using Price List Rule, you can ultimately define price or %discount to be applied on an item.
-<img alt="Applicable" class="screenshot" src="{{docs_base_url}}/assets/img/articles/pricing-rule-application.png">
+<img alt="Applicable" class="screenshot" src="/docs/assets/img/articles/pricing-rule-application.png">
####2.1 Price
Price or Discount specified in the Pricing Rule will be applied only if above applicability rules are matched with values in the transaction. Price mentioned in Pricing Rule will be given priority over item's Price List rate.
-<img alt="Applicable Price" class="screenshot" src="{{docs_base_url}}/assets/img/articles/pricing-rule-price.png">
+<img alt="Applicable Price" class="screenshot" src="/docs/assets/img/articles/pricing-rule-price.png">
#### 2.2 Discount Percentage
Discount Percentage can be applied for a specific Price List. To have it applied for all the Price List, %Discount field should be left blank.
-<img alt="Discount" class="screenshot" src="{{docs_base_url}}/assets/img/articles/pricing-rule-discount.png">
+<img alt="Discount" class="screenshot" src="/docs/assets/img/articles/pricing-rule-discount.png">
If %Discount is to be applied on all Price Lists, then leave Price List field blank.
@@ -65,19 +67,19 @@
Enter From and To date between which this Pricing Rule will be applicable. This will be useful if creating Pricing Rule for sales promotion exercise available for certain days.
-<img alt="Validity" class="screenshot" src="{{docs_base_url}}/assets/img/articles/pricing-rule-validity.png">
+<img alt="Validity" class="screenshot" src="/docs/assets/img/articles/pricing-rule-validity.png">
#### Priority
If two or more Pricing Rules are found based on same conditions, Priority is applied. Priority is a number between 0 to 20 while default value is zero (blank). Higher number means it will take precedence if there are multiple Pricing Rules with same conditions.
-<img alt="Priority" class="screenshot" src="{{docs_base_url}}/assets/img/articles/pricing-rule-priority.png">
+<img alt="Priority" class="screenshot" src="/docs/assets/img/articles/pricing-rule-priority.png">
#### Disable
Check to Disable Pricing Rule.
-<img alt="Disable" class="screenshot" src="{{docs_base_url}}/assets/img/articles/pricing-rule-disable.png">
+<img alt="Disable" class="screenshot" src="/docs/assets/img/articles/pricing-rule-disable.png">
### Add Margin
@@ -89,21 +91,21 @@
Create price list for supllier and create item price against the price list.
-<img alt="Disable" class="screenshot" src="{{docs_base_url}}/assets/img/articles/price-list.png">
+<img alt="Disable" class="screenshot" src="/docs/assets/img/articles/price-list.png">
####2. Make Pricing Rule
Create pricing rule for the item against which supplier rate has created
-<img alt="Disable" class="screenshot" src="{{docs_base_url}}/assets/img/articles/pricing-rule-margin.png">
+<img alt="Disable" class="screenshot" src="/docs/assets/img/articles/pricing-rule-margin.png">
####2. Make Invoice
System apply the margin rate on the item price on selection of an item.
-<img alt="Disable" class="screenshot" src="{{docs_base_url}}/assets/img/articles/pricing-rule-invoice.png">
+<img alt="Disable" class="screenshot" src="/docs/assets/img/articles/pricing-rule-invoice.png">
-For more details about pricing rule [Click Here]({{docs_base_url}}/user/manual/en/selling/articles/adding-margin.html)
+For more details about pricing rule [Click Here](/docs/user/manual/en/selling/articles/adding-margin.html)
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/accounts/purchase-invoice.md b/erpnext/docs/user/manual/en/accounts/purchase-invoice.md
index 3ffd930..c6b2050 100644
--- a/erpnext/docs/user/manual/en/accounts/purchase-invoice.md
+++ b/erpnext/docs/user/manual/en/accounts/purchase-invoice.md
@@ -1,3 +1,5 @@
+# Purchase Invoice
+
Purchase Invoice is the exact opposite of your Sales Invoice. It is the bill
that your Supplier sends you for products or services delivered. Here you
accrue expenses to your Supplier. Making a Purchase Invoice is very similar to
@@ -12,7 +14,7 @@
You can also create a Purchase Invoice from:
> Accounts > Billing > Purchase Invoice > New Purchase Invoice
-<img class="screenshot" alt="Purchase Invoice" src="{{docs_base_url}}/assets/img/accounts/purchase-invoice.png">
+<img class="screenshot" alt="Purchase Invoice" src="/docs/assets/img/accounts/purchase-invoice.png">
The concept of “Posting Date” is again same as Sales Invoice. “Bill No” and
“Bill Date” helps to track the bill number as set by your Supplier for
diff --git a/erpnext/docs/user/manual/en/accounts/recurring-orders-and-invoices.md b/erpnext/docs/user/manual/en/accounts/recurring-orders-and-invoices.md
index 713fb60..067b633 100644
--- a/erpnext/docs/user/manual/en/accounts/recurring-orders-and-invoices.md
+++ b/erpnext/docs/user/manual/en/accounts/recurring-orders-and-invoices.md
@@ -1,3 +1,5 @@
+# Recurring Orders And Invoices
+
#Recurring Orders and Invoices
If you have a contract with a **Customer** where you bill the Customer on a monthly, quarterly, half-yearly or annual basis, you should use recurring feature in orders and invoices.
@@ -10,7 +12,7 @@
Option to set document as recurring will be visible only after submission. Recurring is last section in document. Check **Is Recurring** to set document as recurring.
-<img alt="Recurring Invoice" class="screenshot" src="{{docs_base_url}}/assets/img/accounts/recurring.gif">
+<img alt="Recurring Invoice" class="screenshot" src="/docs/assets/img/accounts/recurring.gif">
**From Date and To Date:** This defines contract period with the customer.
diff --git a/erpnext/docs/user/manual/en/accounts/sales-invoice.md b/erpnext/docs/user/manual/en/accounts/sales-invoice.md
index aa7f3a6..f4c4143 100644
--- a/erpnext/docs/user/manual/en/accounts/sales-invoice.md
+++ b/erpnext/docs/user/manual/en/accounts/sales-invoice.md
@@ -1,3 +1,5 @@
+# Sales Invoice
+
A Sales Invoice is a bill that you send to your customers, against which the customer processes the payment. Sales Invoice is an accounting transaction. On submission of Sales Invoice, the system updates the receivable and books income against a Customer Account.
You can create a Sales Invoice directly from
@@ -6,7 +8,7 @@
or you can Make a new Sales Invoice after you submit the Delivery Note.
-<img class="screenshot" alt="Sales Invoice" src="{{docs_base_url}}/assets/img/accounts/sales-invoice.png">
+<img class="screenshot" alt="Sales Invoice" src="/docs/assets/img/accounts/sales-invoice.png">
#### Accounting Impact
@@ -62,7 +64,7 @@
Also, if you check the **Update Stock** the stock will also update automatically,
without the need of a Delivery Note.
-<img class="screenshot" alt="POS Invoice" src="{{docs_base_url}}/assets/img/accounts/pos-sales-invoice.png">
+<img class="screenshot" alt="POS Invoice" src="/docs/assets/img/accounts/pos-sales-invoice.png">
#### Billing Timesheet with Project
@@ -71,7 +73,7 @@
Sales Invoice, select the Project for which the billing is to be made, and the
corresponding Timesheet entries for that Project will be fetched.
-<img class="screenshot" alt="POS Invoice" src="{{docs_base_url}}/assets/img/accounts/billing-timesheet-sales-invoice.png">
+<img class="screenshot" alt="POS Invoice" src="/docs/assets/img/accounts/billing-timesheet-sales-invoice.png">
* * *
@@ -88,5 +90,5 @@
Customer wants an “Invoice”, you could give the Customer a Quotation (in
ERPNext) titled as “Pro Forma Invoice”. This way everyone is happy.
-This is a fairly common practice. We follow this at Frappe too.
+This is a fairly common practice. We follow this at Frappé too.
{next}
diff --git a/erpnext/docs/user/manual/en/accounts/setup/accounts-settings.md b/erpnext/docs/user/manual/en/accounts/setup/accounts-settings.md
index 3b7a686..3bada56 100644
--- a/erpnext/docs/user/manual/en/accounts/setup/accounts-settings.md
+++ b/erpnext/docs/user/manual/en/accounts/setup/accounts-settings.md
@@ -1,5 +1,7 @@
+# Accounts Settings
-<img class="screenshot" alt="Account Settings" src="{{docs_base_url}}/assets/img/accounts/account-settings.png">
+
+<img class="screenshot" alt="Account Settings" src="/docs/assets/img/accounts/account-settings.png">
* Accounts Frozen Upto: Freeze accounting transactions upto specified date, nobody can make / modify entry except specified role.
diff --git a/erpnext/docs/user/manual/en/accounts/setup/cost-center.md b/erpnext/docs/user/manual/en/accounts/setup/cost-center.md
index 5ed3802..0eabce7 100644
--- a/erpnext/docs/user/manual/en/accounts/setup/cost-center.md
+++ b/erpnext/docs/user/manual/en/accounts/setup/cost-center.md
@@ -1,3 +1,5 @@
+# Cost Center
+
Your Chart of Accounts is mainly designed to provide reports to the government
and tax authorities. Most businesses have multiple activities like different
product lines, market segments, areas of business, etc that share some common
@@ -32,6 +34,6 @@
> Accounts > Setup > Chart of Cost Centers
-<img class="screenshot" alt="Cost Center" src="{{docs_base_url}}/assets/img/chart-of-cost-center.png">
+<img class="screenshot" alt="Cost Center" src="/docs/assets/img/chart-of-cost-center.png">
{next}
diff --git a/erpnext/docs/user/manual/en/accounts/setup/fiscal-year.md b/erpnext/docs/user/manual/en/accounts/setup/fiscal-year.md
index 4a1195a..a211ee3 100644
--- a/erpnext/docs/user/manual/en/accounts/setup/fiscal-year.md
+++ b/erpnext/docs/user/manual/en/accounts/setup/fiscal-year.md
@@ -1,3 +1,5 @@
+# Fiscal Year
+
A fiscal year is also known as a financial year or a budget year. It is used
for calculating financial statements in businesses and other organisations.
The fiscal year may or may not be the same as a calendar year. For tax
@@ -23,6 +25,6 @@
In case you have multiple companies sharing the same Fiscal Year, you can add
it into the grid as shown below.
-<img class="screenshot" alt="Fiscal Year" src="{{docs_base_url}}/assets/img/accounts/fiscal-year.png">
+<img class="screenshot" alt="Fiscal Year" src="/docs/assets/img/accounts/fiscal-year.png">
{next}
diff --git a/erpnext/docs/user/manual/en/accounts/setup/index.md b/erpnext/docs/user/manual/en/accounts/setup/index.md
index 7b45044..c328cc0 100644
--- a/erpnext/docs/user/manual/en/accounts/setup/index.md
+++ b/erpnext/docs/user/manual/en/accounts/setup/index.md
@@ -1,3 +1,5 @@
+# Setup
+
### Topics
{index}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/accounts/setup/tax-rule.md b/erpnext/docs/user/manual/en/accounts/setup/tax-rule.md
index bfcf6f0..a7dee08 100644
--- a/erpnext/docs/user/manual/en/accounts/setup/tax-rule.md
+++ b/erpnext/docs/user/manual/en/accounts/setup/tax-rule.md
@@ -1,6 +1,8 @@
-You can define which [Tax Template]({{docs_base_url}}/user/manual/en/setting-up/setting-up-taxes.html) must be applied on a Sales / Purchase transaction using Tax Rule.
+# Tax Rule
-<img class="screenshot" alt="Tax Rule" src="{{docs_base_url}}/assets/img/accounts/tax-rule.png">
+You can define which [Tax Template](/docs/user/manual/en/setting-up/setting-up-taxes.html) must be applied on a Sales / Purchase transaction using Tax Rule.
+
+<img class="screenshot" alt="Tax Rule" src="/docs/assets/img/accounts/tax-rule.png">
You can define Tax Rules for Sales or Purchase Taxes.
While making a Transaction the system will select and apply tax template based on the tax rule defined.
@@ -10,9 +12,9 @@
Suppose we define 2 Tax Rules as below.
-<img class="screenshot" alt="Tax Rule" src="{{docs_base_url}}/assets/img/accounts/tax-rule-1.png">
+<img class="screenshot" alt="Tax Rule" src="/docs/assets/img/accounts/tax-rule-1.png">
-<img class="screenshot" alt="Tax Rule" src="{{docs_base_url}}/assets/img/accounts/tax-rule-2.png">
+<img class="screenshot" alt="Tax Rule" src="/docs/assets/img/accounts/tax-rule-2.png">
Here Tax Rule 1 has Billing Country as India and Tax Rule 2 has Billing Country as United Kingdom
diff --git a/erpnext/docs/user/manual/en/accounts/tools/bank-reconciliation.md b/erpnext/docs/user/manual/en/accounts/tools/bank-reconciliation.md
index 87348ee..77d27ef 100644
--- a/erpnext/docs/user/manual/en/accounts/tools/bank-reconciliation.md
+++ b/erpnext/docs/user/manual/en/accounts/tools/bank-reconciliation.md
@@ -1,3 +1,5 @@
+# Bank Reconciliation
+
### Bank Reconciliation Statement
If you are receiving payments or making payments via cheques, the bank statements will not accurately match the dates of your entry, this is because the bank usually takes time to “clear” these payments. Also you may have mailed a cheque to your Supplier and it may be a few days before it is received and deposited by the Supplier. In ERPNext you can synchronise your bank statements and your Journal Entries using the “Bank Reconciliation” tool.
@@ -6,7 +8,7 @@
####Bank Reconciliation Statement
-<img class="screenshot" alt="Bank Reconciliation statement" src="{{docs_base_url}}/assets/img/accounts/bank-reconciliation-2.png">
+<img class="screenshot" alt="Bank Reconciliation statement" src="/docs/assets/img/accounts/bank-reconciliation-2.png">
In the report, check whether the field 'Balance as per bank' matches the Bank Account Statement. If it is matching, it means that Clearance Date is correctly updated for all the bank entries. If there is a mismatch, Its because of bank entries for which Cleanrane Date is not yet updated.
@@ -34,7 +36,7 @@
__Step 4:__ Click on the JV from the table and update clearance date.
-<img class="screenshot" alt="Bank Reconciliation" src="{{docs_base_url}}/assets/img/accounts/bank-reconciliation.png">
+<img class="screenshot" alt="Bank Reconciliation" src="/docs/assets/img/accounts/bank-reconciliation.png">
__Step 5:__ Click on the button 'Update Clearance Date'.
diff --git a/erpnext/docs/user/manual/en/accounts/tools/index.md b/erpnext/docs/user/manual/en/accounts/tools/index.md
index 7b45044..c938dde 100644
--- a/erpnext/docs/user/manual/en/accounts/tools/index.md
+++ b/erpnext/docs/user/manual/en/accounts/tools/index.md
@@ -1,3 +1,5 @@
+# Tools
+
### Topics
{index}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/accounts/tools/payment-reconciliation.md b/erpnext/docs/user/manual/en/accounts/tools/payment-reconciliation.md
index bac6f65..329d789 100644
--- a/erpnext/docs/user/manual/en/accounts/tools/payment-reconciliation.md
+++ b/erpnext/docs/user/manual/en/accounts/tools/payment-reconciliation.md
@@ -1,3 +1,5 @@
+# Payment Reconciliation
+
In complex scenarios, especially in the capital goods industry, sometimes there is no direct link between payments and invoices. You send invoices to your Customers and your Customer sends you block payments or payments based on some schedule that is not linked to your invoices.
In such cases, you can use the Payment to Invoice Matching Tool.
@@ -8,7 +10,7 @@
To cancel off some payments and invoices, select the Invoices and Journal Vouchers and click on “Reconcile”.
-<img class="screenshot" alt="Payment Reconciliation" src="{{docs_base_url}}/assets/img/accounts/payment-reconcile-tool.png">
+<img class="screenshot" alt="Payment Reconciliation" src="/docs/assets/img/accounts/payment-reconcile-tool.png">
__Step 1:__ Select the Account against whom the payments need to be reconciled.
diff --git a/erpnext/docs/user/manual/en/accounts/tools/payment-tool.md b/erpnext/docs/user/manual/en/accounts/tools/payment-tool.md
index d0e765a..32a539b 100644
--- a/erpnext/docs/user/manual/en/accounts/tools/payment-tool.md
+++ b/erpnext/docs/user/manual/en/accounts/tools/payment-tool.md
@@ -1,3 +1,5 @@
+# Payment Tool
+
###Payment Tool
The Payment Tool Feature allows non-accounting personnel to generate Journal Entries by populating relevant fields in the Journal Entry with account and payment details.
@@ -11,14 +13,14 @@
6. Click on Get Outstanding Vouchers to fetch all the valid Vouchers, Invoices and Orders against which a payment can be made/received. These will appear in the Against Voucher section.
* __Note:__ In case User is paying a customer or receiving payment from a supplier, add the details regarding the relevant invoices and orders manually.
- <img class="screenshot" alt="Payment Tool" src="{{docs_base_url}}/assets/img/accounts/payment-tool-1.png">
+ <img class="screenshot" alt="Payment Tool" src="/docs/assets/img/accounts/payment-tool-1.png">
7. Once details have been fetched, click on the detail entry and enter the payment amount made against that Invoice/Order/Voucher
- <img class="screenshot" alt="Payment Tool" src="{{docs_base_url}}/assets/img/accounts/payment-tool-2.png">
+ <img class="screenshot" alt="Payment Tool" src="/docs/assets/img/accounts/payment-tool-2.png">
8. Click on 'Make Journal Entry' to generate a new Journal Entry with the relevant Party Details and Credit/Debit details filled in.
- <img class="screenshot" alt="Payment Tool" src="{{docs_base_url}}/assets/img/accounts/payment-tool-3.png">
+ <img class="screenshot" alt="Payment Tool" src="/docs/assets/img/accounts/payment-tool-3.png">
{next}
diff --git a/erpnext/docs/user/manual/en/accounts/tools/period-closing-voucher.md b/erpnext/docs/user/manual/en/accounts/tools/period-closing-voucher.md
index 418ea84..e48055d 100644
--- a/erpnext/docs/user/manual/en/accounts/tools/period-closing-voucher.md
+++ b/erpnext/docs/user/manual/en/accounts/tools/period-closing-voucher.md
@@ -1,3 +1,5 @@
+# Period Closing Voucher
+
At the end of every year or (quarterly or maybe even monthly), after completing auditing, you can close your books of accounts. This means that you make all your special entries like:
* Depreciation
@@ -19,7 +21,7 @@
**Closing Fiscal Year** will be an year for which you are closing your financial statement.
-<img class="screenshot" alt="Period Closing Voucher" src="{{docs_base_url}}/assets/img/accounts/period-closing-voucher.png">
+<img class="screenshot" alt="Period Closing Voucher" src="/docs/assets/img/accounts/period-closing-voucher.png">
This voucher will transfer Profit or Loss (availed from P&L statment) to Closing Account Head. You should select a liability account like Reserves and Surplus, or Capital Fund account as Closing Account.
diff --git a/erpnext/docs/user/manual/en/buying/articles/index.md b/erpnext/docs/user/manual/en/buying/articles/index.md
index 0dff60b..fb11735 100644
--- a/erpnext/docs/user/manual/en/buying/articles/index.md
+++ b/erpnext/docs/user/manual/en/buying/articles/index.md
@@ -1 +1,3 @@
+# Articles
+
{index}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/buying/articles/maintaining-suppliers-part-no-in-item.md b/erpnext/docs/user/manual/en/buying/articles/maintaining-suppliers-part-no-in-item.md
index 2a92581..db42fc3 100644
--- a/erpnext/docs/user/manual/en/buying/articles/maintaining-suppliers-part-no-in-item.md
+++ b/erpnext/docs/user/manual/en/buying/articles/maintaining-suppliers-part-no-in-item.md
@@ -1,3 +1,5 @@
+# Maintaining Suppliers Part No In Item
+
#Maintaining Supplier's Item Code in the Item master
For each item, code assigned might differ from the code your supplier has given to that same item. ERPNext allows you to track Supplier's Item Code in the item master. Also you can fetch Supplier's Item Code in your purchase transactions, so that they can easily recognize item referring to their Item Code.
@@ -6,15 +8,15 @@
In the Item master, under Supplier Details section, enter Item Code as given by the Supplier to this item.
-<img alt="Supplier Item Code" class="screenshot" src="{{docs_base_url}}/assets/img/articles/supplier-item-code.png">
+<img alt="Supplier Item Code" class="screenshot" src="/docs/assets/img/articles/supplier-item-code.png">
#### 2. Supplier's Item Code in Transactions
-Each purchase transaction has field in the Item table where Supplier's Item Code is fetched. This field is hidden in form as well as in the Standard print format. You can make it visible by changing property for this field from [Customize Form.]({{docs_base_url}}/user/manual/en/customize-erpnext/customize-form.html)
+Each purchase transaction has field in the Item table where Supplier's Item Code is fetched. This field is hidden in form as well as in the Standard print format. You can make it visible by changing property for this field from [Customize Form.](/docs/user/manual/en/customize-erpnext/customize-form.html)
Supplier Item Code will only be fetched in the purchase transaction, if both Supplier and Item Code selected in purchase transaction is mapped with value mentioned in the Item master.
-<img alt="Supplier Item Code in transaction" class="screenshot" src="{{docs_base_url}}/assets/img/articles/supplier-item-code-in-purchase-order.png">
+<img alt="Supplier Item Code in transaction" class="screenshot" src="/docs/assets/img/articles/supplier-item-code-in-purchase-order.png">
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/buying/articles/pull-items-in-purchase-order-based-on-supplier.md b/erpnext/docs/user/manual/en/buying/articles/pull-items-in-purchase-order-based-on-supplier.md
index 80f5283..1e9c042 100644
--- a/erpnext/docs/user/manual/en/buying/articles/pull-items-in-purchase-order-based-on-supplier.md
+++ b/erpnext/docs/user/manual/en/buying/articles/pull-items-in-purchase-order-based-on-supplier.md
@@ -1,3 +1,5 @@
+# Pull Items In Purchase Order Based On Supplier
+
#Pull Items in Purchase Order based on Supplier
**Question:**
@@ -12,7 +14,7 @@
Update Default Supplier in the Item master.
-<img alt="Item Purchase UoM" class="screenshot" src="{{docs_base_url}}/assets/img/articles/for-supplier-2.png">
+<img alt="Item Purchase UoM" class="screenshot" src="/docs/assets/img/articles/for-supplier-2.png">
####Step 2: New Purchase Order
@@ -22,13 +24,13 @@
From the options available to pull data in the Purchase Order, click on `For Supplier`.
-<img alt="Item Purchase UoM" class="screenshot" src="{{docs_base_url}}/assets/img/articles/for-supplier-1.gif">
+<img alt="Item Purchase UoM" class="screenshot" src="/docs/assets/img/articles/for-supplier-1.gif">
####Step 4: Get Items
Select Supplier name and click on `Get`.
-<img alt="Item Purchase UoM" class="screenshot" src="{{docs_base_url}}/assets/img/articles/for-supplier-3.png">
+<img alt="Item Purchase UoM" class="screenshot" src="/docs/assets/img/articles/for-supplier-3.png">
####Step 5: Edit Items
diff --git a/erpnext/docs/user/manual/en/buying/articles/purchasing-in-different-unit.md b/erpnext/docs/user/manual/en/buying/articles/purchasing-in-different-unit.md
index 81b1aab..2f8a673 100644
--- a/erpnext/docs/user/manual/en/buying/articles/purchasing-in-different-unit.md
+++ b/erpnext/docs/user/manual/en/buying/articles/purchasing-in-different-unit.md
@@ -1,3 +1,5 @@
+# Purchasing In Different Unit
+
#Purchasing in Different Unit (UoM)
Each item has stock unit of measument (UoM) associated to it. For example UoM of pen could be numbers (Nos) and sand could be stocked kgs. However, when we place an order with Supplier, UoM for an item could change. Like we can order 1 set/box of Pen, or one truck of sand to our Supplier. When creating purchase transacton, you can change Purchase UoM for an item.
@@ -15,28 +17,28 @@
In both the fields, default UoM of an item will be fetched by default. You should edit UoM field, and select Purchase UoM (Box in this case). Updating Purchase UoM is mainly for the reference of the supplier. In the print format, you will see item qty in the Purchase UoM.
-<img alt="Item Purchase UoM" class="screenshot" src="{{docs_base_url}}/assets/img/articles/editing-uom-in-po.gif">
+<img alt="Item Purchase UoM" class="screenshot" src="/docs/assets/img/articles/editing-uom-in-po.gif">
#### Step 2: Update UoM Conversion Factors
In one Box, if you get 20 Nos. of Pen, UoM Conversion Factor would be 20.
-<img alt="Item Conversion Factor" class="screenshot" src="{{docs_base_url}}/assets/img/articles/po-conversion-factor.png">
+<img alt="Item Conversion Factor" class="screenshot" src="/docs/assets/img/articles/po-conversion-factor.png">
Based on the Qty and Conversion Factor, qty will be calculated in the Stock UoM of an item. If you purchase just one Box, then Qty in the stock UoM will be set as 20.
-<img alt="Purchase Qty in Default UoM" class="screenshot" src="{{docs_base_url}}/assets/img/articles/po-qty-in-stock-uom.png">
+<img alt="Purchase Qty in Default UoM" class="screenshot" src="/docs/assets/img/articles/po-qty-in-stock-uom.png">
### Stock Ledger Posting
Irrespective of the Purchase UoM selected, stock ledger posting will be done in the Default UoM of an item. Hence you should ensure that conversion factor is entered correctly while purchasing item in different UoM.
-<img alt="Print Format in Purchase UoM" class="screenshot" src="{{docs_base_url}}/assets/img/articles/po-stock-uom-ledger.png">
+<img alt="Print Format in Purchase UoM" class="screenshot" src="/docs/assets/img/articles/po-stock-uom-ledger.png">
### Set Conversion Factor in Item
In the Item master, under Purchase section, you can list all the possible purchase UoM of an item, with its UoM Conversion Factor.
-<img alt="Purchase UoM master" class="screenshot" src="{{docs_base_url}}/assets/img/articles/item-purchase-uom-conversion.png">
+<img alt="Purchase UoM master" class="screenshot" src="/docs/assets/img/articles/item-purchase-uom-conversion.png">
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/buying/index.txt b/erpnext/docs/user/manual/en/buying/index.txt
index 25c8797..4bd75f1 100644
--- a/erpnext/docs/user/manual/en/buying/index.txt
+++ b/erpnext/docs/user/manual/en/buying/index.txt
@@ -5,3 +5,4 @@
setup
articles
purchase-taxes
+supplier-scorecard
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/buying/purchase-order.md b/erpnext/docs/user/manual/en/buying/purchase-order.md
index 89bb6d9..cdfd0f9 100644
--- a/erpnext/docs/user/manual/en/buying/purchase-order.md
+++ b/erpnext/docs/user/manual/en/buying/purchase-order.md
@@ -1,3 +1,5 @@
+# Purchase Order
+
A Purchase Order is analogous to a Sales Order. It is usually a binding
contract with your Supplier that you promise to buy a set of Items under the
given conditions.
@@ -7,7 +9,7 @@
#### Purchase Order Flow Chart
-
+
In ERPNext, you can also make a Purchase Order directly by going to:
@@ -15,7 +17,7 @@
#### Create Purchase Order
-<img class="screenshot" alt="Purchase Order" src="{{docs_base_url}}/assets/img/buying/purchase-order.png">
+<img class="screenshot" alt="Purchase Order" src="/docs/assets/img/buying/purchase-order.png">
Entering a Purchase Order is very similar to a Purchase Request, additionally
you will have to set:
@@ -40,10 +42,10 @@
and what you pay to your Supplier. This is called Value Added Tax (VAT).
#### Add Taxes in Purchase Order
-<img class="screenshot" alt="Purchase Order" src="{{docs_base_url}}/assets/img/buying/add_taxes_to_doc.png">
+<img class="screenshot" alt="Purchase Order" src="/docs/assets/img/buying/add_taxes_to_doc.png">
#### Show Tax break-up
-<img class="screenshot" alt="Purchase Order" src="{{docs_base_url}}/assets/img/buying/show_tax_breakup.png">
+<img class="screenshot" alt="Purchase Order" src="/docs/assets/img/buying/show_tax_breakup.png">
For example you buy Items worth X and sell them for 1.3X. So your Customer
pays 1.3 times the tax you pay your Supplier. Since you have already paid tax
@@ -79,7 +81,7 @@
#### Figure 3: Conversion of Purchase UOM to stock UOM
-<img class="screenshot" alt="Purchase Order - UOM" src="{{docs_base_url}}/assets/img/buying/purchase-order-uom.png">
+<img class="screenshot" alt="Purchase Order - UOM" src="/docs/assets/img/buying/purchase-order-uom.png">
__Step 4:__ Mention the UOM conversion factor. For example, (100);If one box has
100 pieces.
diff --git a/erpnext/docs/user/manual/en/buying/purchase-taxes.md b/erpnext/docs/user/manual/en/buying/purchase-taxes.md
index f3be64d..b04949f 100644
--- a/erpnext/docs/user/manual/en/buying/purchase-taxes.md
+++ b/erpnext/docs/user/manual/en/buying/purchase-taxes.md
@@ -1,3 +1,5 @@
+# Purchase Taxes
+
For Tax Accounts that you want to use in the tax templates, you must mention
them as type “Tax” in your Chart of Accounts.
@@ -8,7 +10,7 @@
> Buying > Setup > Purchase Taxes and Charges Template > New Purchase Taxes and Charges
Master
-<img class="screenshot" alt="Purchase taxes" src="{{docs_base_url}}/assets/img/buying/purchase-taxes.png">
+<img class="screenshot" alt="Purchase taxes" src="/docs/assets/img/buying/purchase-taxes.png">
You can specify if the tax / charge is only for valuation (not a part of
diff --git a/erpnext/docs/user/manual/en/buying/request-for-quotation.md b/erpnext/docs/user/manual/en/buying/request-for-quotation.md
index 07b0d3f..182c89d 100644
--- a/erpnext/docs/user/manual/en/buying/request-for-quotation.md
+++ b/erpnext/docs/user/manual/en/buying/request-for-quotation.md
@@ -1,10 +1,12 @@
+# Request For Quotation
+
A Request for Quotation is a document that an organization submits to one or more suppliers eliciting quotation for items.
In ERPNext, You can create request for quotation directly by going to:
> Buying > Documents > Request for Quotation > New Request for Quotation
-
+
After creation of request for quotation, there are two ways to generate supplier quotation from request for quotation.
@@ -12,41 +14,41 @@
__Step 1:__ Open request for quotation and click on make supplier quotation.
-
+
__Step 2:__ Select supplier and click on make supplier quotation.
-
+
__Step 3:__ System will open the supplier quotation, user has to enter the rate and submit it.
-
+
#### For Supplier
__Step 1:__ User has to create contact or enter Email Address against the supplier on request for quotation.
-
+
__Step 2:__ User has to click on send supplier emails button.
-
+
* If supplier's user not available: system will create supplier's user and send details to the supplier, supplier will need to click on the link(Password Update) present in the email. After password update supplier can access his portal with the request for quotation form.
-
+
* If supplier's user available: system will send request for quotation link to supplier, supplier has to login using his credentials to view request for quotation form on portal.
-
+
__Step 3:__ Supplier has to enter amount and notes(payment terms) on the form and click on submit
-
+
__Step 4:__ On submission, system will create supplier quotation(draft mode) against the supplier. User has to review the supplier quotation
and submit it.
More details:-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/buying/setup/buying-settings.md b/erpnext/docs/user/manual/en/buying/setup/buying-settings.md
index 3d5dbb9..197a18e 100644
--- a/erpnext/docs/user/manual/en/buying/setup/buying-settings.md
+++ b/erpnext/docs/user/manual/en/buying/setup/buying-settings.md
@@ -1,6 +1,8 @@
+# Buying Settings
+
Buying Settings is where you can define properties which will be applied in the Buying module's transactions.
-
+
Let us look at the various options that can be configured:
@@ -14,7 +16,7 @@
`Setup > Data > Naming Series`
-[Click here to know more about defining a Naming Series.]({{docs_base_url}}/user/manual/en/setting-up/settings/naming-series.html)
+[Click here to know more about defining a Naming Series.](/docs/user/manual/en/setting-up/settings/naming-series.html)
### 2. Default Supplier Type
diff --git a/erpnext/docs/user/manual/en/buying/setup/index.md b/erpnext/docs/user/manual/en/buying/setup/index.md
index 259b5eb..2d85ad2 100644
--- a/erpnext/docs/user/manual/en/buying/setup/index.md
+++ b/erpnext/docs/user/manual/en/buying/setup/index.md
@@ -1,3 +1,5 @@
+# Setup
+
### Topics
diff --git a/erpnext/docs/user/manual/en/buying/setup/supplier-type.md b/erpnext/docs/user/manual/en/buying/setup/supplier-type.md
index 2e88601..16d5445 100644
--- a/erpnext/docs/user/manual/en/buying/setup/supplier-type.md
+++ b/erpnext/docs/user/manual/en/buying/setup/supplier-type.md
@@ -1,3 +1,5 @@
+# Supplier Type
+
A supplier may be distinguished from a contractor or subcontractor, who
commonly adds specialized input to deliverables. A supplier is also known as a
vendor. There are different types of suppliers based on their goods and
@@ -14,7 +16,7 @@
> Buying > Setup > Supplier Type > New Supplier Type
-<img class="screenshot" alt="Supplier Type" src="{{docs_base_url}}/assets/img/buying/supplier-type.png">
+<img class="screenshot" alt="Supplier Type" src="/docs/assets/img/buying/supplier-type.png">
You can classify your suppliers from a range of choice available in ERPNext.
Choose from a set of given options like Distributor, Electrical,Hardware,
diff --git a/erpnext/docs/user/manual/en/buying/supplier-quotation.md b/erpnext/docs/user/manual/en/buying/supplier-quotation.md
index 868a297..5935477 100644
--- a/erpnext/docs/user/manual/en/buying/supplier-quotation.md
+++ b/erpnext/docs/user/manual/en/buying/supplier-quotation.md
@@ -1,3 +1,5 @@
+# Supplier Quotation
+
A Supplier Quotation is a formal statement of promise by potential supplier to
supply the goods or services required by a buyer, at specified prices, and
within a specified period. A quotation may also contain terms of sale and
@@ -8,7 +10,7 @@
#### Supplier Quotation Flow-Chart
-
+
You can also make a Supplier Quotation directly from:
@@ -16,7 +18,7 @@
#### Create Supplier Quotation
-<img class="screenshot" alt="Supplier Quotation" src="{{docs_base_url}}/assets/img/buying/supplier-quotation.png">
+<img class="screenshot" alt="Supplier Quotation" src="/docs/assets/img/buying/supplier-quotation.png">
If you have multiple Suppliers who supply you with the same Item, you
usually send out a message (Request for Quote) to various Suppliers. In
@@ -35,10 +37,10 @@
You can select relevant tax by going to "Taxes and Charges" section and adding an entry to the table as shown below,
-<img class="screenshot" alt="Supplier Quotation" src="{{docs_base_url}}/assets/img/buying/add_taxes_to_doc.png">
+<img class="screenshot" alt="Supplier Quotation" src="/docs/assets/img/buying/add_taxes_to_doc.png">
Besides, in case of multiple items you can keep track of taxes on each by clicking "Show tax break-up"
-<img class="screenshot" alt="Supplier Quotation" src="{{docs_base_url}}/assets/img/buying/show_tax_breakup.png">
+<img class="screenshot" alt="Supplier Quotation" src="/docs/assets/img/buying/show_tax_breakup.png">
{next}
diff --git a/erpnext/docs/user/manual/en/buying/supplier-scorecard.md b/erpnext/docs/user/manual/en/buying/supplier-scorecard.md
new file mode 100644
index 0000000..eb33030
--- /dev/null
+++ b/erpnext/docs/user/manual/en/buying/supplier-scorecard.md
@@ -0,0 +1,78 @@
+# Supplier Scorecard
+
+A Supplier Scorecard is an evaluation tool used to assess the performance of
+suppliers. Supplier scorecards can be used to keep track of item quality,
+delivery and responsiveness of suppliers across long periods of time. This data
+is typically used to help in purchasing decisions.
+
+A Supplier Scorecard is manually created for each supplier.
+
+In ERPNext, you can create a supplier scorecard by going to:
+
+> Buying > Documents > Supplier Scorecard > New Supplier Scorecard
+
+### Create Supplier Scorecard
+A supplier scorecard is created for each supplier individually. Only one supplier scorecard can be created for each
+supplier.
+<img class="screenshot" alt="Purchase Order" src="/docs/assets/img/buying/supplier-scorecard.png">
+
+#### Final Score and Standings
+The supplier scorecard consists of a set evaluation periods, during which the performance of a supplier is
+evaluated. This period can be daily, monthly or yearly. The current score is calculated from the score of each evaluation
+period based on the weighting function. The default formula is linearly weight over the previous 12 scoring periods.
+<img class="screenshot" alt="Purchase Order" src="/docs/assets/img/buying/supplier-scorecard-weighing.png">
+This formula is customizable.
+
+The supplier standing is used to quickly sort suppliers based on their performance. These are customizable for each supplier.
+The scorecard standing of a supplier can also be used to restrict suppliers from being included in Request for Quotations or
+being issued Purchase Orders.
+<img class="screenshot" alt="Purchase Order" src="/docs/assets/img/buying/supplier-scorecard-standing.png">
+
+#### Evaluation Criteria and Variables
+A supplier can be evaluated on several individual evaluation criteria, including (but not limited to) quotation response time,
+delivered item quality, and delivery timeliness. These criteria are weighed to determine the final period score.
+<img class="screenshot" alt="Purchase Order" src="/docs/assets/img/buying/supplier-scorecard-criteria.png">
+The method for calculating each criteria is determined through the criteria formula field, which can use a number of pre-established variables.
+The value of each of these variables is calculated over the scoring period for each supplier. Examples of such variables include:
+ - The total number of items received from the supplier
+ - The total number of accepted items from the supplier
+ - The total number of rejected items from the supplier
+ - The total number of deliveries from the supplier
+ - The total amount (in dollars) received from a supplier
+Additional variables can be added through server-side customizations.
+
+The criteria formula should be customized to evaluate the suppliers in each criteria in a way that best fits the Company requirements.
+
+##### Evaluation Formulas
+The evaluation formula uses the pre-established or custom variables to evaluate an aspect of supplier performance over the scoring period. Formulas can use the following mathematical functions:
+
+* addition: +
+* subtraction: -
+* multiplication: *
+* division: /
+* min: min(x,y)
+* max: max(x,y)
+* if/else: (x) if (formula) else (y)
+* less than: <
+* greated than: >
+* variables: {variable_name}
+
+It is crucial that the formula be solvable for all variable values. This is most often an issue if the value resolves to 0. For example:
+```
+{total_accepted_items} / {total_received_items}
+```
+
+This example would resolve to 0 / 0 in periods where there are no received items, and therefore should have a check to protect in this case:
+```
+({total_accepted_items} / {total_received_items}) if {total_received_items} > 0 else 1.
+```
+
+### Evaluating the Supplier
+An evaluation is generated for each Supplier Scorecard Period by clicking the "Generate Missing Scorecard Periods" button. The supplier
+current score can be seen, as well as a visual graphic showing the performance of the supplier over time. Any actions against the supplier
+are also noted here, including warnings when create RFQs and POs or locking out those features for this supplier altogether.
+
+
+
+
+{next}
diff --git a/erpnext/docs/user/manual/en/buying/supplier.md b/erpnext/docs/user/manual/en/buying/supplier.md
index 89107db..217d8b7 100644
--- a/erpnext/docs/user/manual/en/buying/supplier.md
+++ b/erpnext/docs/user/manual/en/buying/supplier.md
@@ -1,16 +1,18 @@
+# Supplier
+
Suppliers are companies or individuals who provide you with products or services.
You can create a new Supplier from:
`Explore > Supplier > New Supplier`
-<img class="screenshot" alt="Supplier Master" src="{{docs_base_url}}/assets/img/buying/supplier-master.png">
+<img class="screenshot" alt="Supplier Master" src="/docs/assets/img/buying/supplier-master.png">
### Contacts and Addresses
Contacts and Addresses in ERPNext are stored separately so that you can create multiple Contacts and Addresses for a Suppliers. Once Supplier is saved, you will find option to create Contact and Address for that Supplier.
-<img class="screenshot" alt="Supplier Master" src="{{docs_base_url}}/assets/img/buying/supplier-new-address-contact.png">
+<img class="screenshot" alt="Supplier Master" src="/docs/assets/img/buying/supplier-new-address-contact.png">
> Tip: When you select a Supplier in any transaction, Contact for which "Is Primary" field id checked, it will auto-fetch with the Supplier details.
@@ -20,7 +22,7 @@
If you want to customize payable account for the Supplier, you should first add a payable Account in the Chart of Account, and then select that Payable Account in the Supplier master.
-<img class="screenshot" alt="Supplier Master" src="{{docs_base_url}}/assets/img/buying/supplier-payable-account.png">
+<img class="screenshot" alt="Supplier Master" src="/docs/assets/img/buying/supplier-payable-account.png">
If you don't want to customize payable account, and proceed with default payable account "Creditor", then do not update any value in the Default Supplier Account's table.
diff --git a/erpnext/docs/user/manual/en/customer-portal/customer-orders-invoices-and-shipping-status.md b/erpnext/docs/user/manual/en/customer-portal/customer-orders-invoices-and-shipping-status.md
index b94ac01..6facabf 100644
--- a/erpnext/docs/user/manual/en/customer-portal/customer-orders-invoices-and-shipping-status.md
+++ b/erpnext/docs/user/manual/en/customer-portal/customer-orders-invoices-and-shipping-status.md
@@ -1,17 +1,19 @@
+# Customer Orders Invoices And Shipping Status
+
ERPNext Web Portal gives your customers quick access to their Orders, Invoices and Shipments Customers can check the status of their orders, invoices, and shipping status by logging on to the web.
-<img class="screenshot" alt="Customer Portal" src="{{docs_base_url}}/assets/img/website/portal-menu.png">
+<img class="screenshot" alt="Customer Portal" src="/docs/assets/img/website/portal-menu.png">
Once an order is raised, either using the Shopping Cart or from within ERPNext, your customer can view the order and keep an eye on the billing and shipment status. When the invoice and payment against these orders are submitted, the customer can see the updated status on the portal, at a glance.
-<img class="screenshot" alt="Customer Portal" src="{{docs_base_url}}/assets/img/website/website-login.png">
+<img class="screenshot" alt="Customer Portal" src="/docs/assets/img/website/website-login.png">
#### Outstanding Sales Invoice
-<img class="screenshot" alt="Customer Portal" src="{{docs_base_url}}/assets/img/website/invoice-unpaid.png">
+<img class="screenshot" alt="Customer Portal" src="/docs/assets/img/website/invoice-unpaid.png">
#### Paid Sales Invoice
-<img class="screenshot" alt="Customer Portal" src="{{docs_base_url}}/assets/img/website/invoice-paid.png">
+<img class="screenshot" alt="Customer Portal" src="/docs/assets/img/website/invoice-paid.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/customer-portal/index.md b/erpnext/docs/user/manual/en/customer-portal/index.md
index ddac7d2..1dbb140 100644
--- a/erpnext/docs/user/manual/en/customer-portal/index.md
+++ b/erpnext/docs/user/manual/en/customer-portal/index.md
@@ -1,3 +1,5 @@
+# Customer Portal
+
Customer Portal is designed to give easy accesibility to customers of a
company.
diff --git a/erpnext/docs/user/manual/en/customer-portal/issues.md b/erpnext/docs/user/manual/en/customer-portal/issues.md
index 0088de6..17b74e4 100644
--- a/erpnext/docs/user/manual/en/customer-portal/issues.md
+++ b/erpnext/docs/user/manual/en/customer-portal/issues.md
@@ -1,3 +1,5 @@
+# Issues
+
The customer portal makes it very easy for a customer to raise concerns. A
simple and intuitive interface facilitates your customer to report their
concerns as Issues. They can view the complete thread of their
@@ -5,18 +7,18 @@
#### Empty Issue List
-<img class="screenshot" alt="Issue List" src="{{docs_base_url}}/assets/img/website/portal-ticket-list-empty.png">
+<img class="screenshot" alt="Issue List" src="/docs/assets/img/website/portal-ticket-list-empty.png">
#### New Issue
-<img class="screenshot" alt="New Issue " src="{{docs_base_url}}/assets/img/website/portal-new-ticket.png">
+<img class="screenshot" alt="New Issue " src="/docs/assets/img/website/portal-new-ticket.png">
#### Open Issue
-<img class="screenshot" alt="Issue Raised" src="{{docs_base_url}}/assets/img/website/portal-ticket-1.gif">
+<img class="screenshot" alt="Issue Raised" src="/docs/assets/img/website/portal-ticket-1.gif">
#### Reply on Issue
-<img class="screenshot" alt="Issue reply" src="{{docs_base_url}}/assets/img/website/portal-ticket-reply.gif">
+<img class="screenshot" alt="Issue reply" src="/docs/assets/img/website/portal-ticket-reply.gif">
{next}
diff --git a/erpnext/docs/user/manual/en/customer-portal/portal-login.md b/erpnext/docs/user/manual/en/customer-portal/portal-login.md
index 62a9b6f..efa70a2 100644
--- a/erpnext/docs/user/manual/en/customer-portal/portal-login.md
+++ b/erpnext/docs/user/manual/en/customer-portal/portal-login.md
@@ -1,6 +1,8 @@
+# Portal Login
+
To login into the customer account, the customer has to use his Email Address and
the password sent by ERPNext; generated through the sign-up process.
-<img class="screenshot" alt="Website User Signup" src="{{docs_base_url}}/assets/img/website/website-login.png">
+<img class="screenshot" alt="Website User Signup" src="/docs/assets/img/website/website-login.png">
{next}
diff --git a/erpnext/docs/user/manual/en/customer-portal/sign-up.md b/erpnext/docs/user/manual/en/customer-portal/sign-up.md
index 554285c..36e1b2c 100644
--- a/erpnext/docs/user/manual/en/customer-portal/sign-up.md
+++ b/erpnext/docs/user/manual/en/customer-portal/sign-up.md
@@ -1,14 +1,16 @@
+# Sign Up
+
Your Customer and Suppliers can signup to your ERPNext account by following Signup option on the Login Page.
#### Step 1: Signup
On the Login Page, you will find option to Signup.
-<img class="screenshot" alt="Website User Signup" src="{{docs_base_url}}/assets/img/website/website-login.png">
+<img class="screenshot" alt="Website User Signup" src="/docs/assets/img/website/website-login.png">
#### Step 2: Enter Customer Name and ID
-<img class="screenshot" alt="Website User Signup" src="{{docs_base_url}}/assets/img/website/website-signup-details.png">
+<img class="screenshot" alt="Website User Signup" src="/docs/assets/img/website/website-signup-details.png">
After the sign up process, an email will be sent to the customers Email Address with the password details.
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/articles/allow-fields-to-be-changed-after-submit.md b/erpnext/docs/user/manual/en/customize-erpnext/articles/allow-fields-to-be-changed-after-submit.md
index 902ada8..42b0fc6 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/articles/allow-fields-to-be-changed-after-submit.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/allow-fields-to-be-changed-after-submit.md
@@ -1,3 +1,5 @@
+# Allow Fields To Be Changed After Submit
+
#Editing Value in Submitted Document
Once document is submitted, fields are frozen, and no editing is allowd. Still there are certain standard fields like Letter Head, Print Heading which can still be edited. For the custom field, if **Allow on Submit** property is checked, it will be editable even after document is submitted.
@@ -12,17 +14,17 @@
In Customize Form, select Document Type (Quotation, Sales Order, Purchase Invoice Item etc.)
-<img alt="select docytpe" class="screenshot" src="{{docs_base_url}}/assets/img/articles/allow-on-submit-1.png">
+<img alt="select docytpe" class="screenshot" src="/docs/assets/img/articles/allow-on-submit-1.png">
#### Step 3: Edit Field Property
In the fields section, click on the Custom field and check the **Allow On Submit**.
-<img alt="Check Allow on Submit" class="screenshot" src="{{docs_base_url}}/assets/img/articles/allow-on-submit-2.png">
+<img alt="Check Allow on Submit" class="screenshot" src="/docs/assets/img/articles/allow-on-submit-2.png">
#### Step 3: Update Customize Form
-<img alt="Update" class="screenshot" src="{{docs_base_url}}/assets/img/articles/allow-on-submit-3.png">
+<img alt="Update" class="screenshot" src="/docs/assets/img/articles/allow-on-submit-3.png">
After updating Customize Form, you should reload your ERPNext account. Then check form, and field to confirm its editable in submitted form as well.
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/articles/creating-custom-link-field.md b/erpnext/docs/user/manual/en/customize-erpnext/articles/creating-custom-link-field.md
index 834617e..21cc433 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/articles/creating-custom-link-field.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/creating-custom-link-field.md
@@ -1,3 +1,5 @@
+# Creating Custom Link Field
+
#Creating Custom Link Fields
Links field are the ones linked to another document type. For example, customer field is a link field in Sales Order. This field is linked to the Customer master.
@@ -13,7 +15,7 @@
In Customize Form, select Document Type (Quotation, Sales Order, Purchase Invoice Item etc.). Once field are updated in table, open field before which you wish to insert Custom Field. Then click on "Insert Above" to insert new Custom Field.
-<img alt="Select Docytpe" class="screenshot" src="{{docs_base_url}}/assets/img/articles/link-field-1.gif">
+<img alt="Select Docytpe" class="screenshot" src="/docs/assets/img/articles/link-field-1.gif">
####Step 4: Custom Field Values
@@ -24,6 +26,6 @@
1. Name: Desired name for the field
1. Options: Enter the name of the Doctype to which the field is linked
-<img alt="Enter Values" class="screenshot" src="{{docs_base_url}}/assets/img/articles/link-field-2.png">
+<img alt="Enter Values" class="screenshot" src="/docs/assets/img/articles/link-field-2.png">
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/articles/customizing-sorting-order-in-the-list-view.md b/erpnext/docs/user/manual/en/customize-erpnext/articles/customizing-sorting-order-in-the-list-view.md
index d8e5319..a842085 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/articles/customizing-sorting-order-in-the-list-view.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/customizing-sorting-order-in-the-list-view.md
@@ -1,3 +1,5 @@
+# Customizing Sorting Order In The List View
+
#Customizing Sorting Order in the List View
**Question:** I want records in my Item List sorted based on Desc Order of Item Code.
@@ -12,13 +14,13 @@
Select document type for which Sort Order is to be customized.
-<img alt="Sort Order field" class="screenshot" src="{{docs_base_url}}/assets/img/articles/sort-order-2.png">
+<img alt="Sort Order field" class="screenshot" src="/docs/assets/img/articles/sort-order-2.png">
####Step 3: Update Sort Details
In the Customize Form, you will find these fields.
-<img alt="Sort Order field" class="screenshot" src="{{docs_base_url}}/assets/img/articles/sort-order-1.png">
+<img alt="Sort Order field" class="screenshot" src="/docs/assets/img/articles/sort-order-1.png">
1. Sort Field: Select field based on which sorting will be done. It will be "Item_Code" field in scenario.
2. Sort Order: Sort Order will be two possible options, **Asc** for ascending, and **Desc** for descending.
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/articles/deleting-custom-reports.md b/erpnext/docs/user/manual/en/customize-erpnext/articles/deleting-custom-reports.md
index ae5b061..9d3c0e1 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/articles/deleting-custom-reports.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/deleting-custom-reports.md
@@ -1,6 +1,8 @@
+# Deleting Custom Reports
+
#Deleting Custom Reports
-ERPNext has several [types of reports]({{docs_base_url}}/user/manual/en/customize-erpnext/articles/making-custom-reports-in-erpnext) which can be customize as per the companies/users requirement.
+ERPNext has several [types of reports](/docs/user/manual/en/customize-erpnext/articles/making-custom-reports-in-erpnext) which can be customize as per the companies/users requirement.
If there is a report custom report which needs to be deleted, it can be achieved by following steps. Please note that its applicable only for the Custom Reports, and not for the standard reports.
@@ -8,16 +10,16 @@
In the Awesome Bar, type and select "Report List" for an option.
-<img alt="Report Search" class="screenshot" src="{{docs_base_url}}/assets/img/articles/delete-report-1.png">
+<img alt="Report Search" class="screenshot" src="/docs/assets/img/articles/delete-report-1.png">
####Selecting and Deleting Report
The Report List will have all the standard and custom reports of your account. You can select Custom Report to be deleted from the list itself, and click on Delete icon.
-<img alt="Report List" class="screenshot" src="{{docs_base_url}}/assets/img/articles/delete-report-2.png">
+<img alt="Report List" class="screenshot" src="/docs/assets/img/articles/delete-report-2.png">
Or you can open that report, and delete it from File menu option.
-<img alt="Report Delete" class="screenshot" src="{{docs_base_url}}/assets/img/articles/delete-report-3.png">
+<img alt="Report Delete" class="screenshot" src="/docs/assets/img/articles/delete-report-3.png">
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/articles/disable-rounded-total.md b/erpnext/docs/user/manual/en/customize-erpnext/articles/disable-rounded-total.md
index e47692f..ffcb376 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/articles/disable-rounded-total.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/disable-rounded-total.md
@@ -1,8 +1,10 @@
+# Disable Rounded Total
+
#Disable Rounded Total
All the sales transactions like Sales Order, Sales Invoice has Rounded Total in it. It calculated based on the value of Grand Total. Also Rounded Total is also visible in the Standard Print Formats.
-<img alt="Print Preview" class="screenshot" src="{{docs_base_url}}/assets/img/articles/hide-rounded-total-1.png">
+<img alt="Print Preview" class="screenshot" src="/docs/assets/img/articles/hide-rounded-total-1.png">
Follow steps given below to hide rounded total from Standard Print Formats, for all the sales transactions.
@@ -14,7 +16,7 @@
Check Disable Rounded Total, and Save Global Defaults.
-<img alt="Print Preview" class="screenshot" src="{{docs_base_url}}/assets/img/articles/hide-rounded-total-2.png">
+<img alt="Print Preview" class="screenshot" src="/docs/assets/img/articles/hide-rounded-total-2.png">
For system to take effect of this setting, you should clear cache and refresh your ERPNext account. Then your print formats shall not render value for the Rounded Total in the print formats.
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/articles/field-types.md b/erpnext/docs/user/manual/en/customize-erpnext/articles/field-types.md
index 813a7a7..9d239c4 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/articles/field-types.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/field-types.md
@@ -1,3 +1,5 @@
+# Field Types
+
#Field Types
Following are the types of fields you can define while creating new ones, or while amend standard ones.
@@ -32,7 +34,7 @@
- Dynamic Link
-Click [here]({{docs_base_url}}/user/manual/en/customize-erpnext/articles/managing-dynamic-link-fields.html) to learn how Dynamic Link Field function.
+Click [here](/docs/user/manual/en/customize-erpnext/articles/managing-dynamic-link-fields.html) to learn how Dynamic Link Field function.
- Float
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/articles/increase-max-attachments.md b/erpnext/docs/user/manual/en/customize-erpnext/articles/increase-max-attachments.md
index 2b7459c..b3f9a98 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/articles/increase-max-attachments.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/increase-max-attachments.md
@@ -1,3 +1,5 @@
+# Increase Max Attachments
+
#Increase Max Attachments
In ERPNext, you can limit how many files can be attached to specific Document. Using Custmize Form, you can set **Max(imum) Attachments** which can be added to a particular documents.
@@ -10,13 +12,13 @@
#### Step 2: Select Document Type
-<img alt="Select Doctype" class="screenshot" src="{{docs_base_url}}/assets/img/articles/max-attachment-1.png">
+<img alt="Select Doctype" class="screenshot" src="/docs/assets/img/articles/max-attachment-1.png">
#### Step 3: Set Limit
Set Maximum Attachments as five.
-<img alt="Set Max Attachment" class="screenshot" src="{{docs_base_url}}/assets/img/articles/max-attachment-2.png">
+<img alt="Set Max Attachment" class="screenshot" src="/docs/assets/img/articles/max-attachment-2.png">
After update Max Attachments, Update Customization Form. Reload your ERPNext account and then check specific Quotation to confirm if Max Attachment limit is applied.
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/articles/index.md b/erpnext/docs/user/manual/en/customize-erpnext/articles/index.md
index 0dff60b..fb11735 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/articles/index.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/index.md
@@ -1 +1,3 @@
+# Articles
+
{index}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/articles/make-field-visible-in-print-format.md b/erpnext/docs/user/manual/en/customize-erpnext/articles/make-field-visible-in-print-format.md
index 62cc3f9..5abd291 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/articles/make-field-visible-in-print-format.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/make-field-visible-in-print-format.md
@@ -1,3 +1,5 @@
+# Make Field Visible In Print Format
+
#Make Fields Visible In Print Format
Each transaction has Standard Print Format. In the Standard format, only certain fields are displayed by default. If user needs field in the Standard format to be visible, it can be customized by using Customize Form tool.
@@ -14,13 +16,13 @@
As per our scenario, Sales Order will be selected as Document Type.
field-visible-2.gif
-<img alt="Document Type" class="screenshot" src="{{docs_base_url}}/assets/img/articles/print-visible-1.png">
+<img alt="Document Type" class="screenshot" src="/docs/assets/img/articles/print-visible-1.png">
#### Step 3: Uncheck Print Hide
click to open field to be made visible in the Standard Print Format. Uncheck **Print Hide** field.
-<img alt="Uncheck Print Hide " class="screenshot" src="{{docs_base_url}}/assets/img/articles/print-visible-2.gif">
+<img alt="Uncheck Print Hide " class="screenshot" src="/docs/assets/img/articles/print-visible-2.gif">
#### Step 4: Update
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/articles/making-custom-reports-in-erpnext.md b/erpnext/docs/user/manual/en/customize-erpnext/articles/making-custom-reports-in-erpnext.md
index 7bc965b..bcc5c6f 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/articles/making-custom-reports-in-erpnext.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/making-custom-reports-in-erpnext.md
@@ -1,3 +1,5 @@
+# Making Custom Reports In Erpnext
+
#Reports in ERPNext
There are three kind of reports in ERPNext.
@@ -12,12 +14,12 @@
Query Report is written in SQL which pull values from account's database and fetch in the report. Though SQL queries can be written from front end, like HTML, its restricted in hosted users. Because it will allow users with no access to specific report to query data directly from the database.
-Check Purchase Order Item to be Received report in Stock module for example of Query report. Click [here](https://frappe.github.io/frappe/user/en/guides/reports-and-printing/how-to-make-query-report.html) to learn how to create Query Report.
+Check Purchase Order Item to be Received report in Stock module for example of Query report. Click [here](https://frappe.io/docs/user/en/guides/reports-and-printing/how-to-make-query-report.html) to learn how to create Query Report.
### 3. Script Report
Script Reports are written in Python and stored on server side. These are complex reports which involves logic and calculation. Since these reports are written on server side, customizing it from hosted account is not possible.
-Check Financial Analytics report in Accounts module for example of Script Report. Click [here](https://frappe.github.io/frappe/user/en/guides/reports-and-printing/how-to-make-script-reports.html) to learn how to create Script Report.
+Check Financial Analytics report in Accounts module for example of Script Report. Click [here](https://frappe.io/docs/user/en/guides/reports-and-printing/how-to-make-script-reports.html) to learn how to create Script Report.
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/articles/managing-dynamic-link-fields.md b/erpnext/docs/user/manual/en/customize-erpnext/articles/managing-dynamic-link-fields.md
index c72004d..f3621a5 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/articles/managing-dynamic-link-fields.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/managing-dynamic-link-fields.md
@@ -1,3 +1,5 @@
+# Managing Dynamic Link Fields
+
#Managing Dynamic Link Fields
Dynamic Link field is one which can search and hold value of any document/doctype. Let's consider an example to learn how Dynamic Link field works.
@@ -12,7 +14,7 @@
Firstly we will create a link field which will be linked to the Doctype.
-<img alt="Custom Link Field" class="screenshot" src="{{docs_base_url}}/assets/img/articles/dynamic-field-1.gif">
+<img alt="Custom Link Field" class="screenshot" src="/docs/assets/img/articles/dynamic-field-1.gif">
By **Doctype** mentioned in the Option field, we mean parent Doctype. So, just like Quotation is one Doctype, which has multiple Quotation under it. Same way, Doctype is also a Doctype which has Sales Order, Purchase Order and other doctypes created as Doctype records.
@@ -27,17 +29,17 @@
So linking this field with parent Doctype will list all the Doctype records.
-<img alt="journal Voucher Link Field" class="screenshot" src="{{docs_base_url}}/assets/img/articles/dynamic-field-2.png">
+<img alt="journal Voucher Link Field" class="screenshot" src="/docs/assets/img/articles/dynamic-field-2.png">
#### Step 2: Insert Dynamic Link Field
This custom field's type will be "Dynamic Link". In the Option field, name of Doctype link field will be mentioned.
-<img alt="Custom Dynamic Field" class="screenshot" src="{{docs_base_url}}/assets/img/articles/dynamic-field-3.gif">
+<img alt="Custom Dynamic Field" class="screenshot" src="/docs/assets/img/articles/dynamic-field-3.gif">
This field will allow selecting document id, based on value selected in the Doctype link field. For example, if we select Sales Order in the prior field, Dynamic Link field will list all the Sales Orders ids.
-<img alt="Custom Dynamic Field" class="screenshot" src="{{docs_base_url}}/assets/img/articles/dynamic-field-4.gif">
+<img alt="Custom Dynamic Field" class="screenshot" src="/docs/assets/img/articles/dynamic-field-4.gif">
<div class="well">
**Customizing options in the Doctype Link field**
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/articles/maximum-numbers-of-fields-in-a-form.md b/erpnext/docs/user/manual/en/customize-erpnext/articles/maximum-numbers-of-fields-in-a-form.md
index 7751a3d..8409a8a 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/articles/maximum-numbers-of-fields-in-a-form.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/maximum-numbers-of-fields-in-a-form.md
@@ -1,3 +1,5 @@
+# Maximum Numbers Of Fields In A Form
+
Sometimes while creating custom fields, you might experienced an error message like below:
> Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs
@@ -12,7 +14,7 @@
The maximum row size constrains the number (and possibly size) of columns because the total length of all columns cannot exceed this size (65,535 bytes). For example, `utf8mb3` characters require up to 3 bytes per character, so for a `VARCHAR(140)` column, the server must allocate `140 × 3 = 420` bytes per value. Consequently, a table cannot contain more than `65,535 / 420 = 156` such columns.
-In Frappe frapework, `VARCHAR(140)` type columns are created based on "Data", "Link", "Select", "Dynamic Link", "Password" and "Read Only" fieldtypes. Hence, you can create approximately 156 such columns in the system.
+In Frappé frapework, `VARCHAR(140)` type columns are created based on "Data", "Link", "Select", "Dynamic Link", "Password" and "Read Only" fieldtypes. Hence, you can create approximately 156 such columns in the system.
### Solutions:
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/articles/module-visibility.md b/erpnext/docs/user/manual/en/customize-erpnext/articles/module-visibility.md
index 191ce8a..41765ab 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/articles/module-visibility.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/module-visibility.md
@@ -1,3 +1,5 @@
+# Module Visibility
+
#Module Visibility
If you have permission on specific module, but it is still not visible, following are the possibilities of issues you should look at. Let's consider a scenario that user is permission of Website module, but not able to access it.
@@ -6,7 +8,7 @@
If module is hidden in-spite of assignment of required Role, then you should check if Website is not disabled from All Application.
-<img alt="All Applications" class="screenshot" src="{{docs_base_url}}/assets/img/articles/module-visibility-1.gif">
+<img alt="All Applications" class="screenshot" src="/docs/assets/img/articles/module-visibility-1.gif">
If Website is checked in All Application, but still not visible for the User, check if is hidden by System Manager. In the Setup module, feature called Show/Hide Modules allows System Manager to hide specific module from all the Users.
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/articles/perm-level-error-in-permission-manager.md b/erpnext/docs/user/manual/en/customize-erpnext/articles/perm-level-error-in-permission-manager.md
index 2562740..8c099cc 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/articles/perm-level-error-in-permission-manager.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/perm-level-error-in-permission-manager.md
@@ -1,6 +1,8 @@
+# Perm Level Error In Permission Manager
+
#Perm Level Error in Permission Manager
-While customizing rules in the [Permission Manager]({{docs_base_url}}/user/erpnext/user/manual/en/setting-up/users-and-permissions/role-based-permissions), you might receive an error message saying:
+While customizing rules in the [Permission Manager](/docs/user/erpnext/user/manual/en/setting-up/users-and-permissions/role-based-permissions), you might receive an error message saying:
`For System Manager _(or other role)_ at level 2 _(or other level)_ in Customer _(or other document)_ in row 8: Permission at level 0 must be set before higher levels are set.`
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/articles/search-record-by-specific-field.md b/erpnext/docs/user/manual/en/customize-erpnext/articles/search-record-by-specific-field.md
index 3dd6c68..b5aa07c 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/articles/search-record-by-specific-field.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/search-record-by-specific-field.md
@@ -1,3 +1,5 @@
+# Search Record By Specific Field
+
#Search Record by Specific Field
While creating any document (say Sales Invoice), you have to select other document id in it (say Serial No). For ease in selection, you can also make value of other field of that visible in the search result. Search By functionality enables to define field whos value will be visible in the search result.
@@ -16,12 +18,12 @@
Update Warehouse field name in the Search By field.
-<img alt="Search By in Customize Form" class="screenshot" src="{{docs_base_url}}/assets/img/articles/search-by-1.png">
+<img alt="Search By in Customize Form" class="screenshot" src="/docs/assets/img/articles/search-by-1.png">
#### Searching in Another Record.
While creating transaction, to get filtered result for Customer, you should firstly click on search magnifier.
-<img alt="Search By in Customize Form" class="screenshot" src="{{docs_base_url}}/assets/img/articles/search-by-2.png">
+<img alt="Search By in Customize Form" class="screenshot" src="/docs/assets/img/articles/search-by-2.png">
<!-- markdown -->
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/articles/set-language.md b/erpnext/docs/user/manual/en/customize-erpnext/articles/set-language.md
index ede54f2..f3204dc 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/articles/set-language.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/set-language.md
@@ -1,3 +1,5 @@
+# Set Language
+
#Change the Language
ERPNext is an multi-lingual application. It allows each user to select preferred lannguage. Following is how User can customize language in one's account.
@@ -8,13 +10,13 @@
#### 1.1 Go to My Setting
-<img alt="My Setting" class="screenshot" src="{{docs_base_url}}/assets/img/articles/change-language-1.png">
+<img alt="My Setting" class="screenshot" src="/docs/assets/img/articles/change-language-1.png">
#### 1.2 Select Language
-<img alt="Select Language" class="screenshot" src="{{docs_base_url}}/assets/img/articles/change-language-2.png">
+<img alt="Select Language" class="screenshot" src="/docs/assets/img/articles/change-language-2.png">
-<img alt="Select Language" class="screenshot" src="{{docs_base_url}}/assets/img/articles/set-language-1.gif">
+<img alt="Select Language" class="screenshot" src="/docs/assets/img/articles/set-language-1.gif">
#### 1.3 Save User
@@ -30,13 +32,13 @@
#### Set Language
-<img alt="Global Language" class="screenshot" src="{{docs_base_url}}/assets/img/articles/change-language-3.png">
+<img alt="Global Language" class="screenshot" src="/docs/assets/img/articles/change-language-3.png">
#### Save
Save System Settings, and refresh your EPRNext account. On refreshing, you should language in your ERPNext account changed as per your preference.
-<img alt="Select Language" class="screenshot" src="{{docs_base_url}}/assets/img/articles/set-language-2.gif">
+<img alt="Select Language" class="screenshot" src="/docs/assets/img/articles/set-language-2.gif">
Note: For now, we have translation available only for few languages. You can contribute to make translation better, and add new languages from [here](https://translate.erpnext.com).
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/articles/set-precision.md b/erpnext/docs/user/manual/en/customize-erpnext/articles/set-precision.md
index 4ed070f..67899e0 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/articles/set-precision.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/set-precision.md
@@ -1,3 +1,5 @@
+# Set Precision
+
#Set Precision
In ERPNext, default precision for `Float`, `Currency` and `Percent` field is three. It allows you to enter value having value upto three decimal places.
@@ -8,11 +10,11 @@
`Setup > Settings > System Settings`.
-<img alt="Global Precision" class="screenshot" src="{{docs_base_url}}/assets/img/articles/precision-1.png">
+<img alt="Global Precision" class="screenshot" src="/docs/assets/img/articles/precision-1.png">
You can also set field specific precision. To do that go to `Setup > Customize > Customize Form` and select the DocType there. Then go to the specific field row and change precision. Precision field is only visible if field-type is one of the Float, Currency and Percent.
-<img alt="Field-wise Precision" class="screenshot" src="{{docs_base_url}}/assets/img/articles/precision-2.png">
+<img alt="Field-wise Precision" class="screenshot" src="/docs/assets/img/articles/precision-2.png">
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/articles/user-restriction.md b/erpnext/docs/user/manual/en/customize-erpnext/articles/user-restriction.md
index 5868141..29eef88 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/articles/user-restriction.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/articles/user-restriction.md
@@ -10,10 +10,10 @@
Select Document Type for which you want to set user permission. After permissions are loaded for selected document, scroll to role for which you want to set restriction.
-<img alt="Sales Order" class="screenshot" src="{{docs_base_url}}/assets/img/articles/owner-restriction-1.png">
+<img alt="Sales Order" class="screenshot" src="/docs/assets/img/articles/owner-restriction-1.png">
#### Step 3: Apply User Permission
For Role to be restricted (Sales User in this case), check "If Owner".
-<img alt="S" class="screenshot" src="{{docs_base_url}}/assets/img/articles/owner-restriction-2.png">
+<img alt="S" class="screenshot" src="/docs/assets/img/articles/owner-restriction-2.png">
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/custom-doctype.md b/erpnext/docs/user/manual/en/customize-erpnext/custom-doctype.md
index 433db2d..33a5857 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/custom-doctype.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/custom-doctype.md
@@ -1,3 +1,5 @@
+# Custom Doctype
+
DocType or a Document Type is a tool to insert form in ERPNext. The forms like Sales Order,
Sales Invoices, Production Order are added as Doctype in the backend. Let's assume we are
creating a Custom Doctype for a Book.
@@ -19,7 +21,7 @@
not be able to re-produce.
1. Custom?: This field will be checked by default when adding Custom Doctype.
-<img alt="Doctype Basic" class="screenshot" src="{{docs_base_url}}/assets/img/setup/customize/doctype-basics.png">
+<img alt="Doctype Basic" class="screenshot" src="/docs/assets/img/setup/customize/doctype-basics.png">
#### Fields
@@ -34,7 +36,7 @@
1. Actions (button)
1. Attachments or Images
-<img alt="Doc fields" class="screenshot" src="{{docs_base_url}}/assets/img/setup/customize/doctype-all-fields.png">
+<img alt="Doc fields" class="screenshot" src="/docs/assets/img/setup/customize/doctype-all-fields.png">
When you add fields, you need to enter the **Type**. **Label** is optional for Section Break and Column Break. **Name** (`fieldname`) is the name of the database table column.
@@ -44,19 +46,19 @@
In this section, you can define criteria based on which document for this doctype will be named. There are multiple criterion based on which document can be named, like naming based on the value in the specific field, or based on Naming Series, or based on value provided by the user in the prompt, which will be shown when saving document. In the following example, we are doing naming based on the value in the field **book_name**.
-<img alt="Doctype Naming" class="screenshot" src="{{docs_base_url}}/assets/img/setup/customize/doctype-field-naming.png">
+<img alt="Doctype Naming" class="screenshot" src="/docs/assets/img/setup/customize/doctype-field-naming.png">
#### Permission
In this table, you should select roles and define permission roles for them for this Doctype.
-<img alt="Doctype Permissions" class="screenshot" src="{{docs_base_url}}/assets/img/setup/customize/doctype-permissions.png">
+<img alt="Doctype Permissions" class="screenshot" src="/docs/assets/img/setup/customize/doctype-permissions.png">
#### Save DocType
On saving doctype, you will get pop-up to provide name for this Doctype.
-<img alt="Doctype Save" class="screenshot" src="{{docs_base_url}}/assets/img/setup/customize/doctype-save.png">
+<img alt="Doctype Save" class="screenshot" src="/docs/assets/img/setup/customize/doctype-save.png">
#### DocType in System
@@ -65,12 +67,12 @@
`Human Resource > Document > Book`
-<img alt="Doctype List" class="screenshot" src="{{docs_base_url}}/assets/img/setup/customize/doctype-list-view.png">
+<img alt="Doctype List" class="screenshot" src="/docs/assets/img/setup/customize/doctype-list-view.png">
#### Book master
Using the fields entered, following is the master one book.
-<img alt="Doctype Form" class="screenshot" src="{{docs_base_url}}/assets/img/setup/customize/doctype-book-added.png">
+<img alt="Doctype Form" class="screenshot" src="/docs/assets/img/setup/customize/doctype-book-added.png">
{next}
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/custom-field.md b/erpnext/docs/user/manual/en/customize-erpnext/custom-field.md
index 92c5224..2c11e0d 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/custom-field.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/custom-field.md
@@ -1,3 +1,5 @@
+# Custom Field
+
Every form in the ERPNext has standard set of fields. If you need to capture some information, but there is no standard field available for it, you can insert Custom Field in a form as per your requirement.
Following are the steps to insert Custom Field in the existing form.
@@ -12,37 +14,37 @@
In the Customize Form, select Document Type in which you want to insert Custom Field. Let's assume we are inserting Custom Field in the Employee master.
-<img alt="Select Document Type" class="screenshot" src="{{docs_base_url}}/assets/img/customize/custom-field-1.gif">
+<img alt="Select Document Type" class="screenshot" src="/docs/assets/img/customize/custom-field-1.gif">
#### Insert Row for the Custom Field
In Customize Form, open the field above which you want to insert a Custom Field. Click on Insert Above.
-<img alt="Select Document Type" class="screenshot" src="{{docs_base_url}}/assets/img/customize/custom-field-2.gif">
+<img alt="Select Document Type" class="screenshot" src="/docs/assets/img/customize/custom-field-2.gif">
####Set Field Label
Custom Field's name will be set based on its Label. If you want to create Custom Field with specific name, but with different label, then you should first set Label as you want Field Name to be set. After Custom Field is saved, you can edit the Field Label again.
-<img alt="Select Document Type" class="screenshot" src="{{docs_base_url}}/assets/img/customize/custom-field-3.png">
+<img alt="Select Document Type" class="screenshot" src="/docs/assets/img/customize/custom-field-3.png">
####Select Field Type
There are various types of Field like Data, Date, Link, Select, Text and so on. Select Field Type for the Custom Field.
-<img alt="Select Document Type" class="screenshot" src="{{docs_base_url}}/assets/img/customize/custom-field-4.png">
+<img alt="Select Document Type" class="screenshot" src="/docs/assets/img/customize/custom-field-4.png">
-Click [here]({{docs_base_url}}/user/manual/en/customize-erpnext/articles/field-types.html) to learn more about types of field you can set for your Custom Field.
+Click [here](/docs/user/manual/en/customize-erpnext/articles/field-types.html) to learn more about types of field you can set for your Custom Field.
####Set Option
Based on the Field Type, value will be entered in the Options field.
-If you are creating a Link field, then in the Options, enter Doctype name with which this field will be linked. Click [here]({{docs_base_url}}/user/manual/en/customize-erpnext/articles/creating-custom-link-field.html) to learn more about creating custom link field.
+If you are creating a Link field, then in the Options, enter Doctype name with which this field will be linked. Click [here](/docs/user/manual/en/customize-erpnext/articles/creating-custom-link-field.html) to learn more about creating custom link field.
If field type is set as Select (drop down field), then all he possible result for this field should be listed in the Options field. Each possible result should be separate by row.
-<img alt="Select Document Type" class="screenshot" src="{{docs_base_url}}/assets/img/customize/custom-field-5.png">
+<img alt="Select Document Type" class="screenshot" src="/docs/assets/img/customize/custom-field-5.png">
For Data field, Option can be set to "Email" or "Phone" and the field will be validated accordingly.
@@ -63,7 +65,7 @@
After inserting required details for the Custom Field, Update Customize Form. On update, Custom Field will be inserting in the form, Employee master in this case. Before checking Employee form, reload your ERPNext account. After reload, check Employee form to see Custom Field in a form.
-<img alt="Select Document Type" class="screenshot" src="{{docs_base_url}}/assets/img/customize/custom-field-6.png">
+<img alt="Select Document Type" class="screenshot" src="/docs/assets/img/customize/custom-field-6.png">
####Deleting Custom Field
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/custom-script-fetch-values-from-master.md b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/custom-script-fetch-values-from-master.md
index bbfbe45..54f2642 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/custom-script-fetch-values-from-master.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/custom-script-fetch-values-from-master.md
@@ -1,3 +1,5 @@
+# Custom Script Fetch Values From Master
+
To pull a value of a link on selection, use the `add_fetch` method.
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/generate-item-code-based-on-custom-logic.md b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/generate-item-code-based-on-custom-logic.md
index 960aa89..ff6958b 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/generate-item-code-based-on-custom-logic.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/generate-item-code-based-on-custom-logic.md
@@ -1,3 +1,5 @@
+# Generate Item Code Based On Custom Logic
+
Add this in the Custom Script of **Item**, so that the new Item Code is
generated just before the a new Item is saved.
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/index.md b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/index.md
index 78edcfc..e8649e8 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/index.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/index.md
@@ -1,3 +1,5 @@
+# Custom Script Examples
+
### How to Create a Custom Script
Create a Custom Script (you must have System Manager role for this):
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/make-read-only-after-saving.md b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/make-read-only-after-saving.md
index 4fda1bd..e665a1c 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/make-read-only-after-saving.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/make-read-only-after-saving.md
@@ -1,3 +1,5 @@
+# Make Read Only After Saving
+
Use the method `cur_frm.set_df_property` to update the field's display.
In this script we also use the `__islocal` property of the doc to check if the
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/restrict-cancel-rights.md b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/restrict-cancel-rights.md
index 79fe9a5..cd32c81 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/restrict-cancel-rights.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/restrict-cancel-rights.md
@@ -1,3 +1,5 @@
+# Restrict Cancel Rights
+
Add a handler to `custom_before_cancel` event:
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/restrict-purpose-of-stock-entry.md b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/restrict-purpose-of-stock-entry.md
index f3efd98..97cd8f0 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/restrict-purpose-of-stock-entry.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/restrict-purpose-of-stock-entry.md
@@ -1,3 +1,5 @@
+# Restrict Purpose Of Stock Entry
+
frappe.ui.form.on("Material Request", "validate", function(frm) {
if(frappe.user=="user1@example.com" && frm.doc.purpose!="Material Receipt") {
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/restrict-user-based-on-child-record.md b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/restrict-user-based-on-child-record.md
index 849e686..ccc2180 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/restrict-user-based-on-child-record.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/restrict-user-based-on-child-record.md
@@ -1,3 +1,5 @@
+# Restrict User Based On Child Record
+
// restrict certain warehouse to Material Manager
cur_frm.cscript.custom_validate = function(doc) {
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/sales-invoice-id-based-on-sales-order-id.md b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/sales-invoice-id-based-on-sales-order-id.md
index 72dbb6d..7dd6633 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/sales-invoice-id-based-on-sales-order-id.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/sales-invoice-id-based-on-sales-order-id.md
@@ -1,3 +1,5 @@
+# Sales Invoice Id Based On Sales Order Id
+
Below script allows you to get naming series in Sales Invoice, same as of corresponding Sales Order.
Invoice uses a prefix M- but the number duplicates the SO doc name (number).
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/update-date-field-based-on-value-in-other-date-field.md b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/update-date-field-based-on-value-in-other-date-field.md
index b7a5e1c..d45f5f6 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/update-date-field-based-on-value-in-other-date-field.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/custom-script-examples/update-date-field-based-on-value-in-other-date-field.md
@@ -1,3 +1,5 @@
+# Update Date Field Based On Value In Other Date Field
+
Below script would auto-set value for the date field, based on the value in another date field.
Example: Production Due Date must be set as two days before Delivery Date. If you have Production Due Date field already, with field type as Date, as per the below given script, date will be auto-updated in it, two days prior Deliver Date.
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/index.md b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/index.md
index 1a54e8c..f5519c2 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/index.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/custom-scripts/index.md
@@ -1,10 +1,12 @@
+# Custom Scripts
+
If you wish to change any ERPNext form formats, you can do so by using Custom
Scripts. For example, if you wish to add a submit button after saving, to a
Lead form, you can do so by creating your own script.
`Setup > Customization > Custom Script`
-<img alt="Custom Script" class="screenshot" src="{{docs_base_url}}/assets/img/customize/custom-script-1.png">
+<img alt="Custom Script" class="screenshot" src="/docs/assets/img/customize/custom-script-1.png">
### Topics
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/customize-form.md b/erpnext/docs/user/manual/en/customize-erpnext/customize-form.md
index f52cee1..5f590bb 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/customize-form.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/customize-form.md
@@ -1,7 +1,9 @@
-<!--markdown-->
-Before we venture to learn form customization tool, click [here](https://frappe.github.io/frappe/user/en/tutorial/doctypes.html) to understand the architecture of forms in ERPNext. It shall help you in using Customize Form tool more efficiently.
+# Customize Form
-Customize Form is the tool which allows user to customize property of the standard fields, and insert [custom fields]({{docs_base_url}}/user/manual/en/customize-erpnext/custom-field.html) as per the requirement. Let's assume we need to set Project Name field as a mandatory field in the Sales Order form. Following are the steps which shall be followed to achieve this.
+<!--markdown-->
+Before we venture to learn form customization tool, click [here](https://frappe.io/docs/user/en/tutorial/doctypes.html) to understand the architecture of forms in ERPNext. It shall help you in using Customize Form tool more efficiently.
+
+Customize Form is the tool which allows user to customize property of the standard fields, and insert [custom fields](/docs/user/manual/en/customize-erpnext/custom-field.html) as per the requirement. Let's assume we need to set Project Name field as a mandatory field in the Sales Order form. Following are the steps which shall be followed to achieve this.
####Step 1: Go to Customize Form
@@ -11,7 +13,7 @@
You can also reach the Customize Form tool from the List Views.
-<img alt="Customize Form List" class="screenshot" src="{{docs_base_url}}/assets/img/customize/customize-form-from-list-view.gif">
+<img alt="Customize Form List" class="screenshot" src="/docs/assets/img/customize/customize-form-from-list-view.gif">
####Step 2: Select Document Type
@@ -19,7 +21,7 @@
If you reach customize form from the Setup module, or from awesome bar, then you will have to manually select Document Type in which customization needs to be made.
-<img alt="Customize Form select doctype" class="screenshot" src="{{docs_base_url}}/assets/img/customize/customize-form-select-doctype.png">
+<img alt="Customize Form select doctype" class="screenshot" src="/docs/assets/img/customize/customize-form-select-doctype.png">
####Step 3: Edit Property
@@ -27,11 +29,11 @@
To customized Project field, click on the respective row, and check "Mandatory". With this, Project field will become mandatory in the Sales Order.
-<img alt="Customize Form select doctype" class="screenshot" src="{{docs_base_url}}/assets/img/customize/customize-form-edit-property.gif">
+<img alt="Customize Form select doctype" class="screenshot" src="/docs/assets/img/customize/customize-form-edit-property.gif">
Like setting setting field Mandatory, following are the other customization options in the Customize Form tool.
-* Change [Field Type]({{docs_base_url}}/user/manual/en/customize-erpnext/articles/field-types.html).
+* Change [Field Type](/docs/user/manual/en/customize-erpnext/articles/field-types.html).
* Edit Field Labels to suit your industry/language.
* Set field precision for the Currency field.
* To hide field, check Hidden.
@@ -47,9 +49,9 @@
From Customize Form, you can also do following customizations:
-* Max Attachment Limit: Define [maximum no. of files]({{docs_base_url}}/user/manual/en/customize-erpnext/articles/increase-max-attachments.html) which can attached on a document.
+* Max Attachment Limit: Define [maximum no. of files](/docs/user/manual/en/customize-erpnext/articles/increase-max-attachments.html) which can attached on a document.
* Default Print Format: For one document type, you can have multiple print formats. In the Customize Form, you can also set default Print Format for a document.
-* Set [Title Field]({{docs_base_url}}/user/manual/en/customize-erpnext/document-title.html)
+* Set [Title Field](/docs/user/manual/en/customize-erpnext/document-title.html)
* Sort Field and Sort Order: Define field based on which documents in the list view will be sorted.
>Note: Though we want you to do everything you can to customize your ERP based on your business needs, we recommend that you do not make “wild” changes to the forms. This is because, these changes may affect certain operations and may mess up your forms. Make small changes and see its effect before doing some more.
@@ -92,7 +94,7 @@
</tr>
<tr>
<td>Field Type</td>
- <td>Click <a href="{{docs_base_url}}/user/manual/en/customize-erpnext/articles/field-types.html">here</a> to learn about of fields types.</td>
+ <td>Click <a href="/docs/user/manual/en/customize-erpnext/articles/field-types.html">here</a> to learn about of fields types.</td>
</tr>
<tr>
<td>Options</td>
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/document-title.md b/erpnext/docs/user/manual/en/customize-erpnext/document-title.md
index ab83cf2..64dad31 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/document-title.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/document-title.md
@@ -1,3 +1,5 @@
+# Document Title
+
You can customize the title of documents based on properties so that you have meaningful information for the list views.
For example the default title on **Quotation** is the customer name, but if you are dealing a few customers and sending lots of quotes to the same customer, you may want to customize.
@@ -21,14 +23,14 @@
{customer_name} for {project}
<img class="screenshot" alt = "Customize Title"
- src="{{docs_base_url}}/assets/img/customize/customize-title.gif">
+ src="/docs/assets/img/customize/customize-title.gif">
#### Fixed or Editable Titles
If your title is generated as a default title, it can be edited by the user by clicking on the heading of the document.
<img class="screenshot" alt = "Editable Title"
- src="{{docs_base_url}}/assets/img/customize/editable-title.gif">
+ src="/docs/assets/img/customize/editable-title.gif">
If you want a fixed title, you can set the rule in the **Options** property. In this way, the title will be automatically updated everytime the document is updated.
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/hiding-modules-and-features.md b/erpnext/docs/user/manual/en/customize-erpnext/hiding-modules-and-features.md
index ce8a1c3..ad4b00e 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/hiding-modules-and-features.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/hiding-modules-and-features.md
@@ -4,9 +4,9 @@
`Setup > Permissions > Show / Hide Modules`
-<img alt="Hide Features" class="screenshot" src="{{docs_base_url}}/assets/img/customize/show-hide-modules.png">
+<img alt="Hide Features" class="screenshot" src="/docs/assets/img/customize/show-hide-modules.png">
-Click [here]({{docs_base_url}}/user/manual/en/customize-erpnext/articles/module-visibility.html) to learn about other features from where icons from the desktop can be hidden.
+Click [here](/docs/user/manual/en/customize-erpnext/articles/module-visibility.html) to learn about other features from where icons from the desktop can be hidden.
> Note: Modules are automatically hidden for users that have no permissions on the documents within that module. For example, if a User has no permissions on Purchase Order, Purchase Request, Supplier, the “Buying” module will automatically hidden for that User.
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/kanban-board.md b/erpnext/docs/user/manual/en/customize-erpnext/kanban-board.md
index ccfa63a..1936c56 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/kanban-board.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/kanban-board.md
@@ -1,3 +1,5 @@
+# Kanban Board
+
#Kanban Board
Kanban is a Japanese manufacturing system in which the supply of components is regulated through the use of an instruction card sent along the production line.
@@ -8,35 +10,35 @@
To create a Kanban board in ERPNext click the Kanban dropdown on the sidebar, and select New Kanban Board.
-<img class="screenshot" alt="Add New Kanban Board" src="{{docs_base_url}}/assets/img/customize/kanban-board-1.png">
+<img class="screenshot" alt="Add New Kanban Board" src="/docs/assets/img/customize/kanban-board-1.png">
###Add new Card/Document
To add Cards on Kanban Board click Add Tasks. You can Edit a card details by click on the card and it will take you to the Task Doctype where you can further add and edit card details.
-<img class="screenshot" alt="Add card in Kanban Board" src="{{docs_base_url}}/assets/img/customize/kanban-board-2.png">
+<img class="screenshot" alt="Add card in Kanban Board" src="/docs/assets/img/customize/kanban-board-2.png">
###Update Cards/Document Status
Based on the Task status you can drag and drop the Cards in the respective column. For example if the task is work in progress you can move the card for the task from the status Open to Working.
-<img class="screenshot" alt="Move Cards on Kanban Board" src="{{docs_base_url}}/assets/img/customize/kanban-board-3.gif">
+<img class="screenshot" alt="Move Cards on Kanban Board" src="/docs/assets/img/customize/kanban-board-3.gif">
###Manage Columns
To add more columns in the Kanban board click Add columns.
-<img class="screenshot" alt="Add New column in Kanban Board" src="{{docs_base_url}}/assets/img/customize/kanban-board-4.gif">
+<img class="screenshot" alt="Add New column in Kanban Board" src="/docs/assets/img/customize/kanban-board-4.gif">
To move columns based on the priority drag and drop the columns as per requirement.
-<img class="screenshot" alt="Move columns in Kanban Board" src="{{docs_base_url}}/assets/img/customize/kanban-board-5.gif">
+<img class="screenshot" alt="Move columns in Kanban Board" src="/docs/assets/img/customize/kanban-board-5.gif">
To set Colors to a Card click drop down menu on the card and assign color to it.
-<img class="screenshot" alt="Add color to cards in Kanban Board" src="{{docs_base_url}}/assets/img/customize/kanban-board-6.gif">
+<img class="screenshot" alt="Add color to cards in Kanban Board" src="/docs/assets/img/customize/kanban-board-6.gif">
You can also Archive and Restore the columns added in a Kanban board. To do so click Archive in drop down menu on the card. Once archived you can restore the column from the list of the archived columns in the Kanban board.
-<img class="screenshot" alt="Archive and Restore in Kanban Board" src="{{docs_base_url}}/assets/img/customize/kanban-board-7.gif">
+<img class="screenshot" alt="Archive and Restore in Kanban Board" src="/docs/assets/img/customize/kanban-board-7.gif">
diff --git a/erpnext/docs/user/manual/en/customize-erpnext/print-format.md b/erpnext/docs/user/manual/en/customize-erpnext/print-format.md
index 123a613..993f92a 100644
--- a/erpnext/docs/user/manual/en/customize-erpnext/print-format.md
+++ b/erpnext/docs/user/manual/en/customize-erpnext/print-format.md
@@ -1,3 +1,5 @@
+# Print Format
+
Print Formats are the layouts that are generated when you want to Print or
Email a transaction like a Sales Invoice. There are two types of Print
Formats,
@@ -16,7 +18,7 @@
`Setup > Printing > Print Formats`
-<img alt="Print Format" class="screenshot" src="{{docs_base_url}}/assets/img/customize/print-format.png">
+<img alt="Print Format" class="screenshot" src="/docs/assets/img/customize/print-format.png">
Select the type of Print Format you want to edit and click on the “Copy”
button on the right column. A new Print Format will open up with “Is Standard”
@@ -43,7 +45,7 @@
`Setup > Printing and Branding > Print Settings`
-<img alt="Print Format" class="screenshot" src="{{docs_base_url}}/assets/img/customize/print-settings.png">
+<img alt="Print Format" class="screenshot" src="/docs/assets/img/customize/print-settings.png">
#### Example
diff --git a/erpnext/docs/user/manual/en/fleet_management/index.md b/erpnext/docs/user/manual/en/fleet_management/index.md
index 8ae3b7c..4582716 100644
--- a/erpnext/docs/user/manual/en/fleet_management/index.md
+++ b/erpnext/docs/user/manual/en/fleet_management/index.md
@@ -1,3 +1,5 @@
+# Fleet Management
+
Fleet Management module helps your Organization manage their fleet of vehicles and track their expenses.
To use Fleet Management in ERPNext,
@@ -17,15 +19,15 @@
* Enter License Plate,Make,Model,Odometer Value,Fuel Type and Fuel UOM for a quick entry.
- <img class="screenshot" alt="Vehicle" src="{{docs_base_url}}/assets/img/fleet-management/vehicle-1.1.png">
+ <img class="screenshot" alt="Vehicle" src="/docs/assets/img/fleet-management/vehicle-1.1.png">
* Enter details like Insurance,Chassis,Vehicle Value,Location and Employee.
- <img class="screenshot" alt="Vehicle" src="{{docs_base_url}}/assets/img/fleet-management/vehicle-1.2.png">
+ <img class="screenshot" alt="Vehicle" src="/docs/assets/img/fleet-management/vehicle-1.2.png">
* Enter Vehicle attributes like color,wheels,doors and last carbon check
- <img class="screenshot" alt="Vehicle" src="{{docs_base_url}}/assets/img/fleet-management/vehicle-1.3.png">
+ <img class="screenshot" alt="Vehicle" src="/docs/assets/img/fleet-management/vehicle-1.3.png">
### Vehicle Log
@@ -37,17 +39,17 @@
* Enter License Plate,Employee,Date,Odometer reading for a quick entry.
- <img class="screenshot" alt="Vehicle Log" src="{{docs_base_url}}/assets/img/fleet-management/vehicle-log-2.1.png">
+ <img class="screenshot" alt="Vehicle Log" src="/docs/assets/img/fleet-management/vehicle-log-2.1.png">
* Enter Refuelling details,Service details if applicable.
- <img class="screenshot" alt="Vehicle Log" src="{{docs_base_url}}/assets/img/fleet-management/vehicle-log-2.2.png">
+ <img class="screenshot" alt="Vehicle Log" src="/docs/assets/img/fleet-management/vehicle-log-2.2.png">
### Make Expense Claim
* Click on Make Expense Claim button .This button appears only in case of Submitted Vehicle Logs.
- <img class="screenshot" alt="Vehicle Log" src="{{docs_base_url}}/assets/img/fleet-management/expense-claim-3.1.png">
+ <img class="screenshot" alt="Vehicle Log" src="/docs/assets/img/fleet-management/expense-claim-3.1.png">
When you click on 'Make Expense Claim',
@@ -55,10 +57,10 @@
2. The sum of Fuel Expenses and Service Expenses is copied over to Expense Claim Amount.
3. Employee can submit the Expense Claim for further processing.
- <img class="screenshot" alt="Vehicle Log" src="{{docs_base_url}}/assets/img/fleet-management/expense-claim-3.2.png">
+ <img class="screenshot" alt="Vehicle Log" src="/docs/assets/img/fleet-management/expense-claim-3.2.png">
### Vehicle Expenses Report
* To track and monitor Vehicle Expenses you can use the Vehicle Expenses report.This report gives a one stop view of all your vehicle expenses month wise.
- <img class="screenshot" alt="Vehicle Log" src="{{docs_base_url}}/assets/img/fleet-management/vehicle-expenses.png">
+ <img class="screenshot" alt="Vehicle Log" src="/docs/assets/img/fleet-management/vehicle-expenses.png">
diff --git a/erpnext/docs/user/manual/en/human-resources/appraisal.md b/erpnext/docs/user/manual/en/human-resources/appraisal.md
index d3ec301..6ecb898 100644
--- a/erpnext/docs/user/manual/en/human-resources/appraisal.md
+++ b/erpnext/docs/user/manual/en/human-resources/appraisal.md
@@ -1,3 +1,5 @@
+# Appraisal
+
In ERPNext, you can manage Employee Appraisals by creating an Appraisal
Template for each role with the parameters that define the performance by
giving appropriate weightage to each parameter.
@@ -6,13 +8,13 @@
#### Step 1: Select an Appraisal Template
-<img class="screenshot" alt="Appraisal" src="{{docs_base_url}}/assets/img/human-resources/appraisal.png">
+<img class="screenshot" alt="Appraisal" src="/docs/assets/img/human-resources/appraisal.png">
After you select the template, the remaining form appears.
#### Step 2: Enter Employee Details
-<img class="screenshot" alt="Appraisal" src="{{docs_base_url}}/assets/img/human-resources/appraisal-employee.png">
+<img class="screenshot" alt="Appraisal" src="/docs/assets/img/human-resources/appraisal-employee.png">
Once the Appraisal Template is completed, you can create Appraisal records for
each period where you track performance. You can give points out of 5 for each
diff --git a/erpnext/docs/user/manual/en/human-resources/articles/employees-loan-management.md b/erpnext/docs/user/manual/en/human-resources/articles/employees-loan-management.md
index d5c4d00..a24ca93 100644
--- a/erpnext/docs/user/manual/en/human-resources/articles/employees-loan-management.md
+++ b/erpnext/docs/user/manual/en/human-resources/articles/employees-loan-management.md
@@ -10,15 +10,15 @@
#### 1.1 Employee Loan Account
-Create Group as 'Employees Loans' under Current Assets and create employee loan A/C (Ledger) under it. [Check this link for new account creation]({{docs_base_url}}/user/manual/en/setting-up/articles/managing-tree-structure-masters)
+Create Group as 'Employees Loans' under Current Assets and create employee loan A/C (Ledger) under it. [Check this link for new account creation](/docs/user/manual/en/setting-up/articles/managing-tree-structure-masters)
-
+
#### 1.2 Salaries Account
Create Group as 'Salaries' under Current Liabilities and create employee salary loan A/C (Ledger) under it.
-
+
#### 1.3 Interest Account
@@ -28,7 +28,7 @@
Once loan amount is finalized, make journal voucher to book loan payment entry. You should Credit Loan amount to Bank/Cash account and Debit Loan amount employee loan account.
-
+
### 3. Book Loan Recovery and Interest
@@ -36,13 +36,13 @@
If your employee pays separately for his/her loan installment and loan interest, then create journal voucher.
-
+
#### 3.2 Loan Adjustment in Salary
And if you deduct loan installment and interest from employees salary, then book journal entry for the same.
-
+
In the Salary Slip of an employee, then create two Deduction Types in Salary Structure. One as 'Loan Installment' and other one as 'Loan Interest'. So that you can update those values under this deduction heads.
@@ -50,6 +50,6 @@
After recovering loan and loan interest, General Ledger report will show the loan account details as follows.
-
+
<!-- markdown -->
diff --git a/erpnext/docs/user/manual/en/human-resources/articles/index.md b/erpnext/docs/user/manual/en/human-resources/articles/index.md
index 0dff60b..fb11735 100644
--- a/erpnext/docs/user/manual/en/human-resources/articles/index.md
+++ b/erpnext/docs/user/manual/en/human-resources/articles/index.md
@@ -1 +1,3 @@
+# Articles
+
{index}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/articles/leave-calculation-in-salary-slip.md b/erpnext/docs/user/manual/en/human-resources/articles/leave-calculation-in-salary-slip.md
index 7153708..7fb045c 100644
--- a/erpnext/docs/user/manual/en/human-resources/articles/leave-calculation-in-salary-slip.md
+++ b/erpnext/docs/user/manual/en/human-resources/articles/leave-calculation-in-salary-slip.md
@@ -27,7 +27,7 @@
<li>Create Holiday List (if any), and link it with Employee master.</li>
</ol>
<p>When creating Salary Slip for an Employee, following is what you will see:</p>
-<img src="{{docs_base_url}}/assets/img/articles/SGrab_282.png">
+<img src="/docs/assets/img/articles/SGrab_282.png">
<br>
<br><b>Working Days:</b> Working Days in Salary Slip are calculated based on number of days selected above. If you don't wish to consider holiday in Working Days, then you should do following setting.
<br>
@@ -46,7 +46,7 @@
<br>As indicated above, if you have LWP checked for components in the earning and deducted table, you will notice a reduction in Amount based on no. of LWP of an Employee for that month.
<br>
<br>
-<img src="{{docs_base_url}}/assets/img/articles/SGrab_283.png" width="760"><br>
+<img src="/docs/assets/img/articles/SGrab_283.png" width="760"><br>
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/attendance.md b/erpnext/docs/user/manual/en/human-resources/attendance.md
index b180d23..1cd5ad3 100644
--- a/erpnext/docs/user/manual/en/human-resources/attendance.md
+++ b/erpnext/docs/user/manual/en/human-resources/attendance.md
@@ -1,15 +1,17 @@
+# Attendance
+
An Attendance record stating that an Employee has been present on a particular
day can be created manually by:
> Human Resources > Documents > Attendance > New Attendance
-<img class="screenshot" alt="Attendence" src="{{docs_base_url}}/assets/img/human-resources/attendence.png">
+<img class="screenshot" alt="Attendence" src="/docs/assets/img/human-resources/attendence.png">
You can get a monthly report of your Attendance data by going to the “Monthly
Attendance Details” report.
-You can easily set attendance for Employees using the [Employee Attendance Tool]({{docs_base_url}}/user/manual/en/human-resources/tools/employee-attendance-tool.html)
+You can easily set attendance for Employees using the [Employee Attendance Tool](/docs/user/manual/en/human-resources/tools/employee-attendance-tool.html)
-You can also bulk upload attendence using the [Upload Attendence Tool]({{docs_base_url}}/user/manual/en/human-resources/tools/upload-attendance.html)
+You can also bulk upload attendence using the [Upload Attendence Tool](/docs/user/manual/en/human-resources/tools/upload-attendance.html)
{next}
diff --git a/erpnext/docs/user/manual/en/human-resources/daily-work-summary.md b/erpnext/docs/user/manual/en/human-resources/daily-work-summary.md
index d3ba22a..6ae15e0 100644
--- a/erpnext/docs/user/manual/en/human-resources/daily-work-summary.md
+++ b/erpnext/docs/user/manual/en/human-resources/daily-work-summary.md
@@ -12,4 +12,4 @@
You can also choose to Customize the Message you send to your employees:
-<img class="screenshot" alt="Department" src="{{docs_base_url}}/assets/img/human-resources/department.png">
+<img class="screenshot" alt="Department" src="/docs/assets/img/human-resources/department.png">
diff --git a/erpnext/docs/user/manual/en/human-resources/employee-loan-management.md b/erpnext/docs/user/manual/en/human-resources/employee-loan-management.md
index b76a226..28d28b5 100644
--- a/erpnext/docs/user/manual/en/human-resources/employee-loan-management.md
+++ b/erpnext/docs/user/manual/en/human-resources/employee-loan-management.md
@@ -10,7 +10,7 @@
Configure Loan limit and Rate of interest.
-<img class="screenshot" alt="Loan Type" src="{{docs_base_url}}/assets/img/human-resources/loan-type.png">
+<img class="screenshot" alt="Loan Type" src="/docs/assets/img/human-resources/loan-type.png">
### Employee Loan Application
@@ -18,7 +18,7 @@
> Human Resources > Employee Loan Management > Employee Loan Application > New Employee Loan Application
-<img class="screenshot" alt="Employee Loan Application" src="{{docs_base_url}}/assets/img/human-resources/employee-loan-application.png">
+<img class="screenshot" alt="Employee Loan Application" src="/docs/assets/img/human-resources/employee-loan-application.png">
#### In the Employee Loan Application,
@@ -27,7 +27,7 @@
On save, Employee can see Repayment Information and make changes if required before submitting.
-<img class="screenshot" alt="Employee Loan Application" src="{{docs_base_url}}/assets/img/human-resources/repayment-info.png">
+<img class="screenshot" alt="Employee Loan Application" src="/docs/assets/img/human-resources/repayment-info.png">
### Employee Loan
@@ -35,7 +35,7 @@
> Human Resources > Employee Loan Management > Employee Loan > New Employee Loan
-<img class="screenshot" alt="Employee Loan Application" src="{{docs_base_url}}/assets/img/human-resources/employee-loan.png">
+<img class="screenshot" alt="Employee Loan Application" src="/docs/assets/img/human-resources/employee-loan.png">
#### In the Employee Loan,
@@ -44,13 +44,13 @@
* Enter Disbursement Date and Account Info
* As soon as you hit save, the repayment schedule is generated.
-<img class="screenshot" alt="repayment Schedule" src="{{docs_base_url}}/assets/img/human-resources/repayment-schedule.png">
+<img class="screenshot" alt="repayment Schedule" src="/docs/assets/img/human-resources/repayment-schedule.png">
#### Loan repayment deduction from Salary
To auto deduct the Loan repayment from Salary, check "Repay from Salary" in Employee Loan. It will appear as Loan repayment in Salary Slip.
-<img class="screenshot" alt="Salary Slip" src="{{docs_base_url}}/assets/img/human-resources/loan-repayment-salary-slip.png">
+<img class="screenshot" alt="Salary Slip" src="/docs/assets/img/human-resources/loan-repayment-salary-slip.png">
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/employee.md b/erpnext/docs/user/manual/en/human-resources/employee.md
index fd14aa9..99cc687 100644
--- a/erpnext/docs/user/manual/en/human-resources/employee.md
+++ b/erpnext/docs/user/manual/en/human-resources/employee.md
@@ -1,9 +1,11 @@
+# Employee
+
There are many fields you can add in your Employee records.
To create new Employee go to:
> Human Resources > Employee > New
-<img class="screenshot" alt="Employee" src="{{docs_base_url}}/assets/img/human-resources/employee.png">
+<img class="screenshot" alt="Employee" src="/docs/assets/img/human-resources/employee.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/expense-claim.md b/erpnext/docs/user/manual/en/human-resources/expense-claim.md
index 1d4996d..2d7432f 100644
--- a/erpnext/docs/user/manual/en/human-resources/expense-claim.md
+++ b/erpnext/docs/user/manual/en/human-resources/expense-claim.md
@@ -1,23 +1,25 @@
+# Expense Claim
+
Expense Claim is made when Employee’s make expenses out of their pocket on behalf of the company. For example, if they take a customer out for lunch, they can make a request for reimbursement via the Expense Claim form.
To make a new Expense Claim, go to:
> HR > Expense Claim > New Expense Claim
-<img class="screenshot" alt="Expense Claim" src="{{docs_base_url}}/assets/img/human-resources/expense_claim.png">
+<img class="screenshot" alt="Expense Claim" src="/docs/assets/img/human-resources/expense_claim.png">
Set the Employee ID, date and the list of expenses that are to be claimed and
“Submit” the record.
### Set Account for Employee
Set employee's expense account on the employee form, system books an expense amount of an employee under this account.
-<img class="screenshot" alt="Expense Claim" src="{{docs_base_url}}/assets/img/human-resources/employee_account.png">
+<img class="screenshot" alt="Expense Claim" src="/docs/assets/img/human-resources/employee_account.png">
### Approving Expenses
Approver for the Expense Claim is selected by an Employee himself. Users to whom `Expense Approver` role is assigned will shown in the Expense Claim Approver field.
-After saving Expense Claim, Employee should [Assign document to Approver]({{docs_base_url}}/user/manual/en/using-eprnext/assignment.html). On assignment, approving user will also receive email notification. To automate email notification, you can also setup [Email Alert]({{docs_base_url}}/user/manual/en/setting-up/email/email-alerts.html).
+After saving Expense Claim, Employee should [Assign document to Approver](/docs/user/manual/en/using-eprnext/assignment.html). On assignment, approving user will also receive email notification. To automate email notification, you can also setup [Email Alert](/docs/user/manual/en/setting-up/email/email-alerts.html).
Expense Claim Approver can update the “Sanctioned Amounts” against Claimed Amount of an Employee. If submitting, Approval Status should be submitted to Approved or Rejected. If Approved, then Expense Claim gets submitted. If rejected, then Expen
Comments can be added in the Comments section explaining why the claim was approved or rejected.
@@ -25,27 +27,34 @@
### Booking the Expense
On submission of Expense Claim, system books an expense against the expense account and the employee account
-<img class="screenshot" alt="Expense Claim" src="{{docs_base_url}}/assets/img/human-resources/expense_claim_book.png">
+<img class="screenshot" alt="Expense Claim" src="/docs/assets/img/human-resources/expense_claim_book.png">
User can view unpaid expense claim using report "Unclaimed Expense Claims"
-<img class="screenshot" alt="Expense Claim" src="{{docs_base_url}}/assets/img/human-resources/unclaimed_expense_claims.png">
+<img class="screenshot" alt="Expense Claim" src="/docs/assets/img/human-resources/unclaimed_expense_claims.png">
### Payment for Expense Claim
To make payment against the expense claim, user has to click on Make > Bank Entry
#### Expense Claim
-<img class="screenshot" alt="Expense Claim" src="{{docs_base_url}}/assets/img/human-resources/payment.png">
+<img class="screenshot" alt="Expense Claim" src="/docs/assets/img/human-resources/payment.png">
#### Payment Entry
<img class="screenshot" alt="Expense Claim" src="{{docs_base_url}}/assets/img/human-resources/payment_entry.png">
-
Note: This amount should not be clubbed with Salary because the amount will then be taxable to the Employee.
+Alternatively, a Payment Entry can be made for an employee and all outstanding Expense Claims will be pulled in.
+
+> Accounts > Payment Entry > New Payment Entry
+
+Set the Payment Type to "Pay", the Party Type to Employee, the Party to the employee being paid and the account being paid
+from. All outstanding expense claims will be pulled in and payments amounts can be allocated to each expense.
+<img class="screenshot" alt="Expense Claim" src="{{docs_base_url}}/assets/img/human-resources/expense_claim_payment_entry.png">
+
### Linking with Task & Project
* To Link Expense Claim with Task or Project specify the Task or the Project while making an Expense Claim
-<img class="screenshot" alt="Expense Claim - Project Link" src="{{docs_base_url}}/assets/img/project/project_expense_claim_link.png">
+<img class="screenshot" alt="Expense Claim - Project Link" src="/docs/assets/img/project/project_expense_claim_link.png">
{next}
diff --git a/erpnext/docs/user/manual/en/human-resources/fleet-management.md b/erpnext/docs/user/manual/en/human-resources/fleet-management.md
index e55caa5..d7c4564 100644
--- a/erpnext/docs/user/manual/en/human-resources/fleet-management.md
+++ b/erpnext/docs/user/manual/en/human-resources/fleet-management.md
@@ -1,3 +1,5 @@
+# Fleet Management
+
Fleet Management section of Human Resources helps your Organization manage their fleet of vehicles and track their expenses.
To use Fleet Management in ERPNext,
@@ -17,15 +19,15 @@
* Enter License Plate, Make, Model, Odometer Value, Fuel Type and Fuel UOM for a quick entry.
- <img class="screenshot" alt="Vehicle" src="{{docs_base_url}}/assets/img/human-resources/vehicle-1.1.png">
+ <img class="screenshot" alt="Vehicle" src="/docs/assets/img/human-resources/vehicle-1.1.png">
* Enter details like Insurance, Chassis, Vehicle Value, Location and Employee.
- <img class="screenshot" alt="Vehicle" src="{{docs_base_url}}/assets/img/human-resources/vehicle-1.2.png">
+ <img class="screenshot" alt="Vehicle" src="/docs/assets/img/human-resources/vehicle-1.2.png">
* Enter Vehicle attributes like color, wheels, doors and last carbon check
- <img class="screenshot" alt="Vehicle" src="{{docs_base_url}}/assets/img/human-resources/vehicle-1.3.png">
+ <img class="screenshot" alt="Vehicle" src="/docs/assets/img/human-resources/vehicle-1.3.png">
### Vehicle Log
@@ -37,17 +39,17 @@
* Enter License Plate, Employee, Date, Odometer reading for a quick entry.
- <img class="screenshot" alt="Vehicle Log" src="{{docs_base_url}}/assets/img/human-resources/vehicle-log-2.1.png">
+ <img class="screenshot" alt="Vehicle Log" src="/docs/assets/img/human-resources/vehicle-log-2.1.png">
* Enter Refueling details, Service details if applicable.
- <img class="screenshot" alt="Vehicle Log" src="{{docs_base_url}}/assets/img/human-resources/vehicle-log-2.2.png">
+ <img class="screenshot" alt="Vehicle Log" src="/docs/assets/img/human-resources/vehicle-log-2.2.png">
### Make Expense Claim
* Click on Make Expense Claim button. This button appears only in case of Submitted Vehicle Logs.
- <img class="screenshot" alt="Vehicle Log" src="{{docs_base_url}}/assets/img/human-resources/expense-claim-3.1.png">
+ <img class="screenshot" alt="Vehicle Log" src="/docs/assets/img/human-resources/expense-claim-3.1.png">
When you click on 'Make Expense Claim',
@@ -55,10 +57,10 @@
2. The sum of Fuel Expenses and Service Expenses is copied over to Expense Claim Amount.
3. Employee can submit the Expense Claim for further processing.
- <img class="screenshot" alt="Vehicle Log" src="{{docs_base_url}}/assets/img/human-resources/expense-claim-3.2.png">
+ <img class="screenshot" alt="Vehicle Log" src="/docs/assets/img/human-resources/expense-claim-3.2.png">
### Vehicle Expenses Report
* To track and monitor Vehicle Expenses you can use the Vehicle Expenses report.This report gives a one stop view of all your vehicle expenses month wise.
- <img class="screenshot" alt="Vehicle Log" src="{{docs_base_url}}/assets/img/human-resources/vehicle-expenses.png">
+ <img class="screenshot" alt="Vehicle Log" src="/docs/assets/img/human-resources/vehicle-expenses.png">
diff --git a/erpnext/docs/user/manual/en/human-resources/holiday-list.md b/erpnext/docs/user/manual/en/human-resources/holiday-list.md
index c1e76f1..0c0463d 100644
--- a/erpnext/docs/user/manual/en/human-resources/holiday-list.md
+++ b/erpnext/docs/user/manual/en/human-resources/holiday-list.md
@@ -1,3 +1,5 @@
+# Holiday List
+
#Holiday List
Holiday List is a list which contains the dates of holidays.
@@ -14,22 +16,22 @@
Give a name to Holiday List. It can be based in Fiscal Year or location or department as application. Also select From and To Date for the Holiday List.
-<img class="screenshot" alt="Holiday List" src="{{docs_base_url}}/assets/img/human-resources/holiday-list-1.png">
+<img class="screenshot" alt="Holiday List" src="/docs/assets/img/human-resources/holiday-list-1.png">
You can quickly add Weekly Off in the Holiday List as following.
-<img class="screenshot" alt="Holiday List" src="{{docs_base_url}}/assets/img/human-resources/holiday-list-2.gif">
+<img class="screenshot" alt="Holiday List" src="/docs/assets/img/human-resources/holiday-list-2.gif">
After that, you can also add specific days (like festival holidays) manually.
-<img class="screenshot" alt="Holiday List" src="{{docs_base_url}}/assets/img/human-resources/holiday-list-3.png">
+<img class="screenshot" alt="Holiday List" src="/docs/assets/img/human-resources/holiday-list-3.png">
### Holiday List in Employee
If you have created multiple Holiday List, then select specific Holiday List for an Employee in the respective master.
-<img class="screenshot" alt="Holiday List" src="{{docs_base_url}}/assets/img/human-resources/holiday-list-4.png">
+<img class="screenshot" alt="Holiday List" src="/docs/assets/img/human-resources/holiday-list-4.png">
When an Employee applies for the Leave, then days mentioned in the Holiday List will not be counted, as they are holiday already. For more configuration option in Holiday List, check `HR > HR Settings`.
diff --git a/erpnext/docs/user/manual/en/human-resources/human-resource-setup.md b/erpnext/docs/user/manual/en/human-resources/human-resource-setup.md
index 8f29974..88b2d28 100644
--- a/erpnext/docs/user/manual/en/human-resources/human-resource-setup.md
+++ b/erpnext/docs/user/manual/en/human-resources/human-resource-setup.md
@@ -1,3 +1,5 @@
+# Human Resource Setup
+
The HR module has a setup process where you create the masters for all the
major activities.
diff --git a/erpnext/docs/user/manual/en/human-resources/human-resources-reports.md b/erpnext/docs/user/manual/en/human-resources/human-resources-reports.md
index 248a49a..406dbda 100644
--- a/erpnext/docs/user/manual/en/human-resources/human-resources-reports.md
+++ b/erpnext/docs/user/manual/en/human-resources/human-resources-reports.md
@@ -4,37 +4,37 @@
Employee Leave Balance Report shows employees and their respective balance leaves under various leave types. Report is generated as per the number of allowed leaves.
-<img alt="Employee Leave Balance" class="screenshot" src="{{docs_base_url}}/assets/img/human-resources/employee-leave-balance-report.png">
+<img alt="Employee Leave Balance" class="screenshot" src="/docs/assets/img/human-resources/employee-leave-balance-report.png">
### Employee Birthday
Employee Birthday Report shows Birthdays of your employees.
-<img alt="Employee Birthday" class="screenshot" src="{{docs_base_url}}/assets/img/human-resources/employee-birthday-report.png">
+<img alt="Employee Birthday" class="screenshot" src="/docs/assets/img/human-resources/employee-birthday-report.png">
### Employee Information
Employee Information Report shows Report View of important information recorded in Employee master.
-<img alt="Employee Information" class="screenshot" src="{{docs_base_url}}/assets/img/human-resources/employee-information-report.png">
+<img alt="Employee Information" class="screenshot" src="/docs/assets/img/human-resources/employee-information-report.png">
### Employee Holiday Attendance
Employee Holiday Attendance shows the list of Employees who attended on Holidays.
-<img alt="Employee Information" class="screenshot" src="{{docs_base_url}}/assets/img/human-resources/employee-holiday-report.png">
+<img alt="Employee Information" class="screenshot" src="/docs/assets/img/human-resources/employee-holiday-report.png">
### Monthly Salary Register
Monthly Salary Register shows net pay and its components of employee(s) at a glance.
-<img alt="Monthly Salary Register" class="screenshot" src="{{docs_base_url}}/assets/img/human-resources/monthly-salary-register-report.png">
+<img alt="Monthly Salary Register" class="screenshot" src="/docs/assets/img/human-resources/monthly-salary-register-report.png">
### Monthly Attendance Sheet
Monthly Attendance Sheet shows monthly attendance of selected employee at a glance.
-<img alt="Monthly Attendance Sheet" class="screenshot" src="{{docs_base_url}}/assets/img/human-resources/monthly-attendance-sheet-report.png">
+<img alt="Monthly Attendance Sheet" class="screenshot" src="/docs/assets/img/human-resources/monthly-attendance-sheet-report.png">
{next}
diff --git a/erpnext/docs/user/manual/en/human-resources/index.md b/erpnext/docs/user/manual/en/human-resources/index.md
index 02fcfc6..5191505 100644
--- a/erpnext/docs/user/manual/en/human-resources/index.md
+++ b/erpnext/docs/user/manual/en/human-resources/index.md
@@ -1,3 +1,5 @@
+# Human Resources
+
The Human Resources (HR) Module covers the processes linked to managing a team
of co-workers. Most important feature here is processing the payroll by using
Process Payroll to generate Salary Slips. Most countries have complex tax
diff --git a/erpnext/docs/user/manual/en/human-resources/job-applicant.md b/erpnext/docs/user/manual/en/human-resources/job-applicant.md
index 767780f..d13cf19 100644
--- a/erpnext/docs/user/manual/en/human-resources/job-applicant.md
+++ b/erpnext/docs/user/manual/en/human-resources/job-applicant.md
@@ -1,10 +1,12 @@
-You can mantain a list of People who have applied for a [Job Opening]({{docs_base_url}}/user/manual/en/human-resources/job-opening.html).
+# Job Applicant
+
+You can mantain a list of People who have applied for a [Job Opening](/docs/user/manual/en/human-resources/job-opening.html).
To create a new Job Applicant go to
> Human Resource > Job Applicant > New
-<img class="screenshot" alt="Job Applicant" src="{{docs_base_url}}/assets/img/human-resources/job-applicant.png">
+<img class="screenshot" alt="Job Applicant" src="/docs/assets/img/human-resources/job-applicant.png">
### Linking with an Email Account
@@ -20,6 +22,6 @@
* In 'Append To' select 'Job Applicant'
-<img class="screenshot" alt="Email Account" src="{{docs_base_url}}/assets/img/human-resources/email-account.png">
+<img class="screenshot" alt="Email Account" src="/docs/assets/img/human-resources/email-account.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/job-opening.md b/erpnext/docs/user/manual/en/human-resources/job-opening.md
index 7e4f0c3..e198caf 100644
--- a/erpnext/docs/user/manual/en/human-resources/job-opening.md
+++ b/erpnext/docs/user/manual/en/human-resources/job-opening.md
@@ -1,10 +1,12 @@
+# Job Opening
+
You can make a record of the open vacancies in your company using Job Opening.
To create a new Job Opening go to
> Human Resource > Job Opening > New
-<img class="screenshot" alt="Job Opening" src="{{docs_base_url}}/assets/img/human-resources/job-opening.png">
+<img class="screenshot" alt="Job Opening" src="/docs/assets/img/human-resources/job-opening.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/leave-application.md b/erpnext/docs/user/manual/en/human-resources/leave-application.md
index 824cd04..438dbba 100644
--- a/erpnext/docs/user/manual/en/human-resources/leave-application.md
+++ b/erpnext/docs/user/manual/en/human-resources/leave-application.md
@@ -1,3 +1,5 @@
+# Leave Application
+
If your company has a formal system where Employees have to apply for leaves
to be able to qualify as paid leaveas, you can create Leave Application to
track approval and usage of leaves. You have to mention the Employee, Leave
@@ -5,7 +7,7 @@
> Human Resources > Leave Application > New Leave Application
-<img class="screenshot" alt="Leave Application" src="{{docs_base_url}}/assets/img/human-resources/leave-application.png">
+<img class="screenshot" alt="Leave Application" src="/docs/assets/img/human-resources/leave-application.png">
###Setting Leave Approver
@@ -13,12 +15,12 @@
* You need to mention a list of Leave Approvers against an Employee in the Employee Master.
-<img class="screenshot" alt="Leave Approver" src="{{docs_base_url}}/assets/img/human-resources/employee-leave-approver.png">
+<img class="screenshot" alt="Leave Approver" src="/docs/assets/img/human-resources/employee-leave-approver.png">
> Tip : If you want all users to create their own Leave Applications, you can set
their “Employee ID” as a match rule in the Leave Application Permission
-settings. See the earlier discussion on [Setting Up Permissions]({{docs_base_url}}/user/manual/en/setting-up/users-and-permissions/user-permissions.html)
+settings. See the earlier discussion on [Setting Up Permissions](/docs/user/manual/en/setting-up/users-and-permissions/user-permissions.html)
for more info.
-You assign Leaves aginast an Employee check [Leave Allocation]({{docs_base_url}}/user/manual/en/human-resources/leave.html)
+You assign Leaves aginast an Employee check [Leave Allocation](/docs/user/manual/en/human-resources/leave.html)
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/leave.md b/erpnext/docs/user/manual/en/human-resources/leave.md
index 5b32a2b..cd81269 100644
--- a/erpnext/docs/user/manual/en/human-resources/leave.md
+++ b/erpnext/docs/user/manual/en/human-resources/leave.md
@@ -1,3 +1,5 @@
+# Leave
+
#Overview
This section enables you to manage leave schedule of your organization. It also explains the way employees can apply for leaves.
Employees create leave request and manager (leave approver) approves or rejects the request. You can select from a number of leave types such as sick leave, casual leave, privilege leave and so on. You can also allocate leaves to your employees and generate reports to track leaves record.
@@ -12,7 +14,7 @@
requirement.
<img class="screenshot" alt="New Leave Type"
- src="{{docs_base_url}}/assets/img/human-resources/new-leave-type.png">
+ src="/docs/assets/img/human-resources/new-leave-type.png">
**Max Days Leave Allowed:** It refers to maximum number of days this particular Leave Type can be availed at a stretch. If an employee exceeds the maximum number of days under a particular Leave Type, his/her extended leave may be considered as ‘Leave Without Pay’ and this may affect his/her salary calculation.
@@ -45,7 +47,7 @@
To allocate leaves to an Employee, select the period and the number of leaves you want to allocate. You can also add unused leaves from previous allocation period.
<img class="screenshot" alt="Manual Leave Allocation"
- src="{{docs_base_url}}/assets/img/human-resources/manual-leave-allocation.png">
+ src="/docs/assets/img/human-resources/manual-leave-allocation.png">
###Via Leave Allocation Tool
> Human Resources > Tools > Leave Allocation Tool
@@ -53,7 +55,7 @@
This tool enables you to allocate leaves for a category of employees, instead of individual ones. You can allocate leaves based on Employee Type, Branch, Department and Designation. Leave Allocation Tool is also known as Leave Control Panel.
<img class="screenshot" alt="Leave Allocation Tool"
- src="{{docs_base_url}}/assets/img/human-resources/leave-allocation-tool.png">
+ src="/docs/assets/img/human-resources/leave-allocation-tool.png">
---
@@ -71,7 +73,7 @@
- Employee gets notification on the status of his/her Leave Application
<img class="screenshot" alt="Leave Allocation Tool"
- src="{{docs_base_url}}/assets/img/human-resources/new-leave-application.png">
+ src="/docs/assets/img/human-resources/new-leave-application.png">
**Notes:**
@@ -89,4 +91,4 @@
Leave Block List is a list of dates in a year, on which employees can not apply for leave. You can define a list of users who can approve Leave Application on blocked days, in case of urgency. You can also define whether the list will applied on entire company or any specific departments.
<img class="screenshot" alt="Leave Allocation Tool"
- src="{{docs_base_url}}/assets/img/human-resources/leave-block-list.png">
\ No newline at end of file
+ src="/docs/assets/img/human-resources/leave-block-list.png">
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/offer-letter.md b/erpnext/docs/user/manual/en/human-resources/offer-letter.md
index 9e8c966..1df1a38 100644
--- a/erpnext/docs/user/manual/en/human-resources/offer-letter.md
+++ b/erpnext/docs/user/manual/en/human-resources/offer-letter.md
@@ -1,3 +1,5 @@
+# Offer Letter
+
Offer Letter is given to candidate after Interview & selection which states the offered salary package,
designation, grade, department working, no of days entitled for leave.
@@ -5,12 +7,12 @@
> Human Resource > Offer Letter > New
-<img class="screenshot" alt="Offer Letter" src="{{docs_base_url}}/assets/img/human-resources/offer-letter.png">
+<img class="screenshot" alt="Offer Letter" src="/docs/assets/img/human-resources/offer-letter.png">
-> Note: An offer letter can be made only against a [Job Applicant]({{docs_base_url}}/user/manual/en/human-resources/job-applicant.html)
+> Note: An offer letter can be made only against a [Job Applicant](/docs/user/manual/en/human-resources/job-applicant.html)
There is a pre-designed print format to print you offer letter.
-<img class="screenshot" alt="Offer Letter" src="{{docs_base_url}}/assets/img/human-resources/offer-letter-print.png">
+<img class="screenshot" alt="Offer Letter" src="/docs/assets/img/human-resources/offer-letter-print.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/salary-and-payroll.md b/erpnext/docs/user/manual/en/human-resources/salary-and-payroll.md
index 48ff96b..e902617 100644
--- a/erpnext/docs/user/manual/en/human-resources/salary-and-payroll.md
+++ b/erpnext/docs/user/manual/en/human-resources/salary-and-payroll.md
@@ -1,3 +1,5 @@
+# Salary And Payroll
+
Salary is a fixed amount of money or compensation paid to an employee by an employer in return for the work performed .
Payroll is the administration of financial records of employees' salaries, wages, bonuses, net pay, and deductions.
@@ -44,7 +46,7 @@
#### Figure 1.1:Salary Structure
-<img class="screenshot" alt="Salary Structure" src="{{docs_base_url}}/assets/img/human-resources/salary-structure.png">
+<img class="screenshot" alt="Salary Structure" src="/docs/assets/img/human-resources/salary-structure.png">
### In the Salary Structure,
@@ -53,7 +55,7 @@
#### Figure 1.2:Salary Structure for Salary Slip based on Timesheet
-<img class="screenshot" alt="Salary Structure" src="{{docs_base_url}}/assets/img/human-resources/salary-timesheet.png">
+<img class="screenshot" alt="Salary Structure" src="/docs/assets/img/human-resources/salary-timesheet.png">
### Salary Slip Based on Timesheet
@@ -70,20 +72,20 @@
#### Figure 1.3:Condition and Formula
-<img class="screenshot" alt="Salary Structure" src="{{docs_base_url}}/assets/img/human-resources/condition-formula.png">
+<img class="screenshot" alt="Salary Structure" src="/docs/assets/img/human-resources/condition-formula.png">
* Condition and Amount
#### Figure 1.4:Condition and Amount
-<img class="screenshot" alt="Salary Structure" src="{{docs_base_url}}/assets/img/human-resources/condition-amount.png">
+<img class="screenshot" alt="Salary Structure" src="/docs/assets/img/human-resources/condition-amount.png">
* Only Formula
* Only Amount
#### Figure 1.5:Account Details
-<img class="screenshot" alt="Salary Structure" src="{{docs_base_url}}/assets/img/human-resources/salary-structure-account.png">
+<img class="screenshot" alt="Salary Structure" src="/docs/assets/img/human-resources/salary-structure-account.png">
* Select Mode of Payment and Payment Account for the Salary Slips which will be generated using this Salary Structure
@@ -121,7 +123,7 @@
#### Figure 2: Salary Slip
-<img class="screenshot" alt="Salary Slip" src="{{docs_base_url}}/assets/img/human-resources/salary-slip.png">
+<img class="screenshot" alt="Salary Slip" src="/docs/assets/img/human-resources/salary-slip.png">
You can also create salary slip for multiple employees using Process Payroll:
@@ -129,7 +131,7 @@
#### Figure 3: Process Payroll
-<img class="screenshot" alt="Process Payroll" src="{{docs_base_url}}/assets/img/human-resources/process-payroll.png">
+<img class="screenshot" alt="Process Payroll" src="/docs/assets/img/human-resources/process-payroll.png">
In Process Payroll,
@@ -164,7 +166,7 @@
#### Figure 3.1: Make Bank Entry
-<img class="screenshot" alt="Process Payroll" src="{{docs_base_url}}/assets/img/human-resources/bank-entry.png">
+<img class="screenshot" alt="Process Payroll" src="/docs/assets/img/human-resources/bank-entry.png">
{next}
diff --git a/erpnext/docs/user/manual/en/human-resources/setup/branch.md b/erpnext/docs/user/manual/en/human-resources/setup/branch.md
index 8116ca4..75c0c43 100644
--- a/erpnext/docs/user/manual/en/human-resources/setup/branch.md
+++ b/erpnext/docs/user/manual/en/human-resources/setup/branch.md
@@ -1,5 +1,7 @@
+# Branch
+
Branches of your organization
-<img class="screenshot" alt="Branch" src="{{docs_base_url}}/assets/img/human-resources/branch.png">
+<img class="screenshot" alt="Branch" src="/docs/assets/img/human-resources/branch.png">
{next}
diff --git a/erpnext/docs/user/manual/en/human-resources/setup/deduction-type.md b/erpnext/docs/user/manual/en/human-resources/setup/deduction-type.md
index 4371b62..39e7e2a 100644
--- a/erpnext/docs/user/manual/en/human-resources/setup/deduction-type.md
+++ b/erpnext/docs/user/manual/en/human-resources/setup/deduction-type.md
@@ -1,10 +1,12 @@
+# Deduction Type
+
You can make a record of the tax and other salary deductions and describe it as Deduction Type
To create a new Deduction Type
> Human Resource > Setup > Deduction Type > New
-<img class="screenshot" alt="Deduction Type" src="{{docs_base_url}}/assets/img/human-resources/deduction-type.png">
+<img class="screenshot" alt="Deduction Type" src="/docs/assets/img/human-resources/deduction-type.png">
{next}
diff --git a/erpnext/docs/user/manual/en/human-resources/setup/department.md b/erpnext/docs/user/manual/en/human-resources/setup/department.md
index 1b088b1..9eb4245 100644
--- a/erpnext/docs/user/manual/en/human-resources/setup/department.md
+++ b/erpnext/docs/user/manual/en/human-resources/setup/department.md
@@ -1,5 +1,7 @@
+# Department
+
Departments in your organization
-<img class="screenshot" alt="Department" src="{{docs_base_url}}/assets/img/human-resources/department.png">
+<img class="screenshot" alt="Department" src="/docs/assets/img/human-resources/department.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/setup/designation.md b/erpnext/docs/user/manual/en/human-resources/setup/designation.md
index 1de779e..5ac771f 100644
--- a/erpnext/docs/user/manual/en/human-resources/setup/designation.md
+++ b/erpnext/docs/user/manual/en/human-resources/setup/designation.md
@@ -1,5 +1,7 @@
+# Designation
+
Designations in your organization
-<img class="screenshot" alt="Designation" src="{{docs_base_url}}/assets/img/human-resources/designation.png">
+<img class="screenshot" alt="Designation" src="/docs/assets/img/human-resources/designation.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/setup/earning-type.md b/erpnext/docs/user/manual/en/human-resources/setup/earning-type.md
index e5c35c6..1758663 100644
--- a/erpnext/docs/user/manual/en/human-resources/setup/earning-type.md
+++ b/erpnext/docs/user/manual/en/human-resources/setup/earning-type.md
@@ -1,10 +1,12 @@
+# Earning Type
+
You can make a record of the Salary Components and describe it as Earning Type
To create a new Earning Type
> Human Resource > Setup > Earning Type > New
-<img class="screenshot" alt="Earning Type" src="{{docs_base_url}}/assets/img/human-resources/earning-type.png">
+<img class="screenshot" alt="Earning Type" src="/docs/assets/img/human-resources/earning-type.png">
{next}
diff --git a/erpnext/docs/user/manual/en/human-resources/setup/employment-type.md b/erpnext/docs/user/manual/en/human-resources/setup/employment-type.md
index 37d0fd3..de07ac9 100644
--- a/erpnext/docs/user/manual/en/human-resources/setup/employment-type.md
+++ b/erpnext/docs/user/manual/en/human-resources/setup/employment-type.md
@@ -1,5 +1,7 @@
+# Employment Type
+
Various employment contracts you have with your employees.
-<img class="screenshot" alt="Employment Type" src="{{docs_base_url}}/assets/img/human-resources/employment-type.png">
+<img class="screenshot" alt="Employment Type" src="/docs/assets/img/human-resources/employment-type.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/setup/hr-settings.md b/erpnext/docs/user/manual/en/human-resources/setup/hr-settings.md
index 1741df4..a12bcdb 100644
--- a/erpnext/docs/user/manual/en/human-resources/setup/hr-settings.md
+++ b/erpnext/docs/user/manual/en/human-resources/setup/hr-settings.md
@@ -2,6 +2,6 @@
GLobal settings for HR related documents
-<img class="screenshot" alt="HR Settings" src="{{docs_base_url}}/assets/img/human-resources/hr-settings.png">
+<img class="screenshot" alt="HR Settings" src="/docs/assets/img/human-resources/hr-settings.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/setup/index.md b/erpnext/docs/user/manual/en/human-resources/setup/index.md
index 0dff60b..59ddddf 100644
--- a/erpnext/docs/user/manual/en/human-resources/setup/index.md
+++ b/erpnext/docs/user/manual/en/human-resources/setup/index.md
@@ -1 +1,3 @@
+# Setup
+
{index}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/tools/employee-attendance-tool.md b/erpnext/docs/user/manual/en/human-resources/tools/employee-attendance-tool.md
index f0d6e5f..dfc350e 100644
--- a/erpnext/docs/user/manual/en/human-resources/tools/employee-attendance-tool.md
+++ b/erpnext/docs/user/manual/en/human-resources/tools/employee-attendance-tool.md
@@ -1,9 +1,11 @@
+# Employee Attendance Tool
+
To go the attendance tool, go to:
> Human Resources > Tools > Employee Attendance Tool
This tool allows you to add attendance records for multiple employees quickly.
-<img class="screenshot" alt="Attendence upload" src="{{docs_base_url}}/assets/img/human-resources/employee-attendance-tool.png">
+<img class="screenshot" alt="Attendence upload" src="/docs/assets/img/human-resources/employee-attendance-tool.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/tools/index.md b/erpnext/docs/user/manual/en/human-resources/tools/index.md
index 0dff60b..79547ee 100644
--- a/erpnext/docs/user/manual/en/human-resources/tools/index.md
+++ b/erpnext/docs/user/manual/en/human-resources/tools/index.md
@@ -1 +1,3 @@
+# Tools
+
{index}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/tools/upload-attendance.md b/erpnext/docs/user/manual/en/human-resources/tools/upload-attendance.md
index adfc66d..7a45002 100644
--- a/erpnext/docs/user/manual/en/human-resources/tools/upload-attendance.md
+++ b/erpnext/docs/user/manual/en/human-resources/tools/upload-attendance.md
@@ -1,9 +1,11 @@
+# Upload Attendance
+
This tool helps you to upload bulk attendence from a csv file.
To upload the attendance go to:
> Human Resources > Upload Attendance
-<img class="screenshot" alt="Attendence upload" src="{{docs_base_url}}/assets/img/human-resources/attendence-upload.png">
+<img class="screenshot" alt="Attendence upload" src="/docs/assets/img/human-resources/attendence-upload.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/human-resources/training.md b/erpnext/docs/user/manual/en/human-resources/training.md
index 5d55b6c..39b9790 100644
--- a/erpnext/docs/user/manual/en/human-resources/training.md
+++ b/erpnext/docs/user/manual/en/human-resources/training.md
@@ -1,8 +1,10 @@
+# Training
+
### Training Event
Schedule seminars, workshops, conferences etc using Training Event. You can also invite your employees to attend the event using this feature.
-<img class="screenshot" alt="Employee" src="{{docs_base_url}}/assets/img/human-resources/training_event.png">
+<img class="screenshot" alt="Employee" src="/docs/assets/img/human-resources/training_event.png">
### Inviting Employees for Event
@@ -12,17 +14,17 @@
The status is changed to 'Invited' when an invitation email is sent to the employee by the system.
When an Employee confirms his/her presence for the event you can change the status to 'Confirmed'.
-<img class="screenshot" alt="Employee" src="{{docs_base_url}}/assets/img/human-resources/training_event_employee.png">
+<img class="screenshot" alt="Employee" src="/docs/assets/img/human-resources/training_event_employee.png">
### Training Result
After compleation of the training Employee Wise training results can be stored based on the Feedback received from the Trainer.
-<img class="screenshot" alt="Employee" src="{{docs_base_url}}/assets/img/human-resources/training_result.png">
+<img class="screenshot" alt="Employee" src="/docs/assets/img/human-resources/training_result.png">
### Trainig Feedback
Collect feedback regarding the event from your Employees using Training Feedback.
-<img class="screenshot" alt="Employee" src="{{docs_base_url}}/assets/img/human-resources/training_feedback.png">
+<img class="screenshot" alt="Employee" src="/docs/assets/img/human-resources/training_feedback.png">
diff --git a/erpnext/docs/user/manual/en/introduction/concepts-and-terms.md b/erpnext/docs/user/manual/en/introduction/concepts-and-terms.md
index 7e261b8..3a51286 100644
--- a/erpnext/docs/user/manual/en/introduction/concepts-and-terms.md
+++ b/erpnext/docs/user/manual/en/introduction/concepts-and-terms.md
@@ -1,3 +1,5 @@
+# Concepts And Terms
+
Before you start implementation, lets get familiar with the terminology that
is used and some basic concepts in ERPNext.
diff --git a/erpnext/docs/user/manual/en/introduction/do-i-need-an-erp.md b/erpnext/docs/user/manual/en/introduction/do-i-need-an-erp.md
index 0c2a0a5..278804d 100644
--- a/erpnext/docs/user/manual/en/introduction/do-i-need-an-erp.md
+++ b/erpnext/docs/user/manual/en/introduction/do-i-need-an-erp.md
@@ -1,3 +1,5 @@
+# Do I Need An Erp
+
ERPNext is a modern tool that covers not only accounting but also all other
business functions, on an integrated platform. It has many benefits over both
traditional accounting as well as ERP applications.
diff --git a/erpnext/docs/user/manual/en/introduction/getting-started-with-erpnext.md b/erpnext/docs/user/manual/en/introduction/getting-started-with-erpnext.md
index 7e783f6..4aae00e 100644
--- a/erpnext/docs/user/manual/en/introduction/getting-started-with-erpnext.md
+++ b/erpnext/docs/user/manual/en/introduction/getting-started-with-erpnext.md
@@ -1,3 +1,9 @@
+# Getting Started With Erpnext
+
+<!-- Getting Started with ERPNext-->
+
+# Getting Started with ERPNext
+
There are many ways to get started with ERPNext.
### 1\. See the Demo
@@ -10,7 +16,7 @@
### 2\. Start a Free Account at ERPNext.com
-ERPNext.com is managed by the organization (Frappe) that publishes ERPNext.
+ERPNext.com is managed by the organization (Frappé) that publishes ERPNext.
You can start with your own account by [signing up on the
website](https://erpnext.com).
@@ -30,6 +36,6 @@
### 4\. Install ERPNext on your Unix/Linux/Mac machine
-If you are familiar with installing applications on *nix platforms, read the instructions on how to install using [Frappe Bench](https://github.com/frappe/bench).
+If you are familiar with installing applications on *nix platforms, read the instructions on how to install using [Frappé Bench](https://github.com/frappe/bench).
{next}
diff --git a/erpnext/docs/user/manual/en/introduction/implementation-strategy.md b/erpnext/docs/user/manual/en/introduction/implementation-strategy.md
index bc494ca..0a10871 100644
--- a/erpnext/docs/user/manual/en/introduction/implementation-strategy.md
+++ b/erpnext/docs/user/manual/en/introduction/implementation-strategy.md
@@ -1,3 +1,5 @@
+# Implementation Strategy
+
Before you start managing your Operations in EPRNext, you must first become
familiar with the system and the terms used. For this we recommend
implementation should happen in two phases.
diff --git a/erpnext/docs/user/manual/en/introduction/index.md b/erpnext/docs/user/manual/en/introduction/index.md
index f1bcb49..fcaf43e 100644
--- a/erpnext/docs/user/manual/en/introduction/index.md
+++ b/erpnext/docs/user/manual/en/introduction/index.md
@@ -1,3 +1,5 @@
+# Introduction
+
## What is an ERP and why should I care?
(If you are already convinced you need an all-in-one system for your
diff --git a/erpnext/docs/user/manual/en/introduction/key-workflows.md b/erpnext/docs/user/manual/en/introduction/key-workflows.md
index bb03269..9196014 100644
--- a/erpnext/docs/user/manual/en/introduction/key-workflows.md
+++ b/erpnext/docs/user/manual/en/introduction/key-workflows.md
@@ -3,10 +3,10 @@
This diagram covers how ERPNext tracks your company information across key
functions. This diagram does not cover all the features of ERPNext.
-
+
-<img class="screenshot" alt="Workflow" src="{{docs_base_url}}/assets/img/setup/overview.png">
+<img class="screenshot" alt="Workflow" src="/docs/assets/img/setup/overview.png">
_Note: Not all of the steps are mandatory. ERPNext allows you to freely skip
steps if you want to simplify the process._
diff --git a/erpnext/docs/user/manual/en/introduction/open-source.md b/erpnext/docs/user/manual/en/introduction/open-source.md
index 0089ba8..18d61de 100644
--- a/erpnext/docs/user/manual/en/introduction/open-source.md
+++ b/erpnext/docs/user/manual/en/introduction/open-source.md
@@ -1,3 +1,5 @@
+# Open Source
+
The source code is an Open Source software. It is open for anyone to
understand, extend or improve. And it is free!
diff --git a/erpnext/docs/user/manual/en/introduction/the-champion.md b/erpnext/docs/user/manual/en/introduction/the-champion.md
index 4d75abb..57086cb 100644
--- a/erpnext/docs/user/manual/en/introduction/the-champion.md
+++ b/erpnext/docs/user/manual/en/introduction/the-champion.md
@@ -1,8 +1,10 @@
+# The Champion
+
<!-- no-heading -->
<h1 class="white">The Champion</h1>
-<img alt="Champion" class="screenshot" src="{{docs_base_url}}/assets/img/setup/implementation-image.png">
+<img alt="Champion" class="screenshot" src="/docs/assets/img/setup/implementation-image.png">
We have seen dozens of ERP implementations over the past few years and we
realize that successful implementation is a lot about intangibles and
diff --git a/erpnext/docs/user/manual/en/manufacturing/articles/index.md b/erpnext/docs/user/manual/en/manufacturing/articles/index.md
index 0dff60b..fb11735 100644
--- a/erpnext/docs/user/manual/en/manufacturing/articles/index.md
+++ b/erpnext/docs/user/manual/en/manufacturing/articles/index.md
@@ -1 +1,3 @@
+# Articles
+
{index}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/manufacturing/articles/nested-bom-structure.md b/erpnext/docs/user/manual/en/manufacturing/articles/nested-bom-structure.md
index 3f507af..1e8b2bd 100644
--- a/erpnext/docs/user/manual/en/manufacturing/articles/nested-bom-structure.md
+++ b/erpnext/docs/user/manual/en/manufacturing/articles/nested-bom-structure.md
@@ -1,3 +1,5 @@
+# Nested Bom Structure
+
#Nested BOM Structure
**Question:** Our manufacturing process involves producing sub-assembly items before final product. How should we manage BOM master in this scenario?
@@ -8,7 +10,7 @@
BOM of PC will have all the raw-material items selected in it. Hard Disk and DVD Drive (sub-assemblies) will also be selected as raw-material items. For the sib-assembly items, respective BOM no. will be fetched as well.
-<img alt="Nested BOM" class="screenshot" src="{{docs_base_url}}/assets/img/articles/nested-bom-1.png">
+<img alt="Nested BOM" class="screenshot" src="/docs/assets/img/articles/nested-bom-1.png">
Following is how the structure of nested BOM will look:
diff --git a/erpnext/docs/user/manual/en/manufacturing/articles/production-planning-subassembly.md b/erpnext/docs/user/manual/en/manufacturing/articles/production-planning-subassembly.md
index c17b923..050706c 100644
--- a/erpnext/docs/user/manual/en/manufacturing/articles/production-planning-subassembly.md
+++ b/erpnext/docs/user/manual/en/manufacturing/articles/production-planning-subassembly.md
@@ -1,3 +1,5 @@
+# Production Planning Subassembly
+
#Production Planning & Subassembly
if you need Production Planning Tool to consider raw-materials required for the manufacturing of sub-assembly items selected in the BOM, please check following instructions to achieve the same.
diff --git a/erpnext/docs/user/manual/en/manufacturing/articles/valuation-based-on-field-in-bom.md b/erpnext/docs/user/manual/en/manufacturing/articles/valuation-based-on-field-in-bom.md
index 29803ee..b07366c 100644
--- a/erpnext/docs/user/manual/en/manufacturing/articles/valuation-based-on-field-in-bom.md
+++ b/erpnext/docs/user/manual/en/manufacturing/articles/valuation-based-on-field-in-bom.md
@@ -1,16 +1,18 @@
+# Valuation Based On Field In Bom
+
#Valuation Based On in BOM
**Question:** What are for various options in `Valuation Based On` in the Bill Of Materials (BOM)?
**Answer:** There are 3 available options in the <i>Valuation Based On</i> field:
-<img alt="Nested BOM" class="screenshot" src="{{docs_base_url}}/assets/img/articles/valuation-based-on-1.png">
+<img alt="Nested BOM" class="screenshot" src="/docs/assets/img/articles/valuation-based-on-1.png">
**Valuation Rate:** Item valuation rate is defined based on it's purchase or manufacture value.
For Purchase Item, it is defined based on charges entered in the Purchase Receipt. If you don't have any Purchase Receipt
made for an item or a Stock Reconciliation, then there won't be any Valuation Rate for that item.
-**Price List Rate:** This option allows to pull item rates from [Price List.]({{docs_base_url}}/user/manual/en/stock/item/item-price.html)
+**Price List Rate:** This option allows to pull item rates from [Price List.](/docs/user/manual/en/stock/item/item-price.html)
**Last Purchase Rate:** It will be the last Purchase (Order) Rate of an item.
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/manufacturing/bill-of-materials.md b/erpnext/docs/user/manual/en/manufacturing/bill-of-materials.md
index 91bf7ed..112efab 100644
--- a/erpnext/docs/user/manual/en/manufacturing/bill-of-materials.md
+++ b/erpnext/docs/user/manual/en/manufacturing/bill-of-materials.md
@@ -1,3 +1,5 @@
+# Bill Of Materials
+
At the heart of the Manufacturing system is the **Bill of Materials** (BOM).
The **BOM** is a list of all materials (either bought or made) and operations
that go into a finished product or sub-Item. In ERPNext, the component could
@@ -8,11 +10,11 @@
> Manufacturing > Bill of Materials > New BOM
-<img class="screenshot" alt="Task" src="{{docs_base_url}}/assets/img/manufacturing/bom.png">
+<img class="screenshot" alt="Task" src="/docs/assets/img/manufacturing/bom.png">
* To add Operations select 'With Operation'. The Operations table shall appear.
-<img class="screenshot" alt="Task" src="{{docs_base_url}}/assets/img/manufacturing/bom-operations.png">
+<img class="screenshot" alt="Task" src="/docs/assets/img/manufacturing/bom-operations.png">
* Select the Item for which you want to make the BOM.
* Add the operations that you have to go through to make that particular Item in the “Operations” table. For each operation, you will be asked to enter a Workstation. You must create new Workstations as and when necessary.
@@ -25,22 +27,22 @@
* Add the list of Items you require for each operation, with its quantity. This Item could be a purchased Item or a sub-assembly with its own BOM. If the row Item is a manufactured Item and has multiple BOMs, select the appropriate BOM. You can also define if a part of the Item goes into scrap.
-<img class="screenshot" alt="Costing" src="{{docs_base_url}}/assets/img/manufacturing/bom-costing.png">
+<img class="screenshot" alt="Costing" src="/docs/assets/img/manufacturing/bom-costing.png">
* This cost can be updated on by using the 'Update Cost' button.
-<img class="screenshot" alt="Update Cost" src="{{docs_base_url}}/assets/img/manufacturing/bom-update-cost.png">
+<img class="screenshot" alt="Update Cost" src="/docs/assets/img/manufacturing/bom-update-cost.png">
* User can select the currency in the BOM
* System calculates the costing based on the price list currency
-<img class="screenshot" alt="Update Cost" src="{{docs_base_url}}/assets/img/manufacturing/price-list-based-currency-bom.png">
+<img class="screenshot" alt="Update Cost" src="/docs/assets/img/manufacturing/price-list-based-currency-bom.png">
### Materials Required(exploded)
This table lists down all the Material required for the Item to be Manufactured.
It also fetches sub-assemblies along with the quantity.
-<img class="screenshot" alt="Exploded Section" src="{{docs_base_url}}/assets/img/manufacturing/bom-exploded.png">
+<img class="screenshot" alt="Exploded Section" src="/docs/assets/img/manufacturing/bom-exploded.png">
{next}
diff --git a/erpnext/docs/user/manual/en/manufacturing/introduction.md b/erpnext/docs/user/manual/en/manufacturing/introduction.md
index f9d827c..b7f0a99 100644
--- a/erpnext/docs/user/manual/en/manufacturing/introduction.md
+++ b/erpnext/docs/user/manual/en/manufacturing/introduction.md
@@ -1,4 +1,6 @@
-<img class="screenshot" alt="Task" src="{{docs_base_url}}/assets/img/manufacturing/manufacturing.png">
+# Introduction
+
+<img class="screenshot" alt="Task" src="/docs/assets/img/manufacturing/manufacturing.png">
### Types of Production Planning
diff --git a/erpnext/docs/user/manual/en/manufacturing/operation.md b/erpnext/docs/user/manual/en/manufacturing/operation.md
index b21304e..8d495f1 100644
--- a/erpnext/docs/user/manual/en/manufacturing/operation.md
+++ b/erpnext/docs/user/manual/en/manufacturing/operation.md
@@ -1,3 +1,5 @@
+# Operation
+
### Operation
Stores a list of all Manufacturing Operations, its description and the Default Workstation for the Operation.
@@ -6,6 +8,6 @@
> Manufacturing > Documents > Operation > New
-<img class="screenshot" alt="Operation" src="{{docs_base_url}}/assets/img/manufacturing/operation.png">
+<img class="screenshot" alt="Operation" src="/docs/assets/img/manufacturing/operation.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/manufacturing/production-order.md b/erpnext/docs/user/manual/en/manufacturing/production-order.md
index a19c510..430ef8a 100644
--- a/erpnext/docs/user/manual/en/manufacturing/production-order.md
+++ b/erpnext/docs/user/manual/en/manufacturing/production-order.md
@@ -1,4 +1,6 @@
-<img class="screenshot" alt="Production Order" src="{{docs_base_url}}/assets/img/manufacturing/manufacturing-flow.png">
+# Production Order
+
+<img class="screenshot" alt="Production Order" src="/docs/assets/img/manufacturing/manufacturing-flow.png">
A Production Order (also known as a Work Order) is a document that is given to
the manufacturing shop floor by the Production Planner as a signal to produce
a certain quantity of a certain Item. The Production Order also helps to generate
@@ -11,7 +13,7 @@
> Manufacturing > Documents > Production Order > New
-<img class="screenshot" alt="Production Order" src="{{docs_base_url}}/assets/img/manufacturing/production-order.png">
+<img class="screenshot" alt="Production Order" src="/docs/assets/img/manufacturing/production-order.png">
### Creating Production Orders
@@ -33,11 +35,11 @@
* By default the system fetchs workstation and duration for Production Order Operations from the selected BOM.
-<img class="screenshot" alt="PO Opeartions" src="{{docs_base_url}}/assets/img/manufacturing/PO-operations.png">
+<img class="screenshot" alt="PO Opeartions" src="/docs/assets/img/manufacturing/PO-operations.png">
* If you wish to reassign the workstation for a particular opeeration in the Production Order, you can do so before submitting the Production Order.
-<img class="screenshot" alt="PO reassigning Operations" src="{{docs_base_url}}/assets/img/manufacturing/PO-reassigning-operations.png">
+<img class="screenshot" alt="PO reassigning Operations" src="/docs/assets/img/manufacturing/PO-reassigning-operations.png">
* Select the respective operation, and change its workstation.
* You can also change the Operating Time for that operation
@@ -54,19 +56,19 @@
* Click on 'Start'.
-<img class="screenshot" alt="Transfer Materials" src="{{docs_base_url}}/assets/img/manufacturing/PO-material-transfer.png">
+<img class="screenshot" alt="Transfer Materials" src="/docs/assets/img/manufacturing/PO-material-transfer.png">
* Mention the quantity of materials to be transfered.
-<img class="screenshot" alt="Material Transfer Qty" src="{{docs_base_url}}/assets/img/manufacturing/PO-material-transfer-qty.png">
+<img class="screenshot" alt="Material Transfer Qty" src="/docs/assets/img/manufacturing/PO-material-transfer-qty.png">
* Submit the Stock Entry
-<img class="screenshot" alt="Stock Entry for PO" src="{{docs_base_url}}/assets/img/manufacturing/PO-SE-for-material-transfer.png">
+<img class="screenshot" alt="Stock Entry for PO" src="/docs/assets/img/manufacturing/PO-SE-for-material-transfer.png">
* Material Transfered for Manufacturing will be updated in the Production Order based on the Stock Entry.
-<img class="screenshot" alt="Stock Entry for PO" src="{{docs_base_url}}/assets/img/manufacturing/PO-material-transfer-updated.png">
+<img class="screenshot" alt="Stock Entry for PO" src="/docs/assets/img/manufacturing/PO-material-transfer-updated.png">
#### Material Transfer through Stock Entry
Use cases for this option are:
@@ -77,12 +79,12 @@
### Making Time Logs
-* Progress in the Production Order can be tracked using [Timesheet]({{docs_base_url}}/user/manual/en/projects/timesheet/timesheet-against-production-order.html)
+* Progress in the Production Order can be tracked using [Timesheet](/docs/user/manual/en/projects/timesheet/timesheet-against-production-order.html)
* Timesheet's time slots are created against Production Order Operations.
* Drafts of Timesheet are created based on the scheduled operations when an Production Order is Submitted.
* To create more Timesheets against an operation click 'Make Timesheet' button.
-<img class="screenshot" alt="Make timesheet against PO" src="{{docs_base_url}}/assets/img/manufacturing/PO-operations-make-ts.png">
+<img class="screenshot" alt="Make timesheet against PO" src="/docs/assets/img/manufacturing/PO-operations-make-ts.png">
###Updating Finished Goods
@@ -90,11 +92,11 @@
* This will create a Stock Entry that will deduct all the sub-Items from the WIP Warehouse and add them to the Finished Goods Warehouse.
* Click on 'Finish'.
-<img class="screenshot" alt="Update Finished Goods" src="{{docs_base_url}}/assets/img/manufacturing/PO-FG-update.png">
+<img class="screenshot" alt="Update Finished Goods" src="/docs/assets/img/manufacturing/PO-FG-update.png">
* Mention the quantity of materials to be transfered.
-<img class="screenshot" alt="Update Finished Goods Qty" src="{{docs_base_url}}/assets/img/manufacturing/PO-FG-update-qty.png">
+<img class="screenshot" alt="Update Finished Goods Qty" src="/docs/assets/img/manufacturing/PO-FG-update-qty.png">
> Tip : You can also partially complete a Production Order by updating the Finished Goods stock creating a Stock Entry.
@@ -109,7 +111,7 @@
4. Update Finished Goods: This will create a Stock Entry that will deduct all the sub-Items from the WIP Warehouse and add them to the Finished Goods Warehouse.
5. To check all Time Logs made against the Production Order click on 'Show Time Logs'
-<img class="screenshot" alt="PO - stop" src="{{docs_base_url}}/assets/img/manufacturing/PO-stop.png">
+<img class="screenshot" alt="PO - stop" src="/docs/assets/img/manufacturing/PO-stop.png">
* You can also re-start a stopped Production Order.
diff --git a/erpnext/docs/user/manual/en/manufacturing/setup/index.md b/erpnext/docs/user/manual/en/manufacturing/setup/index.md
index ec22505..ac54772 100644
--- a/erpnext/docs/user/manual/en/manufacturing/setup/index.md
+++ b/erpnext/docs/user/manual/en/manufacturing/setup/index.md
@@ -1,3 +1,5 @@
+# Setup
+
Global settings for manufacturing Processes
### Topics
diff --git a/erpnext/docs/user/manual/en/manufacturing/setup/manufacturing-settings.md b/erpnext/docs/user/manual/en/manufacturing/setup/manufacturing-settings.md
index 1912a55..2c09f52 100644
--- a/erpnext/docs/user/manual/en/manufacturing/setup/manufacturing-settings.md
+++ b/erpnext/docs/user/manual/en/manufacturing/setup/manufacturing-settings.md
@@ -1,10 +1,12 @@
+# Manufacturing Settings
+
#Manufacturing Settings
Manufacturing Settings can be found at:
`Manufacturing > Setup > Manufacturing Settings`
-<img class="screenshot" alt="Manufacturing Settings" src="{{docs_base_url}}/assets/img/manufacturing/manufacturing-settings-1.png">
+<img class="screenshot" alt="Manufacturing Settings" src="/docs/assets/img/manufacturing/manufacturing-settings-1.png">
####Disable Capacity Planning and Time Tracking
@@ -16,15 +18,15 @@
In the Workstation master, actual working hours are defined (say 101m to 6pm). As per the Capacity Planning, Time Logs are created against Workstation, for tracking actual operations hour. It also considers working hours of a Workstation when scheduling job (via Time Log).
-<img class="screenshot" alt="Manufacturing Settings" src="{{docs_base_url}}/assets/img/articles/manufacturing-settings-2.png">
+<img class="screenshot" alt="Manufacturing Settings" src="/docs/assets/img/articles/manufacturing-settings-2.png">
As per the standard validation, if Operation cannot be completed within working hours of Workstation, then user is asked to divide an Operation into multiple and smaller Operations. However, if `Allow Overtime` field is checked, while creating Time Logs for Operation, working hours of Workstation will not be validated. In this case, Time Logs for Operation will be created beyond working hours of Workstation as well.
####Allow Production on Holidays
-Holiday of a company can be recorded in the [Holiday List]({{docs_base_url}}/user/manual/en/human-resources/) master. While scheduling production job on workstation, system doesn't consider a day listed in the Holiday list. If you want production job to be scheduled on holidays as well, `Allow Production on Holidays` field should be checked.
+Holiday of a company can be recorded in the [Holiday List](/docs/user/manual/en/human-resources/) master. While scheduling production job on workstation, system doesn't consider a day listed in the Holiday list. If you want production job to be scheduled on holidays as well, `Allow Production on Holidays` field should be checked.
-<img class="screenshot" alt="Manufacturing Settings" src="{{docs_base_url}}/assets/img/articles/manufacturing-settings-3.png">
+<img class="screenshot" alt="Manufacturing Settings" src="/docs/assets/img/articles/manufacturing-settings-3.png">
####Over Production Allowance Percentage
@@ -34,7 +36,7 @@
When creating Manufacture Entry, raw-material items are back-flush based on BOM of production item. If you want raw-material items to be back-flushed based on Material Transfer entry made against that Production Order instead, then you should set Back-flush Raw Materials Based On "Material Transferred for Manufacture".
-<img class="screenshot" alt="Manufacturing Settings" src="{{docs_base_url}}/assets/img/articles/manufacturing-settings-4.png">
+<img class="screenshot" alt="Manufacturing Settings" src="/docs/assets/img/articles/manufacturing-settings-4.png">
####Capacity Planning For (Days)
diff --git a/erpnext/docs/user/manual/en/manufacturing/subcontracting.md b/erpnext/docs/user/manual/en/manufacturing/subcontracting.md
index 1589d1b..925afe3 100644
--- a/erpnext/docs/user/manual/en/manufacturing/subcontracting.md
+++ b/erpnext/docs/user/manual/en/manufacturing/subcontracting.md
@@ -1,3 +1,5 @@
+# Subcontracting
+
Subcontracting is a type of job contract that seeks to outsource certain types
of work to other companies. It allows work on more than one phase of the
project to be done at once, often leading to a quicker completion.
@@ -15,7 +17,7 @@
2. Create a Warehouse for your Supplier so that you can keep track of Items supplied. (you may supply a months worth of Items in one go).
3. For the processed Item, in the Item master, set “Is Sub Contracted Item” to “Yes”.
-<img class="screenshot" alt="Sub-Contracting" src="{{docs_base_url}}/assets/img/manufacturing/subcontract.png">
+<img class="screenshot" alt="Sub-Contracting" src="/docs/assets/img/manufacturing/subcontract.png">
__Step 1:__ Make a Bill of Materials for the processed Item, with the unprocessed
@@ -23,20 +25,20 @@
pen will be named under Bill of Materials(BOM), whereas, the refill, knob, and
other items which go into the making of pen, will be categorized as sub-items.
-<img class="screenshot" alt="Sub-Contracting" src="{{docs_base_url}}/assets/img/manufacturing/subcontract2.png">
+<img class="screenshot" alt="Sub-Contracting" src="/docs/assets/img/manufacturing/subcontract2.png">
__Step 2:__ Make a Purchase Order for the processed Item. When you “Save”, in the “Raw Materials Supplied”, all your un-processed Items will be updated based on your Bill of Materials.
-<img class="screenshot" alt="Sub-Contracting" src="{{docs_base_url}}/assets/img/manufacturing/subcontract3.png">
+<img class="screenshot" alt="Sub-Contracting" src="/docs/assets/img/manufacturing/subcontract3.png">
__Step 3:__ Make a Stock Entry to deliver the raw material Items to your Supplier.
-<img class="screenshot" alt="Sub-Contracting" src="{{docs_base_url}}/assets/img/manufacturing/subcontract4.png">
+<img class="screenshot" alt="Sub-Contracting" src="/docs/assets/img/manufacturing/subcontract4.png">
__Step 4:__ Receive the Items from your Supplier via Purchase Receipt. Make sure to check the “Consumed Quantity” in the “Raw Materials” table so that the
correct stock is maintained at the Supplier’s end.
-<img class="screenshot" alt="Sub-Contracting" src="{{docs_base_url}}/assets/img/manufacturing/subcontract5.png">
+<img class="screenshot" alt="Sub-Contracting" src="/docs/assets/img/manufacturing/subcontract5.png">
> Note 1: Make sure that the “Rate” of processed Item is the processing rate
(excluding the raw material rate).
diff --git a/erpnext/docs/user/manual/en/manufacturing/tools/bom-replace-tool.md b/erpnext/docs/user/manual/en/manufacturing/tools/bom-replace-tool.md
index 794d982..98d1f3b 100644
--- a/erpnext/docs/user/manual/en/manufacturing/tools/bom-replace-tool.md
+++ b/erpnext/docs/user/manual/en/manufacturing/tools/bom-replace-tool.md
@@ -33,7 +33,7 @@
To update new BOM updated in the BOM of finished item, where CPU is selected as raw-material, you can use BOM Replace tool.
-<img class="screenshot" alt="BOM replace Tool" src="{{docs_base_url}}/assets/img/manufacturing/bom-replace-tool.png">
+<img class="screenshot" alt="BOM replace Tool" src="/docs/assets/img/manufacturing/bom-replace-tool.png">
In this tool, you should select Current BOM, and New BOM. On clicking Replace button, current BOM of CPU will be replaced with New BOM in the BOM of finished Item (Computer).
diff --git a/erpnext/docs/user/manual/en/manufacturing/tools/index.md b/erpnext/docs/user/manual/en/manufacturing/tools/index.md
index 259b5eb..25a46a7 100644
--- a/erpnext/docs/user/manual/en/manufacturing/tools/index.md
+++ b/erpnext/docs/user/manual/en/manufacturing/tools/index.md
@@ -1,3 +1,5 @@
+# Tools
+
### Topics
diff --git a/erpnext/docs/user/manual/en/manufacturing/tools/production-planning-tool.md b/erpnext/docs/user/manual/en/manufacturing/tools/production-planning-tool.md
index 4bdc487..e9ba2a5 100644
--- a/erpnext/docs/user/manual/en/manufacturing/tools/production-planning-tool.md
+++ b/erpnext/docs/user/manual/en/manufacturing/tools/production-planning-tool.md
@@ -1,3 +1,5 @@
+# Production Planning Tool
+
Production Planning Tool helps you plan production and purchase of Items for a
period (usually a week or a month).
@@ -11,7 +13,7 @@
> Manufacturing > Tools > Production Planning Tool
-<img class="screenshot" alt="Production Planing Tool" src="{{docs_base_url}}/assets/img/manufacturing/ppt.png">
+<img class="screenshot" alt="Production Planing Tool" src="/docs/assets/img/manufacturing/ppt.png">
#### Step 1: Specify source to get Production Items
@@ -25,7 +27,7 @@
* Use filters to get the Sales Order / Material Request
* Click on Get Sales Order / Get Material Requests to generate a list.
-<img class="screenshot" alt="Production Planing Tool" src="{{docs_base_url}}/assets/img/manufacturing/ppt-get-sales-orders.png">
+<img class="screenshot" alt="Production Planing Tool" src="/docs/assets/img/manufacturing/ppt-get-sales-orders.png">
@@ -34,11 +36,11 @@
* Get the items for the Sales Order / Material request list
* You can add/remove or change quantity of these Items.
-<img class="screenshot" alt="Production Planing Tool" src="{{docs_base_url}}/assets/img/manufacturing/ppt-get-item.png">
+<img class="screenshot" alt="Production Planing Tool" src="/docs/assets/img/manufacturing/ppt-get-item.png">
#### Step 4: Create Production Orders
-<img class="screenshot" alt="Production Planing Tool" src="{{docs_base_url}}/assets/img/manufacturing/ppt-create-production-order.png">
+<img class="screenshot" alt="Production Planing Tool" src="/docs/assets/img/manufacturing/ppt-create-production-order.png">
@@ -46,7 +48,7 @@
Create Material Request for Items with projected shortfall.
-<img class="screenshot" alt="Production Planing Tool" src="{{docs_base_url}}/assets/img/manufacturing/ppt-create-material-request.png">
+<img class="screenshot" alt="Production Planing Tool" src="/docs/assets/img/manufacturing/ppt-create-material-request.png">
diff --git a/erpnext/docs/user/manual/en/manufacturing/workstation.md b/erpnext/docs/user/manual/en/manufacturing/workstation.md
index 0ff2a6b..5670893 100644
--- a/erpnext/docs/user/manual/en/manufacturing/workstation.md
+++ b/erpnext/docs/user/manual/en/manufacturing/workstation.md
@@ -1,3 +1,5 @@
+# Workstation
+
### Workstation
Workstation stores information regarding the place where the workstation operations is carried out.
@@ -8,12 +10,12 @@
> Manufacturing > Documents > Workstation > New
-<img class="screenshot" alt="Workstation" src="{{docs_base_url}}/assets/img/manufacturing/workstation.png">
+<img class="screenshot" alt="Workstation" src="/docs/assets/img/manufacturing/workstation.png">
In workstation specify the workstation working hours under the 'working hour' section.
You can also specify the working hours based on shifts.
While scheduling Production Order, system will check for the availability of the workstation based on the working hours specified.
-> Note : You can enable overtime for your workstation in [Manufacturing Settings]({{docs_base_url}}/user/manual/en/manufacturing/setup/manufacturing-settings.html)
+> Note : You can enable overtime for your workstation in [Manufacturing Settings](/docs/user/manual/en/manufacturing/setup/manufacturing-settings.html)
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/projects/activity-cost.md b/erpnext/docs/user/manual/en/projects/activity-cost.md
index d4e2106..88d4f0a 100644
--- a/erpnext/docs/user/manual/en/projects/activity-cost.md
+++ b/erpnext/docs/user/manual/en/projects/activity-cost.md
@@ -1,4 +1,6 @@
+# Activity Cost
+
Activity Cost records the per-hour billing rate and costing rate of an Employee against an Activity Type.
This rate is pulled by the system while making Time Logs. It is used for Project Costing.
-<img class="screenshot" alt="Activity Cost" src="{{docs_base_url}}/assets/img/project/activity_cost.png">
+<img class="screenshot" alt="Activity Cost" src="/docs/assets/img/project/activity_cost.png">
diff --git a/erpnext/docs/user/manual/en/projects/activity-type.md b/erpnext/docs/user/manual/en/projects/activity-type.md
index 7f37f51..4e968a6 100644
--- a/erpnext/docs/user/manual/en/projects/activity-type.md
+++ b/erpnext/docs/user/manual/en/projects/activity-type.md
@@ -1,6 +1,8 @@
+# Activity Type
+
Activity Type makes a list of the different types of activities against which a Time Log can be made.
-<img class="screenshot" alt="Activity Type" src="{{docs_base_url}}/assets/img/project/activity_type.png">
+<img class="screenshot" alt="Activity Type" src="/docs/assets/img/project/activity_type.png">
By default the following Activity Types are created.
diff --git a/erpnext/docs/user/manual/en/projects/articles/index.md b/erpnext/docs/user/manual/en/projects/articles/index.md
index 0dff60b..fb11735 100644
--- a/erpnext/docs/user/manual/en/projects/articles/index.md
+++ b/erpnext/docs/user/manual/en/projects/articles/index.md
@@ -1 +1,3 @@
+# Articles
+
{index}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/projects/articles/project-costing.md b/erpnext/docs/user/manual/en/projects/articles/project-costing.md
index e5c5940..dad849e 100644
--- a/erpnext/docs/user/manual/en/projects/articles/project-costing.md
+++ b/erpnext/docs/user/manual/en/projects/articles/project-costing.md
@@ -12,17 +12,17 @@
Activity Cost is a master where you can track billing and costing rate for each Employee, and for each Activity Type.
-
+
#### Time Log
Based on Actual Time spent on the Project-Task, Employee will create a time log.
-
+
On selection of Activity Type in the Time Log, Billing and Costing Rate will fetched for that Employee from respective Activity Cost master.
-
+
Multiplying these rates with total no. of Hours in the Time Log gives Costing Amount and Billing Amount for the specific Time Log.
@@ -30,10 +30,10 @@
Based on total Time Logs created for a specific Task, its costing will be updated in the respective Task master.
-
+
Same way, Project master will have cost updated based on Time Log created against that Projects, and tasks associated with that Project.
-
+
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/projects/index.md b/erpnext/docs/user/manual/en/projects/index.md
index 220c67f..95af437 100644
--- a/erpnext/docs/user/manual/en/projects/index.md
+++ b/erpnext/docs/user/manual/en/projects/index.md
@@ -1,3 +1,5 @@
+# Projects
+
ERPNext helps you manage your Projects by breaking them into Tasks and
allocating them to different people.
diff --git a/erpnext/docs/user/manual/en/projects/project.md b/erpnext/docs/user/manual/en/projects/project.md
index 7522396..d835295 100644
--- a/erpnext/docs/user/manual/en/projects/project.md
+++ b/erpnext/docs/user/manual/en/projects/project.md
@@ -1,6 +1,8 @@
+# Project
+
Project management in ERPNext is Task driven. You can create Project and assign multiple Tasks against it.
-<img class="screenshot" alt="Project" src="{{docs_base_url}}/assets/img/project/project.png">
+<img class="screenshot" alt="Project" src="/docs/assets/img/project/project.png">
You can also track % Completion of a Project using different methods.
@@ -8,80 +10,80 @@
2. Task Progress
3. Task Weight
-<img class="screenshot" alt="Project" src="{{docs_base_url}}/assets/img/project/project-percent-complete.png">
+<img class="screenshot" alt="Project" src="/docs/assets/img/project/project-percent-complete.png">
Some examples of how the % Completion is calculated based on Tasks.
-<img class="screenshot" alt="Project" src="{{docs_base_url}}/assets/img/project/percent-complete-calc.png">
+<img class="screenshot" alt="Project" src="/docs/assets/img/project/percent-complete-calc.png">
-<img class="screenshot" alt="Project" src="{{docs_base_url}}/assets/img/project/percent-complete-formula.png">
+<img class="screenshot" alt="Project" src="/docs/assets/img/project/percent-complete-formula.png">
### Managing tasks
Project can be divided into multiple Tasks.
-Task can be created via Project document itself or can be created via [Task]({{docs_base_url}}/user/manual/en/projects/tasks.html)
+Task can be created via Project document itself or can be created via [Task](/docs/user/manual/en/projects/tasks.html)
-<img class="screenshot" alt="Project" src="{{docs_base_url}}/assets/img/project/project_task.png">
+<img class="screenshot" alt="Project" src="/docs/assets/img/project/project_task.png">
* To view Task made against a Project click on 'Tasks'
-<img class="screenshot" alt="Project - View Task" src="{{docs_base_url}}/assets/img/project/project_view_task.png">
+<img class="screenshot" alt="Project - View Task" src="/docs/assets/img/project/project_view_task.png">
-<img class="screenshot" alt="Project - Task List" src="{{docs_base_url}}/assets/img/project/project_task_list.png">
+<img class="screenshot" alt="Project - Task List" src="/docs/assets/img/project/project_task_list.png">
* You can also view the Tasks from the Project document itself
-<img class="screenshot" alt="Project - Task Grid" src="{{docs_base_url}}/assets/img/project/project_task_grid.png">
+<img class="screenshot" alt="Project - Task Grid" src="/docs/assets/img/project/project_task_grid.png">
* To add Weights to Tasks you can follow the below steps
-<img class="screenshot" alt="Project - Task Grid" src="{{docs_base_url}}/assets/img/project/tasks.png">
-<img class="screenshot" alt="Project - Task Grid" src="{{docs_base_url}}/assets/img/project/task-weights.png">
+<img class="screenshot" alt="Project - Task Grid" src="/docs/assets/img/project/tasks.png">
+<img class="screenshot" alt="Project - Task Grid" src="/docs/assets/img/project/task-weights.png">
### Managing time
-ERPNext uses [Time Log]({{docs_base_url}}/user/manual/en/projects/time-log.html) to track the progress of a Project.
+ERPNext uses [Time Log](/docs/user/manual/en/projects/time-log.html) to track the progress of a Project.
You can create Time Logs against each task.
The Actual Start and End Time along with the costing shall then be updated based on the Time Log.
* To view Time Log made against a Project click on 'Time Logs'
-<img class="screenshot" alt="Project - View Time Log" src="{{docs_base_url}}/assets/img/project/project_view_time_log.png">
+<img class="screenshot" alt="Project - View Time Log" src="/docs/assets/img/project/project_view_time_log.png">
-<img class="screenshot" alt="Project - Time Log List" src="{{docs_base_url}}/assets/img/project/project_time_log_list.png">
+<img class="screenshot" alt="Project - Time Log List" src="/docs/assets/img/project/project_time_log_list.png">
* You can also create a Time Log directlly and link it to the Project.
-<img class="screenshot" alt="Project - Link Time Log" src="{{docs_base_url}}/assets/img/project/project_time_log_link.png">
+<img class="screenshot" alt="Project - Link Time Log" src="/docs/assets/img/project/project_time_log_link.png">
### Managing expenses
-You can book [Expense Claim]({{docs_base_url}}/user/manual/en/human-resources/expense-claim.html) against a project task.
+You can book [Expense Claim](/docs/user/manual/en/human-resources/expense-claim.html) against a project task.
The system shall update the total amount from expense claims in the project costing section.
* To view Expense Claims made against a Project click on 'Expense Claims'
-<img class="screenshot" alt="Project - View Expense Claim" src="{{docs_base_url}}/assets/img/project/project_view_expense_claim.png">
+<img class="screenshot" alt="Project - View Expense Claim" src="/docs/assets/img/project/project_view_expense_claim.png">
* You can also create a Expense Claims directlly and link it to the Project.
-<img class="screenshot" alt="Project - Link Expense Claim" src="{{docs_base_url}}/assets/img/project/project_expense_claim_link.png">
+<img class="screenshot" alt="Project - Link Expense Claim" src="/docs/assets/img/project/project_expense_claim_link.png">
* Total amount of Expense Claims booked against a project is shown under 'Total Expense Claim' in the Project Costing Section
-<img class="screenshot" alt="Project - Total Expense Claim" src="{{docs_base_url}}/assets/img/project/project_total_expense_claim.png">
+<img class="screenshot" alt="Project - Total Expense Claim" src="/docs/assets/img/project/project_total_expense_claim.png">
### Cost Center
-You can make a [Cost Center]({{docs_base_url}}/user/manual/en/accounts/setup/cost-center.html) against a Project or use an existing cost center to track all expenses made against that project.
+You can make a [Cost Center](/docs/user/manual/en/accounts/setup/cost-center.html) against a Project or use an existing cost center to track all expenses made against that project.
-<img class="screenshot" alt="Project - Cost Center" src="{{docs_base_url}}/assets/img/project/project_cost_center.png">
+<img class="screenshot" alt="Project - Cost Center" src="/docs/assets/img/project/project_cost_center.png">
###Project Costing
The Project Costing section helps you track the time and expenses incurred against the project.
-<img class="screenshot" alt="Project - Costing" src="{{docs_base_url}}/assets/img/project/project_costing.png">
+<img class="screenshot" alt="Project - Costing" src="/docs/assets/img/project/project_costing.png">
* The Costing Section is updated based on Time Logs made.
@@ -89,9 +91,9 @@
###Billing
-You can make/link a [Sales Order]({{docs_base_url}}/user/manual/en/selling/sales-order.html) against a project. Once linked you can use the standard sales module to bill your customer against the Project.
+You can make/link a [Sales Order](/docs/user/manual/en/selling/sales-order.html) against a project. Once linked you can use the standard sales module to bill your customer against the Project.
-<img class="screenshot" alt="Project - Sales Order" src="{{docs_base_url}}/assets/img/project/project_sales_order.png">
+<img class="screenshot" alt="Project - Sales Order" src="/docs/assets/img/project/project_sales_order.png">
###Gantt Chart
@@ -100,8 +102,8 @@
* To view gantt chart against a project, go to that project and click on 'Gantt Chart'
-<img class="screenshot" alt="Project - View Gantt Chart" src="{{docs_base_url}}/assets/img/project/project_view_gantt_chart.png">
+<img class="screenshot" alt="Project - View Gantt Chart" src="/docs/assets/img/project/project_view_gantt_chart.png">
-<img class="screenshot" alt="Project - Gantt Chart" src="{{docs_base_url}}/assets/img/project/project_gantt_chart.png">
+<img class="screenshot" alt="Project - Gantt Chart" src="/docs/assets/img/project/project_gantt_chart.png">
{next}
diff --git a/erpnext/docs/user/manual/en/projects/tasks.md b/erpnext/docs/user/manual/en/projects/tasks.md
index ef59748..9447a2e 100644
--- a/erpnext/docs/user/manual/en/projects/tasks.md
+++ b/erpnext/docs/user/manual/en/projects/tasks.md
@@ -1,13 +1,15 @@
+# Tasks
+
Project is divided into Tasks.
In ERPNext, you can also create a Task independently.
-<img class="screenshot" alt="Task" src="{{docs_base_url}}/assets/img/project/task.png">
+<img class="screenshot" alt="Task" src="/docs/assets/img/project/task.png">
### Status of the Task
A Task can have one of the following statuses - Open, Working, Pending Review, Closed, or Cancelled.
-<img class="screenshot" alt="Task - Status" src="{{docs_base_url}}/assets/img/project/task_status.png">
+<img class="screenshot" alt="Task - Status" src="/docs/assets/img/project/task_status.png">
* By default each new Task created has the status set to 'Open'.
@@ -17,7 +19,7 @@
You can specify a list of dependent tasks under the 'Depends On' section.
-<img class="screenshot" alt="Depends On" src="{{docs_base_url}}/assets/img/project/task_depends_on.png">
+<img class="screenshot" alt="Depends On" src="/docs/assets/img/project/task_depends_on.png">
* You cannot close the parent task until all dependent tasks are closed.
@@ -25,35 +27,35 @@
### Managing Time
-ERPNext uses [Time Log]({{docs_base_url}}/user/manual/en/projects/time-log.html) to track the progress of a Task.
+ERPNext uses [Time Log](/docs/user/manual/en/projects/time-log.html) to track the progress of a Task.
You can create multiple Time Logs against each task.
The Actual Start and End Time along with the costing is updated based on the Time Log.
* To view Time Log made against a Task click on 'Time Logs'
-<img class="screenshot" alt="Task - View Time Log" src="{{docs_base_url}}/assets/img/project/task_view_time_log.png">
+<img class="screenshot" alt="Task - View Time Log" src="/docs/assets/img/project/task_view_time_log.png">
-<img class="screenshot" alt="Task - Time Log List" src="{{docs_base_url}}/assets/img/project/task_time_log_list.png">
+<img class="screenshot" alt="Task - Time Log List" src="/docs/assets/img/project/task_time_log_list.png">
* You can also create a Time Log directly and link it to the Task.
-<img class="screenshot" alt="Task - Link Time Log" src="{{docs_base_url}}/assets/img/project/task_time_log_link.png">
+<img class="screenshot" alt="Task - Link Time Log" src="/docs/assets/img/project/task_time_log_link.png">
### Managing Expenses
-You can book [Expense Claim]({{docs_base_url}}/user/manual/en/human-resources/expense-claim.html) against a task.
+You can book [Expense Claim](/docs/user/manual/en/human-resources/expense-claim.html) against a task.
The system shall update the total amount from expense claims in the costing section.
* To view Expense Claims made against a Task click on 'Expense Claims'
-<img class="screenshot" alt="Task - View Expense Claim" src="{{docs_base_url}}/assets/img/project/task_view_expense_claim.png">
+<img class="screenshot" alt="Task - View Expense Claim" src="/docs/assets/img/project/task_view_expense_claim.png">
* You can also create a Expense Claims directly and link it to the Task.
-<img class="screenshot" alt="Task - Link Expense Claim" src="{{docs_base_url}}/assets/img/project/task_expense_claim_link.png">
+<img class="screenshot" alt="Task - Link Expense Claim" src="/docs/assets/img/project/task_expense_claim_link.png">
* Total amount of Expense Claims booked against a task is shown under 'Total Expense Claim' in the Task Costing Section
-<img class="screenshot" alt="Task - Total Expense Claim" src="{{docs_base_url}}/assets/img/project/task_total_expense_claim.png">
+<img class="screenshot" alt="Task - Total Expense Claim" src="/docs/assets/img/project/task_total_expense_claim.png">
{next}
diff --git a/erpnext/docs/user/manual/en/projects/time-log-batch.md b/erpnext/docs/user/manual/en/projects/time-log-batch.md
index f4f76dc..b307f6a 100644
--- a/erpnext/docs/user/manual/en/projects/time-log-batch.md
+++ b/erpnext/docs/user/manual/en/projects/time-log-batch.md
@@ -1,3 +1,5 @@
+# Time Log Batch
+
You can bill Time Logs by batching them together. This gives you the flexiblity to manage your customer billing in the way you want. To create a new Time Sheet, go to
> Projects > Time Sheet > New Time Sheet
@@ -6,17 +8,17 @@
Just open your Time Log list and check the Items to you want to add to the Time Log. Then click on "Make Time Sheet" button and these Time Logs will be selected.
-<img class="screenshot" alt="Time Log - Drag Calender" src="{{docs_base_url}}/assets/img/project/time_sheet.gif">
+<img class="screenshot" alt="Time Log - Drag Calender" src="/docs/assets/img/project/time_sheet.gif">
###Making Sales Invoice
* After submitting the Time Sheet, "Make Invoice" button shall appear.
-<img class="screenshot" alt="Time Log - Drag Calender" src="{{docs_base_url}}/assets/img/project/time_sheet_make_invoice.png">
+<img class="screenshot" alt="Time Log - Drag Calender" src="/docs/assets/img/project/time_sheet_make_invoice.png">
* Click on that button to raise a Sales Invoice against the Time Sheet.
-<img class="screenshot" alt="Time Log - Drag Calender" src="{{docs_base_url}}/assets/img/project/time_sheet_sales_invoice.png">
+<img class="screenshot" alt="Time Log - Drag Calender" src="/docs/assets/img/project/time_sheet_sales_invoice.png">
* When you "Submit" the Sales Invoice, the Sales Invoice number will get updated in the Time Logs and Time Sheet and their status will change to "Billed".
diff --git a/erpnext/docs/user/manual/en/projects/timesheet/index.md b/erpnext/docs/user/manual/en/projects/timesheet/index.md
index 7a80ab7..8fd30c4 100644
--- a/erpnext/docs/user/manual/en/projects/timesheet/index.md
+++ b/erpnext/docs/user/manual/en/projects/timesheet/index.md
@@ -1,3 +1,5 @@
+# Timesheet
+
Timesheet can be used for track actual hours worked. It can be used for multiple purposes like:
* Billable work to Customers
diff --git a/erpnext/docs/user/manual/en/projects/timesheet/salary-slip-from-timesheet.md b/erpnext/docs/user/manual/en/projects/timesheet/salary-slip-from-timesheet.md
index 32faf03..5069247 100644
--- a/erpnext/docs/user/manual/en/projects/timesheet/salary-slip-from-timesheet.md
+++ b/erpnext/docs/user/manual/en/projects/timesheet/salary-slip-from-timesheet.md
@@ -1,3 +1,5 @@
+# Salary Slip From Timesheet
+
#Salary Slip from Timesheet
If salary / wages for your employees are calculated based on number of hours worked, you can use Timesheet to track actual hours worked, and for creating Salary Slip.
@@ -6,7 +8,7 @@
To track actual hours employee has worked for, create Timesheet for each Employee. We suggest you to create Timesheet based on a payment period. For example, if you paying employee on a weekly bases, create one Timesheet for an Employee for one week. However, you can create multiple Timesheets, and create one Salary Slip for the multiple Timesheets.
-<img class="screenshot" alt="Sales Invoice" src="{{docs_base_url}}/assets/img/project/timesheet/timesheet-salary-slip-1.png">
+<img class="screenshot" alt="Sales Invoice" src="/docs/assets/img/project/timesheet/timesheet-salary-slip-1.png">
####Salary Structure for the Employee
@@ -16,17 +18,17 @@
Amount directly for other Salary Components (eg: House Rent Allowance, Phone Allowance) can be define directly. When creating Salary Slip, Amount for these Salary Component will be fetched as it is.
-<img class="screenshot" alt="Sales Invoice" src="{{docs_base_url}}/assets/img/project/timesheet/timesheet-salary-slip-2.png">
+<img class="screenshot" alt="Sales Invoice" src="/docs/assets/img/project/timesheet/timesheet-salary-slip-2.png">
####Create Salary Slip from Timesheet
To create Salary Slip against Timesheet, open Timesheet and click on "Salary Slip".
-<img class="screenshot" alt="Sales Invoice" src="{{docs_base_url}}/assets/img/project/timesheet/timesheet-salary-slip-3.png">
+<img class="screenshot" alt="Sales Invoice" src="/docs/assets/img/project/timesheet/timesheet-salary-slip-3.png">
In the Salary Slip, Timesheet ID will be updated. You can select more Timesheet to be paid via this Salary Slip. Based on the Timesheets selected, Total Working Hours will be calculated.
-<img class="screenshot" alt="Sales Invoice" src="{{docs_base_url}}/assets/img/project/timesheet/timesheet-salary-slip-4.gif">
+<img class="screenshot" alt="Sales Invoice" src="/docs/assets/img/project/timesheet/timesheet-salary-slip-4.gif">
Hour Rate will be fetched from the Salary Structure of an Employee. Based on Total Working Hours and Hour Rate, Amount will be calculated for the Salary Component is to be calculated based on actual hours worked.
@@ -34,7 +36,7 @@
On Submission of Salary Slip, Timesheet's status will be updated to "Payslip".
-<img class="screenshot" alt="Sales Invoice" src="{{docs_base_url}}/assets/img/project/timesheet/timesheet-salary-slip-5.png">
+<img class="screenshot" alt="Sales Invoice" src="/docs/assets/img/project/timesheet/timesheet-salary-slip-5.png">
<div class=well>
diff --git a/erpnext/docs/user/manual/en/projects/timesheet/sales-invoice-from-timesheet.md b/erpnext/docs/user/manual/en/projects/timesheet/sales-invoice-from-timesheet.md
index 383a881..0d03bd3 100644
--- a/erpnext/docs/user/manual/en/projects/timesheet/sales-invoice-from-timesheet.md
+++ b/erpnext/docs/user/manual/en/projects/timesheet/sales-invoice-from-timesheet.md
@@ -1,3 +1,5 @@
+# Sales Invoice From Timesheet
+
#Sales Invoice from Timesheet
Customer can be invoiced based on total no. of hours your Employees has worked for that Customer. Timesheet can be used to track actual no. of hours Employee has worked. For example, in the IT services domain, clients are billed based on man-hour bases, where per hour billing cost is pre-determined.s
@@ -14,15 +16,15 @@
In the Employee field, only ones having ative Salary Structure will be selectable. Further in the Salary Structure , is created for the E on the actual hours worked, Employee can create Timesheet. To be able to create Sales Invoice against this Timesheet, ensure `Billable` field is checked.
-<img class="screenshot" alt="Sales Invoice" src="{{docs_base_url}}/assets/img/project/timesheet/timesheet-salary-structure.png">
+<img class="screenshot" alt="Sales Invoice" src="/docs/assets/img/project/timesheet/timesheet-salary-structure.png">
#### Step 3:Activity Type
Employee will have to select an Activity Type (like planning, site visit, repairing etc. ). Costing and Billing Rate for each Activity can be different for each Employee. These cost can be tracked in the Activity Cost. On selection of Activity Type, Activity Cost is fetched from that Employee. Based on total Activity Cost and total no. of hours, Total Billing Amount (to the Customer) is calculated.
-To learn more on how to setup Activity Type and Activity Cost, click [here]({{docs_base_url}}/user/manual/en/projects/articles/project-costing).
+To learn more on how to setup Activity Type and Activity Cost, click [here](/docs/user/manual/en/projects/articles/project-costing).
-<img class="screenshot" alt="Sales Invoice" src="{{docs_base_url}}/assets/img/project/timesheet/timesheet-cost.png">
+<img class="screenshot" alt="Sales Invoice" src="/docs/assets/img/project/timesheet/timesheet-cost.png">
#### Step 4: Enter Actual Time
@@ -30,7 +32,7 @@
To be able to create Sales Invoice from the Time Sheet, ensure 'Is Billable' field is checked.
-<img class="screenshot" alt="Sales Invoice" src="{{docs_base_url}}/assets/img/project//timesheet/timesheet-billable.png">
+<img class="screenshot" alt="Sales Invoice" src="/docs/assets/img/project//timesheet/timesheet-billable.png">
Based on the actual hours worked and Activity Cost of an Employee, Total Billing Amount will be calculated for Timesheet.
@@ -38,7 +40,7 @@
After submitting Timesheet, you will find buttons to create Sales Invoice and Salary Slip against this Timesheet.
-<img class="screenshot" alt="Sales Invoice" src="{{docs_base_url}}/assets//img/project/timesheet/timesheet-total.png">
+<img class="screenshot" alt="Sales Invoice" src="/docs/assets//img/project/timesheet/timesheet-total.png">
###Create Sales Invoice from Timesheet
@@ -46,13 +48,13 @@
In the Timesheet, if "Is Billable" is checked, you will find option to create Sales Invoice against it.
-<img class="screenshot" alt="Sales Invoice" src="{{docs_base_url}}/assets/img/project/timesheet/timesheet-invoice-1.png">
+<img class="screenshot" alt="Sales Invoice" src="/docs/assets/img/project/timesheet/timesheet-invoice-1.png">
####Sales Invoice
Sales Invoice has dedicated table for the Timesheet table where Timesheet details will be updated. You can select more Timesheets in this table.
-<img class="screenshot" alt="Sales Invoice" src="{{docs_base_url}}/assets/img/project/timesheet/timesheet-to-invoice.gif">
+<img class="screenshot" alt="Sales Invoice" src="/docs/assets/img/project/timesheet/timesheet-to-invoice.gif">
####Select Customer and Item
@@ -65,4 +67,4 @@
On submitting Sales Invoice, status of the Timesheets linked to the Sales Invoice will be updated as Billed.
-<img class="screenshot" alt="Sales Invoice" src="{{docs_base_url}}/assets/img/project/timesheet/timesheet-billed.png">
+<img class="screenshot" alt="Sales Invoice" src="/docs/assets/img/project/timesheet/timesheet-billed.png">
diff --git a/erpnext/docs/user/manual/en/projects/timesheet/timesheet-against-production-order.md b/erpnext/docs/user/manual/en/projects/timesheet/timesheet-against-production-order.md
index 6e108b3..da7bf2f 100644
--- a/erpnext/docs/user/manual/en/projects/timesheet/timesheet-against-production-order.md
+++ b/erpnext/docs/user/manual/en/projects/timesheet/timesheet-against-production-order.md
@@ -1,10 +1,12 @@
+# Timesheet Against Production Order
+
#Timesheet based on Production Order
Creating Timesheet for Production Order helps in capacity planning for the Workstations. Also it helps in tracking actual time consumed the Workstation for completing specific operation.
When a Production Order is submitted, based on the Planned Start Date and the availability of the Workstations, system schedules all operations by creating Timesheet.
-<img class="screenshot" alt="Sales Invoice" src="{{docs_base_url}}/assets/img/project/timesheet/timesheet-capacity-planning.png">
+<img class="screenshot" alt="Sales Invoice" src="/docs/assets/img/project/timesheet/timesheet-capacity-planning.png">
Let's assume we are manufacturing a mobile phone. As per the Bill of Material, time required for the assembly of components could be one hour. However the actual time taken for it's completion could be more than planned. The actual time tracking provides actual operation cost, hence helps in determining accurate valuation of the manufacturing item.
@@ -12,28 +14,28 @@
As per the Bill of Materials of manufacturing item, following are the Operations and Workstation through which raw-material items are processed.
-<img class="screenshot" alt="Sales Invoice" src="{{docs_base_url}}/assets/img/project/timesheet/timesheet-production-order-1.png">
+<img class="screenshot" alt="Sales Invoice" src="/docs/assets/img/project/timesheet/timesheet-production-order-1.png">
On submission on Production Order, Timesheet will be created automatically.
-<img class="screenshot" alt="Sales Invoice" src="{{docs_base_url}}/assets/img/project/timesheet/timesheet-production-order-2.png">
+<img class="screenshot" alt="Sales Invoice" src="/docs/assets/img/project/timesheet/timesheet-production-order-2.png">
####Time Sheet created from Production Order
In the Timesheet, unique row will be added for each Operation - Workstation. This allows operator/supervisor at the workstation to enter actual From Time and To Time taken for each Operation.
-<img class="screenshot" alt="Sales Invoice" src="{{docs_base_url}}/assets/img/project/timesheet/timesheet-production-order-3.gif">
+<img class="screenshot" alt="Sales Invoice" src="/docs/assets/img/project/timesheet/timesheet-production-order-3.gif">
After enter From Time and To Time for all the Operations, Total Hours will be calculated.
-<img class="screenshot" alt="Sales Invoice" src="{{docs_base_url}}/assets/img/project/timesheet/timesheet-production-order-6.png">
+<img class="screenshot" alt="Sales Invoice" src="/docs/assets/img/project/timesheet/timesheet-production-order-6.png">
With updating actual time, you can also enter "Completed Qty". If all the items are not processed in the same Timesheet, you can create another Timesheet from the Production Order.
-<img class="screenshot" alt="Sales Invoice" src="{{docs_base_url}}/assets/img/project/timesheet/timesheet-production-order-4.png">
+<img class="screenshot" alt="Sales Invoice" src="/docs/assets/img/project/timesheet/timesheet-production-order-4.png">
####Save and Submit Timesheet
On the submission of Timesheet, Total Hours is calculated. Also, in the Production Order, for each Operation, actual Start and End Time is updated.
-<img class="screenshot" alt="Sales Invoice" src="{{docs_base_url}}/assets/img/project/timesheet/timesheet-production-order-5.png">
+<img class="screenshot" alt="Sales Invoice" src="/docs/assets/img/project/timesheet/timesheet-production-order-5.png">
diff --git a/erpnext/docs/user/manual/en/projects/timesheet/timesheet-against-project.md b/erpnext/docs/user/manual/en/projects/timesheet/timesheet-against-project.md
index a8b2a6b..0a9f32f 100644
--- a/erpnext/docs/user/manual/en/projects/timesheet/timesheet-against-project.md
+++ b/erpnext/docs/user/manual/en/projects/timesheet/timesheet-against-project.md
@@ -1,12 +1,14 @@
+# Timesheet Against Project
+
#Timesheet against Project and Task
Timesheets can be tracked against Project and Tasks so that you can get reports on how much time was spent on each Task or Project.
-<img class="screenshot" alt="Sales Invoice" src="{{docs_base_url}}/assets/img/project/timesheet/timesheet-project.gif">
+<img class="screenshot" alt="Sales Invoice" src="/docs/assets/img/project/timesheet/timesheet-project.gif">
####Billable Timesheet
-To bill Customer based on Timesheet, check "Is Billable" in the Timesheet created against Project and Task. To learn more about billing Customer from Timesheet, click [here]({{docs_base_url}}/user/manual/en/projects/timesheet/sales-invoice-from-timesheet.html).
+To bill Customer based on Timesheet, check "Is Billable" in the Timesheet created against Project and Task. To learn more about billing Customer from Timesheet, click [here](/docs/user/manual/en/projects/timesheet/sales-invoice-from-timesheet.html).
User can also make invoice against timesheet by selecting the project on the invoice. System will fetch the records from the timesheet based on selected project, for mode detail check below video
<iframe width="560" height="315" src="https://www.youtube.com/embed/hVAjtOFFhDI" frameborder="0" allowfullscreen></iframe>
@@ -17,4 +19,4 @@
In the Timesheet, costing will be done based on Activity Cost multiplied with number of hours. Based the Timesheet Cost, total costing will be doen for the Task and Project as well.
-To learn about setup of Activity Type and Activity Cost, click [here]({{docs_base_url}}/user/manual/en/projects/articles/project-costing).
\ No newline at end of file
+To learn about setup of Activity Type and Activity Cost, click [here](/docs/user/manual/en/projects/articles/project-costing).
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/regional/index.md b/erpnext/docs/user/manual/en/regional/index.md
index 5798860..2598110 100644
--- a/erpnext/docs/user/manual/en/regional/index.md
+++ b/erpnext/docs/user/manual/en/regional/index.md
@@ -1,3 +1,5 @@
+# Regional
+
ERPNext aims to support local regulation for all the regions in the world. In most cases ERPNext is very flexible so you can easily add Custom Fields and make Custom Reports to support the regluation of your region.
As of mid-2017, ERPNext aims to pre-set additional fields and forms required for companies to easily submit reports to the relevant authorities.
diff --git a/erpnext/docs/user/manual/en/regional/india/gst-remimders.md b/erpnext/docs/user/manual/en/regional/india/gst-remimders.md
index 97f016d..b1061e4 100644
--- a/erpnext/docs/user/manual/en/regional/india/gst-remimders.md
+++ b/erpnext/docs/user/manual/en/regional/india/gst-remimders.md
@@ -4,7 +4,7 @@
To send GSTIN Reminders, you can either open the Customer / Supplier record or **GST Settings**
-<img class="screenshot" alt="GST Settings" src="{{docs_base_url}}/assets/img/regional/india/gst-settings.png">
+<img class="screenshot" alt="GST Settings" src="/docs/assets/img/regional/india/gst-settings.png">
Here you can click on the "Send GSTIN Update Reminders" button to send email reminders to all your customers
@@ -12,10 +12,10 @@
Your customers will receive an email asking them to update their GSTIN and that email will link them to a portal page:
-<img class="screenshot" alt="GST Portal Page" src="{{docs_base_url}}/assets/img/regional/india/gstin-portal-update.png">
+<img class="screenshot" alt="GST Portal Page" src="/docs/assets/img/regional/india/gstin-portal-update.png">
Here they can update their GSTIN and it will automatically be added to your customer GSTIN record.
#### Sample GSTIN Reminder Email
-<img class="screenshot" alt="GST Reminder Email" src="{{docs_base_url}}/assets/img/regional/india/gstin-reminder-email.png">
+<img class="screenshot" alt="GST Reminder Email" src="/docs/assets/img/regional/india/gstin-reminder-email.png">
diff --git a/erpnext/docs/user/manual/en/regional/india/gst-setup.md b/erpnext/docs/user/manual/en/regional/india/gst-setup.md
index 49d75b1..b89be53 100644
--- a/erpnext/docs/user/manual/en/regional/india/gst-setup.md
+++ b/erpnext/docs/user/manual/en/regional/india/gst-setup.md
@@ -4,7 +4,7 @@
GST Law requires that you maintain the GSTIN number for all your suppliers and vendors. In ERPNext, GSTIN is linked to the **Address**
-<img class="screenshot" alt="GST in Customer" src="{{docs_base_url}}/assets/img/regional/india/gstin-customer.gif">
+<img class="screenshot" alt="GST in Customer" src="/docs/assets/img/regional/india/gstin-customer.gif">
**GST for your Company Address**
@@ -12,20 +12,20 @@
Go to the Company master and add the GSTIN to your default address.
-<img class="screenshot" alt="GST in Company" src="{{docs_base_url}}/assets/img/regional/india/gstin-company.gif">
+<img class="screenshot" alt="GST in Company" src="/docs/assets/img/regional/india/gstin-company.gif">
**Include GSTIN number in the Address Template**
Open Address Template record for India, add GSTIN number and State Code there if not exists.
-<img class="screenshot" alt="GST in Company" src="{{docs_base_url}}/assets/img/regional/india/address-template-gstin.png">
+<img class="screenshot" alt="GST in Company" src="/docs/assets/img/regional/india/address-template-gstin.png">
### 2. Setting up HSN Codes
According to the GST Law, your itemised invoices must contain the HSN Code related to that Item. ERPNext comes pre-installed with all 12,000+ HSN Codes so that you can easily select the relevant HSN Code in your Item
-<img class="screenshot" alt="HSN in Item" src="{{docs_base_url}}/assets/img/regional/india/hsn-item.gif">
+<img class="screenshot" alt="HSN in Item" src="/docs/assets/img/regional/india/hsn-item.gif">
### 3. Making Tax Masters
@@ -35,7 +35,7 @@
**Note:** Usually the rate in CGST and SGST is half of IGST. For example if most of your items are billed at 18%, then create IGST at 18%, CGST and SGST at 9% each.
-<img class="screenshot" alt="GST in Customer" src="{{docs_base_url}}/assets/img/regional/india/gst-in-coa.png">
+<img class="screenshot" alt="GST in Customer" src="/docs/assets/img/regional/india/gst-in-coa.png">
### 4. Make Tax Templates
@@ -43,7 +43,7 @@
In your **In State GST** template, select 2 accounts, SGST and CGST
-<img class="screenshot" alt="GST in Customer" src="{{docs_base_url}}/assets/img/regional/india/gst-template-in-state.png">
+<img class="screenshot" alt="GST in Customer" src="/docs/assets/img/regional/india/gst-template-in-state.png">
In your **Out of State GST** template, select IGST
@@ -59,22 +59,22 @@
4. Select the the **In State GST** or **Out of State GST** template that you have created based on the type of transaction
5. Save and Submit the Invoice
-<img class="screenshot" alt="GST Invoice" src="{{docs_base_url}}/assets/img/regional/india/gst-invoice.gif">
+<img class="screenshot" alt="GST Invoice" src="/docs/assets/img/regional/india/gst-invoice.gif">
### 6. Print GST Tax Invoice
To print Tax Invoice as per GSTN guidelines, please select **GST Tax Invoice** print format. This print format includes company address, GSTIN numbers, HSN/SAC Code and item-wise tax breakup. And while printing select correct value of Invoice Copy field, to mention whether it is for the Customer, Supplier or Transporter.
-<img class="screenshot" alt="Sample GST Tax Invoice" src="{{docs_base_url}}/assets/img/regional/india/sample-gst-tax-invoice.png">
+<img class="screenshot" alt="Sample GST Tax Invoice" src="/docs/assets/img/regional/india/sample-gst-tax-invoice.png">
### Reports
ERPNext comes with most of your reports you need to prepare your GST Returns. Go to Accounts > GST India head for the list.
-<img class="screenshot" alt="GST Menus" src="{{docs_base_url}}/assets/img/regional/india/gst-menu.png">
+<img class="screenshot" alt="GST Menus" src="/docs/assets/img/regional/india/gst-menu.png">
You can check the impact of your invoice in the **GST Sales Register** and **GST Itemised Sales Register**
-<img class="screenshot" alt="GST Itemised Sales Register" src="{{docs_base_url}}/assets/img/regional/india/gst-itemised.png">
+<img class="screenshot" alt="GST Itemised Sales Register" src="/docs/assets/img/regional/india/gst-itemised.png">
diff --git a/erpnext/docs/user/manual/en/schools/Assessment/assessment_criteria.md b/erpnext/docs/user/manual/en/schools/Assessment/assessment_criteria.md
index 1538463..fbaa70f 100644
--- a/erpnext/docs/user/manual/en/schools/Assessment/assessment_criteria.md
+++ b/erpnext/docs/user/manual/en/schools/Assessment/assessment_criteria.md
@@ -1,13 +1,15 @@
+# Assessment Criteria
+
#Assessment Criteria
Assessment Criteria is the parameter based on which you assess the Student.
-<img class="screenshot" alt="Assessment Criteria" src="{{docs_base_url}}/assets/img/schools/assessment/assessment-criteria.png">
+<img class="screenshot" alt="Assessment Criteria" src="/docs/assets/img/schools/assessment/assessment-criteria.png">
After assessment is conducted for a Course, marks earned are entered based on the Assessment Criteria. For example, if assessment was conducted for science subject, then you can evaluate Student in Science on various criteria like Writing, Practicals, Presentation etc.
Assessment Criteria is be used when scheduling Assessment Plan for Student Group and Course.
-<img class="screenshot" alt="Assessment Plan Criteria" src="{{docs_base_url}}/assets/img/schools/assessment/assessment-plan-criteria.png">
+<img class="screenshot" alt="Assessment Plan Criteria" src="/docs/assets/img/schools/assessment/assessment-plan-criteria.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/Assessment/assessment_group.md b/erpnext/docs/user/manual/en/schools/Assessment/assessment_group.md
index ae67dba..53e95a9 100644
--- a/erpnext/docs/user/manual/en/schools/Assessment/assessment_group.md
+++ b/erpnext/docs/user/manual/en/schools/Assessment/assessment_group.md
@@ -1,13 +1,15 @@
+# Assessment Group
+
#Assessment Group
Assessment Group tree is a master where you can define the hierarchy for examination conducted in your education institute.
For example, if you conduct two assessment in a academic year, then setup Assessment Group as following.
-<img class="screenshot" alt="Assessment Group Term" src="{{docs_base_url}}/assets/img/schools/assessment/assessment-group-term.png">
+<img class="screenshot" alt="Assessment Group Term" src="/docs/assets/img/schools/assessment/assessment-group-term.png">
On the same lines, you can also define multiple Assessment Group bases on assessment conducted in your institute.
-<img class="screenshot" alt="Assessment Group Term" src="{{docs_base_url}}/assets/img/schools/assessment/assessment-group-details.png">
+<img class="screenshot" alt="Assessment Group Term" src="/docs/assets/img/schools/assessment/assessment-group-details.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/Assessment/assessment_plan.md b/erpnext/docs/user/manual/en/schools/Assessment/assessment_plan.md
index 85b03bf..8a3d427 100644
--- a/erpnext/docs/user/manual/en/schools/Assessment/assessment_plan.md
+++ b/erpnext/docs/user/manual/en/schools/Assessment/assessment_plan.md
@@ -1,3 +1,5 @@
+# Assessment Plan
+
#Assessment Plan
To schedule an assessment/examination for a Student Group, for specific Course, create Assessment Plan. In the Assessment Plan, you can also capture details like:
@@ -10,10 +12,10 @@
4. Examiner and Supervisor
-<img class="screenshot" alt="Assessment Plan Details" src="{{docs_base_url}}/assets/img/schools/assessment/assessment-plan-details.png">
+<img class="screenshot" alt="Assessment Plan Details" src="/docs/assets/img/schools/assessment/assessment-plan-details.png">
5. Assessment Criteria is list of criteria based which each student in will be evaluated and grades will be assigned.
-<img class="screenshot" alt="Assessment Plan Criteria" src="{{docs_base_url}}/assets/img/schools/assessment/assessment-plan-criteria.png">
+<img class="screenshot" alt="Assessment Plan Criteria" src="/docs/assets/img/schools/assessment/assessment-plan-criteria.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/Assessment/assessment_result.md b/erpnext/docs/user/manual/en/schools/Assessment/assessment_result.md
index 68d17e1..766f5d8 100644
--- a/erpnext/docs/user/manual/en/schools/Assessment/assessment_result.md
+++ b/erpnext/docs/user/manual/en/schools/Assessment/assessment_result.md
@@ -1,7 +1,9 @@
+# Assessment Result
+
#Assessment Result
-Assessment Result is a log of marks/grades earned by the student for specific Assessment. Assessment Result is created in the backend based on the marks entered in the [Assessment Result Tool]({{docs_base_url}}/user/manual/en/schools/assessment/assessment_result_tool.html).
+Assessment Result is a log of marks/grades earned by the student for specific Assessment. Assessment Result is created in the backend based on the marks entered in the [Assessment Result Tool](/docs/user/manual/en/schools/assessment/assessment_result_tool.html).
-<img class="screenshot" alt="Assessment Result" src="{{docs_base_url}}/assets/img/schools/assessment/assessment-result.png">
+<img class="screenshot" alt="Assessment Result" src="/docs/assets/img/schools/assessment/assessment-result.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/Assessment/assessment_result_tool.md b/erpnext/docs/user/manual/en/schools/Assessment/assessment_result_tool.md
index a1111eb..3e60835 100644
--- a/erpnext/docs/user/manual/en/schools/Assessment/assessment_result_tool.md
+++ b/erpnext/docs/user/manual/en/schools/Assessment/assessment_result_tool.md
@@ -1,8 +1,10 @@
+# Assessment Result Tool
+
#Assessment Result Tool
Assessment Result Tool help you entering marks earned by the Students for specific course. In this tool, based on the Assessment Plan, all the Student will be fetched into Assessment Result Tool. Also, Columns for Assessment Criteria will be where marks earned can be entered for each Student.
-<img class="screenshot" alt="Assessment Result Tool" src="{{docs_base_url}}/assets/img/schools/assessment/assessment-result-tool.png">
+<img class="screenshot" alt="Assessment Result Tool" src="/docs/assets/img/schools/assessment/assessment-result-tool.png">
As you go on entering marks for a Student, and switch to next student, in the backend, Student Result record will be auto-created for that Student.
diff --git a/erpnext/docs/user/manual/en/schools/Assessment/grading_scale.md b/erpnext/docs/user/manual/en/schools/Assessment/grading_scale.md
index c0a39cb..11858dd 100644
--- a/erpnext/docs/user/manual/en/schools/Assessment/grading_scale.md
+++ b/erpnext/docs/user/manual/en/schools/Assessment/grading_scale.md
@@ -1,7 +1,9 @@
+# Grading Scale
+
#Grading Scale
In the Grading Scale, you can define various grades and threshold for them. Based on the score earned by an Student for an Assessment, Grade will be assigned.
-<img class="screenshot" alt="Grading Scale" src="{{docs_base_url}}/assets/img/schools/assessment/grading-scale.png">
+<img class="screenshot" alt="Grading Scale" src="/docs/assets/img/schools/assessment/grading-scale.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/Assessment/index.md b/erpnext/docs/user/manual/en/schools/Assessment/index.md
index 3dab62a..2bbab8e 100644
--- a/erpnext/docs/user/manual/en/schools/Assessment/index.md
+++ b/erpnext/docs/user/manual/en/schools/Assessment/index.md
@@ -1,3 +1,5 @@
+# Assessment
+
#Assessment
Every education institute organizes assessment / examination to evaluates progress of their Students. In ERPNext, you can manage complete assessment processing for your ERPNext account.
diff --git a/erpnext/docs/user/manual/en/schools/admission/program-enrollment.md b/erpnext/docs/user/manual/en/schools/admission/program-enrollment.md
index 060033c..2dcc6cb 100644
--- a/erpnext/docs/user/manual/en/schools/admission/program-enrollment.md
+++ b/erpnext/docs/user/manual/en/schools/admission/program-enrollment.md
@@ -1,5 +1,7 @@
+# Program Enrollment
+
This form allows you to enroll a student to a program. A student can be enrolled to multiple programs.
-<img class="screenshot" alt="Student Applicant Enrollment" src="{{url_prefix}}/assets/img/schools/admission/program-enrollment.png">
+<img class="screenshot" alt="Student Applicant Enrollment" src="/docs/assets/img/schools/admission/program-enrollment.png">
{next}
diff --git a/erpnext/docs/user/manual/en/schools/admission/student-applicant.md b/erpnext/docs/user/manual/en/schools/admission/student-applicant.md
index 2b33cf9..e67c1dc 100644
--- a/erpnext/docs/user/manual/en/schools/admission/student-applicant.md
+++ b/erpnext/docs/user/manual/en/schools/admission/student-applicant.md
@@ -3,7 +3,7 @@
A Student Applicant record needs to be created when a student applies for a program at your institute.
You can Approve or Reject a student applicant. By accepting a student applicant you can add them to the student master.
-<img class="screenshot" alt="Student Applicant" src="{{url_prefix}}/assets/img/schools/admission/student-applicant.png">
+<img class="screenshot" alt="Student Applicant" src="/docs/assets/img/schools/admission/student-applicant.png">
### Application Status
@@ -21,8 +21,8 @@
Once you approve a Student Applicant you can enroll them to a program. When you click the 'Enroll' buttom,
-the system shall create a student against that applicant and redirect you to the [Program Enrollment form]({{docs_base_url}}/user/manual/en/schools/student/program-enrollment.html).
+the system shall create a student against that applicant and redirect you to the [Program Enrollment form](/docs/user/manual/en/schools/student/program-enrollment.html).
-<img class="screenshot" alt="Student Applicant Enrollment" src="{{url_prefix}}/assets/img/schools/admission/student-applicant-enroll.png">
+<img class="screenshot" alt="Student Applicant Enrollment" src="/docs/assets/img/schools/admission/student-applicant-enroll.png">
{next}
diff --git a/erpnext/docs/user/manual/en/schools/fees/fee-category.md b/erpnext/docs/user/manual/en/schools/fees/fee-category.md
index d6694b5..fbf43e6 100644
--- a/erpnext/docs/user/manual/en/schools/fees/fee-category.md
+++ b/erpnext/docs/user/manual/en/schools/fees/fee-category.md
@@ -2,6 +2,6 @@
List of all different type of fees collected.
-<img class="screenshot" alt="Fees Category" src="{{url_prefix}}/assets/img/schools/fees/fee-category.png">
+<img class="screenshot" alt="Fees Category" src="/docs/assets/img/schools/fees/fee-category.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/fees/fee-structure.md b/erpnext/docs/user/manual/en/schools/fees/fee-structure.md
index 08d09e5..a1dd9be 100644
--- a/erpnext/docs/user/manual/en/schools/fees/fee-structure.md
+++ b/erpnext/docs/user/manual/en/schools/fees/fee-structure.md
@@ -2,6 +2,6 @@
A Fee Structure is a template that can be used while making fee records.
-<img class="screenshot" alt="Fees Structure" src="{{url_prefix}}/assets/img/schools/fees/fee-structure.png">
+<img class="screenshot" alt="Fees Structure" src="/docs/assets/img/schools/fees/fee-structure.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/fees/fees.md b/erpnext/docs/user/manual/en/schools/fees/fees.md
index 242abf8..f17720c 100644
--- a/erpnext/docs/user/manual/en/schools/fees/fees.md
+++ b/erpnext/docs/user/manual/en/schools/fees/fees.md
@@ -1,8 +1,8 @@
# Fees
Maintain a record of fees collected from students.
-The [Fee Structure]({{docs_base_url}}/user/manual/en/schools/fees/fee-structure.html) is fetched based on the selected Program and Academic Term.
+The [Fee Structure](/docs/user/manual/en/schools/fees/fee-structure.html) is fetched based on the selected Program and Academic Term.
-<img class="screenshot" alt="Fees" src="{{url_prefix}}/assets/img/schools/fees/fees.png">
+<img class="screenshot" alt="Fees" src="/docs/assets/img/schools/fees/fees.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/fees/index.md b/erpnext/docs/user/manual/en/schools/fees/index.md
index f75c537..c5be5f6 100644
--- a/erpnext/docs/user/manual/en/schools/fees/index.md
+++ b/erpnext/docs/user/manual/en/schools/fees/index.md
@@ -2,7 +2,7 @@
This section contains 'Fee' related documents.
-<img class="screenshot" alt="Fees Section" src="{{url_prefix}}/assets/img/schools/fees/fees-section.png">
+<img class="screenshot" alt="Fees Section" src="/docs/assets/img/schools/fees/fees-section.png">
### Topics
diff --git a/erpnext/docs/user/manual/en/schools/index.md b/erpnext/docs/user/manual/en/schools/index.md
index e2172ff..8c766d6 100644
--- a/erpnext/docs/user/manual/en/schools/index.md
+++ b/erpnext/docs/user/manual/en/schools/index.md
@@ -1,6 +1,8 @@
+# Schools
+
The School Modules is designed to meet requirements of Schools, Colleges & Educational Institutes.
-<img class="screenshot" alt="Fees Section" src="{{url_prefix}}/assets/img/schools/module.png">
+<img class="screenshot" alt="Fees Section" src="/docs/assets/img/schools/module.png">
{index}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/schedule/course-schedule.md b/erpnext/docs/user/manual/en/schools/schedule/course-schedule.md
index 9c27f61..9f7d980 100644
--- a/erpnext/docs/user/manual/en/schools/schedule/course-schedule.md
+++ b/erpnext/docs/user/manual/en/schools/schedule/course-schedule.md
@@ -3,13 +3,13 @@
Course Schedule is the schedule of a session conducted by an Instructor for a particular Course.
You can see the overall course schedule in the Calendar view.
-<img class="screenshot" alt="Course Schedule" src="{{url_prefix}}/assets/img/schools/schedule/course-schedule.png">
+<img class="screenshot" alt="Course Schedule" src="/docs/assets/img/schools/schedule/course-schedule.png">
### Marking Attendance
You can mark attendance for a Student Group against a Course Schedule.
-<img class="screenshot" alt="Course Schedule Attendance" src="{{url_prefix}}/assets/img/schools/schedule/course-schedule-att.png">
+<img class="screenshot" alt="Course Schedule Attendance" src="/docs/assets/img/schools/schedule/course-schedule-att.png">
- To make attendance, expand the attendance section.
- Check the students who were present for that session.
@@ -20,6 +20,6 @@
Once you have marked Attendance against a Course Schedule the Attendance section in the Course Schedule shall be hidden.
A View Attendance button shall appear. Click on that button to view all attendance records created against that Course Schedule.
-<img class="screenshot" alt="Course Schedule Attendance" src="{{url_prefix}}/assets/img/schools/schedule/course-schedule-att-1.png">
+<img class="screenshot" alt="Course Schedule Attendance" src="/docs/assets/img/schools/schedule/course-schedule-att-1.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/schedule/examination.md b/erpnext/docs/user/manual/en/schools/schedule/examination.md
index cd5d838..d167e9c 100644
--- a/erpnext/docs/user/manual/en/schools/schedule/examination.md
+++ b/erpnext/docs/user/manual/en/schools/schedule/examination.md
@@ -2,7 +2,7 @@
The Examination record can be used to track the exam schedule and the results of that exam.
-<img class="screenshot" alt="Examination" src="{{url_prefix}}/assets/img/schools/schedule/examination.png">
+<img class="screenshot" alt="Examination" src="/docs/assets/img/schools/schedule/examination.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/schedule/index.md b/erpnext/docs/user/manual/en/schools/schedule/index.md
index 3fd993e..57e578b 100644
--- a/erpnext/docs/user/manual/en/schools/schedule/index.md
+++ b/erpnext/docs/user/manual/en/schools/schedule/index.md
@@ -1,6 +1,6 @@
# Schedule
-<img class="screenshot" alt="Schedule Section" src="{{url_prefix}}/assets/img/schools/schedule/schedule-section.png">
+<img class="screenshot" alt="Schedule Section" src="/docs/assets/img/schools/schedule/schedule-section.png">
### Topics
diff --git a/erpnext/docs/user/manual/en/schools/schedule/scheduling-tool.md b/erpnext/docs/user/manual/en/schools/schedule/scheduling-tool.md
index 84b3908..9e13d6d 100644
--- a/erpnext/docs/user/manual/en/schools/schedule/scheduling-tool.md
+++ b/erpnext/docs/user/manual/en/schools/schedule/scheduling-tool.md
@@ -2,7 +2,7 @@
This tool can be used to create 'Course Schedules'.
-<img class="screenshot" alt="Scheduling Tool" src="{{url_prefix}}/assets/img/schools/schedule/scheduling-tool.png">
+<img class="screenshot" alt="Scheduling Tool" src="/docs/assets/img/schools/schedule/scheduling-tool.png">
### Creating Course Schedules
diff --git a/erpnext/docs/user/manual/en/schools/schedule/student-attendance.md b/erpnext/docs/user/manual/en/schools/schedule/student-attendance.md
index 474b543..84e1ea8 100644
--- a/erpnext/docs/user/manual/en/schools/schedule/student-attendance.md
+++ b/erpnext/docs/user/manual/en/schools/schedule/student-attendance.md
@@ -2,6 +2,6 @@
Maintains attendance record of the student. Attendance Records can be created against Course Schedules.
-<img class="screenshot" alt="Student Attendance" src="{{url_prefix}}/assets/img/schools/schedule/student-attendance.png">
+<img class="screenshot" alt="Student Attendance" src="/docs/assets/img/schools/schedule/student-attendance.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/setup/academic-term.md b/erpnext/docs/user/manual/en/schools/setup/academic-term.md
index dbce6d9..6306444 100644
--- a/erpnext/docs/user/manual/en/schools/setup/academic-term.md
+++ b/erpnext/docs/user/manual/en/schools/setup/academic-term.md
@@ -1,6 +1,6 @@
# Academic Term
-<img class="screenshot" alt="Academic Term" src="{{url_prefix}}/assets/img/schools/setup/academic-term.png">
+<img class="screenshot" alt="Academic Term" src="/docs/assets/img/schools/setup/academic-term.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/setup/academic-year.md b/erpnext/docs/user/manual/en/schools/setup/academic-year.md
index 4a15393..3913eb6 100644
--- a/erpnext/docs/user/manual/en/schools/setup/academic-year.md
+++ b/erpnext/docs/user/manual/en/schools/setup/academic-year.md
@@ -1,5 +1,5 @@
# Academic Year
-<img class="screenshot" alt="Academic Year" src="{{url_prefix}}/assets/img/schools/setup/academic-year.png">
+<img class="screenshot" alt="Academic Year" src="/docs/assets/img/schools/setup/academic-year.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/setup/course.md b/erpnext/docs/user/manual/en/schools/setup/course.md
index da5fa37..140131d 100644
--- a/erpnext/docs/user/manual/en/schools/setup/course.md
+++ b/erpnext/docs/user/manual/en/schools/setup/course.md
@@ -1,5 +1,5 @@
# Course
-<img class="screenshot" alt="Course" src="{{url_prefix}}/assets/img/schools/setup/course.png">
+<img class="screenshot" alt="Course" src="/docs/assets/img/schools/setup/course.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/setup/index.md b/erpnext/docs/user/manual/en/schools/setup/index.md
index 5a360dd..9de7536 100644
--- a/erpnext/docs/user/manual/en/schools/setup/index.md
+++ b/erpnext/docs/user/manual/en/schools/setup/index.md
@@ -1,6 +1,6 @@
# Setup
-<img class="screenshot" alt="Setup Section" src="{{url_prefix}}/assets/img/schools/setup/setup-section.png">
+<img class="screenshot" alt="Setup Section" src="/docs/assets/img/schools/setup/setup-section.png">
### Topics
diff --git a/erpnext/docs/user/manual/en/schools/setup/instructor.md b/erpnext/docs/user/manual/en/schools/setup/instructor.md
index adbfe2a..1a4d351 100644
--- a/erpnext/docs/user/manual/en/schools/setup/instructor.md
+++ b/erpnext/docs/user/manual/en/schools/setup/instructor.md
@@ -1,5 +1,5 @@
# Instructor
-<img class="screenshot" alt="Instructor" src="{{url_prefix}}/assets/img/schools/setup/instructor.png">
+<img class="screenshot" alt="Instructor" src="/docs/assets/img/schools/setup/instructor.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/setup/program.md b/erpnext/docs/user/manual/en/schools/setup/program.md
index 813019b..64513e2 100644
--- a/erpnext/docs/user/manual/en/schools/setup/program.md
+++ b/erpnext/docs/user/manual/en/schools/setup/program.md
@@ -1,5 +1,5 @@
# Program
-<img class="screenshot" alt="Program" src="{{url_prefix}}/assets/img/schools/setup/program.png">
+<img class="screenshot" alt="Program" src="/docs/assets/img/schools/setup/program.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/setup/room.md b/erpnext/docs/user/manual/en/schools/setup/room.md
index 052e962..bb265e3 100644
--- a/erpnext/docs/user/manual/en/schools/setup/room.md
+++ b/erpnext/docs/user/manual/en/schools/setup/room.md
@@ -1,6 +1,6 @@
# Room
-<img class="screenshot" alt="Room" src="{{url_prefix}}/assets/img/schools/setup/room.png">
+<img class="screenshot" alt="Room" src="/docs/assets/img/schools/setup/room.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/student/student-batch.md b/erpnext/docs/user/manual/en/schools/student/student-batch.md
index 0f29d46..4987c03 100644
--- a/erpnext/docs/user/manual/en/schools/student/student-batch.md
+++ b/erpnext/docs/user/manual/en/schools/student/student-batch.md
@@ -2,6 +2,6 @@
Student batch is a collection of students from Student Groups.
-<img class="screenshot" alt="Student" src="{{url_prefix}}/assets/img/schools/student/student-batch.png">
+<img class="screenshot" alt="Student" src="/docs/assets/img/schools/student/student-batch.png">
{next}
diff --git a/erpnext/docs/user/manual/en/schools/student/student-group-creation-tool.md b/erpnext/docs/user/manual/en/schools/student/student-group-creation-tool.md
index 1fcd87c..130c944 100644
--- a/erpnext/docs/user/manual/en/schools/student/student-group-creation-tool.md
+++ b/erpnext/docs/user/manual/en/schools/student/student-group-creation-tool.md
@@ -1,6 +1,8 @@
+# Student Group Creation Tool
+
This tool allows you to create student groups in bulk. You can specify multiple parameters to create them.
-<img class="screenshot" alt="Student Group Creation Tool" src="{{url_prefix}}/assets/img/schools/student/student-group-creation-tool.png">
+<img class="screenshot" alt="Student Group Creation Tool" src="/docs/assets/img/schools/student/student-group-creation-tool.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/student/student-group.md b/erpnext/docs/user/manual/en/schools/student/student-group.md
index eaa60f7..191e917 100644
--- a/erpnext/docs/user/manual/en/schools/student/student-group.md
+++ b/erpnext/docs/user/manual/en/schools/student/student-group.md
@@ -3,6 +3,6 @@
A student group is a collection of students taking a same course. You can create Course Schedules and Examinations against a Student Group.
A student group needs to be created for every course in a particular academic term and academic year.
-<img class="screenshot" alt="Student Group" src="{{url_prefix}}/assets/img/schools/student/student-group.png">
+<img class="screenshot" alt="Student Group" src="/docs/assets/img/schools/student/student-group.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/schools/student/student-log.md b/erpnext/docs/user/manual/en/schools/student/student-log.md
index 787dacb..a037a23 100644
--- a/erpnext/docs/user/manual/en/schools/student/student-log.md
+++ b/erpnext/docs/user/manual/en/schools/student/student-log.md
@@ -3,6 +3,6 @@
You can make a note of student activities using student log.
Logs can be categorised as 'General', 'Academic', 'Medical' or 'Achievement'
-<img class="screenshot" alt="Student" src="{{url_prefix}}/assets/img/schools/student/student-log.png">
+<img class="screenshot" alt="Student" src="/docs/assets/img/schools/student/student-log.png">
{next}
diff --git a/erpnext/docs/user/manual/en/schools/student/student.md b/erpnext/docs/user/manual/en/schools/student/student.md
index a86d36e..dd99a80 100644
--- a/erpnext/docs/user/manual/en/schools/student/student.md
+++ b/erpnext/docs/user/manual/en/schools/student/student.md
@@ -5,6 +5,6 @@
You can view everything related to a particular student on this page. Eg : Fees, Student Group, etc
-<img class="screenshot" alt="Student" src="{{url_prefix}}/assets/img/schools/student/student.png">
+<img class="screenshot" alt="Student" src="/docs/assets/img/schools/student/student.png">
{next}
diff --git a/erpnext/docs/user/manual/en/selling/articles/Selling-in-different-UOM.md b/erpnext/docs/user/manual/en/selling/articles/Selling-in-different-UOM.md
index 1efed75..2589133 100644
--- a/erpnext/docs/user/manual/en/selling/articles/Selling-in-different-UOM.md
+++ b/erpnext/docs/user/manual/en/selling/articles/Selling-in-different-UOM.md
@@ -1,3 +1,5 @@
+# Selling In Different Uom
+
#Selling in Different Unit (UoM)
A sell price unit of measure (UOM) is the UOM with which you price items. You can have multiple sell price UOMs for any inventory item. However, when Customer places, UoM for an item could change.
@@ -7,7 +9,7 @@
###Step 1: In the Item master, under Unit of Measure section, you can list all the possible UoM of an item, with its UoM Conversion Factor. Update UoM Conversion Factors
In one Box, if you get 10 Nos. of Pen, UoM Conversion Factor would be 10.
-<img class="screenshot" alt="Item Unit of Measure" src="{{docs_base_url}}/assets/img/selling/Item-UOM.png">
+<img class="screenshot" alt="Item Unit of Measure" src="/docs/assets/img/selling/Item-UOM.png">
###Setp 2: In the Sale Order, you will find two UoM fields
@@ -17,7 +19,7 @@
In both the fields, default UoM of an item will be fetched by default. You should edit UoM field, and select Sale UoM (Box in this case). Updating Sales UoM is mainly for the reference of the Customer. In the print format, you will see item quantity in the Sales UoM.
-<img class="screenshot" alt="Sale order Unit of Measure" src="{{docs_base_url}}/assets/img/selling/Sale-Order-UOM.png">
+<img class="screenshot" alt="Sale order Unit of Measure" src="/docs/assets/img/selling/Sale-Order-UOM.png">
Based on the Qty and Conversion Factor, qty will be calculated in the Stock UoM of an item. If you sell just one Box, then Qty as per stock UoM will be set as 10.
@@ -26,4 +28,4 @@
Irrespective of the Sales UoM selected in the Sale Order, stock ledger posting will be done in the Default UoM of an item. Hence you should ensure that conversion factor is entered correctly while selling item in different UoM.
-<img class="screenshot" alt="Stock report in UOM" src="{{docs_base_url}}/assets/img/selling/stock ledger for as STOCK-UOM.png">
+<img class="screenshot" alt="Stock report in UOM" src="/docs/assets/img/selling/stock ledger for as STOCK-UOM.png">
diff --git a/erpnext/docs/user/manual/en/selling/articles/adding-margin.md b/erpnext/docs/user/manual/en/selling/articles/adding-margin.md
index 2725fee..fd96d46 100644
--- a/erpnext/docs/user/manual/en/selling/articles/adding-margin.md
+++ b/erpnext/docs/user/manual/en/selling/articles/adding-margin.md
@@ -1,3 +1,5 @@
+# Adding Margin
+
#Adding Margin
User Can apply the margin on Quotation Item and Sales Order Item using following two options.
@@ -9,7 +11,7 @@
####Adding Margin in Pricing Rule
-<img alt="Adding Margin in Pricing Rule" class="screenshot" src="{{docs_base_url}}/assets/img/selling/margin-pricing-rule.png">
+<img alt="Adding Margin in Pricing Rule" class="screenshot" src="/docs/assets/img/selling/margin-pricing-rule.png">
Total Margin is calculated as follows:
`Rate = Price List Rate + Margin Rate`
@@ -22,7 +24,7 @@
####Adding Item Price
-<img alt="Adding Margin in Pricing Rule" class="screenshot" src="{{docs_base_url}}/assets/img/selling/margin-item-price-list.png">
+<img alt="Adding Margin in Pricing Rule" class="screenshot" src="/docs/assets/img/selling/margin-item-price-list.png">
2) Apply margin direct on Item: If user wants to apply the margin without pricing rule, they can use this option. In Quotation Item and Sales Order Item, user can select the margin type and rate or amount. The system will calculate the margin and apply it on price list rate to calculate the rate of the product.
@@ -34,4 +36,4 @@
####Adding Margin in Quotation
-<img alt="Adding Margin in Quotation" class="screenshot" src="{{docs_base_url}}/assets/img/selling/margin-quotation-item.png">
+<img alt="Adding Margin in Quotation" class="screenshot" src="/docs/assets/img/selling/margin-quotation-item.png">
diff --git a/erpnext/docs/user/manual/en/selling/articles/applying-discount.md b/erpnext/docs/user/manual/en/selling/articles/applying-discount.md
index ad66ccc..a2a62a4 100644
--- a/erpnext/docs/user/manual/en/selling/articles/applying-discount.md
+++ b/erpnext/docs/user/manual/en/selling/articles/applying-discount.md
@@ -1,3 +1,5 @@
+# Applying Discount
+
#Applying Discount
There are several ways Discount can be applied on an item in the sales transactions.
@@ -6,28 +8,28 @@
You can find the Discount (%) field in the Item table. Discount (%) is applied on the Price List Rate to get the selling Rate of the Item.
-<img alt="Discount Percentage" class="screenshot" src="{{docs_base_url}}/assets/img/articles/discount-1.png">
+<img alt="Discount Percentage" class="screenshot" src="/docs/assets/img/articles/discount-1.png">
The feature of Discount (%) is available in all sales and purchase transactions.
-You can use Pricing Rule for auto-application of Discount (%). [Click here to learn how Pricing Rule functions.]({{docs_base_url}}/user/manual/en/accounts/pricing-rule.html)
+You can use Pricing Rule for auto-application of Discount (%). [Click here to learn how Pricing Rule functions.](/docs/user/manual/en/accounts/pricing-rule.html)
#### 2. Discount on Net Total and Grand Total
In the "Additional Discount" section, you can apply discount as amount or as percentage.
-<img alt="Discount Percentage" class="screenshot" src="{{docs_base_url}}/assets/img/articles/discount-2.png">
+<img alt="Discount Percentage" class="screenshot" src="/docs/assets/img/articles/discount-2.png">
##### Discount on Net Total
If Discount Amount is applied on **Net Total**, then item's Net Rate and Net Amount is calculated as per the Discount Amount. Net Rate and Amount field will be visible only if Discount is applied using this feature.
-<img alt="Discount Percentage" class="screenshot" src="{{docs_base_url}}/assets/img/articles/discount-on-net-total.png">
+<img alt="Discount Percentage" class="screenshot" src="/docs/assets/img/articles/discount-on-net-total.png">
##### Discount on Grand Total
If Discount Amount is applied based on the **Grand Total**, then with item's Net Rate, Net Amount as well as taxes are also re-calculated as per Discount Amount.
-<img alt="Discount Percentage" class="screenshot" src="{{docs_base_url}}/assets/img/articles/discount-on-grand-total.png">
+<img alt="Discount Percentage" class="screenshot" src="/docs/assets/img/articles/discount-on-grand-total.png">
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/selling/articles/close-sales-order.md b/erpnext/docs/user/manual/en/selling/articles/close-sales-order.md
index 3990e7d..0b41a64 100644
--- a/erpnext/docs/user/manual/en/selling/articles/close-sales-order.md
+++ b/erpnext/docs/user/manual/en/selling/articles/close-sales-order.md
@@ -1,8 +1,10 @@
+# Close Sales Order
+
#Close Sales Order
In the submitted Sales Orders, you will find **Stop** option. Stopping Sales Order will restrict user from creating Delivery Note and Sales Invoice against it.
-<img alt="Close SO" class="screenshot" src="{{docs_base_url}}/assets/img/articles/close-1.png">
+<img alt="Close SO" class="screenshot" src="/docs/assets/img/articles/close-1.png">
####Scenario
@@ -10,7 +12,7 @@
In this case, create Delivery Note and Sales Invoice will be created only for the seven units. And the Sales Order should be set as stopped.
-<img alt="Closed SO" class="screenshot" src="{{docs_base_url}}/assets/img/articles/close-2.png">
+<img alt="Closed SO" class="screenshot" src="/docs/assets/img/articles/close-2.png">
Once Sales Order is set as stopped, you will not have pending quantities (three in this case) reflecting in Pending to Deliver and Pending to Invoice reports. To make further transactions against Stopped Sales Order, you should first Unstop it.
diff --git a/erpnext/docs/user/manual/en/selling/articles/drop-shipping.md b/erpnext/docs/user/manual/en/selling/articles/drop-shipping.md
index 2d12ff4..fd39d48 100644
--- a/erpnext/docs/user/manual/en/selling/articles/drop-shipping.md
+++ b/erpnext/docs/user/manual/en/selling/articles/drop-shipping.md
@@ -1,3 +1,5 @@
+# Drop Shipping
+
#Drop Ship
**Drop shipping** is a supply chain management technique in which the retailer does not keep goods in stock. Instead they transfer customer orders and shipment details to either the manufacturer, another retailer, or a wholesaler, who then ships the goods directly to the customer
@@ -10,19 +12,19 @@
Set **_Delivered by Supplier (Drop Ship)_** and **_Default Supplier_** in Item Master.
-<img class="screenshot" alt="Setup Item Master" src="{{docs_base_url}}/assets/img/selling/setup-drop-ship-on-item-master.png">
+<img class="screenshot" alt="Setup Item Master" src="/docs/assets/img/selling/setup-drop-ship-on-item-master.png">
#### Setup on Sales Order
If Drop Shipping has set on Item master, it will automatically set **Supplier delivers to Customer** and **Supplier** on Sales Order Item.
You can setup Drop Shipping, on Sales Order Item. Under **Drop Ship** section, set **Supplier delivers to Customer** and select **Supplier** agaist which Purchase Order will get created.
-<img class="screenshot" alt="Setup Drop Shipping on Sales Order Item" src="{{docs_base_url}}/assets/img/selling/setup-drop-ship-on-sales-order-item.png">
+<img class="screenshot" alt="Setup Drop Shipping on Sales Order Item" src="/docs/assets/img/selling/setup-drop-ship-on-sales-order-item.png">
#### Create Purchase Order
After submitting a Sales Order, create Puchase Order.
-<img class="screenshot" alt="Setup Drop Shipping on Sales Order Item" src="{{docs_base_url}}/assets/img/selling/drop-ship-sales-order.png">
+<img class="screenshot" alt="Setup Drop Shipping on Sales Order Item" src="/docs/assets/img/selling/drop-ship-sales-order.png">
From Sales Order, all items, having **Supplier delivers to Customer** checked or **Supplier**(matching with supplier selected on For Supplier popup) mentioned, will get mapped onto Purchase Order.
@@ -30,16 +32,16 @@
After submitting Purchase Order, to update delivery status, use **Mark as Delivered** button on Purchase Order. It will update delivery percetage and delivered quantity on Sales Order.
-<img class="screenshot" alt="Purchase Order for Drop Shipping" src="{{docs_base_url}}/assets/img/selling/drop-ship-purchase-order.png">
+<img class="screenshot" alt="Purchase Order for Drop Shipping" src="/docs/assets/img/selling/drop-ship-purchase-order.png">
<span style="color:#18B52D">**_Close_**</span>, is a new feature introduced on **Purchase Order** and **Sales Order**, to close or to mark fulfillment.
-<img class="screenshot" alt="Close Sales Order" src="{{docs_base_url}}/assets/img/selling/close-sales-order.png">
+<img class="screenshot" alt="Close Sales Order" src="/docs/assets/img/selling/close-sales-order.png">
###Drop Shipping Print Format
You can notify, Suppliers by sending a email after submitting Purchase Order by attaching Drop Shipping print format.
-<img class="screenshot" alt="Drop Dhip Print Format" src="{{docs_base_url}}/assets/img/selling/drop-ship-print-format.png">
+<img class="screenshot" alt="Drop Dhip Print Format" src="/docs/assets/img/selling/drop-ship-print-format.png">
###Video Help on Drop Ship
diff --git a/erpnext/docs/user/manual/en/selling/articles/erpnext-for-services-organization.md b/erpnext/docs/user/manual/en/selling/articles/erpnext-for-services-organization.md
index f905dfd..09d071f 100644
--- a/erpnext/docs/user/manual/en/selling/articles/erpnext-for-services-organization.md
+++ b/erpnext/docs/user/manual/en/selling/articles/erpnext-for-services-organization.md
@@ -1,3 +1,5 @@
+# Erpnext For Services Organization
+
#ERPNext for Service Organization
**Question:** ERPNext looks primarily designed for the traders and manufacturers. Is ERPNext used by companies offering servies?
@@ -14,7 +16,7 @@
To create a Service (non-stock) Item, in the item master, uncheck "Maintain Stock" field.
-<img alt="Service Item" class="screenshot" src="{{docs_base_url}}/assets/img/articles/services-1.png">
+<img alt="Service Item" class="screenshot" src="/docs/assets/img/articles/services-1.png">
When creating Sales Order for the services, select Order Type as **Maintenance**. Sales Order of Maintenance Type needs lesser details compared to stock item's order like Delivery Note, item warehouse etc.
@@ -32,11 +34,11 @@
Within the form, there are many fields only needed for companies into trading and manufacturing businesses. These fields can be hidden for the service company. Feature Setup is a tool where you can enable/disable specific feature. If a feature is disabled, then fields relevant to that feature is hidden from all the forms. For example, if Serial No. feature is disabled, then Serial. No. field from Item as well as from all the sales and purchase transaction will be hidden.
-[To learn more about Feature Setup, click here.]({{docs_base_url}}/user/manual/en/customize-erpnext/hiding-modules-and-features.html).
+[To learn more about Feature Setup, click here.](/docs/user/manual/en/customize-erpnext/hiding-modules-and-features.html).
####Permissions
-ERPNext is the permission controlled system. Users access system based on permissions assigned to them. So, if user is not assigned Role related to Stock and Manufacturing module, it will be hidden from that User. [Click here to learn more about permission management.]({{docs_base_url}}/user/manual/en/setting-up/users-and-permissions.html).
+ERPNext is the permission controlled system. Users access system based on permissions assigned to them. So, if user is not assigned Role related to Stock and Manufacturing module, it will be hidden from that User. [Click here to learn more about permission management.](/docs/user/manual/en/setting-up/users-and-permissions.html).
You can also refer to help video on User and Permissions setting in ERPNext.
diff --git a/erpnext/docs/user/manual/en/selling/articles/index.md b/erpnext/docs/user/manual/en/selling/articles/index.md
index 0dff60b..fb11735 100644
--- a/erpnext/docs/user/manual/en/selling/articles/index.md
+++ b/erpnext/docs/user/manual/en/selling/articles/index.md
@@ -1 +1,3 @@
+# Articles
+
{index}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/selling/articles/sales-persons-in-the-sales-transactions.md b/erpnext/docs/user/manual/en/selling/articles/sales-persons-in-the-sales-transactions.md
index 781d2ce..8cbfd1f 100644
--- a/erpnext/docs/user/manual/en/selling/articles/sales-persons-in-the-sales-transactions.md
+++ b/erpnext/docs/user/manual/en/selling/articles/sales-persons-in-the-sales-transactions.md
@@ -1,16 +1,18 @@
+# Sales Persons In The Sales Transactions
+
#Sales Persons in the Sales Transactions
-In ERPNext, Sales Person master is maintained in [tree structure]({{docs_base_url}}/user/manual/en/setting-up/articles/managing-tree-structure-masters.html). Sales Person is selectable in all the sales transactions.
+In ERPNext, Sales Person master is maintained in [tree structure](/docs/user/manual/en/setting-up/articles/managing-tree-structure-masters.html). Sales Person is selectable in all the sales transactions.
Sales Persons can be updated in the Customer master as well. On selection of Customer in the transactions, Sales Persons as updated in the Customer will fetch into sales transaction.
-<img class="screenshot" alt="Sales Person Customer" src="{{docs_base_url}}/assets/img/articles/sales-person-transaction-1.png">
+<img class="screenshot" alt="Sales Person Customer" src="/docs/assets/img/articles/sales-person-transaction-1.png">
####Sales Person Contribution
If more than one sales persons are working together on an order, then contribution (%) should be set for each Sales Person.
-<img class="screenshot" alt="Sales Person Order" src="{{docs_base_url}}/assets/img/articles/sales-person-transaction-2.png">
+<img class="screenshot" alt="Sales Person Order" src="/docs/assets/img/articles/sales-person-transaction-2.png">
On saving transaction, based on the Net Total and Contriution (%), `Contribution to Net Total` will be calculated for each Sales Person.
@@ -24,7 +26,7 @@
This report can be generated based on Sales Order, Delivery Note and Sales Invoice. It will give you total amount of sale made by an employe.
-<img class="screenshot" alt="Sales Person Report" src="{{docs_base_url}}/assets/img/articles/sales-person-transaction-3.png">
+<img class="screenshot" alt="Sales Person Report" src="/docs/assets/img/articles/sales-person-transaction-3.png">
####Sales Person wise Commission
diff --git a/erpnext/docs/user/manual/en/selling/articles/shipping-rule.md b/erpnext/docs/user/manual/en/selling/articles/shipping-rule.md
index d87ba36..fc82ba4 100644
--- a/erpnext/docs/user/manual/en/selling/articles/shipping-rule.md
+++ b/erpnext/docs/user/manual/en/selling/articles/shipping-rule.md
@@ -1,3 +1,5 @@
+# Shipping Rule
+
#Shipping Rule
Shipping Rule master helps in defining a rule based on which shipping charge is applied on a sales transactions.
@@ -10,7 +12,7 @@
####Shipping Rule Conditions
-<img alt="Shipping Rule Prices" class="screenshot" src="{{docs_base_url}}/assets/img/articles/shipping-charges-1.png">
+<img alt="Shipping Rule Prices" class="screenshot" src="/docs/assets/img/articles/shipping-charges-1.png">
Referring above, you will notice that shipping charges are reducing as valye is increasing. This shipping charge will only be applied if transaction total falls under one of the above range.
@@ -18,16 +20,16 @@
You can set Shipping Charges valid for all the countries, or specify specific Country. If specific countries mentioned, then Shipping Charges will be applied only if Customer's country matches Country mentioned in the Shipping Rule.
-<img alt="Shipping Rule " class="screenshot" src="{{docs_base_url}}/assets/img/articles/shipping-charges-2.gif">
+<img alt="Shipping Rule " class="screenshot" src="/docs/assets/img/articles/shipping-charges-2.gif">
####Shipping Account
If shipping charges are applied based on Shipping Rule, then more values like Shipping Account, Cost Center will be needed as well to add row in the Taxes and Other Charges table of transaction. Hence these details are tracked as well in the Shipping Rule.
-<img alt="Shipping Account" class="screenshot" src="{{docs_base_url}}/assets/img/articles/shipping-charges-3.png">
+<img alt="Shipping Account" class="screenshot" src="/docs/assets/img/articles/shipping-charges-3.png">
####Shipping Rule Application
Following is an example of how shipping charges is auto-applied on Sales Order based on Shipping Rule.
-<img alt="Shipping Rule Application" class="screenshot" src="{{docs_base_url}}/assets/img/articles/shipping-charges-4.gif">
\ No newline at end of file
+<img alt="Shipping Rule Application" class="screenshot" src="/docs/assets/img/articles/shipping-charges-4.gif">
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/selling/quotation.md b/erpnext/docs/user/manual/en/selling/quotation.md
index 1f7b06c..80af009 100644
--- a/erpnext/docs/user/manual/en/selling/quotation.md
+++ b/erpnext/docs/user/manual/en/selling/quotation.md
@@ -1,3 +1,5 @@
+# Quotation
+
During a sale, the customer may request for a written note about the products
or services you are planning to offer, along with the prices and other terms
of engagement. This is called a “Proposal” or an “Estimate” or a “Pro Forma
@@ -5,7 +7,7 @@
A typical Selling flow looks like:
-<img class="screenshot" alt="Make Quotation from Opportunity" src="{{docs_base_url}}/assets/img/selling/selling-flow.png">
+<img class="screenshot" alt="Make Quotation from Opportunity" src="/docs/assets/img/selling/selling-flow.png">
To create a new Quotation navigate to:
@@ -15,7 +17,7 @@
You can also create a Quotation from an Opportunity.
-<img class="screenshot" alt="Make Quotation from Opportunity" src="{{docs_base_url}}/assets/img/selling/make-quote-from-opp.png">
+<img class="screenshot" alt="Make Quotation from Opportunity" src="/docs/assets/img/selling/make-quote-from-opp.png">
A Quotation contains details about:
@@ -34,7 +36,7 @@
The rates you quote may depend on two things.
- * The Price List: If you have multiple Price Lists, you can select a Price List or tag it to the Customer (so that it is auto-selected). Your Item prices will automatically be updated from the Price List. For details refer [Price List]({{docs_base_url}}/user/manual/en/setting-up/price-lists.html)
+ * The Price List: If you have multiple Price Lists, you can select a Price List or tag it to the Customer (so that it is auto-selected). Your Item prices will automatically be updated from the Price List. For details refer [Price List](/docs/user/manual/en/setting-up/price-lists.html)
* The Currency: If you are quoting to a Customer in a different currency, you will have to update the conversion rates to enable ERPNext to save the information in your standard Currency. This will help you to analyze the value of your Quotations in standard Currency.
@@ -44,9 +46,9 @@
For e.g
-<img class="screenshot" alt="Taxes and Charges" src="{{docs_base_url}}/assets/img/selling/taxes-and-charges.gif">
+<img class="screenshot" alt="Taxes and Charges" src="/docs/assets/img/selling/taxes-and-charges.gif">
-To understand taxes in detail visit [Taxes]({{docs_base_url}}/user/manual/en/setting-up/setting-up-taxes.html).
+To understand taxes in detail visit [Taxes](/docs/user/manual/en/setting-up/setting-up-taxes.html).
### Terms and Conditions
@@ -83,6 +85,6 @@
While making your sales transactions like a Quotation (or Sales Order) you
can also give discounts to your customers. In the Discount section, add
-the discount in percentage or fixed amount. Read [Discount](https://frappe.github.io/erpnext/user/manual/en/selling/articles/applying-discount) for more explanation.
+the discount in percentage or fixed amount. Read [Discount](https://erpnext.org/docs/user/manual/en/selling/articles/applying-discount) for more explanation.
{next}
diff --git a/erpnext/docs/user/manual/en/selling/sales-order.md b/erpnext/docs/user/manual/en/selling/sales-order.md
index b103038..05f178b 100644
--- a/erpnext/docs/user/manual/en/selling/sales-order.md
+++ b/erpnext/docs/user/manual/en/selling/sales-order.md
@@ -11,7 +11,7 @@
### Sales Order Flow-Chart
-<img class="screenshot" alt="Sales Order flow" src="{{docs_base_url}}/assets/img/selling/sales-order-f.jpg">
+<img class="screenshot" alt="Sales Order flow" src="/docs/assets/img/selling/sales-order-f.jpg">
To create a new Sales Order go to:
@@ -21,11 +21,11 @@
You can also create a Sales Order from a submitted Quotation.
-<img class="screenshot" alt="Make Sales Order from Quotation" src="{{docs_base_url}}/assets/img/selling/make-SO-from-quote.png">
+<img class="screenshot" alt="Make Sales Order from Quotation" src="/docs/assets/img/selling/make-SO-from-quote.png">
Or you can create a new Sales Order and pull details from an Quotation.
-<img class="screenshot" alt="Make Sales Order from Quotation" src="{{docs_base_url}}/assets/img/selling/make-so.gif">
+<img class="screenshot" alt="Make Sales Order from Quotation" src="/docs/assets/img/selling/make-so.gif">
Most of the information in your Sales Order is the same as the Quotation.
There are a few amongst other things that a Sales Order will ask you to
@@ -56,9 +56,9 @@
For e.g
-<img class="screenshot" alt="Taxes and Charges" src="{{docs_base_url}}/assets/img/selling/taxes-and-charges.gif">
+<img class="screenshot" alt="Taxes and Charges" src="/docs/assets/img/selling/taxes-and-charges.gif">
-To understand taxes in detail visit [Taxes]({{docs_base_url}}/user/manual/en/setting-up/setting-up-taxes.html).
+To understand taxes in detail visit [Taxes](/docs/user/manual/en/setting-up/setting-up-taxes.html).
### Sales Team
@@ -82,7 +82,7 @@
ERPNext will automatically create new Order and mail a notification to the Email Addresses you set in the 'Notification Email Address'field.
-<img class="screenshot" alt="Reccuring Sales Order" src="{{docs_base_url}}/assets/img/selling/recurring-sales-order.png">
+<img class="screenshot" alt="Reccuring Sales Order" src="/docs/assets/img/selling/recurring-sales-order.png">
### Next Steps
diff --git a/erpnext/docs/user/manual/en/selling/setup/index.md b/erpnext/docs/user/manual/en/selling/setup/index.md
index 0ab4b5a..48add3e 100644
--- a/erpnext/docs/user/manual/en/selling/setup/index.md
+++ b/erpnext/docs/user/manual/en/selling/setup/index.md
@@ -1,3 +1,5 @@
+# Setup
+
This section includes information on how to setup customer groups, sales partners, sales persons and terms and conditions.
It has instructions on how to configure selling settings, in order to enable default fields.
diff --git a/erpnext/docs/user/manual/en/selling/setup/item-price.md b/erpnext/docs/user/manual/en/selling/setup/item-price.md
index 92b41fb..7e352b9 100644
--- a/erpnext/docs/user/manual/en/selling/setup/item-price.md
+++ b/erpnext/docs/user/manual/en/selling/setup/item-price.md
@@ -1,3 +1,5 @@
+# Item Price
+
Item Price is the record in which you can log sellig and buying rate of an item.
There are two ways to reach to new Item Price form.
@@ -14,7 +16,7 @@
You can create multiple Price List in ERPNext to track Selling and Buying Price List of an item separtely. Also if item's selling prices id changing based on territory, or due to other criteria, you can create multiple selling Price List for it.
-+<img class="screenshot" alt="Item Price list" src="{{docs_base_url}}/assets/img/stock/item-price-1.png">
++<img class="screenshot" alt="Item Price list" src="/docs/assets/img/stock/item-price-1.png">
On selection of Price List, its currency and for selling or buying property will be fetched as well.
@@ -24,13 +26,13 @@
Select item for which Item Price record is to be created. On selection of Item Code, Item Name and Description will be fetched as well.
-+<img class="screenshot" alt="Item Price list" src="{{docs_base_url}}/assets/img/stock/item-price-2.png">
++<img class="screenshot" alt="Item Price list" src="/docs/assets/img/stock/item-price-2.png">
Step 3: Enter Rate
Enter selling/buying rate of an item in Price List currency.
-+<img class="screenshot" alt="Item Price list" src="{{docs_base_url}}/assets/img/stock/item-price-3.png">
++<img class="screenshot" alt="Item Price list" src="/docs/assets/img/stock/item-price-3.png">
Step 4: Save Item Price
diff --git a/erpnext/docs/user/manual/en/selling/setup/product-bundle.md b/erpnext/docs/user/manual/en/selling/setup/product-bundle.md
index 123eeaf..b587374 100644
--- a/erpnext/docs/user/manual/en/selling/setup/product-bundle.md
+++ b/erpnext/docs/user/manual/en/selling/setup/product-bundle.md
@@ -1,3 +1,5 @@
+# Product Bundle
+
#Product Bundle
Product Bundle can be seen as something like a "Bill-of-Material" on the Sales side. It's a master where you can list existing items which are bundled together and sold as a set (or bundle). For instance, when you sell a laptop, you need to ensure that charger, mouse and laptop bag are delivered with it and stock levels of these items get affected.
@@ -11,7 +13,7 @@
Selling > Setup > Product Bundle > New
-<img class="screenshot" alt="Product Bundle" src="{{docs_base_url}}/assets/img/selling/product-bundle.png">
+<img class="screenshot" alt="Product Bundle" src="/docs/assets/img/selling/product-bundle.png">
###Select Parent Item
@@ -33,7 +35,7 @@
When making Sales transactions (Sales Invoice, Sales Order, Delivery Note)
the Parent Item will be selected in the main item table.
-<img class="screenshot" alt="Product Bundle" src="{{docs_base_url}}/assets/img/selling/product-bundle.gif">
+<img class="screenshot" alt="Product Bundle" src="/docs/assets/img/selling/product-bundle.gif">
On selection of a Parent Item in the main item table, its child items will be fetched in Packing List
table of the transaction. If child item is the serialized item, you will be able to specify its Serial Mo.
diff --git a/erpnext/docs/user/manual/en/selling/setup/sales-partner.md b/erpnext/docs/user/manual/en/selling/setup/sales-partner.md
index 728218f..d8bf0d0 100644
--- a/erpnext/docs/user/manual/en/selling/setup/sales-partner.md
+++ b/erpnext/docs/user/manual/en/selling/setup/sales-partner.md
@@ -1,3 +1,5 @@
+# Sales Partner
+
People who assist you in getting business are termed as Sales Partners. Sales Partners can be represented by different names in ERPNext. You can call them Channel Partner, Distributor, Dealer, Agent, Retailer, Implementation Partner, Reseller etc.
For each Sales Partner, you can define commission offer to them. When Sales Partner is selected in transactions, their commission is calculated over Net Total of Sales Order/Invoice or Delivery Note.
@@ -10,7 +12,7 @@
Sales Partners are saved with Sales Partner name provided by user.
-<img class="screenshot" alt="Sales Partner" src="{{docs_base_url}}/assets/img/selling/sales-partner.png">
+<img class="screenshot" alt="Sales Partner" src="/docs/assets/img/selling/sales-partner.png">
You can track their address and contact details and also allocate Sales Partner for each Item Group, based on Qty and Amount.
@@ -19,13 +21,13 @@
To include the name of your Partner on your website, check the "Show in
Website" box. When click on "Show in Website", you will see field where you can attach logo of partner's company and enter brief and introduction of partner.
-<img class="screenshot" alt="Sales Partner" src="{{docs_base_url}}/assets/img/selling/sales-partner-website.png">
+<img class="screenshot" alt="Sales Partner" src="/docs/assets/img/selling/sales-partner-website.png">
To see listing of partner, you should go to:
https://example.erpnext.com/partners
-<img class="screenshot" alt="Sales Partner" src="{{docs_base_url}}/assets/img/crm/sales-partner-listing.png">
+<img class="screenshot" alt="Sales Partner" src="/docs/assets/img/crm/sales-partner-listing.png">
{next}
diff --git a/erpnext/docs/user/manual/en/selling/setup/sales-person-target-allocation.md b/erpnext/docs/user/manual/en/selling/setup/sales-person-target-allocation.md
index 08bbd78..874a95e 100644
--- a/erpnext/docs/user/manual/en/selling/setup/sales-person-target-allocation.md
+++ b/erpnext/docs/user/manual/en/selling/setup/sales-person-target-allocation.md
@@ -1,3 +1,5 @@
+# Sales Person Target Allocation
+
With management of Sales Person, ERPNext also allow you to assign target to Sales Persons based on Item Group and Territory. Based on target allocated and actual sales booked by Sales Person, you will get target variance report for the Sales Person.
###1. Sales Person - Item Groupwise Target Allocation
@@ -12,7 +14,7 @@
In the Sales Person master, you will find table called Sales Person Target.
-<img class="screenshot" alt="Sales person target " src="{{docs_base_url}}/assets/img/selling/sales-person-target-item-group.png">
+<img class="screenshot" alt="Sales person target " src="/docs/assets/img/selling/sales-person-target-item-group.png">
In this table, you should select Item Group, Fiscal Year, Target Qty and Amount.
@@ -23,7 +25,7 @@
If you wish to spread allocated target across months, then you should setup Monthly Distribution master, and select it in the Sales Person master. Considering our example, target for the month of December will be set as 5 qty (10% of total allocation).
-<img class="screenshot" alt="Target Distribution" src="{{docs_base_url}}/assets/im/selling/sales-person-target-distribution.gif">
+<img class="screenshot" alt="Target Distribution" src="/docs/assets/im/selling/sales-person-target-distribution.gif">
####Report - Sales Person Target Variance Item Groupwise
@@ -34,7 +36,7 @@
This report will provide you variance between target and actual performance of Sales Person. This report is based on Sales Order report.
-<img class="screenshot" alt="Target Item Group" src="{{docs_base_url}}/assets/img/selling/sales-person-item-group-report.png">
+<img class="screenshot" alt="Target Item Group" src="/docs/assets/img/selling/sales-person-item-group-report.png">
As per the report, allocated target to Sales Person for the month of December was 5 qty. However, Sales Order was made for this employee and Item Group for only 3 qty. Hence, variance of 2 qty is shown in the report.
@@ -50,7 +52,7 @@
In the Territory master, you will find field to select Territory Manager. This field is linked to "Sales Person" master.
-<img class="screenshot" alt="Sales Person Territory Manager" src="{{docs_base_url}}/assets/img/selling/sales-person-territory-manager.png">
+<img class="screenshot" alt="Sales Person Territory Manager" src="/docs/assets/img/selling/sales-person-territory-manager.png">
####2.2 Allocating Target
@@ -64,7 +66,7 @@
This report will provide you variance between target and actual performance of Sales in particular territory. This report is based on Sales Order report. Though Sales Person is defined in the Territory master, its details are not pulled in the report.
-<img class="screenshot" alt="Sales Person Territory Report" src="{{docs_base_url}}/assets/img/selling/sales-person-territory-report.png">
+<img class="screenshot" alt="Sales Person Territory Report" src="/docs/assets/img/selling/sales-person-territory-report.png">
---
@@ -76,13 +78,13 @@
`Accounts > Monthly Distributon`
-<img class="screenshot" alt="Target Distribution" src="{{docs_base_url}}/assets/img.selling/erpnext/target-distribution.png">
+<img class="screenshot" alt="Target Distribution" src="/docs/assets/img.selling/erpnext/target-distribution.png">
You can link Monthly Distribution while allocating targets in Sales Person as well as in Territory master.
###See Also
-1. [Sales Person Target Allocation]({{docs_base_url}}/user/manual/en/selling/setup/sales-person-target-allocation)
-2. [Using Sales Person in transactions]({{docs_base_url}}/user/manual/en/selling/articles/sales-persons-in-the-sales-transactions)
+1. [Sales Person Target Allocation](/docs/user/manual/en/selling/setup/sales-person-target-allocation)
+2. [Using Sales Person in transactions](/docs/user/manual/en/selling/articles/sales-persons-in-the-sales-transactions)
{next}
diff --git a/erpnext/docs/user/manual/en/selling/setup/selling-settings.md b/erpnext/docs/user/manual/en/selling/setup/selling-settings.md
index d5d7117..96dbc29 100644
--- a/erpnext/docs/user/manual/en/selling/setup/selling-settings.md
+++ b/erpnext/docs/user/manual/en/selling/setup/selling-settings.md
@@ -1,7 +1,9 @@
+# Selling Settings
+
Selling Setting is where you can define propertiese which will be applied in your selling transactions.
Let's check into each property one by one.
-<img class="screenshot" alt="Selling Settings" src="{{docs_base_url}}/assets/img/selling/selling-settings.png">
+<img class="screenshot" alt="Selling Settings" src="/docs/assets/img/selling/selling-settings.png">
####1. Customer Naming By
diff --git a/erpnext/docs/user/manual/en/selling/setup/shipping-rule.md b/erpnext/docs/user/manual/en/selling/setup/shipping-rule.md
index c4369cb..0d8c269 100644
--- a/erpnext/docs/user/manual/en/selling/setup/shipping-rule.md
+++ b/erpnext/docs/user/manual/en/selling/setup/shipping-rule.md
@@ -1,6 +1,8 @@
+# Shipping Rule
+
Using Shipping Rule you can define the cost for delivering the product to the customer.
You can define different shipping rules for the same item across different territories.
-<img class="screenshot" alt="Shipping Rule" src="{{docs_base_url}}/assets/img/selling/shipping-rule.png">
+<img class="screenshot" alt="Shipping Rule" src="/docs/assets/img/selling/shipping-rule.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/setting-up/articles/change-password.md b/erpnext/docs/user/manual/en/setting-up/articles/change-password.md
index 505d6f3..1a36d8a 100644
--- a/erpnext/docs/user/manual/en/setting-up/articles/change-password.md
+++ b/erpnext/docs/user/manual/en/setting-up/articles/change-password.md
@@ -1,3 +1,5 @@
+# Change Password
+
#Change User Password
Each ERPNext user can customize password for his/her ERPNext account. Also user with System Manager role will be able to reset password for himself as well as for other users. Following are the steps to go about changing your password.
@@ -5,11 +7,11 @@
####Step 1: Go to My Setting
-<img alt="Change Password" class="screenshot" src="{{docs_base_url}}/assets/img/articles/change-password-1.png">
+<img alt="Change Password" class="screenshot" src="/docs/assets/img/articles/change-password-1.png">
####Step 2: Set New Password
-<img alt="Change Password" class="screenshot" src="{{docs_base_url}}/assets/img/articles/change-password-2.png">
+<img alt="Change Password" class="screenshot" src="/docs/assets/img/articles/change-password-2.png">
Enter the new password and save the form to save changes.
diff --git a/erpnext/docs/user/manual/en/setting-up/articles/delete-a-company-and-all-related-transactions.md b/erpnext/docs/user/manual/en/setting-up/articles/delete-a-company-and-all-related-transactions.md
index fa7614f..66db2ec 100644
--- a/erpnext/docs/user/manual/en/setting-up/articles/delete-a-company-and-all-related-transactions.md
+++ b/erpnext/docs/user/manual/en/setting-up/articles/delete-a-company-and-all-related-transactions.md
@@ -1,3 +1,5 @@
+# Delete A Company And All Related Transactions
+
#Delete All Related Transactions for a Company
Often, users setup all the master data and then create a few dummy records. Then they want to delete the dummy records and the company and start over again, keeping the other master data like Customers, Items, BOMs intact.
@@ -12,7 +14,7 @@
This action will wipe out all the data related to that company like Quotation, Invoices, Purchase Orders etc. So be careful
-<img alt="Delete Transactions" class="screenshot" src="{{docs_base_url}}/assets/img/articles/delete-transactions.gif">
+<img alt="Delete Transactions" class="screenshot" src="/docs/assets/img/articles/delete-transactions.gif">
**Note:** If you want to delete the company record itself, use the normal "Delete" button from Menu options. It will also delete Chart of Accounts, Chart of Cost Centers and Warehouse records for that company.
diff --git a/erpnext/docs/user/manual/en/setting-up/articles/edit-submitted-document.md b/erpnext/docs/user/manual/en/setting-up/articles/edit-submitted-document.md
index 7148611..09f1f6b 100644
--- a/erpnext/docs/user/manual/en/setting-up/articles/edit-submitted-document.md
+++ b/erpnext/docs/user/manual/en/setting-up/articles/edit-submitted-document.md
@@ -1,3 +1,5 @@
+# Edit Submitted Document
+
#Edit Submitted Document
To edit submitted document, you need to cancel it first. Followings are steps to edit submitted document.
@@ -6,19 +8,19 @@
You will find Cancel button on upper right corner of submitted document.
-<img alt="Cancel Doc" class="screenshot" src="{{docs_base_url}}/assets/img/articles/edit-submitted-doc-1.png">
+<img alt="Cancel Doc" class="screenshot" src="/docs/assets/img/articles/edit-submitted-doc-1.png">
####Step 2: Amend the document
On cancellation of submitted document, Amend button will be became visible.
-<img alt="Amend Doc" class="screenshot" src="{{docs_base_url}}/assets/img/articles/edit-submitted-doc-2.png">
+<img alt="Amend Doc" class="screenshot" src="/docs/assets/img/articles/edit-submitted-doc-2.png">
####Step 3: Save and Submit the document
On clicking Amend button, same document will become editable again. After Making required changes, save and submit the document.
-<img alt="Resave and Submit Doc" class="screenshot" src="{{docs_base_url}}/assets/img/articles/edit-submitted-doc-3.png">
+<img alt="Resave and Submit Doc" class="screenshot" src="/docs/assets/img/articles/edit-submitted-doc-3.png">
<div class="well">Note: If your document linked with other documents, then you will need to cancel last document you made on top of this document.
diff --git a/erpnext/docs/user/manual/en/setting-up/articles/index.md b/erpnext/docs/user/manual/en/setting-up/articles/index.md
index 0dff60b..fb11735 100644
--- a/erpnext/docs/user/manual/en/setting-up/articles/index.md
+++ b/erpnext/docs/user/manual/en/setting-up/articles/index.md
@@ -1 +1,3 @@
+# Articles
+
{index}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/setting-up/articles/integrating-erpnext-with-other-application.md b/erpnext/docs/user/manual/en/setting-up/articles/integrating-erpnext-with-other-application.md
index 3cbf159..e2f6c71 100644
--- a/erpnext/docs/user/manual/en/setting-up/articles/integrating-erpnext-with-other-application.md
+++ b/erpnext/docs/user/manual/en/setting-up/articles/integrating-erpnext-with-other-application.md
@@ -1,7 +1,9 @@
+# Integrating Erpnext With Other Application
+
#Integrating ERPNext with other Applications
-For now, ERPNext has out-of-the-box integration available for some applications like Shopify, your SMS gateway and payment gateway. To integrate ERPNext with other application, you can use REST API of Frappe. Check following links to learn more about REST API of Frappe.
+For now, ERPNext has out-of-the-box integration available for some applications like Shopify, your SMS gateway and payment gateway. To integrate ERPNext with other application, you can use REST API of Frappé. Check following links to learn more about REST API of Frappé.
-[Frappe Rest API](https://frappe.github.io/frappe/user/en/guides/integration/rest_api.html)
+[Frappé Rest API](https://frappe.io/docs/user/en/guides/integration/rest_api.html)
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/setting-up/articles/manage-header-and-footer.md b/erpnext/docs/user/manual/en/setting-up/articles/manage-header-and-footer.md
index 24a9a55..679f0c8 100644
--- a/erpnext/docs/user/manual/en/setting-up/articles/manage-header-and-footer.md
+++ b/erpnext/docs/user/manual/en/setting-up/articles/manage-header-and-footer.md
@@ -1,9 +1,11 @@
+# Manage Header And Footer
+
#Manage Header And Footer
Check following to learn how to setup Letter Head in ERPNext.
-[Managing Letter head]({{docs_base_url}}/user/manual/en/setting-up/setup-wizard/step-5-letterhead-and-logo.html)
+[Managing Letter head](/docs/user/manual/en/setting-up/setup-wizard/step-5-letterhead-and-logo.html)
ERPNext doesn't have option to define standard Footer. As a work around, you can use Terms and Condition master for footer. Content of Terms and Condition is already the last to appear in the standard print formats on transactions. Check following link to learn how to manage Terms and Conditions in ERPNext.
-[Terms and Condition]({{docs_base_url}}/user/manual/en/setting-up/print/terms-and-conditions.html)
+[Terms and Condition](/docs/user/manual/en/setting-up/print/terms-and-conditions.html)
diff --git a/erpnext/docs/user/manual/en/setting-up/articles/managing-multiple-companies.md b/erpnext/docs/user/manual/en/setting-up/articles/managing-multiple-companies.md
index 40c12f4..8957408 100644
--- a/erpnext/docs/user/manual/en/setting-up/articles/managing-multiple-companies.md
+++ b/erpnext/docs/user/manual/en/setting-up/articles/managing-multiple-companies.md
@@ -1,10 +1,12 @@
+# Managing Multiple Companies
+
#Managing Multiple Companies
ERPNext allows you to create multiple companies in a single ERPNext instance.
In one account has multiple companies, you will find option to select Company in each transactions. While most of the records (mostly transactions) will be separated based on Company, there are few masters like Item, Item Group, Customer Group, Territory etc. which are common among all the companies.
-If you have separate teams working on each company, you can restrict access of the User to the data of specific Company. Click [here]({{docs_base_url}}/user/manual/en/setting-up/users-and-permissions/) to know how to set permission rules for giving restricted access to the User.
+If you have separate teams working on each company, you can restrict access of the User to the data of specific Company. Click [here](/docs/user/manual/en/setting-up/users-and-permissions/) to know how to set permission rules for giving restricted access to the User.
Following are the steps to add new Company.
@@ -16,7 +18,7 @@
Company will be saved with Company Name provided.
-<img alt="New Company" class="screenshot" src="{{docs_base_url}}/assets/img/articles/new-company-1.png">
+<img alt="New Company" class="screenshot" src="/docs/assets/img/articles/new-company-1.png">
Also, you can define other properties for new company like:
@@ -28,13 +30,13 @@
Value will be auto-filled in most of these field to define company-wise defaults. You can edit/customize it as per your requirement.
-<img alt="New Company" class="screenshot" src="{{docs_base_url}}/assets/img/articles/new-company-2.png">
+<img alt="New Company" class="screenshot" src="/docs/assets/img/articles/new-company-2.png">
####Chart of Account for New Company
A separate Chart of Account master will be set for each company in the ERPNext. This allows you managing Accounts/Ledger master separately for each company. Also it allows you avail financial statement and reports like Balance Sheet and Profit and Loss Statement separately for each company.
-<img alt="New Company" class="screenshot" src="{{docs_base_url}}/assets/img/articles/new-company-3.png">
+<img alt="New Company" class="screenshot" src="/docs/assets/img/articles/new-company-3.png">
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/setting-up/articles/managing-perm-level.md b/erpnext/docs/user/manual/en/setting-up/articles/managing-perm-level.md
index f79229b..9923645 100644
--- a/erpnext/docs/user/manual/en/setting-up/articles/managing-perm-level.md
+++ b/erpnext/docs/user/manual/en/setting-up/articles/managing-perm-level.md
@@ -1,10 +1,12 @@
+# Managing Perm Level
+
#Managing Perm Level in Permission Manager
In each document, you can group fields by "levels". Each group of field is denoted by a unique number (0, 1, 2, 3 etc.). A separate set of permission rules can be applied to each field group. By default all fields are of level 0.
-Perm Level for a field can be defined in the [Customize Form]({{docs_base_url}}/user/manual/en/customize-erpnext/customize-form.html).
+Perm Level for a field can be defined in the [Customize Form](/docs/user/manual/en/customize-erpnext/customize-form.html).
-<img alt="Perm Level Field" class="screenshot" src="{{docs_base_url}}/assets/img/articles/perm-level-1.gif">
+<img alt="Perm Level Field" class="screenshot" src="/docs/assets/img/articles/perm-level-1.gif">
If you need to assign different permission of particular field to different users, you can achieve it via Perm Level. Let's consider an example for better understanding.
@@ -14,11 +16,11 @@
For Stock Manager, they will have permission on fields on Delivery Note as Perm Level 2 whereas a Stock User will not have any permission on Perm Level 2 for Delivery Note.
-<img alt="Perm Level Rule" class="screenshot" src="{{docs_base_url}}/assets/img/articles/perm-level-2.png">
+<img alt="Perm Level Rule" class="screenshot" src="/docs/assets/img/articles/perm-level-2.png">
Considering the same scenario, if you want a Stock User to access a field at Perm Level 2, but not edit it, the Stock User will be assigned permission on Perm Level 2, but only for read, and not for write/edit.
-<img alt="Perm Level Rule 2" class="screenshot" src="{{docs_base_url}}/assets/img/articles/perm-level-3.png">
+<img alt="Perm Level Rule 2" class="screenshot" src="/docs/assets/img/articles/perm-level-3.png">
Perm Level (1, 2, 3) not need be in order. Perm Level is primarily for grouping number of fields together, and then assigning permission to Roles for that group. Hence, you can set any perm level for an item, and then do permission setting for it.
diff --git a/erpnext/docs/user/manual/en/setting-up/articles/managing-tree-structure-masters.md b/erpnext/docs/user/manual/en/setting-up/articles/managing-tree-structure-masters.md
index 98e67c6..021f36a 100644
--- a/erpnext/docs/user/manual/en/setting-up/articles/managing-tree-structure-masters.md
+++ b/erpnext/docs/user/manual/en/setting-up/articles/managing-tree-structure-masters.md
@@ -1,3 +1,5 @@
+# Managing Tree Structure Masters
+
#Managing Tree Structure Masters
Some of the masters in ERPNext are maintained in tree structure. Tree structured masters allow you to set Parent master, and Child masters under those Parents. Setting up this structure allows you creating intelligent report, and track growth at each level in the hierarchy.
@@ -24,7 +26,7 @@
####Step 2 : Parent Territory
-<img alt="Default Territories" class="screenshot" src="{{docs_base_url}}/assets/img/articles/territory-2.png">
+<img alt="Default Territories" class="screenshot" src="/docs/assets/img/articles/territory-2.png">
When click on Parent territory, you will see option to add child territory under it. All default Territory groups will be listed under Parent group called "All Territories". You can add further Parent or child Territory Groups under it.
@@ -42,11 +44,11 @@
<div class="well">Only child Territory Groups are selectable in another masters and transactions.</div>
-<img alt="Default Territories" class="screenshot" src="{{docs_base_url}}/assets/img/articles/territory-1.gif">
+<img alt="Default Territories" class="screenshot" src="/docs/assets/img/articles/territory-1.gif">
Following is how Child Territories will be listed under a Parent Territory.
-<img alt="Adding new Territories" class="screenshot" src="{{docs_base_url}}/assets/img/articles/territory-3.png">
+<img alt="Adding new Territories" class="screenshot" src="/docs/assets/img/articles/territory-3.png">
Following this steps, you can manage other tree masters as well in ERPNext.
diff --git a/erpnext/docs/user/manual/en/setting-up/articles/naming-series-current-value.md b/erpnext/docs/user/manual/en/setting-up/articles/naming-series-current-value.md
index 2e7145d..c6b6abe 100644
--- a/erpnext/docs/user/manual/en/setting-up/articles/naming-series-current-value.md
+++ b/erpnext/docs/user/manual/en/setting-up/articles/naming-series-current-value.md
@@ -1,6 +1,8 @@
+# Naming Series Current Value
+
#Setting the Current Value for Naming Series
-Naming Series feature allows you to define prefix for naming of a documents. For example, if a Sales Order has prefix "SO", then the series will be generated as SO-00001, SO-00002... and so on. Click [here]({{docs_base_url}}/user/manual/en/setting-up/settings/naming-series.html) to learn how you can customize Number Series for a transaction/master in ERPNext.
+Naming Series feature allows you to define prefix for naming of a documents. For example, if a Sales Order has prefix "SO", then the series will be generated as SO-00001, SO-00002... and so on. Click [here](/docs/user/manual/en/setting-up/settings/naming-series.html) to learn how you can customize Number Series for a transaction/master in ERPNext.
### 1. Setting the Current Value
@@ -14,19 +16,19 @@
#### Update Series Section
-<img alt="Update Series Section" class="screenshot" src="{{docs_base_url}}/assets/img/articles/current-no-1.png">
+<img alt="Update Series Section" class="screenshot" src="/docs/assets/img/articles/current-no-1.png">
#### Select Prefix
Considering our scenario, prefix for Sales Order will be "SO".
-<img alt="Series Prefix" class="screenshot" src="{{docs_base_url}}/assets/img/articles/current-no-2.png">
+<img alt="Series Prefix" class="screenshot" src="/docs/assets/img/articles/current-no-2.png">
#### Current Value
If you have currently 12 Sales Orders created in your account, then current value updated will be 12. You can edit Current Value to 322, and then click on Update Series Number.
-<img alt="Series Current Value" class="screenshot" src="{{docs_base_url}}/assets/img/articles/current-no-3.png">
+<img alt="Series Current Value" class="screenshot" src="/docs/assets/img/articles/current-no-3.png">
With this setting, you will have numbering for the New Sales Orders starting with #323.
diff --git a/erpnext/docs/user/manual/en/setting-up/articles/overwriting-data-from-data-import-tool.md b/erpnext/docs/user/manual/en/setting-up/articles/overwriting-data-from-data-import-tool.md
index dafac3b..4632af4 100644
--- a/erpnext/docs/user/manual/en/setting-up/articles/overwriting-data-from-data-import-tool.md
+++ b/erpnext/docs/user/manual/en/setting-up/articles/overwriting-data-from-data-import-tool.md
@@ -1,3 +1,5 @@
+# Overwriting Data From Data Import Tool
+
#Overwriting Data from Data Import Tool
Data Import Tool allows importing documents (like customers, Suppliers, Orders, Invoices etc.) from spreadsheet file into ERPNext. The very same tool can also be used for overwrite values in the existing documents.
@@ -14,7 +16,7 @@
Since items to be over-written will be already available in the system, while downloading template, click on "Download with data" to get all the existing items in the template.
-<img alt="Download Template" class="screenshot" src="{{docs_base_url}}/assets/img/articles/overwrite-1.gif">
+<img alt="Download Template" class="screenshot" src="/docs/assets/img/articles/overwrite-1.gif">
####Step 2: Prepare Data
@@ -22,7 +24,7 @@
Enter new value in the Item Group column for an item. Since Item Group is a master in itself, ensure Item Group entered in the spreadsheet file is already added in the Item Group master.
-<img alt="Update Values" class="screenshot" src="{{docs_base_url}}/assets/img/articles/overwrite-2.png">
+<img alt="Update Values" class="screenshot" src="/docs/assets/img/articles/overwrite-2.png">
Since we are overwriting only Item Group, only following columns will be mandatory.
@@ -36,13 +38,13 @@
After updating Item Groups in spreadheet, come back to Data Import Tool in ERPNext. Browse and select the File/template which has data to be overwritten.
-<img alt="Browse template" class="screenshot" src="{{docs_base_url}}/assets/img/articles/overwrite-3.gif">
+<img alt="Browse template" class="screenshot" src="/docs/assets/img/articles/overwrite-3.gif">
####Step 4: Upload
On clicking Import, Item Group will be over-written.
-<img alt="Upload" class="screenshot" src="{{docs_base_url}}/assets/img/articles/overwrite-4.png">
+<img alt="Upload" class="screenshot" src="/docs/assets/img/articles/overwrite-4.png">
If validation of values fails, then it will indicate row no. of spreadsheet for which validation failed and needs correction. In that case, you should corrected value in that row of spreadsheet, and then import same file again. If validation fails even for one row, none of the records are imported/overwritten.
diff --git a/erpnext/docs/user/manual/en/setting-up/articles/rename-user.md b/erpnext/docs/user/manual/en/setting-up/articles/rename-user.md
index 643d243..71f7b8b 100644
--- a/erpnext/docs/user/manual/en/setting-up/articles/rename-user.md
+++ b/erpnext/docs/user/manual/en/setting-up/articles/rename-user.md
@@ -1,3 +1,5 @@
+# Rename User
+
#Rename User
Renaming functionality allows you to edit id of specific record. User is saved with person's Email Address. Only User with System Manager's role will be able to rename User IDs.
@@ -14,13 +16,13 @@
From Menu, select Rename.
-<img alt="Rename" class="screenshot" src="{{docs_base_url}}/assets/img/articles/rename-user-1.png">
+<img alt="Rename" class="screenshot" src="/docs/assets/img/articles/rename-user-1.png">
#### Step 3: Update
Enter valid Email Address and click on Rename.
-<img alt="Update" class="screenshot" src="{{docs_base_url}}/assets/img/articles/rename-user-2.png">
+<img alt="Update" class="screenshot" src="/docs/assets/img/articles/rename-user-2.png">
After successful renaming, User will be able login using updated user id.
diff --git a/erpnext/docs/user/manual/en/setting-up/articles/using-custom-domain-on-erpnext.md b/erpnext/docs/user/manual/en/setting-up/articles/using-custom-domain-on-erpnext.md
index ff631b1..2d82a53 100644
--- a/erpnext/docs/user/manual/en/setting-up/articles/using-custom-domain-on-erpnext.md
+++ b/erpnext/docs/user/manual/en/setting-up/articles/using-custom-domain-on-erpnext.md
@@ -1,3 +1,5 @@
+# Using Custom Domain On Erpnext
+
<!-- markdown -->
If you have subscribed to any of the plans at [ERPNext](https://erpnext.com), you can have us serve your site on your custom domain (for example at http://example.com). This enables your website to be served on a custom domain.
diff --git a/erpnext/docs/user/manual/en/setting-up/authorization-rule.md b/erpnext/docs/user/manual/en/setting-up/authorization-rule.md
index f6daa19..8221366 100644
--- a/erpnext/docs/user/manual/en/setting-up/authorization-rule.md
+++ b/erpnext/docs/user/manual/en/setting-up/authorization-rule.md
@@ -1,3 +1,5 @@
+# Authorization Rule
+
Authorization Rule is a tool to define rule for conditional authorization.
If you sales and purchase transactions of higher value or discount requires an authorization from senior manager, you can set authorization rule for it.
@@ -34,7 +36,7 @@
Set Above Value. Given the exmaple, Above Value will be set as 10000.
-<img class="screenshot" alt="Authorization Rule" src="{{docs_base_url}}/assets/img/setup/auth-rule.png">
+<img class="screenshot" alt="Authorization Rule" src="/docs/assets/img/setup/auth-rule.png">
If Sales User tries submitting Sales Order of value higher than 10000, then he will get error message.
diff --git a/erpnext/docs/user/manual/en/setting-up/bar-code.md b/erpnext/docs/user/manual/en/setting-up/bar-code.md
index 2077842..e317628 100644
--- a/erpnext/docs/user/manual/en/setting-up/bar-code.md
+++ b/erpnext/docs/user/manual/en/setting-up/bar-code.md
@@ -1,3 +1,5 @@
+# Bar Code
+
A Barcode is a machine-readable code in the form of numbers and a pattern of
parallel lines of varying widths, printed on a commodity and used especially
for stock control.
@@ -18,7 +20,7 @@
#### Figure 1: Check the box 'Item Barcode'
-<img class="screenshot" alt="Barcode" src="{{docs_base_url}}/assets/img/setup/barcode-1.png">
+<img class="screenshot" alt="Barcode" src="/docs/assets/img/setup/barcode-1.png">
To start scanning with a bar-code, go to
@@ -39,7 +41,7 @@
#### Figure 2: Check the box 'Is POS'
-<img class="screenshot" alt="Barcode" src="{{docs_base_url}}/assets/img/setup/barcode-2.png">
+<img class="screenshot" alt="Barcode" src="/docs/assets/img/setup/barcode-2.png">
Go to Item and click on Add new row.
diff --git a/erpnext/docs/user/manual/en/setting-up/calculate-incentive-for-sales-team.md b/erpnext/docs/user/manual/en/setting-up/calculate-incentive-for-sales-team.md
index 72f36c0..d591f40 100644
--- a/erpnext/docs/user/manual/en/setting-up/calculate-incentive-for-sales-team.md
+++ b/erpnext/docs/user/manual/en/setting-up/calculate-incentive-for-sales-team.md
@@ -1,3 +1,5 @@
+# Calculate Incentive For Sales Team
+
Can be used in any Sales Transaction with **Sales Team** Table:
diff --git a/erpnext/docs/user/manual/en/setting-up/company-setup.md b/erpnext/docs/user/manual/en/setting-up/company-setup.md
index 1a07b86..429e201 100644
--- a/erpnext/docs/user/manual/en/setting-up/company-setup.md
+++ b/erpnext/docs/user/manual/en/setting-up/company-setup.md
@@ -1,3 +1,5 @@
+# Company Setup
+
Enter your company details to complete Company Setup. Mention the type of
business, under Domain. You can enter manufacturing, retail, or services
depending on the nature of your business activity. If you have more than one
diff --git a/erpnext/docs/user/manual/en/setting-up/data/bulk-rename.md b/erpnext/docs/user/manual/en/setting-up/data/bulk-rename.md
index e1c8b13..57db1a5 100644
--- a/erpnext/docs/user/manual/en/setting-up/data/bulk-rename.md
+++ b/erpnext/docs/user/manual/en/setting-up/data/bulk-rename.md
@@ -12,4 +12,4 @@
To rename multiple records, upload a **.csv** file with the old name in the first column and the new name in the second column and click on **Upload**.
-<img class="screenshot" alt="Bulk Rename" src="{{docs_base_url}}/assets/img/setup/data/rename.png">
\ No newline at end of file
+<img class="screenshot" alt="Bulk Rename" src="/docs/assets/img/setup/data/rename.png">
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/setting-up/data/data-import-tool.md b/erpnext/docs/user/manual/en/setting-up/data/data-import-tool.md
index a5dd939..b9c6ccc 100644
--- a/erpnext/docs/user/manual/en/setting-up/data/data-import-tool.md
+++ b/erpnext/docs/user/manual/en/setting-up/data/data-import-tool.md
@@ -1,8 +1,10 @@
+# Data Import Tool
+
The Data Import Tool is a great way to upload (or edit) bulk data, specially master data, into the system.
To Open the data import tool, you either go to Setup or go to the Transaction you want to Import. If Data Import is allowed, you will see an Import Button:
-<img alt="Start Import" class="screenshot" src="{{docs_base_url}}/assets/img/setup/data-import/data-import-1.png">
+<img alt="Start Import" class="screenshot" src="/docs/assets/img/setup/data-import/data-import-1.png">
The tool has two sections, one to download a template and the second to upload
the data.
@@ -23,33 +25,33 @@
* Click on "Download Blank Template".
* For bulk editing, you can click on "Download With Data".
-<img alt="Download Template" class="screenshot" src="{{docs_base_url}}/assets/img/setup/data-import/data-import-tool-template.gif">
+<img alt="Download Template" class="screenshot" src="/docs/assets/img/setup/data-import/data-import-tool-template.gif">
### 2\. Fill in the Template
After downloading the template, open it in a spreadsheet application and fill
in the data below the column headings.
-<img alt="Download Template" class="screenshot" src="{{docs_base_url}}/assets/img/setup/data-import/import-file.png">
+<img alt="Download Template" class="screenshot" src="/docs/assets/img/setup/data-import/import-file.png">
Then export your template or save it as a Excel or Comma Separated Values (CSV)
file. To export the document in Excel tick the checkbox for Download in Excel File Format
-<img alt="Download Template" class="screenshot" src="{{docs_base_url}}/assets/img/setup/data-import/import-csv.png">
+<img alt="Download Template" class="screenshot" src="/docs/assets/img/setup/data-import/import-csv.png">
### Download in Excel
-<img alt="Download Template" class="screenshot" src="{{docs_base_url}}/assets/img/setup/data-import/data-import-excel.png">
+<img alt="Download Template" class="screenshot" src="/docs/assets/img/setup/data-import/data-import-excel.png">
### 3\. Upload the File ethier in .xlsx or .csv
Finally attach the file in the section. Click on the "Upload". Once the upload is successfull click Import"
button.
-<img alt="Upload" class="screenshot" src="{{docs_base_url}}/assets/img/setup/data-import/data-import-3.png">
+<img alt="Upload" class="screenshot" src="/docs/assets/img/setup/data-import/data-import-3.png">
-<img alt="Upload" class="screenshot" src="{{docs_base_url}}/assets/img/setup/data-import/data-import-4.png">
+<img alt="Upload" class="screenshot" src="/docs/assets/img/setup/data-import/data-import-4.png">
#### Notes:
diff --git a/erpnext/docs/user/manual/en/setting-up/email/.md b/erpnext/docs/user/manual/en/setting-up/email/.md
index 5e024b0..5f85a80 100644
--- a/erpnext/docs/user/manual/en/setting-up/email/.md
+++ b/erpnext/docs/user/manual/en/setting-up/email/.md
@@ -1,3 +1,5 @@
+#
+
Emails are the nervous system of business communication and ERPNext has been
designed to make good use of this.
diff --git a/erpnext/docs/user/manual/en/setting-up/email/email-account.md b/erpnext/docs/user/manual/en/setting-up/email/email-account.md
index ad448b0..7e9b8a7 100644
--- a/erpnext/docs/user/manual/en/setting-up/email/email-account.md
+++ b/erpnext/docs/user/manual/en/setting-up/email/email-account.md
@@ -10,7 +10,7 @@
There are 2 types of email accounts, outgoing and incoming. Outgoing email accounts use an SMTP service to send emails and emails are retrived from your inbox using a IMAP or POP service. Most email providers such as GMail, Outlook or Yahoo provide these services.
-<img class="screenshot" alt="Defining Criteria" src="{{docs_base_url}}/assets/img/setup/email/email-account-list.png">
+<img class="screenshot" alt="Defining Criteria" src="/docs/assets/img/setup/email/email-account-list.png">
### Outgoing Email Accounts
@@ -18,13 +18,19 @@
To setup an outgoing Email Account, check on **Enable Outgoing** and set your SMTP server settings, if you are using a popular email service, these will be preset for you.
-<img class="screenshot" alt="Outgoing EMail" src="{{docs_base_url}}/assets/img/setup/email/email-account-sending.png">
+<img class="screenshot" alt="Outgoing EMail" src="/docs/assets/img/setup/email/email-account-sending.png">
### Incoming Email Accounts
To setup an incoming Email Account, check on **Enable Incoming** and set your POP3 settings, if you are using a popular email service, these will be preset for you.
-<img class="screenshot" alt="Incoming EMail" src="{{docs_base_url}}/assets/img/setup/email/email-account-incoming.png">
+<img class="screenshot" alt="Incoming EMail" src="/docs/assets/img/setup/email/email-account-incoming.png">
+
+### Setting Import Conditions for Email Import
+
+Email Accounts allows you to set conditions according to the data of the incoming emails. The email will be imported to ERPNext only if the all conditions are true. For example if you want to import an email if the subject is "Some important email", you put doc.subject == "Some important email" in the conditions textbox. You can also set more complex conditions by combining them, as shown on the following screenshot.
+
+<img class="screenshot" alt="Incoming EMail Conditions" src="/docs/assets/img/setup/email/email-account-incoming-conditions.png">
### How ERPNext handles replies
@@ -34,6 +40,6 @@
If you would like ERPNext to notify you if an email is unreplied for a certain amount of time, then you can set **Notify if Unreplied**. Here you can set the number of minutes to wait before notifications are sent and whom the notifications must go to.
-<img class="screenshot" alt="Incoming EMail" src="{{docs_base_url}}/assets/img/setup/email/email-account-unreplied.png">
+<img class="screenshot" alt="Incoming EMail" src="/docs/assets/img/setup/email/email-account-unreplied.png">
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/email/email-alerts.md b/erpnext/docs/user/manual/en/setting-up/email/email-alerts.md
index 8d239ea..2b89d7d 100644
--- a/erpnext/docs/user/manual/en/setting-up/email/email-alerts.md
+++ b/erpnext/docs/user/manual/en/setting-up/email/email-alerts.md
@@ -32,13 +32,13 @@
### Setting a Subject
You can retrieve the data for a particular field by using `doc.[field_name]`. To use it in your subject / message, you have to surround it with `{% raw %}{{ }}{% endraw %}`. These are called [Jinja](http://jinja.pocoo.org/) tags. So, for example to get the name of a document, you use `{% raw %}{{ doc.name }}{% endraw %}`. The below example sends an email on saving a Task with the Subject, "TASK##### has been created"
-<img class="screenshot" alt="Setting Subject" src="{{docs_base_url}}/assets/img/setup/email/email-alert-subject.png">
+<img class="screenshot" alt="Setting Subject" src="/docs/assets/img/setup/email/email-alert-subject.png">
### Setting Conditions
Email alerts allow you to set conditions according to the field data in your documents. For example, if you want to recieve an Email if a Lead has been saved as "Interested" as it's status, you put `doc.status == "Interested"` in the conditions textbox. You can also set more complex conditions by combining them.
-<img class="screenshot" alt="Setting Condition" src="{{docs_base_url}}/assets/img/setup/email/email-alert-condition.png">
+<img class="screenshot" alt="Setting Condition" src="/docs/assets/img/setup/email/email-alert-condition.png">
The above example will send an Email Alert when a Task is saved with the status "Open" and the Expected End Date for the Task is the date on or before the date on which it was saved on.
@@ -74,14 +74,14 @@
Then you can use that as a condition in the **Condition** rules to ensure emails are not sent multiple times
-<img class="screenshot" alt="Setting Property in Email Alert" src="{{docs_base_url}}/assets/img/setup/email/email-alert-subject.png">
+<img class="screenshot" alt="Setting Property in Email Alert" src="/docs/assets/img/setup/email/email-alert-subject.png">
### Example
1. Defining the Criteria
- <img class="screenshot" alt="Defining Criteria" src="{{docs_base_url}}/assets/img/setup/email/email-alert-1.png">
+ <img class="screenshot" alt="Defining Criteria" src="/docs/assets/img/setup/email/email-alert-1.png">
1. Setting the Recipients and Message
- <img class="screenshot" alt="Set Message" src="{{docs_base_url}}/assets/img/setup/email/email-alert-2.png">
+ <img class="screenshot" alt="Set Message" src="/docs/assets/img/setup/email/email-alert-2.png">
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/email/email-digest.md b/erpnext/docs/user/manual/en/setting-up/email/email-digest.md
index 5fa836e..bceba37 100644
--- a/erpnext/docs/user/manual/en/setting-up/email/email-digest.md
+++ b/erpnext/docs/user/manual/en/setting-up/email/email-digest.md
@@ -12,6 +12,6 @@
Set your frequency, check all the items you want to receive in your weekly update and select the user ids whom you want to send the Digest to.
-<img class="screenshot" alt="Email Digest" src="{{docs_base_url}}/assets/img/setup/email/email-digest.png">
+<img class="screenshot" alt="Email Digest" src="/docs/assets/img/setup/email/email-digest.png">
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/email/email-inbox.md b/erpnext/docs/user/manual/en/setting-up/email/email-inbox.md
index d098d0c..14dad78 100644
--- a/erpnext/docs/user/manual/en/setting-up/email/email-inbox.md
+++ b/erpnext/docs/user/manual/en/setting-up/email/email-inbox.md
@@ -12,7 +12,7 @@
`Setup > User > New User`
-<img class="screenshot" alt="Email User" src="{{docs_base_url}}/assets/img/setup/email/email-user.png">
+<img class="screenshot" alt="Email User" src="/docs/assets/img/setup/email/email-user.png">
#### Step 2: Create Email Domain
@@ -22,7 +22,7 @@
`Setup > Emails > Email Domain > New`
-<img class="screenshot" alt="Email Domain" src="{{docs_base_url}}/assets/img/setup/email/email-domain.png">
+<img class="screenshot" alt="Email Domain" src="/docs/assets/img/setup/email/email-domain.png">
Once you have configured an Email Domain for your Email Service, it will be used for creating Email Accounts for all the Users in your ERPNext account.
@@ -43,44 +43,44 @@
If you are creating an Email Account for your colleague who's Email Password is unknown to you, then check field "Awaiting Password". As per this setting, a User (for whom Email Account is created) will get a prompt to enter email password when accessing his/her ERPNext Account.
-<img class="screenshot" alt="Email Password" src="{{docs_base_url}}/assets/img/setup/email/email-password.png">
+<img class="screenshot" alt="Email Password" src="/docs/assets/img/setup/email/email-password.png">
In the Email Account, select Email Domain only if you are using Email Service other than Email Services listed above. Else, you can just select Email Service, leave Email Domain blank and proceed forward.
-<img class="screenshot" alt="Email Service" src="{{docs_base_url}}/assets/img/setup/email/email-service.png">
+<img class="screenshot" alt="Email Service" src="/docs/assets/img/setup/email/email-service.png">
>If you are creating an Email Account for Email Inbox of a User, then leave Append To field as blank.
-For more details on how to setup Email Account, [click here]({{docs_base_url}}/user/manual/en/setting-up/email/email-account.html").
+For more details on how to setup Email Account, [click here](/docs/user/manual/en/setting-up/email/email-account.html").
#### Step 4: Linking Email Account in User master
Once an Email Account is created for an User, select that Email Account in the User. This will ensure that emails pulled from the said Email ID will accessible only to this User in your ERPNext account.
-<img class="screenshot" alt="Email User Link" src="{{docs_base_url}}/assets/img/setup/email/email-user-link.png">
+<img class="screenshot" alt="Email User Link" src="/docs/assets/img/setup/email/email-user-link.png">
## Email Inbox
If you have correctly configured Email Inbox as instructed above, then on the login of a User, Email Inbox icon will be visible. This will navigate user to Email Inbox view within the ERPNext account. All the Emails received on that email will be fetch and listed in the Email Inbox view. User will be able to open emails and take various actions against it.
-<img class="screenshot" alt="Email Inbox" src="{{docs_base_url}}/assets/img/setup/email/email-inbox.png">
+<img class="screenshot" alt="Email Inbox" src="/docs/assets/img/setup/email/email-inbox.png">
#### Folders
In ERPNext, you can link multiple Email Accounts with the single User. To switch to Inbox of different email account and access other folders like Sent Emails, Spam, Trash, check Email Inbox option in the left bar.
-<img class="screenshot" alt="Email Folders" src="{{docs_base_url}}/assets/img/setup/email/email-folders.png">
+<img class="screenshot" alt="Email Folders" src="/docs/assets/img/setup/email/email-folders.png">
#### Actions
On the emails in your inbox, you can take various actions like Reply, Forward, Mark as Spam or Trash.
-<img class="screenshot" alt="Email Actions" src="{{docs_base_url}}/assets/img/setup/email/email-actions.png">
+<img class="screenshot" alt="Email Actions" src="/docs/assets/img/setup/email/email-actions.png">
#### Make Options
The Email Inbox within ERPNext also allow you to quickly create ERPNext transaction based on email received. From an Email itself, you can a Issue, Lead or Opportunity based on the context of the email.
-<img class="screenshot" alt="Make from Email" src="{{docs_base_url}}/assets/img/setup/email/make-from-email.png">
+<img class="screenshot" alt="Make from Email" src="/docs/assets/img/setup/email/make-from-email.png">
diff --git a/erpnext/docs/user/manual/en/setting-up/email/email-reports.md b/erpnext/docs/user/manual/en/setting-up/email/email-reports.md
index a27a2dc..95db8ba 100644
--- a/erpnext/docs/user/manual/en/setting-up/email/email-reports.md
+++ b/erpnext/docs/user/manual/en/setting-up/email/email-reports.md
@@ -14,7 +14,7 @@
Select the Report, the user for which you want to create this report (permissions will apply for this user), the Email Addresses where you want this report emailed and the frequency of the report.
-<img class="screenshot" alt="Make Auto Email Report" src="{{docs_base_url}}/assets/img/setup/email/auto-email-1.png">
+<img class="screenshot" alt="Make Auto Email Report" src="/docs/assets/img/setup/email/auto-email-1.png">
#### Step 2
@@ -22,11 +22,11 @@
Step 1. Select the Report, the user for which you want to create this report. Permissions will apply for this user
-<img class="screenshot" alt="With Filters" src="{{docs_base_url}}/assets/img/setup/email/auto-email-2.png">
+<img class="screenshot" alt="With Filters" src="/docs/assets/img/setup/email/auto-email-2.png">
Click on the table to edit the table
-<img class="screenshot" alt="Edit Filters" src="{{docs_base_url}}/assets/img/setup/email/auto-email-3.png">
+<img class="screenshot" alt="Edit Filters" src="/docs/assets/img/setup/email/auto-email-3.png">
#### Test
@@ -34,4 +34,4 @@
Here is an example of the email you will receive for a report
-<img class="screenshot" alt="Report by Email" src="{{docs_base_url}}/assets/img/setup/email/auto-email-4.png">
+<img class="screenshot" alt="Report by Email" src="/docs/assets/img/setup/email/auto-email-4.png">
diff --git a/erpnext/docs/user/manual/en/setting-up/email/sending-email.md b/erpnext/docs/user/manual/en/setting-up/email/sending-email.md
index 504c76d..b4566de 100644
--- a/erpnext/docs/user/manual/en/setting-up/email/sending-email.md
+++ b/erpnext/docs/user/manual/en/setting-up/email/sending-email.md
@@ -2,8 +2,8 @@
In ERPNext you can send any document as email (with a PDF attachment) by clicking on `Menu > Email` from any open document.
-<img class="screenshot" alt="Send Email" src="{{docs_base_url}}/assets/img/setup/email/send-email.gif">
+<img class="screenshot" alt="Send Email" src="/docs/assets/img/setup/email/send-email.gif">
-**Note:** You must have outgoing [email accounts]({{docs_base_url}}/user/manual/en/setting-up/email/email-account.html) setup for this.
+**Note:** You must have outgoing [email accounts](/docs/user/manual/en/setting-up/email/email-account.html) setup for this.
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/feedback/manual-feedback-request.md b/erpnext/docs/user/manual/en/setting-up/feedback/manual-feedback-request.md
index 4afaee1..7f873ce 100644
--- a/erpnext/docs/user/manual/en/setting-up/feedback/manual-feedback-request.md
+++ b/erpnext/docs/user/manual/en/setting-up/feedback/manual-feedback-request.md
@@ -6,12 +6,12 @@
To request a feedback manually go to respective document e.g. Sales Order, Issue etc.
and click on Ask a Feedback option in Menu.
-<img class="screenshot" alt="Setting Condition" src="{{docs_base_url}}/assets/img/setup/feedback/manual-feedback-request-option.png">
+<img class="screenshot" alt="Setting Condition" src="/docs/assets/img/setup/feedback/manual-feedback-request-option.png">
Then, user can enter the feedback request details like email id, message and send the
feedback request mail.
-<img class="screenshot" alt="Setting Condition" src="{{docs_base_url}}/assets/img/setup/feedback/manual-feedback-request.png">
+<img class="screenshot" alt="Setting Condition" src="/docs/assets/img/setup/feedback/manual-feedback-request.png">
Note. If Feedback Trigger is already configured for the document then system will fetch
Feedback Request details (email id, message)
diff --git a/erpnext/docs/user/manual/en/setting-up/feedback/resend-feedback-request.md b/erpnext/docs/user/manual/en/setting-up/feedback/resend-feedback-request.md
index 0dbb3b7..641d0a0 100644
--- a/erpnext/docs/user/manual/en/setting-up/feedback/resend-feedback-request.md
+++ b/erpnext/docs/user/manual/en/setting-up/feedback/resend-feedback-request.md
@@ -2,15 +2,15 @@
We can also Resend the Feedback Request to the Customer/User.
-<img class="screenshot" alt="Setting Condition" src="{{docs_base_url}}/assets/img/setup/feedback/timeline-rating-and-feedback.png">
+<img class="screenshot" alt="Setting Condition" src="/docs/assets/img/setup/feedback/timeline-rating-and-feedback.png">
To resend the Feedback Request we will need to navigate the Communication by clicking the `Details` link on Timeline Feedback.
-<img class="screenshot" alt="Setting Condition" src="{{docs_base_url}}/assets/img/setup/feedback/resend-feedback-request-button.png">
+<img class="screenshot" alt="Setting Condition" src="/docs/assets/img/setup/feedback/resend-feedback-request-button.png">
On Resend Button click a dialog with the Feedback Request message will appear user can either send the
Feedback Request with same message or he/she can make the changes in the Feedback Request message.
-<img class="screenshot" alt="Setting Condition" src="{{docs_base_url}}/assets/img/setup/feedback/resend-feedback-request-custom-message.png">
+<img class="screenshot" alt="Setting Condition" src="/docs/assets/img/setup/feedback/resend-feedback-request-custom-message.png">
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/feedback/setting-up-feedback.md b/erpnext/docs/user/manual/en/setting-up/feedback/setting-up-feedback.md
index 373d703..441e78e 100644
--- a/erpnext/docs/user/manual/en/setting-up/feedback/setting-up-feedback.md
+++ b/erpnext/docs/user/manual/en/setting-up/feedback/setting-up-feedback.md
@@ -19,13 +19,13 @@
### Setting a Subject
You can retrieve the data for a particular field by using `doc.[field_name]`. To use it in your subject/message, you have to surround it with `{% raw %}{{ }}{% endraw %}`. These are called [Jinja](http://jinja.pocoo.org/) tags. So, for example, to get the name of a document, you use `{% raw %}{{ doc.name }}{% endraw %}`. The below example sends an feedback request whenever Issue is Closed with the Subject, "ISS-##### Issue is Resolved"
-<img class="screenshot" alt="Setting Subject" src="{{docs_base_url}}/assets/img/setup/feedback/feedback-trigger-subject.png">
+<img class="screenshot" alt="Setting Subject" src="/docs/assets/img/setup/feedback/feedback-trigger-subject.png">
### Setting Conditions
Feedback Trigger allows you to set conditions according to the field data in your documents. The feedback request email will be sent on document save only if the all conditions are true For example if you want to trigger the feedback request mail to a customer if an Issue is has been saved as "Closed" as it's status, you put `doc.status == "Closed"` in the conditions textbox. You can also set more complex conditions by combining them.
-<img class="screenshot" alt="Setting Condition" src="{{docs_base_url}}/assets/img/setup/feedback/feedback-trigger-condition.png">
+<img class="screenshot" alt="Setting Condition" src="/docs/assets/img/setup/feedback/feedback-trigger-condition.png">
### Setting a Message
@@ -45,9 +45,9 @@
### Example
1. Setting up Feedback Trigger
- <img class="screenshot" alt="Defining Criteria" src="{{docs_base_url}}/assets/img/setup/feedback/setting-up-feedback-trigger.png">
+ <img class="screenshot" alt="Defining Criteria" src="/docs/assets/img/setup/feedback/setting-up-feedback-trigger.png">
1. Setting the Recipients and Message
- <img class="screenshot" alt="Set Message" src="{{docs_base_url}}/assets/img/setup/feedback/setting-up-feedback-trigger-message.png">
+ <img class="screenshot" alt="Set Message" src="/docs/assets/img/setup/feedback/setting-up-feedback-trigger-message.png">
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/feedback/submit-feedback.md b/erpnext/docs/user/manual/en/setting-up/feedback/submit-feedback.md
index 9069f37..663aae1 100644
--- a/erpnext/docs/user/manual/en/setting-up/feedback/submit-feedback.md
+++ b/erpnext/docs/user/manual/en/setting-up/feedback/submit-feedback.md
@@ -3,17 +3,17 @@
Once feedback request mail is sent the user/customer. He/She can visit the URL to submit the feedback
as well as rating for the document.
-<img class="screenshot" alt="Setting Condition" src="{{docs_base_url}}/assets/img/setup/feedback/submit-feedback.png">
+<img class="screenshot" alt="Setting Condition" src="/docs/assets/img/setup/feedback/submit-feedback.png">
Once Feedback is submitted the feedback details message and ratings will be recorded and will be shown on Document sidebar and timeline. Also once the Feedback is successfully submitted by the user the link shared to the user will be expired and can not be used to submit the Feedback again.
On Document sidebar the latest feedback ratings will displayed.
-<img class="screenshot" alt="Setting Condition" src="{{docs_base_url}}/assets/img/setup/feedback/sidebar-ratings.png">
+<img class="screenshot" alt="Setting Condition" src="/docs/assets/img/setup/feedback/sidebar-ratings.png">
Also, The Feedback details such as Feedback message and ratings will be shown in the Document's Timeline along
with Comment, Email.
-<img class="screenshot" alt="Setting Condition" src="{{docs_base_url}}/assets/img/setup/feedback/timeline-rating-and-feedback.png">
+<img class="screenshot" alt="Setting Condition" src="/docs/assets/img/setup/feedback/timeline-rating-and-feedback.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/setting-up/integrations/dropbox-backup.md b/erpnext/docs/user/manual/en/setting-up/integrations/dropbox-backup.md
index 0839072..37f74a2 100644
--- a/erpnext/docs/user/manual/en/setting-up/integrations/dropbox-backup.md
+++ b/erpnext/docs/user/manual/en/setting-up/integrations/dropbox-backup.md
@@ -1,3 +1,5 @@
+# Dropbox Backup
+
#Setting Up Dropbox Backups
We always recommend customers to maintain backup of their data in ERPNext. The database backup is downloaded in the form of an SQL file. If needed, this SQL file of backup can be restored in the another ERPNext account as well.
@@ -11,7 +13,7 @@
Set Frequency to download backup in your Dropbox account.
-<img class="screenshot" alt="set frequency" src="{{docs_base_url}}/assets/img/setup/integrations/setup-backup-frequency.png">
+<img class="screenshot" alt="set frequency" src="/docs/assets/img/setup/integrations/setup-backup-frequency.png">
####Step 2: Allow Dropbox Access
@@ -21,13 +23,13 @@
Login to your Dropbox account by entering login credentials.
-<img class="screenshot" alt="Login" src="{{docs_base_url}}/assets/img/setup/integrations/dropbox-2.png">
+<img class="screenshot" alt="Login" src="/docs/assets/img/setup/integrations/dropbox-2.png">
####Step 4: Allow
On successful login, you will find a confirmation message as following. Click on "Allow" to let your ERPNext account have access to your Dropbox account.
-<img class="screenshot" alt="Allow" src="{{docs_base_url}}/assets/img/setup/integrations/dropbox-3.png">
+<img class="screenshot" alt="Allow" src="/docs/assets/img/setup/integrations/dropbox-3.png">
With this, a folder called "ERPNext" will be created in your Dropbox account, and database backup will start to auto-download in it.
@@ -39,18 +41,18 @@
####Step 2:Create a new app
-<img class="screenshot" alt="Create new" src="{{docs_base_url}}/assets/img/setup/integrations/dropbox-open-3.png">
+<img class="screenshot" alt="Create new" src="/docs/assets/img/setup/integrations/dropbox-open-3.png">
####Step 3: Fill in details for the app
-<img class="screenshot" alt="Choose Dropbox API and type as APP Folder" src="{{docs_base_url}}/assets/img/setup/integrations/dropbox-open-1.png">
+<img class="screenshot" alt="Choose Dropbox API and type as APP Folder" src="/docs/assets/img/setup/integrations/dropbox-open-1.png">
-
-<img class="screenshot" alt="Setup APP Name" src="{{docs_base_url}}/assets/img/setup/integrations/dropbox-open-2.png">
+<img class="screenshot" alt="Setup APP Name" src="/docs/assets/img/setup/integrations/dropbox-open-2.png">
####Step 4: Setup Redirect URL in app
-<img class="screenshot" alt="Set Redirect URL" src="{{docs_base_url}}/assets/img/setup/integrations/dropbox_redirect_uri.png">
+<img class="screenshot" alt="Set Redirect URL" src="/docs/assets/img/setup/integrations/dropbox_redirect_uri.png">
####Step 5: Settings in Site Config
diff --git a/erpnext/docs/user/manual/en/setting-up/integrations/index.md b/erpnext/docs/user/manual/en/setting-up/integrations/index.md
index e7b5a61..ed5a56e 100644
--- a/erpnext/docs/user/manual/en/setting-up/integrations/index.md
+++ b/erpnext/docs/user/manual/en/setting-up/integrations/index.md
@@ -1,3 +1,5 @@
+# Integrations
+
Integration Services is platform to configure 3rd Party Services.
diff --git a/erpnext/docs/user/manual/en/setting-up/integrations/ldap-integration.md b/erpnext/docs/user/manual/en/setting-up/integrations/ldap-integration.md
index ec6e848..759077a 100644
--- a/erpnext/docs/user/manual/en/setting-up/integrations/ldap-integration.md
+++ b/erpnext/docs/user/manual/en/setting-up/integrations/ldap-integration.md
@@ -1,3 +1,5 @@
+# Ldap Integration
+
#Setting up LDAP
Lightweight Directory Access Protocol is a centralised access controll system used by many small medium scale organisations.
@@ -11,9 +13,9 @@
To enable ldap service, you need to configure parameters like LDAP Server Url, Organizational Unit, UID, Base Distinguished Name (DN) and Password for Base DN
-<img class="screenshot" alt="LDAP Settings" src="{{docs_base_url}}/assets/img/setup/integrations/ldap_settings.png">
+<img class="screenshot" alt="LDAP Settings" src="/docs/assets/img/setup/integrations/ldap_settings.png">
After setting up LDAP parameters, on login screen, the system enables **Login Via LDAP** option.
-<img class="screenshot" alt="LOGIN via LDAP" src="{{docs_base_url}}/assets/img/setup/integrations/login_via_ldap.png">
+<img class="screenshot" alt="LOGIN via LDAP" src="/docs/assets/img/setup/integrations/login_via_ldap.png">
diff --git a/erpnext/docs/user/manual/en/setting-up/integrations/paypal-integration.md b/erpnext/docs/user/manual/en/setting-up/integrations/paypal-integration.md
index 314eb64..8b309e8 100644
--- a/erpnext/docs/user/manual/en/setting-up/integrations/paypal-integration.md
+++ b/erpnext/docs/user/manual/en/setting-up/integrations/paypal-integration.md
@@ -1,3 +1,5 @@
+# Paypal Integration
+
#Setting up PayPal
A payment gateway is an e-commerce application service provider service that authorizes credit card payments for e-businesses, online retailers, bricks and clicks, or traditional brick and mortar.
@@ -11,17 +13,17 @@
To enable PayPal payment service, you need to configure parameters like API Username, API Password and Signature.
-<img class="screenshot" alt="PayPal Settings" src="{{docs_base_url}}/assets/img/setup/integrations/paypal_settings.png">
+<img class="screenshot" alt="PayPal Settings" src="/docs/assets/img/setup/integrations/paypal_settings.png">
You also can set test payment environment, by settings `Use Sandbox`
On enabling service, the system will create Payment Gateway record and Account head in chart of accounts having account type as Bank.
-<img class="screenshot" alt="PayPal COA" src="{{docs_base_url}}/assets/img/setup/integrations/paypal_coa.png">
+<img class="screenshot" alt="PayPal COA" src="/docs/assets/img/setup/integrations/paypal_coa.png">
Also it will create Payment Gateway Account entry. Payment Gateway Account is configuration hub from this you can set account head from existing COA, default Payment Request email body template.
-<img class="screenshot" alt="Payment Gateway Account" src="{{docs_base_url}}/assets/img/setup/integrations/payment_gateway_account_paypal.png">
+<img class="screenshot" alt="Payment Gateway Account" src="/docs/assets/img/setup/integrations/payment_gateway_account_paypal.png">
After enabling service and configuring Payment Gateway Account your system is able to accept online payments.
@@ -33,20 +35,20 @@
#### Paypal Sanbox API Signature
- Login to paypal developer account, <a href="https://developer.paypal.com/">PayPal Developer Account</a>
- From **Accounts** tab. create a new business account.
-<img class="screenshot" alt="Payment Request" src="{{ docs_base_url }}/assets/img/setup/integrations/setup-sanbox-1.png">
+<img class="screenshot" alt="Payment Request" src="/docs/assets/img/setup/integrations/setup-sanbox-1.png">
- From this account profile you will get your sandbox api credentials
-<img class="screenshot" alt="Payment Request" src="{{ docs_base_url }}/assets/img/setup/integrations/sanbox-credentials.png">
+<img class="screenshot" alt="Payment Request" src="/docs/assets/img/setup/integrations/sanbox-credentials.png">
---
#### PayPal Account API Signature
- Login to PayPal Account and go to profile
-<img class="screenshot" alt="Payment Request" src="{{ docs_base_url }}/assets/img/setup/integrations/api-step-1.png">
+<img class="screenshot" alt="Payment Request" src="/docs/assets/img/setup/integrations/api-step-1.png">
- From **My Selling Tools** go to **api Access**
-<img class="screenshot" alt="Payment Request" src="{{ docs_base_url }}/assets/img/setup/integrations/api-step-2.png">
+<img class="screenshot" alt="Payment Request" src="/docs/assets/img/setup/integrations/api-step-2.png">
- On API Access Page, choose option 2 to generate API credentials
-<img class="screenshot" alt="Payment Request" src="{{ docs_base_url }}/assets/img/setup/integrations/api-step-3.png">
+<img class="screenshot" alt="Payment Request" src="/docs/assets/img/setup/integrations/api-step-3.png">
diff --git a/erpnext/docs/user/manual/en/setting-up/integrations/razorpay-integration.md b/erpnext/docs/user/manual/en/setting-up/integrations/razorpay-integration.md
index 09cd911..ac8bfd7 100644
--- a/erpnext/docs/user/manual/en/setting-up/integrations/razorpay-integration.md
+++ b/erpnext/docs/user/manual/en/setting-up/integrations/razorpay-integration.md
@@ -1,3 +1,5 @@
+# Razorpay Integration
+
#Setting up Razorpay
A payment gateway is an e-commerce application service provider service that authorizes credit card payments for e-businesses, online retailers, bricks and clicks, or traditional brick and mortar.
@@ -10,15 +12,15 @@
#### Setup Razorpay
To enable Razorpay payment service, you need to configure parameters like API Key, API Secret
-<img class="screenshot" alt="Razorpay Settings" src="{{docs_base_url}}/assets/img/setup/integrations/razorpay_settings.png">
+<img class="screenshot" alt="Razorpay Settings" src="/docs/assets/img/setup/integrations/razorpay_settings.png">
On enabling service, the system will create Payment Gateway record and Account head in chart of account with account type as Bank.
-<img class="screenshot" alt="Razorpay COA" src="{{docs_base_url}}/assets/img/setup/integrations/razorpay_coa.png">
+<img class="screenshot" alt="Razorpay COA" src="/docs/assets/img/setup/integrations/razorpay_coa.png">
Also it will create Payment Gateway Account entry. Payment Gateway Account is configuration hub from this you can set account head from existing COA, default Payment Request email body template.
-<img class="screenshot" alt="Payment Gateway Account" src="{{docs_base_url}}/assets/img/setup/integrations/payment_gateway_account_razorpay.png">
+<img class="screenshot" alt="Payment Gateway Account" src="/docs/assets/img/setup/integrations/payment_gateway_account_razorpay.png">
After enabling service and configuring Payment Gateway Account your system is able to accept online payments.
diff --git a/erpnext/docs/user/manual/en/setting-up/integrations/stripe-integration.md b/erpnext/docs/user/manual/en/setting-up/integrations/stripe-integration.md
index 05f70f0..6915a9c 100644
--- a/erpnext/docs/user/manual/en/setting-up/integrations/stripe-integration.md
+++ b/erpnext/docs/user/manual/en/setting-up/integrations/stripe-integration.md
@@ -1,3 +1,5 @@
+# Stripe Integration
+
#Setting up Stripe
To setup Stripe,
@@ -6,15 +8,15 @@
#### Setup Stripe
To enable Stripe payment service, you need to configure parameters like Publishable Key, Secret Key
-<img class="screenshot" alt="Razorpay Settings" src="{{docs_base_url}}/assets/img/setup/integrations/stripe_setting.png">
+<img class="screenshot" alt="Razorpay Settings" src="/docs/assets/img/setup/integrations/stripe_setting.png">
On enabling service, the system will create Payment Gateway record and Account head in chart of account with account type as Bank.
-<img class="screenshot" alt="Stripe COA" src="{{docs_base_url}}/assets/img/setup/integrations/stripe_coa.png">
+<img class="screenshot" alt="Stripe COA" src="/docs/assets/img/setup/integrations/stripe_coa.png">
Also it will create Payment Gateway Account entry. Payment Gateway Account is configuration hub from this you can set account head from existing COA, default Payment Request email body template.
-<img class="screenshot" alt="Payment Gateway Account" src="{{docs_base_url}}/assets/img/setup/integrations/payment_gateway_account_stripe.png">
+<img class="screenshot" alt="Payment Gateway Account" src="/docs/assets/img/setup/integrations/payment_gateway_account_stripe.png">
After configuring Payment Gateway Account your system is able to accept online payments.
diff --git a/erpnext/docs/user/manual/en/setting-up/pos-setting.md b/erpnext/docs/user/manual/en/setting-up/pos-setting.md
index 9bfd819..375c251 100644
--- a/erpnext/docs/user/manual/en/setting-up/pos-setting.md
+++ b/erpnext/docs/user/manual/en/setting-up/pos-setting.md
@@ -1,4 +1,4 @@
-# Point of Sale Setting
+# Point of Sale Profile
POS includes advanced features to cater to different functionality, such as
inventory management, CRM, financials, warehousing, etc., all built into the
@@ -10,14 +10,20 @@
and efficient as possible. To do this, you can create a POS Setting for a user
from:
-> Accounts > Setup > Point-of-Sale Setting
+> Accounts > Setup > Point-of-Sale Profile
Set default values as defined.
-<img class="screenshot" alt="POS Setting" src="{{docs_base_url}}/assets/img/pos-setting/pos-setting.png">
+<img class="screenshot" alt="POS Setting" src="/docs/assets/img/pos-setting/pos_profile.png">
+
+To set the default mode of payment, enabled the option default in the mode of payments table
+<img class="screenshot" alt="POS Setting" src="/docs/assets/img/pos-setting/default_mop.png">
+
+User can sale the particular products to the particular customers from the POS by adding item groups, customer groups in the POS Profile.
+<img class="screenshot" alt="POS Setting" src="/docs/assets/img/pos-setting/item_customer_group.png">
> Important : If you specify a particular User, the POS setting will be
applied only to that User. If the User option is left blank, the setting will
-be set for all users. To understand POS in detail visit [Point of Sale]({{docs_base_url}}/user/manual/en/accounts/point-of-sale-pos-invoice.html)
+be set for all users. To understand POS in detail visit [Point of Sale](/docs/user/manual/en/accounts/point-of-sale-pos-invoice.html)
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/price-lists.md b/erpnext/docs/user/manual/en/setting-up/price-lists.md
index a42afb9..a965581 100644
--- a/erpnext/docs/user/manual/en/setting-up/price-lists.md
+++ b/erpnext/docs/user/manual/en/setting-up/price-lists.md
@@ -1,3 +1,5 @@
+# Price Lists
+
ERPNext lets you maintain multiple selling and buying prices for an Item using Price Lists. A PriceList is a name you can give to a set of Item prices.
Why would you want Price Lists? You have different prices for different zones (based on the shipping costs), for different currencies etc.
@@ -8,7 +10,7 @@
> Selling/Buying/Stock > Setup > Price List >> New
-<img class="screenshot" alt="Price List" src="{{docs_base_url}}/assets/img/price-list/price-list.png">
+<img class="screenshot" alt="Price List" src="/docs/assets/img/price-list/price-list.png">
* These Price List will be used when creating Item Price record to track selling or buying price of an item. Click here to learn more about Item Price.
diff --git a/erpnext/docs/user/manual/en/setting-up/print/address-template.md b/erpnext/docs/user/manual/en/setting-up/print/address-template.md
index 53dfef1..34df11c 100644
--- a/erpnext/docs/user/manual/en/setting-up/print/address-template.md
+++ b/erpnext/docs/user/manual/en/setting-up/print/address-template.md
@@ -26,6 +26,6 @@
### Example
-<img class="screenshot" alt="Print Heading" src="{{docs_base_url}}/assets/img/setup/print/address-format.png">
+<img class="screenshot" alt="Print Heading" src="/docs/assets/img/setup/print/address-format.png">
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/print/cheque-print-template.md b/erpnext/docs/user/manual/en/setting-up/print/cheque-print-template.md
index 44dd412..3a4566a 100644
--- a/erpnext/docs/user/manual/en/setting-up/print/cheque-print-template.md
+++ b/erpnext/docs/user/manual/en/setting-up/print/cheque-print-template.md
@@ -1,8 +1,10 @@
+# Cheque Print Template
+
#Cheque Print Template
Business involves making payment to various parties like suppliers and employees. Payment can be made in various modes like cash, NEFT or cheque. If you are making a payment via cheque, you can also create a Print Format for printing Cheque from ERPNext based on the Payment Entry.
-<img class="screenshot" alt="Sample Cheque" src="{{docs_base_url}}/assets/img/setup/print/sample-cheque.jpg">
+<img class="screenshot" alt="Sample Cheque" src="/docs/assets/img/setup/print/sample-cheque.jpg">
Using the Cheque Print Template you can generate a new Print Format based. It will be created based the cheque format provided by your bank.
@@ -14,13 +16,13 @@
In the Cheque Print Template, for each value (say Payee, Date), exact co-ordinates are provided based on where that value should be printed on a cheque. Co-ordinates are provided in centi-meter.
-<img class="screenshot" alt="Sample Cheque" src="{{docs_base_url}}/assets/img/setup/print/cheque-1.png">
+<img class="screenshot" alt="Sample Cheque" src="/docs/assets/img/setup/print/cheque-1.png">
####New Format via Scanning
To speed up creation of a new cheque printing format, you can upload scanned image of the cheque. Considering the scanned image for the cheque, system automatically updates co-ordinates for each value like party name, amount, date, amount in words etc.
-<img class="screenshot" alt="Sample Cheque" src="{{docs_base_url}}/assets/img/setup/print/cheque-2.png">
+<img class="screenshot" alt="Sample Cheque" src="/docs/assets/img/setup/print/cheque-2.png">
####New format by manual entry
You can manually provide the co-ordinate for each value based on where you want to to be printed on the cheque.
@@ -28,18 +30,18 @@
####Preview
Based on co-ordinates provided for all the values, a preview be shown as to how the values will be printed on the cheque.
-<img class="screenshot" alt="Sample Cheque" src="{{docs_base_url}}/assets/img/setup/print/cheque-3.png">
+<img class="screenshot" alt="Sample Cheque" src="/docs/assets/img/setup/print/cheque-3.png">
####New Print Format
If the preview looks promising, click on the button to create a new Print Format for printing cheque. Based on the values provided in the Cheque Print Template, the system will auto-generate an HTML script for the cheque’s Print Format.
-<img class="screenshot" alt="Sample Cheque" src="{{docs_base_url}}/assets/img/setup/print/cheque-4.png">
+<img class="screenshot" alt="Sample Cheque" src="/docs/assets/img/setup/print/cheque-4.png">
####Printing Cheque
New print format generated for the cheque will be visible in the Payment Entry form. After creating the payment entry, you will be able to print transaction details on the cheque.
-<img class="screenshot" alt="Sample Cheque" src="{{docs_base_url}}/assets/img/setup/print/cheque-5.gif">
+<img class="screenshot" alt="Sample Cheque" src="/docs/assets/img/setup/print/cheque-5.gif">
diff --git a/erpnext/docs/user/manual/en/setting-up/print/custom-translations.md b/erpnext/docs/user/manual/en/setting-up/print/custom-translations.md
index 1dab1c1..fe5a0d1 100644
--- a/erpnext/docs/user/manual/en/setting-up/print/custom-translations.md
+++ b/erpnext/docs/user/manual/en/setting-up/print/custom-translations.md
@@ -1,3 +1,5 @@
+# Custom Translations
+
#Custom Translations
User can print the customer's and supplier's document in their local language. For an example if I have customers from germany, france who want quotation in german, french language will be possible with these feature.
@@ -6,11 +8,11 @@
In the Customer master, select default Language. Say default language for the Customer is <b>deutsch</b>.
-<img src="{{docs_base_url}}/assets/img/multilingual_print_format/set_customer_default_lang.png" class="screenshot">
+<img src="/docs/assets/img/multilingual_print_format/set_customer_default_lang.png" class="screenshot">
Same way, you can also set default language in the Supplier master.
-<img src="{{docs_base_url}}/assets/img/multilingual_print_format/set_supplier_default_lang.png" class="screenshot">
+<img src="/docs/assets/img/multilingual_print_format/set_supplier_default_lang.png" class="screenshot">
####Print Preview in the Party's Language
@@ -18,17 +20,17 @@
Customer Quotation print preview in customer's default language.
-<img src="{{ docs_base_url }}/assets/img/multilingual_print_format/customer_quotation.png" class="screenshot">
+<img src="/docs/assets/img/multilingual_print_format/customer_quotation.png" class="screenshot">
Supplier Quotation print preview in supplier's default language.
-<img src="{{ docs_base_url }}/assets/img/multilingual_print_format/supplier_quotation.png" class="screenshot">
+<img src="/docs/assets/img/multilingual_print_format/supplier_quotation.png" class="screenshot">
####What to do if want to print with another language?
User can have option to select alternate language on print view.
-<img src="{{ docs_base_url }}/assets/img/multilingual_print_format/alternate_language.png" class="screenshot">
+<img src="/docs/assets/img/multilingual_print_format/alternate_language.png" class="screenshot">
####Custom Translation
@@ -36,11 +38,11 @@
`Setup > Settings > Translation List > New`
-<img src="{{ docs_base_url }}/assets/img/multilingual_print_format/translation.png" class="screenshot">
+<img src="/docs/assets/img/multilingual_print_format/translation.png" class="screenshot">
The translation is applied when user select language as Italiano on supplier quotation's print preview.
-<img src="{{ docs_base_url }}/assets/img/multilingual_print_format/custom_translation.png" class="screenshot">
+<img src="/docs/assets/img/multilingual_print_format/custom_translation.png" class="screenshot">
diff --git a/erpnext/docs/user/manual/en/setting-up/print/letter-head.md b/erpnext/docs/user/manual/en/setting-up/print/letter-head.md
index 72b79e1..1243903 100644
--- a/erpnext/docs/user/manual/en/setting-up/print/letter-head.md
+++ b/erpnext/docs/user/manual/en/setting-up/print/letter-head.md
@@ -1,3 +1,5 @@
+# Letter Head
+
#Letter Head
Each company has default Letter Head for their company. This Letter Head values are generally set as Header and Footer in the documents. In ERPNext, you can capture the these details in the Letter Head master.
@@ -19,7 +21,7 @@
* Logo Image: You can insert the image in your Letter Head record by clicking on image icon. Once image is inserted, HTML for it will be generated automatically.
* Other information (like Address, tax ID etc.) that you want to put on your letter head.
-<img class="screenshot" alt="Print Heading" src="{{docs_base_url}}/assets/img/setup/print/letter-head.png">
+<img class="screenshot" alt="Print Heading" src="/docs/assets/img/setup/print/letter-head.png">
> If you want to make this the default letter head, click on “Is Default”.
@@ -31,7 +33,7 @@
This is how the letter head looks in a document's print.
-<img class="screenshot" alt="Print Heading" src="{{docs_base_url}}/assets/img/setup/print/letter-head-1.png">
+<img class="screenshot" alt="Print Heading" src="/docs/assets/img/setup/print/letter-head-1.png">
> Please note that Footer will be visible only when document's print is seen in the PDF. Footer will not be visible in the HTML based print preview.
diff --git a/erpnext/docs/user/manual/en/setting-up/print/print-format-builder.md b/erpnext/docs/user/manual/en/setting-up/print/print-format-builder.md
index f979927..4e94045 100644
--- a/erpnext/docs/user/manual/en/setting-up/print/print-format-builder.md
+++ b/erpnext/docs/user/manual/en/setting-up/print/print-format-builder.md
@@ -10,19 +10,19 @@
### Step 1: Make a new Format
-<img class="screenshot" alt="Send Email" src="{{docs_base_url}}/assets/img/setup/print/print-format-builder-1.gif">
+<img class="screenshot" alt="Send Email" src="/docs/assets/img/setup/print/print-format-builder-1.gif">
### Step 2: Add a new Field
To add a field, just drag it from the left sidebar and add it in your layout. You can edit the layout by clicking on the settings <i class="octicon octicon-gear"></i> icon.
-<img class="screenshot" alt="Send Email" src="{{docs_base_url}}/assets/img/setup/print/print-format-builder-2.gif">
+<img class="screenshot" alt="Send Email" src="/docs/assets/img/setup/print/print-format-builder-2.gif">
### Step 3
To remove a field, just drag it back into the fields sidebar.
-<img class="screenshot" alt="Send Email" src="{{docs_base_url}}/assets/img/setup/print/print-format-builder-3.gif">
+<img class="screenshot" alt="Send Email" src="/docs/assets/img/setup/print/print-format-builder-3.gif">
### Step 4
@@ -30,7 +30,7 @@
Then click on **Edit HTML** to edit your content.
-<img class="screenshot" alt="Send Email" src="{{docs_base_url}}/assets/img/setup/print/print-format-builder-4.gif">
+<img class="screenshot" alt="Send Email" src="/docs/assets/img/setup/print/print-format-builder-4.gif">
To save your format, just click on the **Save** button on the top.
diff --git a/erpnext/docs/user/manual/en/setting-up/print/print-headings.md b/erpnext/docs/user/manual/en/setting-up/print/print-headings.md
index 98fbf53..de3395b 100644
--- a/erpnext/docs/user/manual/en/setting-up/print/print-headings.md
+++ b/erpnext/docs/user/manual/en/setting-up/print/print-headings.md
@@ -1,3 +1,5 @@
+# Print Headings
+
Print Headings are the names which you can give to your sales invoices,
supplier quotations etc. You can create a list of names for different business
communications.
@@ -8,10 +10,10 @@
#### Figure 1: Save Print Heading
-<img class="screenshot" alt="Print Heading" src="{{docs_base_url}}/assets/img/setup/print/print-heading.png">
+<img class="screenshot" alt="Print Heading" src="/docs/assets/img/setup/print/print-heading.png">
Example of a change in print heading is shown below:
-<img class="screenshot" alt="Print Heading" src="{{docs_base_url}}/assets/img/setup/print/print-heading-1.png">
+<img class="screenshot" alt="Print Heading" src="/docs/assets/img/setup/print/print-heading-1.png">
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/print/print-settings.md b/erpnext/docs/user/manual/en/setting-up/print/print-settings.md
index cdf3c54..220b467 100644
--- a/erpnext/docs/user/manual/en/setting-up/print/print-settings.md
+++ b/erpnext/docs/user/manual/en/setting-up/print/print-settings.md
@@ -6,6 +6,6 @@
> Setup > Printing and Branding > Print Settings
-<img class="screenshot" alt="Print Settings" src="{{docs_base_url}}/assets/img/setup/print/print-settings.png">
+<img class="screenshot" alt="Print Settings" src="/docs/assets/img/setup/print/print-settings.png">
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/print/terms-and-conditions.md b/erpnext/docs/user/manual/en/setting-up/print/terms-and-conditions.md
index 7340f17..28e803d 100644
--- a/erpnext/docs/user/manual/en/setting-up/print/terms-and-conditions.md
+++ b/erpnext/docs/user/manual/en/setting-up/print/terms-and-conditions.md
@@ -1,3 +1,5 @@
+# Terms And Conditions
+
Terms and conditions are the general and special arrangements, provisions, requirements, rules, specifications, and standards that a company follows. These specifications are an integral part of an agreement or contract that the company gets into with its customers, suppliers or partners.
### 1. Make a new Terms and Conditions
@@ -6,13 +8,13 @@
`Selling > Terms and Condition > New`
-<img class="screenshot" alt="Terms and Conditions" src="{{docs_base_url}}/assets/img/setup/print/terms-1.png">
+<img class="screenshot" alt="Terms and Conditions" src="/docs/assets/img/setup/print/terms-1.png">
### 2. Editing in HTML
Content of Terms and Condition can be formatted as per your preference, and also insert images where needed. If you have expertise in HTML, you will also find option to edit the content of Terms and Condition in HTML.
-<img class="screenshot" alt="Terms and Conditions, Edit HTML" src="{{docs_base_url}}/assets/img/setup/print/terms-2.png">
+<img class="screenshot" alt="Terms and Conditions, Edit HTML" src="/docs/assets/img/setup/print/terms-2.png">
This also allows you to use Terms and Condition master for footer, which otherwise is not available in ERPNext as dedicated functionality. Since contents of Terms and Condition is always the last to appear in the print format, details of footer should be inserted at the end of the content, so that it actually appears as footer in the print format.
@@ -20,6 +22,6 @@
In transactions, you will find section of Terms and Condition where you will be able to search and fetched required Terms and Condition master.
-<img class="screenshot" alt="Terms and Conditions, Select in document" src="{{docs_base_url}}/assets/img/setup/print/terms-3.png">
+<img class="screenshot" alt="Terms and Conditions, Select in document" src="/docs/assets/img/setup/print/terms-3.png">
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/setting-company-sales-goal.md b/erpnext/docs/user/manual/en/setting-up/setting-company-sales-goal.md
index e18ad05..ca0c32a 100644
--- a/erpnext/docs/user/manual/en/setting-up/setting-company-sales-goal.md
+++ b/erpnext/docs/user/manual/en/setting-up/setting-company-sales-goal.md
@@ -2,14 +2,14 @@
Monthly sales targets can be set for a company via the Company master. By default, the Company master dashboard features past sales stats.
-<img class="screenshot" alt="Sales Graph" src="{{docs_base_url}}/assets/img/sales_goal/sales_history_graph.png">
+<img class="screenshot" alt="Sales Graph" src="/docs/assets/img/sales_goal/sales_history_graph.png">
You can set the **Sales Target** field to track progress to track progress with respect to it.
-<img class="screenshot" alt="Setting Sales Goal" src="{{docs_base_url}}/assets/img/sales_goal/setting_sales_goal.gif">
+<img class="screenshot" alt="Setting Sales Goal" src="/docs/assets/img/sales_goal/setting_sales_goal.gif">
The target progress is also shown in notifications:
-<img class="screenshot" alt="Sales Notification" src="{{docs_base_url}}/assets/img/sales_goal/sales_goal_notification.png">
+<img class="screenshot" alt="Sales Notification" src="/docs/assets/img/sales_goal/sales_goal_notification.png">
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/setting-up-taxes.md b/erpnext/docs/user/manual/en/setting-up/setting-up-taxes.md
index a3c11ab..18f2f01 100644
--- a/erpnext/docs/user/manual/en/setting-up/setting-up-taxes.md
+++ b/erpnext/docs/user/manual/en/setting-up/setting-up-taxes.md
@@ -1,3 +1,5 @@
+# Setting Up Taxes
+
One of the primary motivator for compulsory use of accounting tools is
calculation of Taxes. You may or may not make money but your government will
(to help your country be safe and prosperous). And if you don’t calculate your
@@ -22,11 +24,11 @@
Item Tax table can be found as a section within the Item Master document.
-<img class="screenshot" alt="Item Tax" src="{{docs_base_url}}/assets/img/taxes/item-tax.png">
+<img class="screenshot" alt="Item Tax" src="/docs/assets/img/taxes/item-tax.png">
* **Inclusive and Exclusive Tax**: ERPNext allows you to enter Item rates which are tax inclusive.
-<img class="screenshot" alt="Inclusive Tax" src="{{docs_base_url}}/assets/img/taxes/inclusive-tax.png">
+<img class="screenshot" alt="Inclusive Tax" src="/docs/assets/img/taxes/inclusive-tax.png">
* **Exception to the rule**: Item tax settings are required only if a particular Item has a different tax rate than the rate defined in the standard tax Account
* **Item tax is overwrite-able**: You can overwrite or change the item tax rate by going to the Item master in the Item tax table.
@@ -49,7 +51,7 @@
> Setup > Accounts > Sales Taxes and Charge Master
-<img class="screenshot" alt="Sales Tax Master" src="{{docs_base_url}}/assets/img/taxes/sales-tax-master.png">
+<img class="screenshot" alt="Sales Tax Master" src="/docs/assets/img/taxes/sales-tax-master.png">
When you create a new master, you will have to add a row for each tax type.
diff --git a/erpnext/docs/user/manual/en/setting-up/settings/global-defaults.md b/erpnext/docs/user/manual/en/setting-up/settings/global-defaults.md
index 412572a..87ebcba 100644
--- a/erpnext/docs/user/manual/en/setting-up/settings/global-defaults.md
+++ b/erpnext/docs/user/manual/en/setting-up/settings/global-defaults.md
@@ -6,6 +6,6 @@
Whenever a new document is created, these values will be set as default.
-<img class="screenshot" alt="Global Defaults" src="{{docs_base_url}}/assets/img/setup/settings/global-defaults.png">
+<img class="screenshot" alt="Global Defaults" src="/docs/assets/img/setup/settings/global-defaults.png">
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/settings/module-settings.md b/erpnext/docs/user/manual/en/setting-up/settings/module-settings.md
index 3e2a109..f6ede50 100644
--- a/erpnext/docs/user/manual/en/setting-up/settings/module-settings.md
+++ b/erpnext/docs/user/manual/en/setting-up/settings/module-settings.md
@@ -10,6 +10,6 @@
Check / uncheck the items to show / hide.
-<img class="screenshot" alt="Module Settings" src="{{docs_base_url}}/assets/img/setup/settings/show-hide-modules.png">
+<img class="screenshot" alt="Module Settings" src="/docs/assets/img/setup/settings/show-hide-modules.png">
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/settings/naming-series.md b/erpnext/docs/user/manual/en/setting-up/settings/naming-series.md
index 086a272..71029bc 100644
--- a/erpnext/docs/user/manual/en/setting-up/settings/naming-series.md
+++ b/erpnext/docs/user/manual/en/setting-up/settings/naming-series.md
@@ -42,7 +42,7 @@
See how to set the naming series
-<img class="screenshot" alt="Naming Series" src="{{docs_base_url}}/assets/img/setup/settings/naming-series.gif">
+<img class="screenshot" alt="Naming Series" src="/docs/assets/img/setup/settings/naming-series.gif">
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/settings/system-settings.md b/erpnext/docs/user/manual/en/setting-up/settings/system-settings.md
index b436b46..43f47f1 100644
--- a/erpnext/docs/user/manual/en/setting-up/settings/system-settings.md
+++ b/erpnext/docs/user/manual/en/setting-up/settings/system-settings.md
@@ -8,6 +8,6 @@
> Setup > Settings > System Settings
-<img class="screenshot" alt="System Settings" src="{{docs_base_url}}/assets/img/setup/settings/system-settings.png">
+<img class="screenshot" alt="System Settings" src="/docs/assets/img/setup/settings/system-settings.png">
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-1-language.md b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-1-language.md
index 00219fd..c8fba43 100644
--- a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-1-language.md
+++ b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-1-language.md
@@ -2,7 +2,7 @@
Select your language. ERPNext is available in more than 20 languages.
-<img alt="Language" class="screenshot" src="{{docs_base_url}}/assets/img/setup-wizard/step-1.png">
+<img alt="Language" class="screenshot" src="/docs/assets/img/setup-wizard/step-1.png">
---
diff --git a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-10-item.md b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-10-item.md
index bc71b98..837c333 100644
--- a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-10-item.md
+++ b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-10-item.md
@@ -3,7 +3,7 @@
In this final step, please enter the names of the Items you buy or sell.
<img alt="Add Items" class="screenshot"
-src="{{docs_base_url}}/assets/img/setup-wizard/step-10.png">
+src="/docs/assets/img/setup-wizard/step-10.png">
Please set the group of the item (Product / Service) and unit of measure. Don't worry you will be able to edit all of this later.
diff --git a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-2-currency-and-timezone.md b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-2-currency-and-timezone.md
index 5dc1648..6809f40 100644
--- a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-2-currency-and-timezone.md
+++ b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-2-currency-and-timezone.md
@@ -2,7 +2,7 @@
Set your country name, currency and timezone.
-<img alt="Currency" class="screenshot" src="{{docs_base_url}}/assets/img/setup-wizard/step-2.png">
+<img alt="Currency" class="screenshot" src="/docs/assets/img/setup-wizard/step-2.png">
---
diff --git a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-3-user-details.md b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-3-user-details.md
index b9eff18..5d6002a 100644
--- a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-3-user-details.md
+++ b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-3-user-details.md
@@ -3,7 +3,7 @@
Enter Users Profile Details like Name, User ID and preferred password.
<img alt="User" class="screenshot"
-src="{{docs_base_url}}/assets/img/setup-wizard/step-3.png">
+src="/docs/assets/img/setup-wizard/step-3.png">
---
diff --git a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-4-company-details.md b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-4-company-details.md
index f88d31c..2558f16 100644
--- a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-4-company-details.md
+++ b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-4-company-details.md
@@ -3,7 +3,7 @@
Enter Company Details like Name, Abbreviation and Financial Year Details.
<img alt="Company Details" class="screenshot"
-src="{{docs_base_url}}/assets/img/setup-wizard/step-4.png">
+src="/docs/assets/img/setup-wizard/step-4.png">
---
diff --git a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-5-letterhead-and-logo.md b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-5-letterhead-and-logo.md
index 8694960..9f45642 100644
--- a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-5-letterhead-and-logo.md
+++ b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-5-letterhead-and-logo.md
@@ -3,7 +3,7 @@
Attach Company Letterhead and Company Logo.
<img alt="Company Logo and Letterhead" class="screenshot"
-src="{{docs_base_url}}/assets/img/setup-wizard/step-5.png">
+src="/docs/assets/img/setup-wizard/step-5.png">
---
@@ -15,7 +15,7 @@
You may choose to skip this step if your letterhead is not ready.
-To select letterhead later through the setup module, read [Letter-head]({{docs_base_url}}/user/manual/en/setting-up/print/letter-head.html)
+To select letterhead later through the setup module, read [Letter-head](/docs/user/manual/en/setting-up/print/letter-head.html)
#### To "attach as web-link"
diff --git a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-6-add-users.md b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-6-add-users.md
index 7e8f083..0a0cd00 100644
--- a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-6-add-users.md
+++ b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-6-add-users.md
@@ -3,6 +3,6 @@
Add other users and assign them roles based on their job responsibilities.
<img alt="Users" class="screenshot"
-src="{{docs_base_url}}/assets/img/setup-wizard/step-6.png">
+src="/docs/assets/img/setup-wizard/step-6.png">
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-7-tax-details.md b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-7-tax-details.md
index 1d353b6..3b42ebe 100644
--- a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-7-tax-details.md
+++ b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-7-tax-details.md
@@ -3,7 +3,7 @@
Enter any three types of taxes which you regularly pay. This wizard will create a tax master which will calculate the taxes as per the tax-type.
<img alt="Tax Details" class="screenshot"
-src="{{docs_base_url}}/assets/img/setup-wizard/step-7.png">
+src="/docs/assets/img/setup-wizard/step-7.png">
Just set the tax name and the standard percentage levied.
@@ -17,6 +17,6 @@
The purpose of VAT is to generate tax revenues to the government similar to the corporate income tax or the personal income tax. For Example: When you shop at a departmental store and avail discount on the products, the store charges you 5% extra on the total bill as the VAT.
-To setup VAT in the setup wizard , simply enter the percentage amount levied by your government. To setup VAT at a later stage read [setting-up-taxes]({{docs_base_url}}/user/manual/en/setting-up/setting-up-taxes.html)
+To setup VAT in the setup wizard , simply enter the percentage amount levied by your government. To setup VAT at a later stage read [setting-up-taxes](/docs/user/manual/en/setting-up/setting-up-taxes.html)
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-8-customer-names.md b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-8-customer-names.md
index 8143f0b..2b6ae0c 100644
--- a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-8-customer-names.md
+++ b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-8-customer-names.md
@@ -4,7 +4,7 @@
<img alt="Customers" class="screenshot"
-src="{{docs_base_url}}/assets/img/setup-wizard/step-8.png">
+src="/docs/assets/img/setup-wizard/step-8.png">
---
@@ -18,6 +18,6 @@
Contact Name: Shiv Agarwal
-To understand Customer in detail visit [Customer Details]({{docs_base_url}}/user/manual/en/CRM/customer.html)
+To understand Customer in detail visit [Customer Details](/docs/user/manual/en/CRM/customer.html)
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-9-suppliers.md b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-9-suppliers.md
index 762c984..46bcfba 100644
--- a/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-9-suppliers.md
+++ b/erpnext/docs/user/manual/en/setting-up/setup-wizard/step-9-suppliers.md
@@ -3,10 +3,10 @@
Enter a few of your Suppliers' names.
<img alt="Suppliers" class="screenshot"
-src="{{docs_base_url}}/assets/img/setup-wizard/step-9.png">
+src="/docs/assets/img/setup-wizard/step-9.png">
---
-To understand Suppliers in detail visit [Supplier Master]({{docs_base_url}}/user/manual/en/buying/supplier.html)
+To understand Suppliers in detail visit [Supplier Master](/docs/user/manual/en/buying/supplier.html)
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/sms-setting.md b/erpnext/docs/user/manual/en/setting-up/sms-setting.md
index 7c66692..1cb7c36 100644
--- a/erpnext/docs/user/manual/en/setting-up/sms-setting.md
+++ b/erpnext/docs/user/manual/en/setting-up/sms-setting.md
@@ -17,7 +17,7 @@
http://instant.smses.com/web2sms.php?username=<USERNAME>&password;=<PASSWORD>&to;=<MOBILENUMBER>&sender;=<SENDERID>&message;=<MESSAGE>
-<img class="screenshot" alt="SMS Setting 2" src="{{docs_base_url}}/assets/img/setup/sms-settings2.jpg">
+<img class="screenshot" alt="SMS Setting 2" src="/docs/assets/img/setup/sms-settings2.jpg">
> Note: the string up to the "?" is the SMS Gateway URL
@@ -36,6 +36,6 @@
from your SMS Provider like username, password etc. These static values should
be entered in the Static Parameters table.
-<img class="screenshot" alt="SMS Setting" src="{{docs_base_url}}/assets/img/setup/sms-settings1.png">
+<img class="screenshot" alt="SMS Setting" src="/docs/assets/img/setup/sms-settings1.png">
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/stock-reconciliation-for-non-serialized-item.md b/erpnext/docs/user/manual/en/setting-up/stock-reconciliation-for-non-serialized-item.md
index 743f398..36ad65a 100644
--- a/erpnext/docs/user/manual/en/setting-up/stock-reconciliation-for-non-serialized-item.md
+++ b/erpnext/docs/user/manual/en/setting-up/stock-reconciliation-for-non-serialized-item.md
@@ -1,3 +1,5 @@
+# Stock Reconciliation For Non Serialized Item
+
Stock Reconciliation is the process of counting and evaluating stock-in-trade,
usually at an organisations year end in order to value the total stock for
preparation of the accounts. In this process actual physical stocks are
@@ -27,17 +29,17 @@
A predefined template of an spreadsheet file should be followed for importing item's stock levels and valuations. Open new Stock Reconciliation form to see download option.
-<img class="screenshot" alt="Stock Reconciliation" src="{{docs_base_url}}/assets/img/setup/stock-recon-1.png">
+<img class="screenshot" alt="Stock Reconciliation" src="/docs/assets/img/setup/stock-recon-1.png">
#### Step 2: Enter Data in csv file.
-<img class="screenshot" alt="Stock Reconciliation" src="{{docs_base_url}}/assets/img/setup/stock-reco-data.png">
+<img class="screenshot" alt="Stock Reconciliation" src="/docs/assets/img/setup/stock-reco-data.png">
The csv format is case-sensitive. Do not edit the headers which are preset in the template. In the Item Code and Warehouse column, enter exact Item Code and Warehouse as created in your ERPNext account. For quatity, enter stock level you wish to set for that item, in a specific warehouse.
#### Step 3: Upload file and Enter Values in Stock Reconciliation Form
-<img class="screenshot" alt="Stock Reconciliation" src="{{docs_base_url}}/assets/img/setup/stock-recon-2.png">
+<img class="screenshot" alt="Stock Reconciliation" src="/docs/assets/img/setup/stock-recon-2.png">
**Posting Date**
@@ -59,11 +61,11 @@
#### Step 4: Review the reconciliation data
-<img class="screenshot" alt="Stock Reconciliation" src="{{docs_base_url}}/assets/img/setup/stock-reco-upload.gif">
+<img class="screenshot" alt="Stock Reconciliation" src="/docs/assets/img/setup/stock-reco-upload.gif">
### Stock Ledger Report
-<img class="screenshot" alt="Stock Reconciliation" src="{{docs_base_url}}/assets/img/setup//stock-reco-ledger.png">
+<img class="screenshot" alt="Stock Reconciliation" src="/docs/assets/img/setup//stock-reco-ledger.png">
**How Stock Reconciliation Works**
diff --git a/erpnext/docs/user/manual/en/setting-up/territory.md b/erpnext/docs/user/manual/en/setting-up/territory.md
index 3a1abfd..c82bfe4 100644
--- a/erpnext/docs/user/manual/en/setting-up/territory.md
+++ b/erpnext/docs/user/manual/en/setting-up/territory.md
@@ -1,3 +1,5 @@
+# Territory
+
If your business operates in multiple Territories (could be countries, states
or cities) it is usually a great idea to build your structure in the system.
Once you group your Customers by Territories, you can set annual targets for
@@ -5,6 +7,6 @@
territory v/s what you had planned.
You can also set different pricing for the same product sold across different territories.
-<img class="screenshot" alt="Territory Tree" src="{{docs_base_url}}/assets/img/crm/territory-tree.png">
+<img class="screenshot" alt="Territory Tree" src="/docs/assets/img/crm/territory-tree.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/setting-up/users-and-permissions/adding-users.md b/erpnext/docs/user/manual/en/setting-up/users-and-permissions/adding-users.md
index 6fb64df..16bf19e 100644
--- a/erpnext/docs/user/manual/en/setting-up/users-and-permissions/adding-users.md
+++ b/erpnext/docs/user/manual/en/setting-up/users-and-permissions/adding-users.md
@@ -11,7 +11,7 @@
### 1. List of Users
-<img class="screenshot" src="{{docs_base_url}}/assets/img/setup/users/user-1.png" alt="User List">
+<img class="screenshot" src="/docs/assets/img/setup/users/user-1.png" alt="User List">
To add a new user, click on "New"
@@ -22,8 +22,8 @@
The user's Email will become the user id. Mobile No can also be used to log in if you check the Allow Login using Mobile No checkbox under the Security section in System Settings. While Mobile No will be unique, it will not be treated as a user id.
-<img class="screenshot" src="{{docs_base_url}}/assets/img/setup/users/user-login-email.png" alt="Email Login">
-<img class="screenshot" src="{{docs_base_url}}/assets/img/setup/users/user-login-mobile.png" alt="Mobile No Login">
+<img class="screenshot" src="/docs/assets/img/setup/users/user-login-email.png" alt="Email Login">
+<img class="screenshot" src="/docs/assets/img/setup/users/user-login-mobile.png" alt="Mobile No Login">
After adding these details, save the user.
@@ -32,19 +32,19 @@
After saving, you will see a list of roles and a checkbox next to it. Just check the roles you want the user to have and save the document. To click on what permissions translate into roles, click on the role
name.
-<img class="screenshot" src="{{docs_base_url}}/assets/img/setup/users/user-2.png" alt="User Roles">
+<img class="screenshot" src="/docs/assets/img/setup/users/user-2.png" alt="User Roles">
### 4. Setting Module Access
Users will have access to all modules for which they have role based access. If you want to block certain modules for certain users, un-check the module from the list.
-<img class="screenshot" src="{{docs_base_url}}/assets/img/setup/users/user-3.png" alt="User Block Module">
+<img class="screenshot" src="/docs/assets/img/setup/users/user-3.png" alt="User Block Module">
### 5. Security Settings
If you wish to give the user access to the system only between office hours,
or during weekends, mention it under security settings.
-<img class="screenshot" src="{{docs_base_url}}/assets/img/setup/users/user-4.png" alt="User Security">
+<img class="screenshot" src="/docs/assets/img/setup/users/user-4.png" alt="User Security">
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/users-and-permissions/index.md b/erpnext/docs/user/manual/en/setting-up/users-and-permissions/index.md
index 05ad060..dcfd776 100644
--- a/erpnext/docs/user/manual/en/setting-up/users-and-permissions/index.md
+++ b/erpnext/docs/user/manual/en/setting-up/users-and-permissions/index.md
@@ -1,3 +1,5 @@
+# Users And Permissions
+
In ERPNext, you can create multiple users and assign them different roles. There are some users which can only access the public facing part of ERPNext (i.e. the website). Such users are called "Website Users".
diff --git a/erpnext/docs/user/manual/en/setting-up/users-and-permissions/role-based-permissions.md b/erpnext/docs/user/manual/en/setting-up/users-and-permissions/role-based-permissions.md
index 0c4042c..6f11ecb 100644
--- a/erpnext/docs/user/manual/en/setting-up/users-and-permissions/role-based-permissions.md
+++ b/erpnext/docs/user/manual/en/setting-up/users-and-permissions/role-based-permissions.md
@@ -5,7 +5,7 @@
To start with, go to:
> Setup > Permissions > Role Permissions Manager
-<img alt="Manage Read, Write, Create, Submit, Amend access using the Role Permissions Manager" class="screenshot" src="{{docs_base_url}}/assets/img/users-and-permissions/setting-up-permissions-leave-application.png">
+<img alt="Manage Read, Write, Create, Submit, Amend access using the Role Permissions Manager" class="screenshot" src="/docs/assets/img/users-and-permissions/setting-up-permissions-leave-application.png">
Permissions are applied on a combination of:
@@ -28,7 +28,7 @@
If enabled, a user with that role will be able to access only specific Documents for that Document Type. Such specific Document access is defined in the list of User Permissions. Additionally, User Permissions defined for other Document Types also get applied if they are related to the current Document Type through Link Fields.
To set, User Permissions go to:
- > Setup > Permissions > [User Permissions Manager]({{docs_base_url}}/user/manual/en/setting-up/users-and-permissions/user-permissions.html)
+ > Setup > Permissions > [User Permissions Manager](/docs/user/manual/en/setting-up/users-and-permissions/user-permissions.html)
---
@@ -38,37 +38,37 @@
Leave Application is a good **example** that encompasses all areas of Permission System.
-<img class="screenshot" alt="Leave Application Form should be created by an Employee, and approved by Leave Approver or HR User" src="{{docs_base_url}}/assets/img/users-and-permissions/setting-up-permissions-leave-application-form.png">
+<img class="screenshot" alt="Leave Application Form should be created by an Employee, and approved by Leave Approver or HR User" src="/docs/assets/img/users-and-permissions/setting-up-permissions-leave-application-form.png">
1. **It should be created by an Employee.**
For this, Employee Role should be given Read, Write, Create permissions.
-<img class="screenshot" alt="Giving Read, Write and Create Permissions to Employee for Leave Application" src="{{docs_base_url}}/assets/img/users-and-permissions/setting-up-permissions-employee-role.png">
+<img class="screenshot" alt="Giving Read, Write and Create Permissions to Employee for Leave Application" src="/docs/assets/img/users-and-permissions/setting-up-permissions-employee-role.png">
1. **An Employee should only be able to access his/her Leave Application.**
Hence, Apply User Permissions should be enabled for Employee Role, and a User Permission record should be created for each User Employee combination. (This effort is reduced for Employee Document Type, by programmatically creating User Permission records.)
-<img class="screenshot" alt="Limiting access to Leave Applications for a user with Employee Role via User Permissions Manager" src="{{docs_base_url}}/assets/old_images/erpnext/setting-up-permissions-employee-user-permissions.png">
+<img class="screenshot" alt="Limiting access to Leave Applications for a user with Employee Role via User Permissions Manager" src="/docs/assets/old_images/erpnext/setting-up-permissions-employee-user-permissions.png">
1. **HR Manager should be able to see all Leave Applications.**
Create a Permission Rule for HR Manager at Level 0, with Read permissions. Apply User Permissions should be disabled.
-<img class="screenshot" alt="Giving Submit and Cancel permissions to HR Manager for Leave Applications. 'Apply User Permissions' is unchecked to give full access." src="{{docs_base_url}}/assets/img/users-and-permissions/setting-up-permissions-hr-manager-role.png">
+<img class="screenshot" alt="Giving Submit and Cancel permissions to HR Manager for Leave Applications. 'Apply User Permissions' is unchecked to give full access." src="/docs/assets/img/users-and-permissions/setting-up-permissions-hr-manager-role.png">
2. **Leave Approver should be able to see and update Leave Applications applicable to him/her.**
Leave Approver is given Read and Write access at Level 0, with Apply User Permissions enabled. Relevant Employee Documents should be enlisted in the User Permissions of Leave Approvers. (This effort is reduced for Leave Approvers mentioned in Employee Documents, by programmatically creating User Permission records.)
-<img class="screenshot" alt="Giving Read, Write and Submit permissions to Leave Approver for Leave Applications.'Apply User Permissions' is checked to limit access based on Employee." src="{{docs_base_url}}/assets/img/users-and-permissions/setting-up-permissions-leave-approver-role.png">
+<img class="screenshot" alt="Giving Read, Write and Submit permissions to Leave Approver for Leave Applications.'Apply User Permissions' is checked to limit access based on Employee." src="/docs/assets/img/users-and-permissions/setting-up-permissions-leave-approver-role.png">
3. **It should be Approved / Rejected only by HR User or Leave Approver.**
The Status field of Leave Application is set at Level 1. HR User and Leave Approver are given Read and Write permissions for Level 1, while everyone else (All) are given Read permission for Level 1.
-<img class="screenshot" alt="Limiting read access for a set of fields to certain Roles" src="{{docs_base_url}}/assets/old_images/erpnext/setting-up-permissions-level-1.png">
+<img class="screenshot" alt="Limiting read access for a set of fields to certain Roles" src="/docs/assets/old_images/erpnext/setting-up-permissions-level-1.png">
4. **HR User should be able to delegate Leave Applications to his/her subordinates**
HR User is given the right to Set User Permissions. A User with HR User role would be able to defined User Permissions on Leave Application for other users.
-<img class="screenshot" alt="Let HR User delegate access to Leave Applications by checking 'Set User Permissions'. This will allow HR User to access User Permissions Manager for 'Leave Application'" src="{{docs_base_url}}/assets/img/users-and-permissions/setting-up-permissions-hr-user-role.png">
+<img class="screenshot" alt="Let HR User delegate access to Leave Applications by checking 'Set User Permissions'. This will allow HR User to access User Permissions Manager for 'Leave Application'" src="/docs/assets/img/users-and-permissions/setting-up-permissions-hr-user-role.png">
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/users-and-permissions/role-permisison-for-page-and-report.md b/erpnext/docs/user/manual/en/setting-up/users-and-permissions/role-permisison-for-page-and-report.md
index 3a26a32..5483af7 100644
--- a/erpnext/docs/user/manual/en/setting-up/users-and-permissions/role-permisison-for-page-and-report.md
+++ b/erpnext/docs/user/manual/en/setting-up/users-and-permissions/role-permisison-for-page-and-report.md
@@ -5,10 +5,10 @@
If user has enabled the developer mode, then they can add the roles directly in the page and report record. But in that case, the permissions will also be reflected in the json file for the page / report.
### For Page
-<img alt="Assign roles to the page" class="screenshot" src="{{docs_base_url}}/assets/img/users-and-permissions/roles-for-page.png">
+<img alt="Assign roles to the page" class="screenshot" src="/docs/assets/img/users-and-permissions/roles-for-page.png">
### For Report
-<img alt="Assign roles to the report" class="screenshot" src="{{docs_base_url}}/assets/img/users-and-permissions/roles-for-report.png">
+<img alt="Assign roles to the report" class="screenshot" src="/docs/assets/img/users-and-permissions/roles-for-report.png">
## Tool for custom roles assignment
@@ -16,10 +16,10 @@
To access, goto Setup > Permissions > Role Permission for Page and Report
-<img alt="Tools to assign custom roles to the page" class="screenshot" src="{{docs_base_url}}/assets/img/users-and-permissions/role-permission-for-page-and-report.png">
+<img alt="Tools to assign custom roles to the page" class="screenshot" src="/docs/assets/img/users-and-permissions/role-permission-for-page-and-report.png">
### Reset to defaults
Using "Reset to Default" button, user can remove the custom permissions applied on a page or report. Then default permissions will be applicable on that page or report.
-<img alt="Reset the default roles" class="screenshot" src="{{docs_base_url}}/assets/img/users-and-permissions/reset-roles-permisison-for-page-report.png">
+<img alt="Reset the default roles" class="screenshot" src="/docs/assets/img/users-and-permissions/reset-roles-permisison-for-page-report.png">
diff --git a/erpnext/docs/user/manual/en/setting-up/users-and-permissions/sharing.md b/erpnext/docs/user/manual/en/setting-up/users-and-permissions/sharing.md
index a939e65..23e5b32 100644
--- a/erpnext/docs/user/manual/en/setting-up/users-and-permissions/sharing.md
+++ b/erpnext/docs/user/manual/en/setting-up/users-and-permissions/sharing.md
@@ -4,6 +4,6 @@
To share a document, open the document, click on the "+" icon under sharing and select the user
-<img class="screenshot" src="{{docs_base_url}}/assets/img/setup/users/share.gif">
+<img class="screenshot" src="/docs/assets/img/setup/users/share.gif">
{next}
diff --git a/erpnext/docs/user/manual/en/setting-up/users-and-permissions/user-permissions.md b/erpnext/docs/user/manual/en/setting-up/users-and-permissions/user-permissions.md
index 7fae95c..896fd85 100644
--- a/erpnext/docs/user/manual/en/setting-up/users-and-permissions/user-permissions.md
+++ b/erpnext/docs/user/manual/en/setting-up/users-and-permissions/user-permissions.md
@@ -1,60 +1,52 @@
# User Permissions
-Role Base Permissions define the periphery of document types within which a user with a set of Roles can move around in. However, you can have an even finer control by defining User Permissions for a User. By setting specific documents in User Permissions list, you can limit access for that User to specific documents of a particular DocType, on the condition that "Apply User Permissions" is checked in Role Permissions Manager.
+Along with Role based permissions, you can also set user level permissions that are based on rules that are evaluated against the data containted in the document being accessed. This is particularly useful when you want to restrict based on:
-To start with, go to:
+1. Allow user to access data belonging to one Company
+1. Allow user to access data related to a specific Customer or Territory
-> Setup > Permissions > User Permissions Manager
+### Creating User Permissions
-User Permissions Manager displaying how users can access only a specific Company.
+To create a User Permission, go to Setup > Permission > User Permissions
-#### Example
+When you create a new record you will have to specify
-User 'tom.hagen@riosolutions.com' has Sales User role and we want to limit the user to access records for only a specific Company 'Rio Solutions'.
+1. The user for which the rule has to be applied
+1. The type of document which will be allowed (for example "Company")
+1. The specific item that you want to allow (the name of the "Company)
- 1. We add a User Permissions row for Company.
-
- <img src="{{docs_base_url}}/assets/img/users-and-permissions/user-permissions-new.gif" class="screen" alt="User Permissions For Company">
+<img src="/docs/assets/img/users-and-permissions/user-perms/new-user-permission.png" class="screenshot" alt="Creating a new user permission">
- Add User Permissions row for a combination of User 'tom.hagen@riosolutions.com' and Company 'Rio Solutions'.
+If you want to apply the permissions to all Roles for that user, keep the "Apply Permissions for all Roles of this User" checked. If you check this, it will automatically setup the rules for Roles to check for User Permissions.
- 1. Also Role "All" has only Read permission for Company, with 'Apply User Permissions' checked.
-
- <img src="{{docs_base_url}}/assets/img/users-and-permissions/user-permissions-company-role-all.png" class="screen" alt="Role Permissions for All on Company">
+### Choosing Which Roles to Apply
- Read Permission with Apply User Permissions checked for DocType Company.
+You can also manually edit the the roles for which you want the user permissions to apply. To do that go the the **Role Permission Manager** and select the role for which you want to Edit the User Permissions.
- 1. The combined effect of the above two rules lead to User 'tom.hagen@riosolutions.com' having only Read access to Company 'Rio Solutions'.
-
- <img src="{{docs_base_url}}/assets/img/users-and-permissions/user-permission-company.png" class="screen" alt="Effect of Role and User Permissions on Company">
-
- Access is limited to Company 'Rio Solutions'.
+Note that the "Apply User Permissions" is already checked for this role. Then click on "Select Document Types"
- 1. We want this User Permission on Company to get applied on other documents like Quotation, Sales Order, etc.
-
- These forms have a **Link Field based on Company**. As a result, User Permissions on Company also get applied on these documents, which leads to User 'tom.hagen@riosolutions' to acces these documents having Company 'Rio Solutions'.
+<img src="/docs/assets/img/users-and-permissions/user-perms/select-document-types.png" class="screenshot" alt="Select Document Types to Edit the Setting">
- <img class="screen" alt="Sales User Role Permissions for Quotation" src="{{docs_base_url}}/assets/img/users-and-permissions/user-permissions-quotation-sales-user.png" >
-
- Users with Sales User Role can Read, Write, Create, Submit and Cancel Quotations based on their User Permissions, since 'Apply User Permissions' is checked.
+Here you will see that Company has already been checked. If you want user permissions not be applied for that particular rule, you can un check it.
- <img src="{{docs_base_url}}/assets/img/users-and-permissions/user-permission-quotation.png" class="screenshot" alt="Quotation List limited to results for Company 'Rio Solutions'">
+<img src="/docs/assets/img/users-and-permissions/user-perms/view-selected-documents.png" class="screenshot" alt="Select Document Types to Edit the Setting">
- Quotation List is limited to results for Company 'Rio Solutions' for User 'tom.hagen@riosolutions.com'.
+### Ignoring User Permissions on Certain Fields
- 1. User Permissions get applied automatically based on Link Fields, just like how it worked for Quotation. But, Lead Form has 4 Link fields: Territory, Company, Lead Owner and Next Contact By. Say, you want Leads to limit access to Users based only on Territory, even though you have defined User Permissions for DocTypes User, Territory and Company. You can do this by setting 'Ignore User Permissions' for Link fields: Company, Lead Owner and Next Contact By.
-
-<img src="{{docs_base_url}}/assets/img/users-and-permissions/user-permissions-lead-role-permissions.png" class="screen" alt="Role Permissions on Lead for Sales User Role">
+Another way of allowing documents to be seen that have been restricited by User Permissions is to check "Ignore User Permissions" on a particular field by going to **Customize Form**
-Sales User can Read, Write and Create Leads limited by User Permissions.
+For example you don't want Assets to be restricited for any user, then select **Asset** in **Customize Form** and in the Company field, check on "Ignore User Permissions"
-<img src="{{docs_base_url}}/assets/img/users-and-permissions/user-permissions-ignore-user-permissions.png" class="screenshot" alt="Set Ingore User Permissions from Setup > Customize > Customize Form">
+<img src="/docs/assets/img/users-and-permissions/user-perms/ignore-user-user-permissions.png" class="screenshot" alt="Ignore User Permissions on specific properties">
-Check 'Ingore User Permissions' for Company, Lead Owner and Next Contact By fields using Setup > Customize > Customize Form for Lead.
+### Strict Permisssions
-<img src="{{docs_base_url}}/assets/img/users-and-permissions/permissions-lead-list.png" class="screenshot" alt="Lead List is limited to records with Territory 'United States'">
+Since User Permissions are applied via Roles, there may be many users belonging to a particular Role. Suppose you have three users belonging to Role "Accounts User" and you have applied **User Permissions** to only one user, then the permissions will only be restricted to that user.
-Due to the effect of the above combination, User 'tom.hagen@riosolutions.com' can only access Leads with Territory 'United States'.
+You can change this setting incase you want the user permissions to be assigned to all users, even if they are not assigned any user permissions by going to **System Settings** and checking "Apply Strict User Permissions"
-{next}
+### Checking How User Permissions are Applied
+Finally once you have created your air-tight permission model, and you want to check how it applies to various users, you can see it via the **Permitted Documents for User** report. Using this report, you can select the **User** and document type and check how user permissions get applied.
+
+<img src="/docs/assets/img/users-and-permissions/user-perms/permitted-documents.png" class="screenshot" alt="Permitted Documents for User report">
diff --git a/erpnext/docs/user/manual/en/setting-up/workflows.md b/erpnext/docs/user/manual/en/setting-up/workflows.md
index bedb6db..4b2cabb 100644
--- a/erpnext/docs/user/manual/en/setting-up/workflows.md
+++ b/erpnext/docs/user/manual/en/setting-up/workflows.md
@@ -1,3 +1,5 @@
+# Workflows
+
In order to allow multiple people to submit multiple requests, for approvals,
by multiple users, ERPNext requires you to fill the workflow conditions.
ERPNext tracks the multiple permissions before submission.
@@ -11,7 +13,7 @@
Manager, who is the approving authority, will either Approve or Reject this
request. Accordingly,the user will get his Approved or Rejected status.
-<img class="screenshot" alt="Workflow" src="{{docs_base_url}}/assets/img/setup/workflow-leave-fl.jpg">
+<img class="screenshot" alt="Workflow" src="/docs/assets/img/setup/workflow-leave-fl.jpg">
To make this Workflow and transition rules go to :
@@ -19,11 +21,11 @@
#### Step 1: Enter the different states of Leave Approval Process.
-<img class="screenshot" alt="Workflow" src="{{docs_base_url}}/assets/img/setup/workflow-1.png">
+<img class="screenshot" alt="Workflow" src="/docs/assets/img/setup/workflow-1.png">
#### Step 2: Enter Transition Rules.
-<img class="screenshot" alt="Workflow" src="{{docs_base_url}}/assets/img/setup/workflow-2.png">
+<img class="screenshot" alt="Workflow" src="/docs/assets/img/setup/workflow-2.png">
#### Notes:
@@ -46,15 +48,15 @@
When a Leave Application is saved by Employee, the status of the document changes to "Applied"
-<img class="screenshot" alt="Workflow" src="{{docs_base_url}}/assets/img/setup/workflow-3.png">
+<img class="screenshot" alt="Workflow" src="/docs/assets/img/setup/workflow-3.png">
When the HR User logs in, he can either Approve or Reject. If approved the
status of the document changes to "Approved by HR". However, it is yet to be approved by Leave Approver.
-<img class="screenshot" alt="Workflow" src="{{docs_base_url}}/assets/img/setup/workflow-4.png">
+<img class="screenshot" alt="Workflow" src="/docs/assets/img/setup/workflow-4.png">
When the Leave Approver opens the Leave Application page, he can finally "Approve" or "Reject" the Leave Application.
-<img class="screenshot" alt="Workflow" src="{{docs_base_url}}/assets/img/setup/workflow-5.png">
+<img class="screenshot" alt="Workflow" src="/docs/assets/img/setup/workflow-5.png">
{next}
diff --git a/erpnext/docs/user/manual/en/stock/accounting-of-inventory-stock/index.md b/erpnext/docs/user/manual/en/stock/accounting-of-inventory-stock/index.md
index b758ff7..96b792d 100644
--- a/erpnext/docs/user/manual/en/stock/accounting-of-inventory-stock/index.md
+++ b/erpnext/docs/user/manual/en/stock/accounting-of-inventory-stock/index.md
@@ -1,3 +1,5 @@
+# Accounting Of Inventory Stock
+
The value of available inventory is treated as an Asset in company's Chart of
Accounts. Depending on the type of items, it can be treated as Fixed Asset or
Current Asset. To prepare Balance Sheet, you should make the accounting
@@ -19,7 +21,7 @@
statement.
To check accounting entries for a particular stock transaction, please check
-[examples]({{docs_base_url}}/user/manual/en/stock/accounting-of-inventory-stock/perpetual-inventory.html)
+[examples](/docs/user/manual/en/stock/accounting-of-inventory-stock/perpetual-inventory.html)
#### **Advantages**
@@ -64,6 +66,6 @@
If you are an existing user using Periodic Inventory and want to use Perpetual
Inventory, you have to follow some steps to migrate. For details, check
-[Migration From Periodic Inventory]({{docs_base_url}}/user/manual/en/stock/accounting-of-inventory-stock/migrate-to-perpetual-inventory.html).
+[Migration From Periodic Inventory](/docs/user/manual/en/stock/accounting-of-inventory-stock/migrate-to-perpetual-inventory.html).
{next}
diff --git a/erpnext/docs/user/manual/en/stock/accounting-of-inventory-stock/migrate-to-perpetual-inventory.md b/erpnext/docs/user/manual/en/stock/accounting-of-inventory-stock/migrate-to-perpetual-inventory.md
index 38ae897..0e4d2d7 100644
--- a/erpnext/docs/user/manual/en/stock/accounting-of-inventory-stock/migrate-to-perpetual-inventory.md
+++ b/erpnext/docs/user/manual/en/stock/accounting-of-inventory-stock/migrate-to-perpetual-inventory.md
@@ -1,3 +1,5 @@
+# Migrate To Perpetual Inventory
+
Perpetual Inventory Valuation is activated by default in the system.
For the users who are currently following periodic inventory valuation system, and wish to migrate to perpetual inventory valuation system, please follow the steps explained below.
@@ -20,7 +22,7 @@
`Explore > Accounts > Accounts Settings`
- <img class="screenshot" alt="Perpetual Inventory" src="{{docs_base_url}}/assets/img/accounts/perpetual-1.png">
+ <img class="screenshot" alt="Perpetual Inventory" src="/docs/assets/img/accounts/perpetual-1.png">
* Create Stock Entry (Material Transfer) to transfer available stock from existing warehouse to new warehouse. As stock will be available in the new warehouse, you should select the new warehouse for all the future transactions.
diff --git a/erpnext/docs/user/manual/en/stock/accounting-of-inventory-stock/perpetual-inventory.md b/erpnext/docs/user/manual/en/stock/accounting-of-inventory-stock/perpetual-inventory.md
index 343e3f4..90bdbbf 100644
--- a/erpnext/docs/user/manual/en/stock/accounting-of-inventory-stock/perpetual-inventory.md
+++ b/erpnext/docs/user/manual/en/stock/accounting-of-inventory-stock/perpetual-inventory.md
@@ -1,3 +1,5 @@
+# Perpetual Inventory
+
As per the perpetual inventory system, accounts posting is done for every stock transaction.
On creating new Warehouse, the system will automatically create an Account in the Chart of Account, with the same name as Warehouse Name.
@@ -10,7 +12,7 @@
> Setup > Company > Stock Settings > "Enable Perpetual Inventory"
-<img class="screenshot" alt="Perpetual Inventory" src="{{docs_base_url}}/assets/img/accounts/perpetual-1.png">
+<img class="screenshot" alt="Perpetual Inventory" src="/docs/assets/img/accounts/perpetual-1.png">
* Setup the following default accounts for each Company. These accounts are created automatically in the new ERPNext accounts.
@@ -131,11 +133,11 @@
**Stock Ledger**
-<img class="screenshot" alt="Perpetual Inventory" src="{{docs_base_url}}/assets/img/accounts/perpetual-receipt-sl-1.png">
+<img class="screenshot" alt="Perpetual Inventory" src="/docs/assets/img/accounts/perpetual-receipt-sl-1.png">
**General Ledger**
-<img class="screenshot" alt="Perpetual Inventory" src="{{docs_base_url}}/assets/img/accounts/perpetual-receipt-gl-2.png">
+<img class="screenshot" alt="Perpetual Inventory" src="/docs/assets/img/accounts/perpetual-receipt-gl-2.png">
As stock balance increases through Purchase Receipt, "Store" accounts are debited and a temporary account "Stock Receipt But Not Billed" account is credited, to maintain double entry accounting system. At the same time, negative expense is booked in account "Expense included in Valuation" for the amount added for valuation purpose, to avoid double expense booking.
@@ -147,7 +149,7 @@
**General Ledger**
-<img class="screenshot" alt="Perpetual Inventory" src="{{docs_base_url}}/assets/img/accounts/perpetual-pinv-gl-3.png">
+<img class="screenshot" alt="Perpetual Inventory" src="/docs/assets/img/accounts/perpetual-pinv-gl-3.png">
Here "Stock Received But Not Billed" account is debited and nullified the
effect of Purchase Receipt.
@@ -205,11 +207,11 @@
**Stock Ledger**
-<img class="screenshot" alt="Perpetual Inventory" src="{{docs_base_url}}/assets/img/accounts/perpetual-dn-sl-4.png">
+<img class="screenshot" alt="Perpetual Inventory" src="/docs/assets/img/accounts/perpetual-dn-sl-4.png">
**General Ledger**
-<img class="screenshot" alt="Perpetual Inventory" src="{{docs_base_url}}/assets/img/accounts/perpetual-dn-gl-5.png">
+<img class="screenshot" alt="Perpetual Inventory" src="/docs/assets/img/accounts/perpetual-dn-gl-5.png">
As item is delivered from "Stores" warehouse, "Stores" account is credited and
equal amount is debited to the expense account "Cost of Goods Sold". The
@@ -238,11 +240,11 @@
**Stock Ledger**
-<img class="screenshot" alt="Perpetual Inventory" src="{{docs_base_url}}/assets/img/accounts/perpetual-inv-sl-6.png">
+<img class="screenshot" alt="Perpetual Inventory" src="/docs/assets/img/accounts/perpetual-inv-sl-6.png">
**General Ledger**
-<img class="screenshot" alt="Perpetual Inventory" src="{{docs_base_url}}/assets/img/accounts/perpetual-inv-gl-7.png">
+<img class="screenshot" alt="Perpetual Inventory" src="/docs/assets/img/accounts/perpetual-inv-gl-7.png">
Here, apart from normal account entries for invoice, "Stores" and "Cost of
Goods Sold" accounts are also affected based on the valuation amount.
@@ -276,11 +278,11 @@
**Stock Ledger**
-<img class="screenshot" alt="Perpetual Inventory" src="{{docs_base_url}}/assets/img/accounts/perpetual-st-receipt-sl.png">
+<img class="screenshot" alt="Perpetual Inventory" src="/docs/assets/img/accounts/perpetual-st-receipt-sl.png">
**General Ledger**
-<img class="screenshot" alt="Perpetual Inventory" src="{{docs_base_url}}/assets/img/accounts/perpetual-st-receipt-gl.png">
+<img class="screenshot" alt="Perpetual Inventory" src="/docs/assets/img/accounts/perpetual-st-receipt-gl.png">
* * *
@@ -311,11 +313,11 @@
**Stock Ledger**
-<img class="screenshot" alt="Perpetual Inventory" src="{{docs_base_url}}/assets/img/accounts/perpetual-st-issue-sl.png">
+<img class="screenshot" alt="Perpetual Inventory" src="/docs/assets/img/accounts/perpetual-st-issue-sl.png">
**General Ledger**
-<img class="screenshot" alt="Perpetual Inventory" src="{{docs_base_url}}/assets/img/accounts/perpetual-st-issue-gl.png">
+<img class="screenshot" alt="Perpetual Inventory" src="/docs/assets/img/accounts/perpetual-st-issue-gl.png">
* * *
@@ -348,10 +350,10 @@
**Stock Ledger**
-<img class="screenshot" alt="Perpetual Inventory" src="{{docs_base_url}}/assets/img/accounts/perpetual-st-transfer-sl.png">
+<img class="screenshot" alt="Perpetual Inventory" src="/docs/assets/img/accounts/perpetual-st-transfer-sl.png">
**General Ledger**
-<img class="screenshot" alt="Perpetual Inventory" src="{{docs_base_url}}/assets/img/accounts/perpetual-st-transfer-gl.png">
+<img class="screenshot" alt="Perpetual Inventory" src="/docs/assets/img/accounts/perpetual-st-transfer-gl.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/stock/articles/allow-over-delivery-billing-against-sales-order-upto-certain-limit.md b/erpnext/docs/user/manual/en/stock/articles/allow-over-delivery-billing-against-sales-order-upto-certain-limit.md
index 9b140a6..5838432 100644
--- a/erpnext/docs/user/manual/en/stock/articles/allow-over-delivery-billing-against-sales-order-upto-certain-limit.md
+++ b/erpnext/docs/user/manual/en/stock/articles/allow-over-delivery-billing-against-sales-order-upto-certain-limit.md
@@ -1,8 +1,10 @@
+# Allow Over Delivery Billing Against Sales Order Upto Certain Limit
+
#Allow Over Delivery/Billing
While creating Delivery Note, system validates if item's Qty mentined is same as in the Sales Order. If Item Qty has been increased, you will get over-delivery validation. If you want to be able to deliver more items than mentioned in the Sales Order, you should update "Allow over delivery or receipt upto this percent" in the Item master.
-<img alt="Item wise Allowance percentage" class="screenshot" src="{{docs_base_url}}/assets/img/articles/allowance-percentage-1.png">
+<img alt="Item wise Allowance percentage" class="screenshot" src="/docs/assets/img/articles/allowance-percentage-1.png">
Item's and Rate is also validated when creating Sales Invoice from Sales Order. Also when creating Purchase Receipt and Purchaes Invoice from Purchase Order. Updating "Allow over delivery or receipt upto this percent" will be affective in all sales and purchase transactions.
@@ -16,7 +18,7 @@
3. Save Stock Settings.
-<img alt="Item wise Allowance percentage" class="screenshot" src="{{docs_base_url}}/assets/img/articles/allowance-percentage-2.png">
+<img alt="Item wise Allowance percentage" class="screenshot" src="/docs/assets/img/articles/allowance-percentage-2.png">
<!-- markdown -->
diff --git a/erpnext/docs/user/manual/en/stock/articles/auto-creation-of-material-request.md b/erpnext/docs/user/manual/en/stock/articles/auto-creation-of-material-request.md
index 02d88d8..2d5e935 100644
--- a/erpnext/docs/user/manual/en/stock/articles/auto-creation-of-material-request.md
+++ b/erpnext/docs/user/manual/en/stock/articles/auto-creation-of-material-request.md
@@ -1,20 +1,22 @@
+# Auto Creation Of Material Request
+
#Auto Creation of Material Request
To prevent stockouts, you can track item's reorder level. When stock level goes below reorder level, purchase manager is notified and instructed to initiate purchase process for the item.
In ERPNext, you can update item's Reorder Level and Reorder Qty in the Item master. If same item has different reorder level, you can also update warehouse-wise reorder level and reorder qty.
-<img alt="reorder level" class="screenshot" src="{{docs_base_url}}/assets/img/articles/reorder-request-1.png">
+<img alt="reorder level" class="screenshot" src="/docs/assets/img/articles/reorder-request-1.png">
With reorder level, you can also define what should be the next action. Either new purchase or transfer from another warehouse. Based on setting in Item master, purpose will be updated in the Material Request as well.
-<img alt="reorder level next action" class="screenshot" src="{{docs_base_url}}/assets/img/articles/reorder-request-2.png">
+<img alt="reorder level next action" class="screenshot" src="/docs/assets/img/articles/reorder-request-2.png">
When item's stock reaches reorder level, Material Request is auto-created automatically. You can enable this feature from:
`Stock > Setup > Stock Settings`
-<img alt="active auto-material request" class="screenshot" src="{{docs_base_url}}/assets/img/articles/reorder-request-3.png">
+<img alt="active auto-material request" class="screenshot" src="/docs/assets/img/articles/reorder-request-3.png">
A separate Material Request will be created for each item. User with Purchase Manager's role will receive email alert about these Material Requests.
@@ -23,5 +25,5 @@
**An error occurred for certain Items while creating Material Requests based on Re-order level.**
**Date 01-04-2016 not in any Fiscal Year.**
-One of the reason of error could be Fiscal Year as well. Click [here]({{docs_base_url}}/user/manual/en/accounts/articles/fiscal-year-error.html) to learn more about it.
+One of the reason of error could be Fiscal Year as well. Click [here](/docs/user/manual/en/accounts/articles/fiscal-year-error.html) to learn more about it.
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/stock/articles/creating-depreciation-for-item.md b/erpnext/docs/user/manual/en/stock/articles/creating-depreciation-for-item.md
index 491427c..fbe00cb 100644
--- a/erpnext/docs/user/manual/en/stock/articles/creating-depreciation-for-item.md
+++ b/erpnext/docs/user/manual/en/stock/articles/creating-depreciation-for-item.md
@@ -1,8 +1,10 @@
+# Creating Depreciation For Item
+
#Depreciation Entry
**Question:** A Fixed Asset Item has been purchased and stored in a warehouse. How to create a depreciation for a Fixed Asset Item?
-**Answer:**You can post asset depreciation entry for the fixed asset item via [Stock Reconciliation]({{docs_base_url}}/user/manual/en/stock/opening-stock.html) Entry.
+**Answer:**You can post asset depreciation entry for the fixed asset item via [Stock Reconciliation](/docs/user/manual/en/stock/opening-stock.html) Entry.
####Step 1:
@@ -13,7 +15,7 @@
- **Qty (Quantity)** Leave this column blank.
- **Valuation Rate** will be item's value after depreciation.
-<img alt="reorder level" class="screenshot" src="{{docs_base_url}}/assets/img/articles/fixed-asset-dep-1.gif">
+<img alt="reorder level" class="screenshot" src="/docs/assets/img/articles/fixed-asset-dep-1.gif">
After updating Valuation Rate for an item, come back to Stock Reconciliation and upload save .csv file.
@@ -21,7 +23,7 @@
Select Expense account for depreciation in **Difference Account**. Value booked in the depreciation account will be the difference of old and next valuation rate of the fixed asset item, which will be actually the depreciation amount.
-<img alt="reorder level" class="screenshot" src="{{docs_base_url}}/assets/img/articles/fixed-asset-dep-2.png">
+<img alt="reorder level" class="screenshot" src="/docs/assets/img/articles/fixed-asset-dep-2.png">
####Stock Reconciliation Help Video
diff --git a/erpnext/docs/user/manual/en/stock/articles/index.md b/erpnext/docs/user/manual/en/stock/articles/index.md
index 0dff60b..fb11735 100644
--- a/erpnext/docs/user/manual/en/stock/articles/index.md
+++ b/erpnext/docs/user/manual/en/stock/articles/index.md
@@ -1 +1,3 @@
+# Articles
+
{index}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/stock/articles/maintain-stock-field-frozen-in-item-master.md b/erpnext/docs/user/manual/en/stock/articles/maintain-stock-field-frozen-in-item-master.md
index f93e668..e1fe295 100644
--- a/erpnext/docs/user/manual/en/stock/articles/maintain-stock-field-frozen-in-item-master.md
+++ b/erpnext/docs/user/manual/en/stock/articles/maintain-stock-field-frozen-in-item-master.md
@@ -1,3 +1,5 @@
+# Maintain Stock Field Frozen In Item Master
+
#Maintain Stock field Frozen in the Item master
In the item master, you might witness values in the following fields to be frozen.
@@ -6,7 +8,7 @@
1. Has Batch No.
1. Has Serial No.
-<img alt="Item Field Frozen" class="screenshot" src="{{docs_base_url}}/assets/img/articles/maintain-stock-1.png">
+<img alt="Item Field Frozen" class="screenshot" src="/docs/assets/img/articles/maintain-stock-1.png">
For an item, once stock ledger entry is created, values in these fields will be froze. This is to prevent user from changing value which can lead to mis-match of actual stock, and stock level in the system of an item.
diff --git a/erpnext/docs/user/manual/en/stock/articles/manage-rejected-finished-goods-items.md b/erpnext/docs/user/manual/en/stock/articles/manage-rejected-finished-goods-items.md
index 2d57d64..b0d33eb 100644
--- a/erpnext/docs/user/manual/en/stock/articles/manage-rejected-finished-goods-items.md
+++ b/erpnext/docs/user/manual/en/stock/articles/manage-rejected-finished-goods-items.md
@@ -1,3 +1,5 @@
+# Manage Rejected Finished Goods Items
+
#Manage Rejected Finished Goods Items
There could be manufactured Items which would not pass quality test, hence rejected.
diff --git a/erpnext/docs/user/manual/en/stock/articles/managing-batch-wise-inventory.md b/erpnext/docs/user/manual/en/stock/articles/managing-batch-wise-inventory.md
index ccf39c1..85fc00f 100644
--- a/erpnext/docs/user/manual/en/stock/articles/managing-batch-wise-inventory.md
+++ b/erpnext/docs/user/manual/en/stock/articles/managing-batch-wise-inventory.md
@@ -1,16 +1,18 @@
+# Managing Batch Wise Inventory
+
#Managing Batch wise Inventory
Set of items which has same properties and attributes can be group in a single Batch. For example, pharmaceuticals items are batch, so that it's manufacturing and expiry date can be tracked together.
To maintain batches against an Item you need to mention 'Has Batch No' as yes in the Item Master.
-<img alt="Batch Item" class="screenshot" src="{{docs_base_url}}/assets/img/articles/batchwise-stock-1.png">
+<img alt="Batch Item" class="screenshot" src="/docs/assets/img/articles/batchwise-stock-1.png">
You can create a new Batch from:
`Stock > Documents > Batch > New`
-To learn more about batch, click [here.]({{docs_base_url}}/user/manual/en/stock/batch.html)
+To learn more about batch, click [here.](/docs/user/manual/en/stock/batch.html)
For the Batch item, updating Batch No. in the stock transactions (Purchase Receipt & Delivery Note) is mandatory.
@@ -18,13 +20,13 @@
When creating Purchase Receipt, you should create new Batch, or select one of the existing Batch master. One Batch can be associated with one Batch Item.
-<img alt="Batch in Purchase Receipt" class="screenshot" src="{{docs_base_url}}/assets/img/articles/batchwise-stock-2.png">
+<img alt="Batch in Purchase Receipt" class="screenshot" src="/docs/assets/img/articles/batchwise-stock-2.png">
#### Delivery Note
Define Batch in Delivery Note Item table. If Batch item is added under Product Bundle, you can update it's Batch No. in the Packing List table sa well.
-<img alt="Batch in Delivery Note" class="screenshot" src="{{docs_base_url}}/assets/img/articles/batchwise-stock-3.png">
+<img alt="Batch in Delivery Note" class="screenshot" src="/docs/assets/img/articles/batchwise-stock-3.png">
#### Batch-wise Stock Balance Report
@@ -32,4 +34,4 @@
Stock > Standard Reports > Batch-wise Balance History
-<img alt="Batchwise Stock Balance" class="screenshot" src="{{docs_base_url}}/assets/img/articles/batchwise-stock-4.png">
+<img alt="Batchwise Stock Balance" class="screenshot" src="/docs/assets/img/articles/batchwise-stock-4.png">
diff --git a/erpnext/docs/user/manual/en/stock/articles/managing-fractions-in-uom.md b/erpnext/docs/user/manual/en/stock/articles/managing-fractions-in-uom.md
index 12447e0..904abd9 100644
--- a/erpnext/docs/user/manual/en/stock/articles/managing-fractions-in-uom.md
+++ b/erpnext/docs/user/manual/en/stock/articles/managing-fractions-in-uom.md
@@ -1,3 +1,5 @@
+# Managing Fractions In Uom
+
#Managing Fractions in UoM
UoM stands for Unit of Measurement. Few examples of UoM are Numbers (Nos), Kgs, Litre, Meter, Box, Carton etc.
@@ -18,7 +20,7 @@
In the UoM master, you will find a field called "Must be whole number". Check this field to restrict user from enter value in decimal places in quantity field, for item having this UoM.
-<img alt="UoM Must be Whole No" class="screenshot" src="{{docs_base_url}}/assets/img/articles/uom-fraction-1.png">
+<img alt="UoM Must be Whole No" class="screenshot" src="/docs/assets/img/articles/uom-fraction-1.png">
####Validation
@@ -26,7 +28,7 @@
`Quantity cannot be a fraction at row #`
-<img alt="UoM Validation Message" class="screenshot" src="{{docs_base_url}}/assets/img/articles/uom-fraction-2.png">
+<img alt="UoM Validation Message" class="screenshot" src="/docs/assets/img/articles/uom-fraction-2.png">
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/stock/articles/opening-stock-balance-entry-for-the-serialized-and-batch-item.md b/erpnext/docs/user/manual/en/stock/articles/opening-stock-balance-entry-for-the-serialized-and-batch-item.md
index 9b8684a..169fe9f 100644
--- a/erpnext/docs/user/manual/en/stock/articles/opening-stock-balance-entry-for-the-serialized-and-batch-item.md
+++ b/erpnext/docs/user/manual/en/stock/articles/opening-stock-balance-entry-for-the-serialized-and-batch-item.md
@@ -1,6 +1,8 @@
+# Opening Stock Balance Entry For The Serialized And Batch Item
+
#Opening Stock Balance Entry for the Serialized and Batch Item
-Items for which Serial No. and Batch No. is maintained, opening stock balance entry for them is update via Stock Entry. [Click here to learn how serialized inventory is managed in ERPNext]({{docs_base_url}}/user/manual/en/stock/serial-no.html).
+Items for which Serial No. and Batch No. is maintained, opening stock balance entry for them is update via Stock Entry. [Click here to learn how serialized inventory is managed in ERPNext](/docs/user/manual/en/stock/serial-no.html).
**Question:** Why Opening Balance entry for the Serialized and Batch Item cannot be updated via Stock Reconciliation?
@@ -34,13 +36,13 @@
For the serialized item, update quantity as many Serial Nos are their.
-For the serialized item, mention Serial Nos. equivalent to it's Qty. Or if Serial Nos. are configured to be created based on Prefix, then no need to mention Serial Nos. manually. Click [here]({{docs_base_url}}/user/manual/en/stock/articles/serial-no-naming.html) to learn more about Serial No. naming.
+For the serialized item, mention Serial Nos. equivalent to it's Qty. Or if Serial Nos. are configured to be created based on Prefix, then no need to mention Serial Nos. manually. Click [here](/docs/user/manual/en/stock/articles/serial-no-naming.html) to learn more about Serial No. naming.
For a batch item, provide Batch ID in which opening balance will be updated. Keep batch master ready, and updated it for the Batch Item. To create new Batch, go to:
`Stock > Setup > Batch > New`
-[Click here to learn how Batchwise inventory is managed in ERPNext.]({{docs_base_url}}/user/manual/en/stock/articles/managing-batch-wise-inventory.html)
+[Click here to learn how Batchwise inventory is managed in ERPNext.](/docs/user/manual/en/stock/articles/managing-batch-wise-inventory.html)
#### Step 7: Update Valuation Rate an Item
@@ -50,7 +52,7 @@
As per perpetual inventory valuation system, accounting entry is created for every stock transaction. Double entry accounting system requires Total Debit matching with Total Credit in an entry. On the submission of Stock Entry, system debits Warehouse account by total value of items. To balance the same, we use Temporary Opening account as a Difference Account.
-<img alt="Difference Account" class="screenshot" src="{{docs_base_url}}/assets/img/articles/difference-account-1.png">
+<img alt="Difference Account" class="screenshot" src="/docs/assets/img/articles/difference-account-1.png">
#### Step 9: Save and Submit Stock Entry
diff --git a/erpnext/docs/user/manual/en/stock/articles/repack-entry.md b/erpnext/docs/user/manual/en/stock/articles/repack-entry.md
index 1d758c8..3011bad 100644
--- a/erpnext/docs/user/manual/en/stock/articles/repack-entry.md
+++ b/erpnext/docs/user/manual/en/stock/articles/repack-entry.md
@@ -1,3 +1,5 @@
+# Repack Entry
+
#Repack Entry
Repack Entry is created for item bought in bulk, which is being packed into smaller packages. For example, item bought in tons can be repacked into Kgs.
@@ -22,7 +24,7 @@
For repacked/output items, only Target Warehouse will be provided. You will have to provide valuation for the repack items.
-<img alt="Repack Entry" class="screenshot" src="{{docs_base_url}}/assets/img/articles/repack-1.png">
+<img alt="Repack Entry" class="screenshot" src="/docs/assets/img/articles/repack-1.png">
Update Qty for all the items selected.
@@ -30,6 +32,6 @@
On submitting Stock Entry, stock of input item will be reduced from Source Warehouse, and stock of repack/output item will be added in the Target Warehouse.
-<img alt="Repack Stock Entry" class="screenshot" src="{{docs_base_url}}/assets/img/articles/repack-2.png">
+<img alt="Repack Stock Entry" class="screenshot" src="/docs/assets/img/articles/repack-2.png">
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/stock/articles/serial-no-naming.md b/erpnext/docs/user/manual/en/stock/articles/serial-no-naming.md
index 4f2425f..3ed608e 100644
--- a/erpnext/docs/user/manual/en/stock/articles/serial-no-naming.md
+++ b/erpnext/docs/user/manual/en/stock/articles/serial-no-naming.md
@@ -1,3 +1,5 @@
+# Serial No Naming
+
#Serial No. Naming
Serial Nos. is unique value assigned on each unit of an item. Serial no. helps in tracking item's warranty and expiry details. Generally high value items like machines, computers, costly equipments are serialized.
@@ -14,11 +16,11 @@
On submission of Purchase Receipt or Stock entry for the serialized item, Serial Nos. will be auto-generated.
-<img alt="Serial Nos Entry" class="screenshot" src="{{docs_base_url}}/assets/img/articles/serial-naming-1.png">
+<img alt="Serial Nos Entry" class="screenshot" src="/docs/assets/img/articles/serial-naming-1.png">
Generated Serial numbers will be updated for each item.
-<img alt="Serial Nos Created" class="screenshot" src="{{docs_base_url}}/assets/img/articles/serial-naming-2.png">
+<img alt="Serial Nos Created" class="screenshot" src="/docs/assets/img/articles/serial-naming-2.png">
###2. Serializing Manufacturing Item
@@ -28,12 +30,12 @@
When Item is set as serialized, it will allow you to mentioned Series for it.
-<img alt="Serial Nos Created" class="screenshot" src="{{docs_base_url}}/assets/img/articles/serial-naming-3.png">
+<img alt="Serial Nos Created" class="screenshot" src="/docs/assets/img/articles/serial-naming-3.png">
####2.2 Production Entry for Serialized Item
On submission of production entry for manufacturing item, system will automatically generate Serial Nos. following Series as specified in the Item master.
-<img alt="Serial Nos Created" class="screenshot" src="{{docs_base_url}}/assets/img/articles/serial-naming-4.png">
+<img alt="Serial Nos Created" class="screenshot" src="/docs/assets/img/articles/serial-naming-4.png">
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/stock/articles/stock-entry-purpose.md b/erpnext/docs/user/manual/en/stock/articles/stock-entry-purpose.md
index 426328e..be5a962 100644
--- a/erpnext/docs/user/manual/en/stock/articles/stock-entry-purpose.md
+++ b/erpnext/docs/user/manual/en/stock/articles/stock-entry-purpose.md
@@ -1,3 +1,5 @@
+# Stock Entry Purpose
+
#Stock Entry Purpose
Stock Entry is a stock transaction, which can be used for multiple purposes. Let's learn about each Stock Entry Purpose below.
@@ -8,7 +10,7 @@
Material Issue is generally made for the low value consumable items like office stationary, product consumables etc. Also you can create Material Issue to reconcile serialized and batched item's stock.
-<img alt="Material Issue" class="screenshot" src="{{docs_base_url}}/assets/img/articles/stock-entry-issue.png">
+<img alt="Material Issue" class="screenshot" src="/docs/assets/img/articles/stock-entry-issue.png">
#### 2.Purpose: Material Receipt
@@ -16,34 +18,34 @@
For the stock valuation purpose, provided Item Valuation becomes a mandatory field in the Material Receipt entry.
-<img alt="Material Receipt" class="screenshot" src="{{docs_base_url}}/assets/img/articles/stock-entry-receipt.png">
+<img alt="Material Receipt" class="screenshot" src="/docs/assets/img/articles/stock-entry-receipt.png">
#### 3.Purpose: Material Transfer
Material Transfer entry is created for the inter-warehouse Material Transfer.
-<img alt="Material Transfer" class="screenshot" src="{{docs_base_url}}/assets/img/articles/stock-entry-transfer.png">
+<img alt="Material Transfer" class="screenshot" src="/docs/assets/img/articles/stock-entry-transfer.png">
#### 4.Purpose: Material Transfer for Manufacture
In the manufacturing process, raw-materials are issued from the stores to the production department (generally WIP warehouse). This Material Transfer entry is created from Production Order. Items in this entry are fetched from the BOM of production Item, as selected in Production Order.
-<img alt="Transfer for Manufacture" class="screenshot" src="{{docs_base_url}}/assets/img/articles/stock-entry-manufacture-transfer.gif">
+<img alt="Transfer for Manufacture" class="screenshot" src="/docs/assets/img/articles/stock-entry-manufacture-transfer.gif">
#### 4.Purpose: Manufacture
Manufacture is created from Production Order. In this entry, both raw-material item as well as production item are fetched from the BOM, selected in the Production Order. For the raw-material items, only Source Warehouse (generally WIP warehouse) is mentioned. For the production item, only target warehouse as mentioned in the Production Order is updated. On submission, stock of raw-material items are deducted from Source Warehouse, which indicates that raw-material items were consumed in the manufacturing process. Production Item is added to the Target Warehouse marking the completion of production cycle.
-<img alt="Manufacture" class="screenshot" src="{{docs_base_url}}/assets/img/articles/stock-entry-manufacture.gif">
+<img alt="Manufacture" class="screenshot" src="/docs/assets/img/articles/stock-entry-manufacture.gif">
#### 5.Purpose: Repack
-Repack Entry is created when items purchases in bulk is repacked under smaller packs. 
+Repack Entry is created when items purchases in bulk is repacked under smaller packs. 
#### 6.Purpose: Subcontract
-Subcontracting transaction involves company transfer raw-material items to the sub-contractors warehouse. This requires adding a warehouse for the sub-contractor as well. Sub-contract entry transfers stock from the companies warehouse to the sub-contractors warehouse..
+Subcontracting transaction involves company transfer raw-material items to the sub-contractors warehouse. This requires adding a warehouse for the sub-contractor as well. Sub-contract entry transfers stock from the companies warehouse to the sub-contractors warehouse..
-<img alt="Subcontract" class="screenshot" src="{{docs_base_url}}/assets/img/articles/stock-entry-subcontract.gif">
+<img alt="Subcontract" class="screenshot" src="/docs/assets/img/articles/stock-entry-subcontract.gif">
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/stock/articles/stock-level-report.md b/erpnext/docs/user/manual/en/stock/articles/stock-level-report.md
index b674470..de71a91 100644
--- a/erpnext/docs/user/manual/en/stock/articles/stock-level-report.md
+++ b/erpnext/docs/user/manual/en/stock/articles/stock-level-report.md
@@ -1,3 +1,5 @@
+# Stock Level Report
+
#Stock Level Report
Stock Level report list stock item's quantity available in a particular warehouse.
diff --git a/erpnext/docs/user/manual/en/stock/articles/track-items-using-barcode.md b/erpnext/docs/user/manual/en/stock/articles/track-items-using-barcode.md
index 6d8fcb6..bafa035 100644
--- a/erpnext/docs/user/manual/en/stock/articles/track-items-using-barcode.md
+++ b/erpnext/docs/user/manual/en/stock/articles/track-items-using-barcode.md
@@ -1,3 +1,5 @@
+# Track Items Using Barcode
+
#Track Items Using Barcode
A barcode is a value decoded into vertical spaced lines. Barcode scanners are the input medium, like Keyboard. When it scans a barcode, the data appears in the computer screens at the point of a cursor.
@@ -6,10 +8,10 @@
To set the barcode of a particular item, you will have to open the Item record. You can also enter barcode while creating a new item.
-<img alt="Material Transfer" class="screenshot" src="{{docs_base_url}}/assets/img/articles/barcode-item-master.png">
+<img alt="Material Transfer" class="screenshot" src="/docs/assets/img/articles/barcode-item-master.png">
Once barcode field is updated in item master, items can be fetched using barcode. This feature will be availble in Delivery Note, Sales Invoice and Purchase Receipt transactions only.
-<img alt="Material Transfer" class="screenshot" src="{{docs_base_url}}/assets/img/articles/barcode-item-selection.gif">
+<img alt="Material Transfer" class="screenshot" src="/docs/assets/img/articles/barcode-item-selection.gif">
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/stock/batch.md b/erpnext/docs/user/manual/en/stock/batch.md
index 73309f4..a97be92 100644
--- a/erpnext/docs/user/manual/en/stock/batch.md
+++ b/erpnext/docs/user/manual/en/stock/batch.md
@@ -1,3 +1,5 @@
+# Batch
+
Batch feature in ERPNext allows you to group multiple units of an item,
and assign them a unique value/number/tag called Batch No.
@@ -9,7 +11,7 @@
If you want automatic batch creation at the time of Purchase Receipt, you must check "Create New Batches Automatically"
-<img class="screenshot" alt="Item Setup for Batches" src="{{docs_base_url}}/assets/img/stock/item_setup_for_batch.png">
+<img class="screenshot" alt="Item Setup for Batches" src="/docs/assets/img/stock/item_setup_for_batch.png">
### Creating Batches
@@ -23,7 +25,7 @@
When you open a batch, you will see all the quantities relating this that batch on the page.
-<img class="screenshot" alt="Batch View" src="{{docs_base_url}}/assets/img/stock/batch_view.png">
+<img class="screenshot" alt="Batch View" src="/docs/assets/img/stock/batch_view.png">
To move the batch from one warehouse to another, you can click on the move button.
diff --git a/erpnext/docs/user/manual/en/stock/delivery-note.md b/erpnext/docs/user/manual/en/stock/delivery-note.md
index ad5f2c8..a59ac35 100644
--- a/erpnext/docs/user/manual/en/stock/delivery-note.md
+++ b/erpnext/docs/user/manual/en/stock/delivery-note.md
@@ -1,3 +1,5 @@
+# Delivery Note
+
A Delivery Note is made when a shipment is shipped from the company’s
Warehouse.
@@ -13,7 +15,7 @@
or from a “Submitted” Sales Order (that is not already shipped) by clicking on
“Make Delivery Note”.
-<img class="screenshot" alt="Delivery Note" src="{{docs_base_url}}/assets/img/stock/delivery-note.png">
+<img class="screenshot" alt="Delivery Note" src="/docs/assets/img/stock/delivery-note.png">
You can also “fetch” the details from an unshipped Sales Order.
@@ -22,7 +24,7 @@
### Shipping Packets or Items with Product Bundle
-If you are shipping Items that have a [Product Bundle]({{docs_base_url}}/user/manual/en/selling/setup/product-bundle.html), ERPNext will automatically
+If you are shipping Items that have a [Product Bundle](/docs/user/manual/en/selling/setup/product-bundle.html), ERPNext will automatically
create a “Packing List” table for you based on the sub-Items in that Item.
If your Items are serialized, then for Product Bundle type of Items, you will have
diff --git a/erpnext/docs/user/manual/en/stock/index.md b/erpnext/docs/user/manual/en/stock/index.md
index 971c33c..75872ee 100644
--- a/erpnext/docs/user/manual/en/stock/index.md
+++ b/erpnext/docs/user/manual/en/stock/index.md
@@ -1,3 +1,5 @@
+# Stock
+
For most small business that deal in physical goods, a large part of their net
worth is invested in the stock in hand.
diff --git a/erpnext/docs/user/manual/en/stock/installation-note.md b/erpnext/docs/user/manual/en/stock/installation-note.md
index 0519652..a75e15f 100644
--- a/erpnext/docs/user/manual/en/stock/installation-note.md
+++ b/erpnext/docs/user/manual/en/stock/installation-note.md
@@ -1,5 +1,7 @@
+# Installation Note
+
You can use installation note to record the instalation of a product having a serial number.
-<img class="screenshot" alt="Installation Note" src="{{docs_base_url}}/assets/img/stock/installation-note.png">
+<img class="screenshot" alt="Installation Note" src="/docs/assets/img/stock/installation-note.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/stock/item/index.md b/erpnext/docs/user/manual/en/stock/item/index.md
index aea38f5..3e2bdd3 100644
--- a/erpnext/docs/user/manual/en/stock/item/index.md
+++ b/erpnext/docs/user/manual/en/stock/item/index.md
@@ -1,3 +1,5 @@
+# Item
+
An Item is your companys' product or a service. The term Item is applicable to things (products or services) you sell as well as raw materials or components of products yet to be produced (before they can be sold to customers). An Item can be a physical product or a service that you buy/sell from your customers/suppliers. ERPNext allows you to manage all sorts of items like raw-materials, sub-assemblies, finished goods, item variants and service items.
ERPNext is optimised for itemised management of your sales and purchase. If you are in services, you can create an Item for each services that your offer. Completing the Item Master is very essential for successful implementation of ERPNext.
@@ -5,11 +7,11 @@
## Item Properties
* **Item Name:** Item name is the actual name of your product or service.
- * **Item Code:** Item Code is a short-form to denote your Item. If you have very few Items, it is advisable to keep the Item Name and the Item Code same. This helps new users to recognise and update Item details in all transactions. In case you have lot of Items with long names and the list runs in hundreds, it is advisable to code. To understand naming Item codes see [Item Codification]({{docs_base_url}}/user/manual/en/stock/item/item-codification.html)
- * **Item Group:** Item Group is used to categorize an Item under various criterias like products, raw materials, services, sub-assemblies, consumables or all Item groups. Create your default Item Group list under Setup> Item Group and pre-select the option while filling your New Item details under [Item Group]({{docs_base_url}}/user/manual/en/stock/setup/item-group.html)
+ * **Item Code:** Item Code is a short-form to denote your Item. If you have very few Items, it is advisable to keep the Item Name and the Item Code same. This helps new users to recognise and update Item details in all transactions. In case you have lot of Items with long names and the list runs in hundreds, it is advisable to code. To understand naming Item codes see [Item Codification](/docs/user/manual/en/stock/item/item-codification.html)
+ * **Item Group:** Item Group is used to categorize an Item under various criterias like products, raw materials, services, sub-assemblies, consumables or all Item groups. Create your default Item Group list under Setup> Item Group and pre-select the option while filling your New Item details under [Item Group](/docs/user/manual/en/stock/setup/item-group.html)
* **Default Unit of Measure:** This is the default measuring unit that you will use for your product. It could be in nos, kgs, meters, etc. You can store all the UOM’s that your product will require under Set Up> Master Data > UOM. These can be preselected while filling New Item by using % sign to get a pop up of the UOM list.
* **Brand:** If you have more than one brand save them under Set Up> Master Data> Brand and pre-select them while filling a New Item.
- * **Variant:** A Item Variant is a different version of a Item.To learn more about managing variants see [Item Variants]({{docs_base_url}}/user/manual/en/stock/item/item-variants.html)
+ * **Variant:** A Item Variant is a different version of a Item.To learn more about managing variants see [Item Variants](/docs/user/manual/en/stock/item/item-variants.html)
### Upload an Image
@@ -29,11 +31,11 @@
These numbers help to track individual units or batches of Items which you sell. It also tracks warranty and returns. In case any individual Item is recalled by the supplier the number system helps to track individual Item. The numbering system also manages expiry dates. Please note that if you sell your items in thousands, and if the items are very small like pens or erasers, you need not serialize them. In ERPNext, you will have to mention the serial number in some accounting entries. To create serial numbers you will have to manually create all the numbers in your entries. If your product is not a big consumer durable Item, if it has no warranty and has no chances of being recalled, avoid giving serial numbers.
> Tip: While entering an item code in an items table, if the table requires inventory details, then depending on whether the entered item is batched or serialized, you can enter serial or batch numbers right away in a pop-up dialog.
-<img alt="Serial No modal" class="screenshot" src="{{docs_base_url}}/assets/img/stock/serial_no_modal.gif"><img alt="Batch No modal" class="screenshot" src="{{docs_base_url}}/assets/img/stock/batch_no_modal.png">
+<img alt="Serial No modal" class="screenshot" src="/docs/assets/img/stock/serial_no_modal.gif"><img alt="Batch No modal" class="screenshot" src="/docs/assets/img/stock/batch_no_modal.png">
> Important: Once you mark an item as serialized or batched or neither, you cannot change it after you have made any stock entry.
- * [Discussion on Serialized Inventory]({{docs_base_url}}/user/manual/en/setting-up/stock-reconciliation-for-non-serialized-item.html)
+ * [Discussion on Serialized Inventory](/docs/user/manual/en/setting-up/stock-reconciliation-for-non-serialized-item.html)
### Re Ordering
@@ -45,7 +47,7 @@
These settings are required only if a particular Item has a different tax rate than the rate defined in the standard tax Account. For example, If you have a tax Account, “VAT 10%” and this particular Item is exempted from tax, then you select “VAT 10%” in the first column, and set “0” as the tax rate in the second column.
-Go to [Setting Up Taxes]({{docs_base_url}}/user/manual/en/setting-up/setting-up-taxes.html) to understand this topic in detail.
+Go to [Setting Up Taxes](/docs/user/manual/en/setting-up/setting-up-taxes.html) to understand this topic in detail.
### Inspection
@@ -55,9 +57,9 @@
### Purchase Details
-<img alt="Item Purchase Details" class="screenshot" src="{{docs_base_url}}/assets/img/stock/item-purchase.png">
+<img alt="Item Purchase Details" class="screenshot" src="/docs/assets/img/stock/item-purchase.png">
-<img class="screenshot" alt="Purchase details" src="{{docs_base_url}}/assets/img/stock/item-purchase.png">
+<img class="screenshot" alt="Purchase details" src="/docs/assets/img/stock/item-purchase.png">
* **Lead time days:** Lead time days are the number of days required for the Item to reach the warehouse.
@@ -67,7 +69,7 @@
###Supplier Details
-<img alt="Item Supplier Details" class="screenshot" src="{{docs_base_url}}/assets/img/stock/item-supplier.png">
+<img alt="Item Supplier Details" class="screenshot" src="/docs/assets/img/stock/item-supplier.png">
* **Default Supplier:** Supplier from whom you generally purchase this item.
@@ -77,25 +79,25 @@
### Sales Details
-<img alt="Item Sales Details" class="screenshot" src="{{docs_base_url}}/assets/img/stock/item-sales.png">
+<img alt="Item Sales Details" class="screenshot" src="/docs/assets/img/stock/item-sales.png">
* **Default Income Account:** Income account selected here will be fetched automatically in sales invoice for this item.
-<img class="screenshot" alt="Sales details" src="{{docs_base_url}}/assets/img/stock/item-sales.png)">
+<img class="screenshot" alt="Sales details" src="/docs/assets/img/stock/item-sales.png)">
-<img class="screenshot" alt="Sales details" src="{{docs_base_url}}/assets/img/stock/item-sales.png">
+<img class="screenshot" alt="Sales details" src="/docs/assets/img/stock/item-sales.png">
***Cost Centre:** Cost center selected here will be fetched automatically in sales invoice for this item.
***Customer Codes:** Track Item Code assigned by the Customers for this Item. This will help you in searching item while creating Sales Order based on the Item Code in the Customer's Purchase Order.
-<img class="screenshot" alt="Sales details" src="{{docs_base_url}}/assets/img/stock/item-sales.png)">
+<img class="screenshot" alt="Sales details" src="/docs/assets/img/stock/item-sales.png)">
### Manufacturing And Website
-<img class="screenshot" alt="Manufaturing details" src="{{docs_base_url}}/assets/img/stock/item-manufacturing-website.png">
+<img class="screenshot" alt="Manufaturing details" src="/docs/assets/img/stock/item-manufacturing-website.png">
-Visit [Manufacturing]({{docs_base_url}}/user/manual/en/manufacturing.html) and [Website ]({{docs_base_url}}/user/manual/en/website.html)to understand these topics in detail.
+Visit [Manufacturing](/docs/user/manual/en/manufacturing.html) and [Website ](/docs/user/manual/en/website.html)to understand these topics in detail.
### Learn more about Item
diff --git a/erpnext/docs/user/manual/en/stock/item/item-codification.md b/erpnext/docs/user/manual/en/stock/item/item-codification.md
index eeb4f49..82ed307 100644
--- a/erpnext/docs/user/manual/en/stock/item/item-codification.md
+++ b/erpnext/docs/user/manual/en/stock/item/item-codification.md
@@ -1,3 +1,5 @@
+# Item Codification
+
If you already have a full-fledged business with a number of physical items,
you would have probably coded your items. If you have not, you have a choice.
We recommend that you should codify if you have lot of products with long or
diff --git a/erpnext/docs/user/manual/en/stock/item/item-price.md b/erpnext/docs/user/manual/en/stock/item/item-price.md
index 342e419..52850c2 100644
--- a/erpnext/docs/user/manual/en/stock/item/item-price.md
+++ b/erpnext/docs/user/manual/en/stock/item/item-price.md
@@ -1,3 +1,5 @@
+# Item Price
+
Item Price is the record in which you can log selling and buying rate of an item.
There are two ways to reach to new Item Price form.
@@ -14,7 +16,7 @@
You can create multiple Price List in ERPNext to track Selling and Buying Price List of an item separtely. Also if item's selling prices id changing based on territory, or due to other criteria, you can create multiple selling Price List for it.
-
+
On selection of Price List, its currency and for selling or buying property will be fetched as well.
@@ -24,13 +26,13 @@
Select item for which Item Price record is to be created. On selection of Item Code, Item Name and Description will be fetched as well.
-
+
Step 3: Enter Rate
Enter selling/buying rate of an item in Price List currency.
-
+
Step 4: Save Item Price
diff --git a/erpnext/docs/user/manual/en/stock/item/item-valuation-fifo-and-moving-average.md b/erpnext/docs/user/manual/en/stock/item/item-valuation-fifo-and-moving-average.md
index d1456ee..cc59618 100644
--- a/erpnext/docs/user/manual/en/stock/item/item-valuation-fifo-and-moving-average.md
+++ b/erpnext/docs/user/manual/en/stock/item/item-valuation-fifo-and-moving-average.md
@@ -1,3 +1,5 @@
+# Item Valuation Fifo And Moving Average
+
### How are Items Valued?
One of the major features of any inventory system is that you can find out the
@@ -19,7 +21,7 @@
* **FIFO (First In First Out):** In this system, ERPNext assumes that you will consume / sell those Items first which you bought first. For example, if you buy an Item at price X and then after a few days at price Y, whenever you sell your Item, ERPNext will reduce the quantity of the Item priced at X first and then Y.
-<img alt="FIFO" class="screenshot" src="{{docs_base_url}}/assets/img/stock/fifo.png">
+<img alt="FIFO" class="screenshot" src="/docs/assets/img/stock/fifo.png">
* **Moving Average:** In this method, ERPNext assumes that the value of the item at any point is the average price of the units of that Item in stock. For example, if the value of an Item is X in a Warehouse with quantity Y and another quantity Y1 is added to the Warehouse at cost X1, the new value X2 would be:
diff --git a/erpnext/docs/user/manual/en/stock/item/item-variants.md b/erpnext/docs/user/manual/en/stock/item/item-variants.md
index 7514404..8b6da16 100644
--- a/erpnext/docs/user/manual/en/stock/item/item-variants.md
+++ b/erpnext/docs/user/manual/en/stock/item/item-variants.md
@@ -19,33 +19,33 @@
* The Item shall then be referred to as a so called 'Template'. Such a Template is not identical to a regular 'Item' any longer. For example it (the Template) can not be used directly in any Transactions (Sales Order, Delivery Note, Purchase Invoice) itself. Only the Variants of an Item (_blue_ t-shirt in size _small)_ can be practically used in such. Therefore it would be ideal to decide whether an item 'Has Variants' or not directly when creating it.
-<img class="screenshot" alt="Has Variants" src="{{docs_base_url}}/assets/img/stock/item-has-variants.png">
+<img class="screenshot" alt="Has Variants" src="/docs/assets/img/stock/item-has-variants.png">
On selecting 'Has Variants' a table shall appear. Specify the variant attributes for the Item in the table.
In case the attribute has Numeric Values, you can specify the range and increment values here.
-<img class="screenshot" alt="Valid Attributes" src="{{docs_base_url}}/assets/img/stock/item-attributes.png">
+<img class="screenshot" alt="Valid Attributes" src="/docs/assets/img/stock/item-attributes.png">
> Note: You cannot make Transactions against a 'Template'
To create 'Item Variants' against a 'Template' select 'Make Variants'
-<img class="screenshot" alt="Make Variants" src="{{docs_base_url}}/assets/img/stock/make-variant.png">
+<img class="screenshot" alt="Make Variants" src="/docs/assets/img/stock/make-variant.png">
-<img class="screenshot" alt="Make Variants" src="{{docs_base_url}}/assets/img/stock/make-variant-1.png">
+<img class="screenshot" alt="Make Variants" src="/docs/assets/img/stock/make-variant-1.png">
-To learn more about setting Attributes Master check [Item Attributes]({{docs_base_url}}/user/manual/en/stock/setup/item-attribute.html)
+To learn more about setting Attributes Master check [Item Attributes](/docs/user/manual/en/stock/setup/item-attribute.html)
### Variants Based on Manufacturers
To setup variants based on Manufactueres, in your Item template, set "Variants Based On" as "Manufacturers"
<img class='screenshot' alt='Setup Item Variant by Manufacturer'
- src='{{docs_base_url}}/assets/img/stock/select-mfg-for-variant.png'>
+ src='/docs/assets/img/stock/select-mfg-for-variant.png'>
When you make a new Variant, the system will prompt you to select a Manufacturer. You can also optionally put in a Manufacturer Part Number
<img class='screenshot' alt='Setup Item Variant by Manufacturer'
- src='{{docs_base_url}}/assets/img/stock/set-variant-by-mfg.png'>
+ src='/docs/assets/img/stock/set-variant-by-mfg.png'>
The naming of the variant will be the name (ID) of the template Item with a number suffix. e.g. "ITEM000" will have variant "ITEM000-1"
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/stock/item/purchase-details.md b/erpnext/docs/user/manual/en/stock/item/purchase-details.md
index 134d551..3de1724 100644
--- a/erpnext/docs/user/manual/en/stock/item/purchase-details.md
+++ b/erpnext/docs/user/manual/en/stock/item/purchase-details.md
@@ -4,4 +4,4 @@
A warranty means a guarantee or a promise which provides assurance by one party to the other party which allows for a legal remedy if that promise is not true or followed. A warranty period is a time period in which a purchased product may be returned or exchanged.
-<img class="screenshot" alt="Item Warranty" src="{{docs_base_url}}/assets/img/stock/item-warranty.png">
\ No newline at end of file
+<img class="screenshot" alt="Item Warranty" src="/docs/assets/img/stock/item-warranty.png">
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/stock/item/reorder.md b/erpnext/docs/user/manual/en/stock/item/reorder.md
index 548a8a9..06caa2c 100644
--- a/erpnext/docs/user/manual/en/stock/item/reorder.md
+++ b/erpnext/docs/user/manual/en/stock/item/reorder.md
@@ -10,4 +10,4 @@
For example, If reorder level is 100 items, your reorder quantity may not necessarily be 100 items. The Reorder quantity can be greater than or equal to reorder level. It may depend upon lead time, discount, transportation and average daily consumption.
-<img alt="Item Reorder" class="screenshot" src="{{docs_base_url}}/assets/img/stock/item-reorder.png">
\ No newline at end of file
+<img alt="Item Reorder" class="screenshot" src="/docs/assets/img/stock/item-reorder.png">
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/stock/material-request.md b/erpnext/docs/user/manual/en/stock/material-request.md
index 8e4caea..c3ba13c 100644
--- a/erpnext/docs/user/manual/en/stock/material-request.md
+++ b/erpnext/docs/user/manual/en/stock/material-request.md
@@ -1,7 +1,9 @@
+# Material Request
+
A Material Request is a simple document identifying a requirement of a set of
Items (products or services) for a particular reason.
-<img class="screenshot" alt="Material Request" src="{{docs_base_url}}/assets/img/buying/material-request-flowchart.png">
+<img class="screenshot" alt="Material Request" src="/docs/assets/img/buying/material-request-flowchart.png">
To generate a Material Request manually go to:
@@ -9,14 +11,14 @@
#### Creating Material Request
-<img class="screenshot" alt="Material Request" src="{{docs_base_url}}/assets/img/buying/material-request.png">
+<img class="screenshot" alt="Material Request" src="/docs/assets/img/buying/material-request.png">
A Material Request can be generated:
* Automatically from a Sales Order.
* Automatically when the Projected Quantity of an Item in stores reaches a particular level.
* Automatically from your Bill of Materials if you use Production Plan to plan your manufacturing activities.
- * If your Items are inventory items, you must also mention the Warehouse where you expect these Items to be delivered. This helps to keep track of the [Projected Quantity]({{docs_base_url}}/user/manual/en/stock/projected-quantity.html) for this Item.
+ * If your Items are inventory items, you must also mention the Warehouse where you expect these Items to be delivered. This helps to keep track of the [Projected Quantity](/docs/user/manual/en/stock/projected-quantity.html) for this Item.
A Material Request can be of type:
@@ -25,7 +27,7 @@
* Material Issue - If the requested material is to be Issued.
* Manufacture - If the requested material is to be Produced.
-The User can also raise a [Request For Quotation]({{docs_base_url}}/user/manual/en/buying/request-for-quotation.html) against a Material Request. To create a Request For Quotation the user can click on 'Make'.
+The User can also raise a [Request For Quotation](/docs/user/manual/en/buying/request-for-quotation.html) against a Material Request. To create a Request For Quotation the user can click on 'Make'.
> Info: Material Request is not mandatory. It is ideal if you have centralized
buying so that you can collect this information from various departments.
diff --git a/erpnext/docs/user/manual/en/stock/opening-stock.md b/erpnext/docs/user/manual/en/stock/opening-stock.md
index e59fb42..ea77999 100644
--- a/erpnext/docs/user/manual/en/stock/opening-stock.md
+++ b/erpnext/docs/user/manual/en/stock/opening-stock.md
@@ -10,6 +10,6 @@
If you are not making opening Stock Entry, you can select "Stock Adjustment" account in Difference/Expense Account field which is an expense account.
-To understand Opening Stock for serialized Items visit [Stock Reconciliation]({{docs_base_url}}/user/manual/en/setting-up/stock-reconciliation-for-non-serialized-item.html)
+To understand Opening Stock for serialized Items visit [Stock Reconciliation](/docs/user/manual/en/setting-up/stock-reconciliation-for-non-serialized-item.html)
{next}
diff --git a/erpnext/docs/user/manual/en/stock/projected-quantity.md b/erpnext/docs/user/manual/en/stock/projected-quantity.md
index 0e7b742..e02b2c3 100644
--- a/erpnext/docs/user/manual/en/stock/projected-quantity.md
+++ b/erpnext/docs/user/manual/en/stock/projected-quantity.md
@@ -1,3 +1,5 @@
+# Projected Quantity
+
Projected Quantity is the level of stock that is predicted for a particular
Item, based on the current stock levels and other requirements. It is the
quantity of gross inventory that includes supply and demand in the past which
@@ -11,7 +13,7 @@
Having a tight control of the projected inventory is crucial to determine
shortages and to calculate the right order quantity.
-<img class="screenshot" alt="Projected Quantity" src="{{docs_base_url}}/assets/img/stock/projected_quantity.png">
+<img class="screenshot" alt="Projected Quantity" src="/docs/assets/img/stock/projected_quantity.png">
> Projected Qty = Actual Qty + Planned Qty + Requested Qty + Ordered Qty -
diff --git a/erpnext/docs/user/manual/en/stock/purchase-receipt.md b/erpnext/docs/user/manual/en/stock/purchase-receipt.md
index 0f43b58..523b0fa 100644
--- a/erpnext/docs/user/manual/en/stock/purchase-receipt.md
+++ b/erpnext/docs/user/manual/en/stock/purchase-receipt.md
@@ -1,3 +1,5 @@
+# Purchase Receipt
+
Purchase Receipts are made when you accept material from your Supplier usually
against a Purchase Order.
@@ -10,7 +12,7 @@
or from a “Submitted” Purchase Order, by clicking on “Make Purchase Receipt”.
-<img class="screenshot" alt="Purchase Receipt" src="{{docs_base_url}}/assets/img/stock/purchase-receipt.png">
+<img class="screenshot" alt="Purchase Receipt" src="/docs/assets/img/stock/purchase-receipt.png">
### Rejections
diff --git a/erpnext/docs/user/manual/en/stock/purchase-return.md b/erpnext/docs/user/manual/en/stock/purchase-return.md
index 328ed08..2b63034 100644
--- a/erpnext/docs/user/manual/en/stock/purchase-return.md
+++ b/erpnext/docs/user/manual/en/stock/purchase-return.md
@@ -1,3 +1,5 @@
+# Purchase Return
+
ERPNext has an option for products that are need to be returned to the
supplier. This may be on account of a number of reasons like defects in goods,
quality not matching, the buyer not needing the stock, etc.
@@ -6,16 +8,16 @@
First open the original Purchase Receipt, against which supplier delivered the items.
-<img class="screenshot" alt="Original Purchase Receipt" src="{{docs_base_url}}/assets/img/stock/purchase-return-original-purchase-receipt.png">
+<img class="screenshot" alt="Original Purchase Receipt" src="/docs/assets/img/stock/purchase-return-original-purchase-receipt.png">
Then click on "Make Purchase Return", it will open a new Purchase Receipt with "Is Return" checked, items and taxes with negative amount.
-<img class="screenshot" alt="Return Against Purchase Receipt" src="{{docs_base_url}}/assets/img/stock/purchase-return-against-purchase-receipt.png">
+<img class="screenshot" alt="Return Against Purchase Receipt" src="/docs/assets/img/stock/purchase-return-against-purchase-receipt.png">
On submission of Return Purchase Return, system will decrease item qty from the mentioned warehouse. To maintain correct stock valuation, stock balance will also go up according to the original purchase rate of the returned items.
-<img class="screenshot" alt="Return Stock Ledger" src="{{docs_base_url}}/assets/img/stock/purchase-return-stock-ledger.png">
+<img class="screenshot" alt="Return Stock Ledger" src="/docs/assets/img/stock/purchase-return-stock-ledger.png">
If Perpetual Inventory enabled, system will also post accounting entry against warehouse account to sync warehouse account balance with stock balance as per Stock Ledger.
-<img class="screenshot" alt="Return Stock Ledger" src="{{docs_base_url}}/assets/img/stock/purchase-return-general-ledger.png">
\ No newline at end of file
+<img class="screenshot" alt="Return Stock Ledger" src="/docs/assets/img/stock/purchase-return-general-ledger.png">
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/stock/sales-return.md b/erpnext/docs/user/manual/en/stock/sales-return.md
index 1ce922d..1ba17c2 100644
--- a/erpnext/docs/user/manual/en/stock/sales-return.md
+++ b/erpnext/docs/user/manual/en/stock/sales-return.md
@@ -1,3 +1,5 @@
+# Sales Return
+
Goods sold being returned is quite a common practice in business. They could
be returned by the customer on quality issues, non-delivery on agreed date, or
any other reason.
@@ -6,22 +8,22 @@
First open the original Delivery Note / Sales Invoice, against which customer returned the items.
-<img class="screenshot" alt="Original Delivery Note" src="{{docs_base_url}}/assets/img/stock/sales-return-original-delivery-note.png">
+<img class="screenshot" alt="Original Delivery Note" src="/docs/assets/img/stock/sales-return-original-delivery-note.png">
Then click on "Make Sales Return", it will open a new Delivery Note with "Is Return" checked, items and taxes with negative amount.
-<img class="screenshot" alt="Return Against Delivery Note" src="{{docs_base_url}}/assets/img/stock/sales-return-against-delivery-note.png">
+<img class="screenshot" alt="Return Against Delivery Note" src="/docs/assets/img/stock/sales-return-against-delivery-note.png">
You can also create the return entry against original Sales Invoice, to return stock along with credit note, check "Update Stock" option in Return Sales Invoice.
-<img class="screenshot" alt="Return Against Sales Invoice" src="{{docs_base_url}}/assets/img/stock/sales-return-against-sales-invoice.png">
+<img class="screenshot" alt="Return Against Sales Invoice" src="/docs/assets/img/stock/sales-return-against-sales-invoice.png">
On submission of Return Delivery Note / Sales Invoice, system will increase stock balance in the mentioned warehouse. To maintain correct stock valuation, stock balance will go up according to the original purchase rate of the returned items.
-<img class="screenshot" alt="Return Stock Ledger" src="{{docs_base_url}}/assets/img/stock/sales-return-stock-ledger.png">
+<img class="screenshot" alt="Return Stock Ledger" src="/docs/assets/img/stock/sales-return-stock-ledger.png">
In case of Return Sales Invoice, Customer account will be credited and associated income and tax account will be debited.
If Perpetual Inventory enabled, system will also post accounting entry against warehouse account to sync warehouse account balance with stock balance as per Stock Ledger.
-<img class="screenshot" alt="Return Stock Ledger" src="{{docs_base_url}}/assets/img/stock/sales-return-general-ledger.png">
\ No newline at end of file
+<img class="screenshot" alt="Return Stock Ledger" src="/docs/assets/img/stock/sales-return-general-ledger.png">
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/stock/serial-no.md b/erpnext/docs/user/manual/en/stock/serial-no.md
index fbbfb1a..cb766ba 100644
--- a/erpnext/docs/user/manual/en/stock/serial-no.md
+++ b/erpnext/docs/user/manual/en/stock/serial-no.md
@@ -1,3 +1,5 @@
+# Serial No
+
As we discussed in the **Item** section, if an **Item** is _serialized_, a
**Serial Number** (Serial No) record is maintained for each quantity of that
**Item**. This information is helpful in tracking the location of the Serial
@@ -20,7 +22,7 @@
Invoice). When a new Serial No is created directly, its warehouse cannot be
set.
-<img class="screenshot" alt="Serial Number" src="{{docs_base_url}}/assets/img/stock/serial-no.png">
+<img class="screenshot" alt="Serial Number" src="/docs/assets/img/stock/serial-no.png">
* The Status is set based on Stock Entry.
diff --git a/erpnext/docs/user/manual/en/stock/setup/index.md b/erpnext/docs/user/manual/en/stock/setup/index.md
index 6f3f1cb..7254785 100644
--- a/erpnext/docs/user/manual/en/stock/setup/index.md
+++ b/erpnext/docs/user/manual/en/stock/setup/index.md
@@ -1,3 +1,5 @@
+# Setup
+
### Topics
{index}
diff --git a/erpnext/docs/user/manual/en/stock/setup/item-attribute.md b/erpnext/docs/user/manual/en/stock/setup/item-attribute.md
index 0b2ab74..a6e0eec 100644
--- a/erpnext/docs/user/manual/en/stock/setup/item-attribute.md
+++ b/erpnext/docs/user/manual/en/stock/setup/item-attribute.md
@@ -1,16 +1,18 @@
+# Item Attribute
+
You can define Attributes and attribute values for your Item Variants here.
-<img class="screenshot" alt="Attribute Master" src="{{docs_base_url}}/assets/img/stock/item-attribute.png">
+<img class="screenshot" alt="Attribute Master" src="/docs/assets/img/stock/item-attribute.png">
#### Non Numeric Attributes
* For Non Numeric Attributes, specify attributes values along with its abbreviation in the Attribute Value Table.
-<img class="screenshot" alt="Attribute Master" src="{{docs_base_url}}/assets/img/stock/item-attribute-non-numeric.png">
+<img class="screenshot" alt="Attribute Master" src="/docs/assets/img/stock/item-attribute-non-numeric.png">
#### Numeric Attributes
* If your attribute is Numeric, select Numeric Values
* Specify the Range and the Increment Value
-<img class="screenshot" alt="Attribute Master" src="{{docs_base_url}}/assets/img/stock/item-attribute-numeric.png">
+<img class="screenshot" alt="Attribute Master" src="/docs/assets/img/stock/item-attribute-numeric.png">
diff --git a/erpnext/docs/user/manual/en/stock/setup/item-group.md b/erpnext/docs/user/manual/en/stock/setup/item-group.md
index cf6a75a..a280090 100644
--- a/erpnext/docs/user/manual/en/stock/setup/item-group.md
+++ b/erpnext/docs/user/manual/en/stock/setup/item-group.md
@@ -1,3 +1,5 @@
+# Item Group
+
Item Group is the classification category. Depending on the type of product,
categorise it under its respective field. If the product is
service oriented, name it under the group head - service. If the
@@ -5,7 +7,7 @@
category. In case, your product is used only in trading, you can categorise it
under Trading.
-<img class="screenshot" alt="Item Group Tree" src="{{docs_base_url}}/assets/img/stock/item-group-tree.png">
+<img class="screenshot" alt="Item Group Tree" src="/docs/assets/img/stock/item-group-tree.png">
### Create a Item Group
@@ -13,7 +15,7 @@
* Select 'Add Child'
-<img class="screenshot" alt="Add Item Group" src="{{docs_base_url}}/assets/img/stock/item-group-new.gif">
+<img class="screenshot" alt="Add Item Group" src="/docs/assets/img/stock/item-group-new.gif">
### Delete an Item Group
@@ -21,6 +23,6 @@
* Select 'delete'
-<img class="screenshot" alt="Add Item Group" src="{{docs_base_url}}/assets/img/stock/item-group-del.gif">
+<img class="screenshot" alt="Add Item Group" src="/docs/assets/img/stock/item-group-del.gif">
{next}
diff --git a/erpnext/docs/user/manual/en/stock/setup/stock-settings.md b/erpnext/docs/user/manual/en/stock/setup/stock-settings.md
index f8cb9ea..32562c6 100644
--- a/erpnext/docs/user/manual/en/stock/setup/stock-settings.md
+++ b/erpnext/docs/user/manual/en/stock/setup/stock-settings.md
@@ -1,5 +1,7 @@
+# Stock Settings
+
You can set default settings for your stock related transactions here.
-<img class="screenshot" alt="Stock Settings" src="{{docs_base_url}}/assets/img/stock/stock-settings.png">
+<img class="screenshot" alt="Stock Settings" src="/docs/assets/img/stock/stock-settings.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/stock/stock-entry.md b/erpnext/docs/user/manual/en/stock/stock-entry.md
index fb784c4..e2ac6a1 100644
--- a/erpnext/docs/user/manual/en/stock/stock-entry.md
+++ b/erpnext/docs/user/manual/en/stock/stock-entry.md
@@ -1,3 +1,5 @@
+# Stock Entry
+
A Stock Entry is a simple document that lets you record Item movement from a
Warehouse, to a Warehouse and between Warehouses.
@@ -5,7 +7,7 @@
> Stock > Stock Entry > New
-<img class="screenshot" alt="Stock Entry" src="{{docs_base_url}}/assets/img/stock/stock-entry.png">
+<img class="screenshot" alt="Stock Entry" src="/docs/assets/img/stock/stock-entry.png">
Stock Entries can be made for the following purposes:
@@ -27,15 +29,15 @@
To add additional costs, enter the description and amount of the cost in the Additional Costs table.
-<img class="screenshot" alt="Stock Entry Additional Costs" src="{{docs_base_url}}/assets/img/stock/additional-costs-table.png">
+<img class="screenshot" alt="Stock Entry Additional Costs" src="/docs/assets/img/stock/additional-costs-table.png">
The added additional costs will be distributed among the receiving items (where the target warehouse mentioned) proportionately based on Basic Amount of the items. And the distributed additional cost will be added to the basic rate of the item, to calculate valuation rate.
-<img class="screenshot" alt="Stock Entry Item Valuation Rate" src="{{docs_base_url}}/assets/img/stock/stock-entry-item-valuation-rate.png">
+<img class="screenshot" alt="Stock Entry Item Valuation Rate" src="/docs/assets/img/stock/stock-entry-item-valuation-rate.png">
If perpetual inventory system is enabled, additional costs will be booked in "Expense Included In Valuation" account.
-<img class="screenshot" alt="Additional Costs General Ledger" src="{{docs_base_url}}/assets/img/stock/additional-costs-general-ledger.png">
+<img class="screenshot" alt="Additional Costs General Ledger" src="/docs/assets/img/stock/additional-costs-general-ledger.png">
> **Note:** To update Stock from a spreadsheet, see [Stock Reconciliation]({{doc_base_url}}/user/manual/en/setting-up/stock-reconciliation-for-non-serialized-item.html).
diff --git a/erpnext/docs/user/manual/en/stock/stock-how-to.md b/erpnext/docs/user/manual/en/stock/stock-how-to.md
index e0f5b2f..e395f43 100644
--- a/erpnext/docs/user/manual/en/stock/stock-how-to.md
+++ b/erpnext/docs/user/manual/en/stock/stock-how-to.md
@@ -1,2 +1,4 @@
+# Stock How To
+
This page contains most frequently asked questions on Stocks.
diff --git a/erpnext/docs/user/manual/en/stock/tools/index.md b/erpnext/docs/user/manual/en/stock/tools/index.md
index 6f3f1cb..1763bf3 100644
--- a/erpnext/docs/user/manual/en/stock/tools/index.md
+++ b/erpnext/docs/user/manual/en/stock/tools/index.md
@@ -1,3 +1,5 @@
+# Tools
+
### Topics
{index}
diff --git a/erpnext/docs/user/manual/en/stock/tools/landed-cost-voucher.md b/erpnext/docs/user/manual/en/stock/tools/landed-cost-voucher.md
index 1209aff..a11759d 100644
--- a/erpnext/docs/user/manual/en/stock/tools/landed-cost-voucher.md
+++ b/erpnext/docs/user/manual/en/stock/tools/landed-cost-voucher.md
@@ -1,3 +1,5 @@
+# Landed Cost Voucher
+
Landed Cost is the total cost of a product to reach the product at the buyer’s door. Landed costs include the original cost of the item, complete shipping costs, customs duties, taxes, insurance and currency conversion fees etc. All of these components might not be applicable in every shipment, but relevant components must be considered as a part of the landed cost.
> To understand landed cost better, let’s take an example based on our daily lives. You need to purchase a new washing machine for your home. Before making actual purchase, you probably do some investigation to know the best price. In this process, you often found a better deal from a store which is long away from your home. But you should also consider shipping cost while buying from that store. Total cost including transportation might be more than the price you get in your nearby store. In that case you will choose to buy from your nearest store, as landed cost of the item is cheaper in the nearest store.
@@ -20,7 +22,7 @@
In the document, you can select multiple Purchase Receipts and fetch all items from those Purchase Receipts. Then you should add applicable charges in “Taxes and Charges” table. You can easily delete an item if the added charges is not applicable to that item. The added charges are proportionately distributed among all the items based their amount.
-<img class="screenshot" alt="Landed Cost Vouher" src="{{docs_base_url}}/assets/img/stock/landed-cost.png">
+<img class="screenshot" alt="Landed Cost Vouher" src="/docs/assets/img/stock/landed-cost.png">
### What happend on submission?
diff --git a/erpnext/docs/user/manual/en/stock/tools/packing-slip.md b/erpnext/docs/user/manual/en/stock/tools/packing-slip.md
index 0820959..60cfb5d 100644
--- a/erpnext/docs/user/manual/en/stock/tools/packing-slip.md
+++ b/erpnext/docs/user/manual/en/stock/tools/packing-slip.md
@@ -1,7 +1,9 @@
+# Packing Slip
+
A packing slip is a document listing the items in a shipment. Usually attached to the goods delivered.
While Shipping a product 'Draft' for Delivery Notes are created.
You can make a Packing Slip from these Delivery Notes (Draft)
-<img class="screenshot" alt="Packing Slip" src="{{docs_base_url}}/assets/img/stock/packing-slip.png">
+<img class="screenshot" alt="Packing Slip" src="/docs/assets/img/stock/packing-slip.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/stock/tools/quality-inspection.md b/erpnext/docs/user/manual/en/stock/tools/quality-inspection.md
index 34bea40..254da8a 100644
--- a/erpnext/docs/user/manual/en/stock/tools/quality-inspection.md
+++ b/erpnext/docs/user/manual/en/stock/tools/quality-inspection.md
@@ -1,8 +1,10 @@
+# Quality Inspection
+
In ERPNext, you can mark your incoming or outgoing products for Quality
Inspection. To enable ERPNext to perform this function, go to :
> Stock > Quality Inspection > New
-<img class="screenshot" alt="Quality Inspection" src="{{docs_base_url}}/assets/img/stock/quality-inspection.png">
+<img class="screenshot" alt="Quality Inspection" src="/docs/assets/img/stock/quality-inspection.png">
{next}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/stock/warehouse.md b/erpnext/docs/user/manual/en/stock/warehouse.md
index 74ee8cc..d90e3f9 100644
--- a/erpnext/docs/user/manual/en/stock/warehouse.md
+++ b/erpnext/docs/user/manual/en/stock/warehouse.md
@@ -1,3 +1,5 @@
+# Warehouse
+
A warehouse is a commercial building for storage of goods. Warehouses are used
by manufacturers, importers, exporters, wholesalers, transport businesses,
customs, etc. They are usually large plain buildings in industrial areas of
@@ -12,7 +14,7 @@
To go to Warehouse, click on Stock and go to Warehouse under Setup. You
could also switch to 'Tree' View or simply type warehouse tree in the awsone bar.
-<img class="screenshot" alt="Warehouse" src="{{docs_base_url}}/assets/img/stock/warehouse.png">
+<img class="screenshot" alt="Warehouse" src="/docs/assets/img/stock/warehouse.png">
In ERPNext, every Warehouse must belong to a specific company, to maintain
company wise stock balance. In order to do so each Warehouse is linked with an
diff --git a/erpnext/docs/user/manual/en/support/index.md b/erpnext/docs/user/manual/en/support/index.md
index 7777049..1fe172c 100644
--- a/erpnext/docs/user/manual/en/support/index.md
+++ b/erpnext/docs/user/manual/en/support/index.md
@@ -1,3 +1,5 @@
+# Support
+
Great customer support and maintenance is at the heart of any successful small
business. ERPNext gives you the tools to track all incoming requests and issues
from your customers so that you can respond quickly. Your database of incoming
diff --git a/erpnext/docs/user/manual/en/support/issue.md b/erpnext/docs/user/manual/en/support/issue.md
index 29fb858..56d0058 100644
--- a/erpnext/docs/user/manual/en/support/issue.md
+++ b/erpnext/docs/user/manual/en/support/issue.md
@@ -1,3 +1,5 @@
+# Issue
+
Issue is an incoming query from your Customer, usually via email or
from the “Contact” section of your website. (To fully integrate the Support
Ticket to email, see the Email Settings section).
@@ -5,13 +7,13 @@
> Tip: A dedicated support Email Address is a good way to integrate incoming
queries via email. For example, you can send support queries to ERPNext at
support@erpnext.com and it will automatically create a Issue in the
-Frappe system.
+Frappé system.
> Support > Issue > New Issue
-<img class="screenshot" alt="Issue" src="{{docs_base_url}}/assets/img/support/issue.png">
+<img class="screenshot" alt="Issue" src="/docs/assets/img/support/issue.png">
#### Discussion Thread
diff --git a/erpnext/docs/user/manual/en/support/maintenance-schedule.md b/erpnext/docs/user/manual/en/support/maintenance-schedule.md
index e211562..a9be3b9 100644
--- a/erpnext/docs/user/manual/en/support/maintenance-schedule.md
+++ b/erpnext/docs/user/manual/en/support/maintenance-schedule.md
@@ -1,3 +1,5 @@
+# Maintenance Schedule
+
All machines require regular maintenance, specially those that contain a lot
of moving parts, so if you are in the business of maintaining those or have
some of them in your own premises, this is a useful tool to plan a calendar of
@@ -10,7 +12,7 @@
> Support > Maintenance Schedule > New Maintenance Schedule
-<img class="screenshot" alt="Maintenance Schedule" src="{{docs_base_url}}/assets/img/support/maintenance-schedule.png">
+<img class="screenshot" alt="Maintenance Schedule" src="/docs/assets/img/support/maintenance-schedule.png">
In the Maintenance Schedule, there are two sections:
diff --git a/erpnext/docs/user/manual/en/support/maintenance-visit.md b/erpnext/docs/user/manual/en/support/maintenance-visit.md
index e93260d..5bda36a 100644
--- a/erpnext/docs/user/manual/en/support/maintenance-visit.md
+++ b/erpnext/docs/user/manual/en/support/maintenance-visit.md
@@ -1,10 +1,12 @@
+# Maintenance Visit
+
A Maintenance Visit is a record of a visit made by an engineer to a
Customer’s premise usually against a Customer Issue. You can create a new
Maintenance Visit from:
> Support > Maintenance Visit > New Maintenance Visit
-<img class="screenshot" alt="Maintenance Visit" src="{{docs_base_url}}/assets/img/support/maintenance-visit.png">
+<img class="screenshot" alt="Maintenance Visit" src="/docs/assets/img/support/maintenance-visit.png">
The Maintenance Visit contains information about the:
diff --git a/erpnext/docs/user/manual/en/support/support_reports.md b/erpnext/docs/user/manual/en/support/support_reports.md
index 2be72e1..7ef6cea 100644
--- a/erpnext/docs/user/manual/en/support/support_reports.md
+++ b/erpnext/docs/user/manual/en/support/support_reports.md
@@ -1,3 +1,5 @@
+# Support Reports
+
### Support Hours
@@ -5,4 +7,4 @@
> Support > Reports > Support Hours
-<img class="screenshot" alt="Maintenance Visit" src="{{docs_base_url}}/assets/img/support/support_hours.png">
+<img class="screenshot" alt="Maintenance Visit" src="/docs/assets/img/support/support_hours.png">
diff --git a/erpnext/docs/user/manual/en/support/warranty-claim.md b/erpnext/docs/user/manual/en/support/warranty-claim.md
index 0a58e18..8080e65 100644
--- a/erpnext/docs/user/manual/en/support/warranty-claim.md
+++ b/erpnext/docs/user/manual/en/support/warranty-claim.md
@@ -1,3 +1,5 @@
+# Warranty Claim
+
If you are selling **Items** under warranty or if you have sold and extended
service contract like the Annual Maintenance Contract (AMC), your **Customer**
may call you about an issue or a break-down and give you the Serial No of this
@@ -15,7 +17,7 @@
> Support > Warranty Claim > New Warranty Claim
-
+
If a Customer visit is required to address the issue, you can create a new
Maintenance Visit record from this.
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/Global-search.md b/erpnext/docs/user/manual/en/using-erpnext/articles/Global-search.md
index 776c6e8..482f12f 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/Global-search.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/Global-search.md
@@ -1,3 +1,5 @@
+# Global Search
+
Global-search.md
@@ -8,9 +10,9 @@
### Using Awesome bar for Global Search.
-<img alt="Global Search" class="screenshot" src="{{docs_base_url}}/assets/img/articles/Global Search .gif">
+<img alt="Global Search" class="screenshot" src="/docs/assets/img/articles/Global Search .gif">
### Enable Global Search for fields in a Doctype.
-<img alt="Global Search" class="screenshot" src="{{docs_base_url}}/assets/img/articles/Enable Global Search .gif">
+<img alt="Global Search" class="screenshot" src="/docs/assets/img/articles/Enable Global Search .gif">
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/adding-attachments-to-outgoing-messages.md b/erpnext/docs/user/manual/en/using-erpnext/articles/adding-attachments-to-outgoing-messages.md
index 75ade17..4ab4df4 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/adding-attachments-to-outgoing-messages.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/adding-attachments-to-outgoing-messages.md
@@ -1,9 +1,11 @@
+# Adding Attachments To Outgoing Messages
+
#Adding Attachments to Outgoing Messages
-ERPNext has in-built file manager. Click [here]({{docs_base_url}}/user/videos/learn/file-manager.html) to learn more on how attachments are managed in ERPNext.
+ERPNext has in-built file manager. Click [here](/docs/user/videos/learn/file-manager.html) to learn more on how attachments are managed in ERPNext.
If you have file attached to the document (say Purchase Order), and same file needs to be emailed as attachment, following is how you can achieve it.
-<img alt="Emailing Attachments" class="screenshot" src="{{docs_base_url}}/assets/img/articles/email-file-attachment.gif">
+<img alt="Emailing Attachments" class="screenshot" src="/docs/assets/img/articles/email-file-attachment.gif">
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/adding-file-as-a-attachment.md b/erpnext/docs/user/manual/en/using-erpnext/articles/adding-file-as-a-attachment.md
index e1c4ebd..fad7319 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/adding-file-as-a-attachment.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/adding-file-as-a-attachment.md
@@ -1,3 +1,5 @@
+# Adding File As A Attachment
+
#Adding File as a Attachment
ERPNext allows to attach files with documents. User with a read permission on particular document will also be able to access files attached with it.
@@ -8,11 +10,11 @@
####From Browser
-<img alt="Sales Order File Attachment" class="screenshot" src="{{docs_base_url}}/assets/img/articles/attach-file-1.gif">
+<img alt="Sales Order File Attachment" class="screenshot" src="/docs/assets/img/articles/attach-file-1.gif">
####By drag and drop
-<img alt="Sales Order File Attachment" class="screenshot" src="{{docs_base_url}}/assets/img/articles/attach-file-2.gif">
+<img alt="Sales Order File Attachment" class="screenshot" src="/docs/assets/img/articles/attach-file-2.gif">
Click on Attach to browse and select the file.
@@ -20,11 +22,11 @@
If you use separate server for files, or use online service like Dropbox, you can attach file by providing link of a particular file.
-<img alt="Sales Order Select File" class="screenshot" src="{{docs_base_url}}/assets/img/articles/attach-file-3.gif">
+<img alt="Sales Order Select File" class="screenshot" src="/docs/assets/img/articles/attach-file-3.gif">
`For hosted users, limit of 5 MB is applied on file size.`
-To ensure there are not many files attached to a document, which can affect your accounts performance, you can set limit as how many files can be attached to a particular document. Click [here]({{docs_base_url}}/user/manual/en/customize-erpnext/articles/increase-max-attachments.html) to learn more about it.
+To ensure there are not many files attached to a document, which can affect your accounts performance, you can set limit as how many files can be attached to a particular document. Click [here](/docs/user/manual/en/customize-erpnext/articles/increase-max-attachments.html) to learn more about it.
####File Manager
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/bulk-rename.md b/erpnext/docs/user/manual/en/using-erpnext/articles/bulk-rename.md
index a753358..17e81c9 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/bulk-rename.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/bulk-rename.md
@@ -1,3 +1,5 @@
+# Bulk Rename
+
#Bulk Rename
Using renaming tool, you can to rectify/change multiple document ids at once. This tool is only accessible to the User who has System Manager role assigned.
@@ -10,7 +12,7 @@
In a spreadsheet file, enter old Item IDs in the first column, and new Item Ids in the second column. Save spreadsheet file in a CSV format.
-<img alt="Data File" class="screenshot" src="{{docs_base_url}}/assets/img/articles/rename-docs-1.png">
+<img alt="Data File" class="screenshot" src="/docs/assets/img/articles/rename-docs-1.png">
#### Step 2: Upload Data File
@@ -20,7 +22,7 @@
Select DocType which you want to rename. Here DocType will be Item. Then Browse and Upload data file.
-
+
{next}
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/check-link-between-documents.md b/erpnext/docs/user/manual/en/using-erpnext/articles/check-link-between-documents.md
index 76cdeb7..03ab427 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/check-link-between-documents.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/check-link-between-documents.md
@@ -1,8 +1,10 @@
+# Check Link Between Documents
+
#Checking Link Between Documents
Links option shows one document is linked to which other documents. Check Menu for the Links options.
-<img alt="Cancel Doc" class="screenshot" src="{{docs_base_url}}/assets/img/articles/links-1.gif">
+<img alt="Cancel Doc" class="screenshot" src="/docs/assets/img/articles/links-1.gif">
####Scenario
@@ -18,6 +20,6 @@
Links only shows forward linkages. For the backward links, you should check current document itself. In the Purchase Receipt Item table table, you can check which Purchase Order it is linked to.
-<img alt="Cancel Doc" class="screenshot" src="{{docs_base_url}}/assets/img/articles/links-2.gif">
+<img alt="Cancel Doc" class="screenshot" src="/docs/assets/img/articles/links-2.gif">
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/delete-submitted-document.md b/erpnext/docs/user/manual/en/using-erpnext/articles/delete-submitted-document.md
index 8d7700a..f18a355 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/delete-submitted-document.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/delete-submitted-document.md
@@ -1,3 +1,5 @@
+# Delete Submitted Document
+
#Delete Submitted Document
To be able to delete Submitted document, you should first Cancel. Once canceled, you can delete that document from Menu or from the List View of that Document Type.
@@ -12,18 +14,18 @@
You will find option to Cancel in the submitted document. If document is at draft stage, it can delete directly. Also if document is not submittable, but only save, it can be deleted directly.
-<img alt="Cancel Doc" class="screenshot" src="{{docs_base_url}}/assets/img/articles/delete-submitted-doc-1.png">
+<img alt="Cancel Doc" class="screenshot" src="/docs/assets/img/articles/delete-submitted-doc-1.png">
####Step 2: Delete Document
After cancellation, go to Menu and click on Delete.
-<img alt="Delete Doc" class="screenshot" src="{{docs_base_url}}/assets/img/articles/delete-submitted-doc-2.png">
+<img alt="Delete Doc" class="screenshot" src="/docs/assets/img/articles/delete-submitted-doc-2.png">
####Step 3: Deleting from List
For bulk deletion, you can select multiple Cancelled records and delete at once from the List View.
-<img alt="Delete Doc from List" class="screenshot" src="{{docs_base_url}}/assets/img/articles/delete-submitted-doc-3.gif">
+<img alt="Delete Doc from List" class="screenshot" src="/docs/assets/img/articles/delete-submitted-doc-3.gif">
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/duplicate-record.md b/erpnext/docs/user/manual/en/using-erpnext/articles/duplicate-record.md
index 69b4ecf..f57e76f 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/duplicate-record.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/duplicate-record.md
@@ -1,3 +1,5 @@
+# Duplicate Record
+
#Duplicate a Record
Duplicate feature helps you to copy values of existing document into new document.
@@ -10,6 +12,6 @@
`Menu > Copy`
-<img alt="Duplicate" class="screenshot" src="{{docs_base_url}}/assets/img/articles/duplicate.gif">
+<img alt="Duplicate" class="screenshot" src="/docs/assets/img/articles/duplicate.gif">
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/index.md b/erpnext/docs/user/manual/en/using-erpnext/articles/index.md
index 0dff60b..fb11735 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/index.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/index.md
@@ -1 +1,3 @@
+# Articles
+
{index}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/merging-documents.md b/erpnext/docs/user/manual/en/using-erpnext/articles/merging-documents.md
index f03bbd8..683a474 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/merging-documents.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/merging-documents.md
@@ -1,3 +1,5 @@
+# Merging Documents
+
#Merging Documents
For a document, if you have two records which are identical, and meant for common purpose, you can merge them into one record.
@@ -12,7 +14,7 @@
For an Account to be merged, click on the "Rename" option.
-<img alt="Sales Order File Attachment" class="screenshot" src="{{docs_base_url}}/assets/img/articles/merge-docs-1.png">
+<img alt="Sales Order File Attachment" class="screenshot" src="/docs/assets/img/articles/merge-docs-1.png">
#### Step 3: Merge Account
@@ -20,7 +22,7 @@
Following is how the merged account will appear in the Chart of Accounts master.
-<img alt="Sales Order File Attachment" class="screenshot" src="{{docs_base_url}}/assets/img/articles/merge-docs-2.gif">
+<img alt="Sales Order File Attachment" class="screenshot" src="/docs/assets/img/articles/merge-docs-2.gif">
###Effect of Merging
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/pos-view.md b/erpnext/docs/user/manual/en/using-erpnext/articles/pos-view.md
index 839e820..75f057e 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/pos-view.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/pos-view.md
@@ -1,10 +1,12 @@
+# Pos View
+
#POS View
POS (point of sale) view renders form in a different layout, optimized for the quick selection of items. This view has primarily been designed for the retail business.
Using POS View, you can only create Sales Invoice, without switching to standard form view. For other transactions, like Sales Order, Delivery Note, Purchase Order, Purchase Receipt etc., POS View is only used for Item selection. For entering other values in the transaction, you should switch to form view.
-<img alt="POS View" class="screenshot" src="{{docs_base_url}}/assets/img/articles/pos-view.gif">
+<img alt="POS View" class="screenshot" src="/docs/assets/img/articles/pos-view.gif">
For creating POS Invoice, check following help video.
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/renaming-documents.md b/erpnext/docs/user/manual/en/using-erpnext/articles/renaming-documents.md
index a6b6696..f6072d3 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/renaming-documents.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/renaming-documents.md
@@ -1,3 +1,5 @@
+# Renaming Documents
+
#Renaming a Document
Using Renaming feature, you can change ID of a master documents like Item, Warehouse, Accounts etc. Following are the steps to rename Item Code. Following same steps, you can rename other masters as well.
@@ -8,7 +10,7 @@
#### 2. Rename
-<img alt="Renamed Item" class="screenshot" src="{{docs_base_url}}/assets/img/articles/rename-a-doc.gif">
+<img alt="Renamed Item" class="screenshot" src="/docs/assets/img/articles/rename-a-doc.gif">
###Effect of Renaming
@@ -16,8 +18,8 @@
###See Also
-1. [Bulk Renaming]({{docs_base_url}}/user/manual/en/using-erpnext/articles/bulk-rename.html)
-2. [Document Merging]({{docs_base_url}}/user/manual/en/using-erpnext/articles/merging-documents.html)
+1. [Bulk Renaming](/docs/user/manual/en/using-erpnext/articles/bulk-rename.html)
+2. [Document Merging](/docs/user/manual/en/using-erpnext/articles/merging-documents.html)
**List of Renamable Documents**
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/search-filter.md b/erpnext/docs/user/manual/en/using-erpnext/articles/search-filter.md
index 8a0a67b..307c996 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/search-filter.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/search-filter.md
@@ -1,3 +1,5 @@
+# Search Filter
+
#Search Filter
Search Filter option allow user to filter records based on value in the specific field of that document. Search Filters are available on the List View of Document Type and in the Report Builder.
@@ -8,20 +10,20 @@
Select field of the document based on which you wish to filter records.
-<img alt="Search Filter Field" class="screenshot" src="{{docs_base_url}}/assets/img/articles/search-filter-field.gif">
+<img alt="Search Filter Field" class="screenshot" src="/docs/assets/img/articles/search-filter-field.gif">
#### Based On
With Field, you will provide a value. In the based on field, you can define a criterion that when filter should be applied in record. It will be when value define for the field if filter is:
-<img alt="Search Filter Based On" class="screenshot" src="{{docs_base_url}}/assets/img/articles/search-filter-based-on.gif">
+<img alt="Search Filter Based On" class="screenshot" src="/docs/assets/img/articles/search-filter-based-on.gif">
#### Value
A value should be entered in this field based on while records will be filtered. After filter is applied, records will be filtered based on it. And filter will shrunk under one field/button.
-<img alt="Search Filter Based On" class="screenshot" src="{{docs_base_url}}/assets/img/articles/search-filter-result.png">
+<img alt="Search Filter Based On" class="screenshot" src="/docs/assets/img/articles/search-filter-result.png">
You can apply multiple filters at a time. To remove specific filter, just click on cancelled (X) sign ahead of it.
@@ -30,6 +32,6 @@
From the list views, you can also apply filters by clicking on the Status field.
-<img alt="Renamed Item" class="screenshot" src="{{docs_base_url}}/assets/img/articles/search-filter-auto.gif">
+<img alt="Renamed Item" class="screenshot" src="/docs/assets/img/articles/search-filter-auto.gif">
<!-- markdown -->
diff --git a/erpnext/docs/user/manual/en/using-erpnext/articles/tree-master-renaming.md b/erpnext/docs/user/manual/en/using-erpnext/articles/tree-master-renaming.md
index 44d4e97..935e32b 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/articles/tree-master-renaming.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/articles/tree-master-renaming.md
@@ -1,6 +1,8 @@
+# Tree Master Renaming
+
#Tree Master Renaming
-There are various master which are maintained in tree structure. Click [here]({{docs_base_url}}/user/manual/en/setting-up/articles/managing-tree-structure-masters.html) to learn more about tree structured masters in ERPNext.
+There are various master which are maintained in tree structure. Click [here](/docs/user/manual/en/setting-up/articles/managing-tree-structure-masters.html) to learn more about tree structured masters in ERPNext.
Following are the steps to be followed for renaming ID of a master which is maintained in tree structure. Let's rename an Account for the instance.
@@ -12,12 +14,12 @@
When click on the Account, you will find Rename option.
-<img alt="Account" class="screenshot" src="{{docs_base_url}}/assets/img/articles/rename-account.png">
+<img alt="Account" class="screenshot" src="/docs/assets/img/articles/rename-account.png">
#### Step 2: Rename Account
On clicking Rename, you will get field to enter New Name. After entering new name for the Account, click on the "Rename" button.
-<img alt="Renamed Account" class="screenshot" src="{{docs_base_url}}/assets/img/articles/rename-account-2.gif">
+<img alt="Renamed Account" class="screenshot" src="/docs/assets/img/articles/rename-account-2.gif">
<!-- markdown -->
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/using-erpnext/assignment.md b/erpnext/docs/user/manual/en/using-erpnext/assignment.md
index e78a112..ffd0abd 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/assignment.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/assignment.md
@@ -1,3 +1,5 @@
+# Assignment
+
Assign To feature in ERPNext allows you to allocate particular document to specific user, whom needs to further work on that document.
For example, if Sales Order needs to be approved/submitted by Sales Manager, first draft user can allocate that Sales Order to Sales Manager. On allocating document to Sales Manager, it will be added to that user's ToDo list. Same way, allocation can also be done to Material User and Account user who needs to create Delivery Note and Sales Invoice respectively against this Sales Note.
@@ -10,13 +12,13 @@
Assign to option is located at the footer of document. Clicking on Assignment Icon on the tool bar will fast-forward you to footer of same document.
-<img class="screenshot" alt="Assign" src="{{docs_base_url}}/assets/img/collaboration-tools/assign-1.png">
+<img class="screenshot" alt="Assign" src="/docs/assets/img/collaboration-tools/assign-1.png">
#### Step 2: Assign to User
In the Assign To section, you will find option to select User to whom this document will be assigned to. You can assign one document to multiple people at a time.
-<img class="screenshot" alt="Assign" src="{{docs_base_url}}/assets/img/collaboration-tools/assign-2.png">
+<img class="screenshot" alt="Assign" src="/docs/assets/img/collaboration-tools/assign-2.png">
With assignment, you can also leave a comment for the review of assignee.
@@ -24,13 +26,13 @@
This transaction will appear in the To-do list of the user in “Todo” section.
-<img class="screenshot" alt="Assign" src="{{docs_base_url}}/assets/img/collaboration-tools/assign-3.png">
+<img class="screenshot" alt="Assign" src="/docs/assets/img/collaboration-tools/assign-3.png">
####Removing Assignment
User will be able to remove assignment by clicking on "Assignment Completed" button in the document.
-<img class="screenshot" alt="Assign" src="{{docs_base_url}}/assets/img/collaboration-tools/assign-4.png">
+<img class="screenshot" alt="Assign" src="/docs/assets/img/collaboration-tools/assign-4.png">
Once assignment is set as completed, the Status of its ToDo record will be set as Closed.
diff --git a/erpnext/docs/user/manual/en/using-erpnext/calendar.md b/erpnext/docs/user/manual/en/using-erpnext/calendar.md
index c8b64af..bf0412b 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/calendar.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/calendar.md
@@ -1,8 +1,10 @@
+# Calendar
+
The Calendar is a tool where you can create and share Events and also see auto-generated events from the system.
You can switch calendar view based on Month, Week and Day.
-<img class="screenshot" alt="Calendar" src="{{docs_base_url}}/assets/img/collaboration-tools/calendar-1.png">
+<img class="screenshot" alt="Calendar" src="/docs/assets/img/collaboration-tools/calendar-1.png">
### Creating Events in Calendar
@@ -12,7 +14,7 @@
This view will 24 hours of a day broken in various slots. You should click on slot for Event Start Time, and drag it down till you reach event end time.
-<img class="screenshot" alt="Calendar" src="{{docs_base_url}}/assets/img/collaboration-tools/calendar-2.gif">
+<img class="screenshot" alt="Calendar" src="/docs/assets/img/collaboration-tools/calendar-2.gif">
Based on the selection of time slot, Start Time and End Time will be updated in the Event master. Then you can set subject for an event, and save it.
@@ -20,7 +22,7 @@
In the Lead form, you will find a field called Next Contact By and Next Contact Date. Event will be auto created for date and person specified in this field.
-<img class="screenshot" alt="Lead Event" src="{{docs_base_url}}/assets/img/collaboration-tools/calendar-3.png">
+<img class="screenshot" alt="Lead Event" src="/docs/assets/img/collaboration-tools/calendar-3.png">
#### Birthday Event
@@ -31,7 +33,7 @@
You can set events as recurring in specific interval by Checking the "Repeat This
Event".
-<img class="screenshot" alt="Calendar Recurring Event" src="{{docs_base_url}}/assets/img/collaboration-tools/calendar-4.png">
+<img class="screenshot" alt="Calendar Recurring Event" src="/docs/assets/img/collaboration-tools/calendar-4.png">
### Event Reminders
@@ -41,7 +43,7 @@
In the Event master, checking "Send an email reminder in the morning" will trigger notification email to all the participants for this event.
-<img class="screenshot" alt="Calendar Recurring Event" src="{{docs_base_url}}/assets/img/collaboration-tools/calendar-6.png">
+<img class="screenshot" alt="Calendar Recurring Event" src="/docs/assets/img/collaboration-tools/calendar-6.png">
#### Create Email Digest
@@ -51,6 +53,6 @@
`Setup > Email > Email Digest`
-<img class="screenshot" alt="Calendar Recurring Event" src="{{docs_base_url}}/assets/img/collaboration-tools/calender-email-digest.png">
+<img class="screenshot" alt="Calendar Recurring Event" src="/docs/assets/img/collaboration-tools/calender-email-digest.png">
{next}
diff --git a/erpnext/docs/user/manual/en/using-erpnext/chat.md b/erpnext/docs/user/manual/en/using-erpnext/chat.md
index ed155d8..867c4b4 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/chat.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/chat.md
@@ -1,3 +1,5 @@
+# Chat
+
You can send and receive messages from the system by using the Messages tool.
`Explore > Tools > Chat`
@@ -5,10 +7,10 @@
If you send a message to a user, and the user is logged in, it will appear as a popup message and the unread messages counter in the top toolbar will be
updated.
-<img class="screenshot" alt="Assign" src="{{docs_base_url}}/assets/img/collaboration-tools/chat-1.png">
+<img class="screenshot" alt="Assign" src="/docs/assets/img/collaboration-tools/chat-1.png">
You can choose to send message to all the users, or to specific user.
-<img class="screenshot" alt="Assign" src="{{docs_base_url}}/assets/img/collaboration-tools/chat-2.png">
+<img class="screenshot" alt="Assign" src="/docs/assets/img/collaboration-tools/chat-2.png">
{next}
diff --git a/erpnext/docs/user/manual/en/using-erpnext/collaborating-around-forms.md b/erpnext/docs/user/manual/en/using-erpnext/collaborating-around-forms.md
index 7ffec76..b0cf945 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/collaborating-around-forms.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/collaborating-around-forms.md
@@ -1,24 +1,26 @@
+# Collaborating Around Forms
+
Following are the tools in each document using which you can collaborate with other Users in your ERPNext account.
### Assigned to
-If some document requires an action from User, you can Assign that document to that User. On assignment, User to whom document is assigned is intimated via email. To learn about Assign To feature, [click here.]({{docs_base_url}}/user/manual/en/using-erpnext/assignment.html)
+If some document requires an action from User, you can Assign that document to that User. On assignment, User to whom document is assigned is intimated via email. To learn about Assign To feature, [click here.](/docs/user/manual/en/using-erpnext/assignment.html)
### Comments
Comments are a great way to add information about a transaction that is not a
part of the transactions. Like some background information etc.
-<img class="screenshot" alt="Assign" src="{{docs_base_url}}/assets/img/collaboration-tools/comments-1.png">
+<img class="screenshot" alt="Assign" src="/docs/assets/img/collaboration-tools/comments-1.png">
###Share
You can share document with the specific User. If Document is shared with the specific User, he/she will be able to access it, even if that User doesn't have permission to access that document or Document Type.
-<img class="screenshot" alt="Assign" src="{{docs_base_url}}/assets/img/collaboration-tools/share-1.gif">
+<img class="screenshot" alt="Assign" src="/docs/assets/img/collaboration-tools/share-1.gif">
### Tags
-[Read more about Tags]({{docs_base_url}}/user/manual/en/using-erpnext/tags.html)
+[Read more about Tags](/docs/user/manual/en/using-erpnext/tags.html)
{next}
diff --git a/erpnext/docs/user/manual/en/using-erpnext/document-versioning.md b/erpnext/docs/user/manual/en/using-erpnext/document-versioning.md
index bbcdc55..126f761 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/document-versioning.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/document-versioning.md
@@ -1,3 +1,5 @@
+# Document Versioning
+
#Document Versioning
The document versioning feature allows you to track all the changes made in the form over the period. It will be very helpful in audit trial to check which user edited what value, and when exactly.
@@ -6,16 +8,16 @@
Document Versioning can be enabled for one Document Type as a time. Let's assume that we need to enable it from Purchase Order. Then, we will check Customize Form tool for Purchase Order and check field `Track Changes`. With this, document versioning will be enabled for all the Purchase Orders create and edited hence forth.
-<img class="screenshot" alt="Enable Versioning" src="{{docs_base_url}}/assets/img/collaboration-tools/enable-versioning.png">
+<img class="screenshot" alt="Enable Versioning" src="/docs/assets/img/collaboration-tools/enable-versioning.png">
####Version Log
Following is link of version in a Purchase Order form. Each time a document is edited, a version's link will be added in that document. To check more details on specific version, click on it's link.
-<img class="screenshot" alt="Version Links" src="{{docs_base_url}}/assets/img/collaboration-tools/version-links.png">
+<img class="screenshot" alt="Version Links" src="/docs/assets/img/collaboration-tools/version-links.png">
####Version Details
In the Version document, you will find log of all the fields and values changes in it.
-<img class="screenshot" alt="Version Details" src="{{docs_base_url}}/assets/img/collaboration-tools/version-details.png">
\ No newline at end of file
+<img class="screenshot" alt="Version Details" src="/docs/assets/img/collaboration-tools/version-details.png">
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/using-erpnext/index.md b/erpnext/docs/user/manual/en/using-erpnext/index.md
index 93f080e..f2fe0ad 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/index.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/index.md
@@ -1,3 +1,5 @@
+# Using Erpnext
+
We live in an era when people are very comfortable communicating, discussing,
asking, assigning work and getting feedback electronically. The Internet acts
as a great medium to collaborate on work too. Taking this concept into ERP
diff --git a/erpnext/docs/user/manual/en/using-erpnext/notes.md b/erpnext/docs/user/manual/en/using-erpnext/notes.md
index 64e7acb..91c1689 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/notes.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/notes.md
@@ -1,3 +1,5 @@
+# Notes
+
You can store your long notes under this section. It can contain your partner lists, frequently used passwords, terms and conditions, or any other document which needs to be shared. Following are the steps to create new Note.
`Explore > Note > New`
@@ -6,12 +8,12 @@
Enter Title and Context.
-<img class="screenshot" alt="Note New" src="{{docs_base_url}}/assets/img/collaboration-tools/note-1.png">
+<img class="screenshot" alt="Note New" src="/docs/assets/img/collaboration-tools/note-1.png">
####Set Permissions to select Users
To make Note accessible for all, check "Public" under links section. Else you can share it with the specific User by using Share feature.
-<img class="screenshot" alt="Note New" src="{{docs_base_url}}/assets/img/collaboration-tools/share-1.gif">
+<img class="screenshot" alt="Note New" src="/docs/assets/img/collaboration-tools/share-1.gif">
{next}
diff --git a/erpnext/docs/user/manual/en/using-erpnext/restore-deleted-docs.md b/erpnext/docs/user/manual/en/using-erpnext/restore-deleted-docs.md
index 2c60d35..d43fc67 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/restore-deleted-docs.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/restore-deleted-docs.md
@@ -1,8 +1,10 @@
+# Restore Deleted Docs
+
#Restore Deleted Documents
In ERPNext, you can delete a records if not needed. They can be masters like Items, Customer or transactions like Sales Order, Payment Entries etc.
-<img class="screenshot" alt="Delete a Docuemnt" src="{{docs_base_url}}/assets/img/collaboration-tools/delete-a-doc.png">
+<img class="screenshot" alt="Delete a Docuemnt" src="/docs/assets/img/collaboration-tools/delete-a-doc.png">
If you have deleted an entry by mistake and wish to restore it back into your ERPNext account.
@@ -14,18 +16,18 @@
For the list of deleted document, just type Deleted Document in the Search Bar and go to list.
-<img class="screenshot" alt="Deleted Docs List" src="{{docs_base_url}}/assets/img/collaboration-tools/deleted-docs-list.gif">
+<img class="screenshot" alt="Deleted Docs List" src="/docs/assets/img/collaboration-tools/deleted-docs-list.gif">
####Step 2: Open Doc and Restore
Open the document to be restored from the list. Click on Restore button.
-<img class="screenshot" alt="Restored Doc" src="{{docs_base_url}}/assets/img/collaboration-tools/restore-a-doc.png">
+<img class="screenshot" alt="Restored Doc" src="/docs/assets/img/collaboration-tools/restore-a-doc.png">
####Step 3: Restored
Once a document is restored, you will be able to use it for creating entries in your ERPNext account.
-<img class="screenshot" alt="Restored Doc" src="{{docs_base_url}}/assets/img/collaboration-tools/restored-doc.png">
+<img class="screenshot" alt="Restored Doc" src="/docs/assets/img/collaboration-tools/restored-doc.png">
> If canceled document is deleted, then it will not be restored.
diff --git a/erpnext/docs/user/manual/en/using-erpnext/tags.md b/erpnext/docs/user/manual/en/using-erpnext/tags.md
index 0446a32..99a6aac 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/tags.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/tags.md
@@ -1,9 +1,11 @@
+# Tags
+
Like Assignments and Comments, you can also add your own tags to each type of transactions. These tags can help you search a document and also classify it.
-<img class="screenshot" alt="Assign" src="{{docs_base_url}}/assets/img/collaboration-tools/tags-1.png">
+<img class="screenshot" alt="Assign" src="/docs/assets/img/collaboration-tools/tags-1.png">
ERPNext will also show you all the important tags in the document list.
-<img class="screenshot" alt="Assign" src="{{docs_base_url}}/assets/img/collaboration-tools/tags-2.png">
+<img class="screenshot" alt="Assign" src="/docs/assets/img/collaboration-tools/tags-2.png">
{next}
diff --git a/erpnext/docs/user/manual/en/using-erpnext/to-do.md b/erpnext/docs/user/manual/en/using-erpnext/to-do.md
index 295e79a..c6cd280 100644
--- a/erpnext/docs/user/manual/en/using-erpnext/to-do.md
+++ b/erpnext/docs/user/manual/en/using-erpnext/to-do.md
@@ -1,9 +1,11 @@
-To Do is a simple tool where all the activities [assigned]({{docs_base_url}}/user/manual/en/using-erpnext/assignments.html) to you and assigned by you are listed. You can also add your own to-do items in the list.
+# To Do
-<img class="screenshot" alt="Assign" src="{{docs_base_url}}/assets/img/collaboration-tools/assign-3.png">
+To Do is a simple tool where all the activities [assigned](/docs/user/manual/en/using-erpnext/assignments.html) to you and assigned by you are listed. You can also add your own to-do items in the list.
+
+<img class="screenshot" alt="Assign" src="/docs/assets/img/collaboration-tools/assign-3.png">
When task is completed, you should simply remove assignment from the assigned document. With this, task will be removed from your Todo list as well. For Todo which are not assigned via document, you can set their status as Closed from the Todo master itself.
-<img class="screenshot" alt="Assign" src="{{docs_base_url}}/assets/img/collaboration-tools/assign-4.png">
+<img class="screenshot" alt="Assign" src="/docs/assets/img/collaboration-tools/assign-4.png">
{next}
diff --git a/erpnext/docs/user/manual/en/website/add-products-to-website.md b/erpnext/docs/user/manual/en/website/add-products-to-website.md
index d8ddcf0..e148919 100644
--- a/erpnext/docs/user/manual/en/website/add-products-to-website.md
+++ b/erpnext/docs/user/manual/en/website/add-products-to-website.md
@@ -1,3 +1,5 @@
+# Add Products To Website
+
### Add Products to the Website
ERPNext will populate your website with products out of your Item Master. The html code will be
@@ -11,14 +13,14 @@
For this example, click on the **New** button to create a new item. Fill in the form and then click **Save**.
-
+
#### Step 2: Save Image
1. Click the new item from the list to edit it.
1. In the upper left, click the image block to give the product a picture. Be sure to uncheck the **Private** box so the image will be publicly viewable.
-
+
#### Step 3: Check the 'Show in Website' box
@@ -26,17 +28,17 @@
* Give the page a route on the website.
-
+
#### Step 4: Enter Website Details
Once the `Show in Website` checkbox is checked, a new section called **Website Specifications** appears. Expand this section to add more details about the rocking chair to the website.
-
+
Click **Save** in the upper right and then click `See on Website` on the left under the product image to see the item on your website.
-
+
### Item Groups
@@ -47,17 +49,17 @@
* Fill in a description for your products page.
* Click **Save**.
-
+
* Go back to the rocking chair item, expand the **website** section.
* Click **Add new row** button under the `Item Group` table.
* Select `Products` from the list.
* Click **Save**.
-
+
To see on the website, go back to the `Item Group` and then click **See on website**.
-
+
{next}
diff --git a/erpnext/docs/user/manual/en/website/articles/index.md b/erpnext/docs/user/manual/en/website/articles/index.md
index 0dff60b..fb11735 100644
--- a/erpnext/docs/user/manual/en/website/articles/index.md
+++ b/erpnext/docs/user/manual/en/website/articles/index.md
@@ -1 +1,3 @@
+# Articles
+
{index}
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/website/articles/managing-user-sign-up-via-website.md b/erpnext/docs/user/manual/en/website/articles/managing-user-sign-up-via-website.md
index b2250e0..e48b87a 100644
--- a/erpnext/docs/user/manual/en/website/articles/managing-user-sign-up-via-website.md
+++ b/erpnext/docs/user/manual/en/website/articles/managing-user-sign-up-via-website.md
@@ -1,8 +1,10 @@
+# Managing User Sign Up Via Website
+
#Customer / Supplier Signup
Your Customer and Suppliers can signup to your ERPNext account by following Signup option on the Login Page.
-<img class="screenshot" alt="Website User Signup" src="{{docs_base_url}}/assets/img/website/website-login.png">
+<img class="screenshot" alt="Website User Signup" src="/docs/assets/img/website/website-login.png">
As seen above the login / sign-up button appears on the homepage of the website generated using ERPNext.
diff --git a/erpnext/docs/user/manual/en/website/articles/website-home-page.md b/erpnext/docs/user/manual/en/website/articles/website-home-page.md
index d44a31a..92bcc77 100644
--- a/erpnext/docs/user/manual/en/website/articles/website-home-page.md
+++ b/erpnext/docs/user/manual/en/website/articles/website-home-page.md
@@ -18,7 +18,7 @@
Enter the same value you entered for the `route` field in the previous section to the `Home Page` field. ERPNext will set this route to be the same as /index for your page.
-
+
#### **Step 4: Save Website Settings Form.**
diff --git a/erpnext/docs/user/manual/en/website/articles/website-security.md b/erpnext/docs/user/manual/en/website/articles/website-security.md
index ef7986a..5c0e2de 100644
--- a/erpnext/docs/user/manual/en/website/articles/website-security.md
+++ b/erpnext/docs/user/manual/en/website/articles/website-security.md
@@ -1,11 +1,13 @@
+# Website Security
+
#Website Security
One can easily generate a website using ERPNext. We can list our Products on the website and also create blogs. Products are directly fetched from the Item Master records of your ERPNext account. Some people would like to limit the access of the website generated by ERPNext to certain people. This is because some of the items may not be available to the public.
Well at the moment this feature is not available. You cannot limit the access of the website generated by ERPNext to certain people. If you publish the website it will be publicly visible. However while you cannot control who can view the website, you can always choose which items to display on the website. To show or not show an Item on your website go to `Selling > Items and Pricing > Item` and in the Item form check the `show in website` checkbox.
-<img src="{{docs_base_url}}/assets/img/articles/item-show-on-website-checkbox.png">
+<img src="/docs/assets/img/articles/item-show-on-website-checkbox.png">
Once the check box has been checked, then more details will appear that you can fill in for the details of the product as to be shown on the website.
-<img src="{{docs_base_url}}/assets/img/articles/item-show-on-website-checkbox-checked.png">
\ No newline at end of file
+<img src="/docs/assets/img/articles/item-show-on-website-checkbox-checked.png">
\ No newline at end of file
diff --git a/erpnext/docs/user/manual/en/website/blog-post.md b/erpnext/docs/user/manual/en/website/blog-post.md
index dbf7b17..e6f7960 100644
--- a/erpnext/docs/user/manual/en/website/blog-post.md
+++ b/erpnext/docs/user/manual/en/website/blog-post.md
@@ -1,3 +1,5 @@
+# Blog Post
+
Blogs are a great way to share your thoughts about your business and keep your
customers and readers updated of what you are up to.
@@ -8,13 +10,13 @@
> Website > Blog > New Blog
-<img class="screenshot" alt="Blog Post" src="{{docs_base_url}}/assets/img/website/blog-post.png">
+<img class="screenshot" alt="Blog Post" src="/docs/assets/img/website/blog-post.png">
You can format a blog using the Markdown format.You can also access your blog
by going to the page “blog.html”.
#### A sample blog-page.
-<img class="screenshot" alt="Blog Sample" src="{{docs_base_url}}/assets/img/website/blog-sample.png">
+<img class="screenshot" alt="Blog Sample" src="/docs/assets/img/website/blog-sample.png">
{next}
diff --git a/erpnext/docs/user/manual/en/website/blogger.md b/erpnext/docs/user/manual/en/website/blogger.md
index 5a5bd81..a47bdee 100644
--- a/erpnext/docs/user/manual/en/website/blogger.md
+++ b/erpnext/docs/user/manual/en/website/blogger.md
@@ -1,6 +1,8 @@
+# Blogger
+
Blogger is a user who can post blogs.
You can mention a short bio about the blogger and also set a avatar here.
-<img class="screenshot" alt="Blogger" src="{{docs_base_url}}/assets/img/website/blogger.png">
+<img class="screenshot" alt="Blogger" src="/docs/assets/img/website/blogger.png">
{next}
diff --git a/erpnext/docs/user/manual/en/website/index.md b/erpnext/docs/user/manual/en/website/index.md
index a499316..2ac4955 100644
--- a/erpnext/docs/user/manual/en/website/index.md
+++ b/erpnext/docs/user/manual/en/website/index.md
@@ -1,3 +1,5 @@
+# Website
+
Websites are a core component of any business and having a good website
usually means:
diff --git a/erpnext/docs/user/manual/en/website/setup/index.md b/erpnext/docs/user/manual/en/website/setup/index.md
index 212ccfb..f60d148 100644
--- a/erpnext/docs/user/manual/en/website/setup/index.md
+++ b/erpnext/docs/user/manual/en/website/setup/index.md
@@ -1,3 +1,5 @@
+# Setup
+
Settings for your website can be mentioned under setup.
### Topics
diff --git a/erpnext/docs/user/manual/en/website/setup/social-login-keys.md b/erpnext/docs/user/manual/en/website/setup/social-login-keys.md
index bb1329f..be67a8b 100644
--- a/erpnext/docs/user/manual/en/website/setup/social-login-keys.md
+++ b/erpnext/docs/user/manual/en/website/setup/social-login-keys.md
@@ -1,3 +1,5 @@
+# Social Login Keys
+
Social Login enables users to login to ERPNext via their Google, Facebook or GitHub account.
### Enabling Social Logins.
diff --git a/erpnext/docs/user/manual/en/website/setup/website-settings.md b/erpnext/docs/user/manual/en/website/setup/website-settings.md
index 2415589..6d5ad23 100644
--- a/erpnext/docs/user/manual/en/website/setup/website-settings.md
+++ b/erpnext/docs/user/manual/en/website/setup/website-settings.md
@@ -1,10 +1,12 @@
+# Website Settings
+
Most of the website related settings can be defined here.
-<img class="screenshot" alt="Website Settings" src="{{docs_base_url}}/assets/img/website/website-settings.png">
+<img class="screenshot" alt="Website Settings" src="/docs/assets/img/website/website-settings.png">
####Landing Page
-* Home Page: You can specify which [Web Page]({{docs_base_url}}/user/manual/en/website/web-page.html) must be the homepage of the website
+* Home Page: You can specify which [Web Page](/docs/user/manual/en/website/web-page.html) must be the homepage of the website
* Home Page is Products: if Checked, the Home page will be the default Item Group for the website.
@@ -14,7 +16,7 @@
Select the theme for the website. You can create new Theme for you website also.
-<img class="screenshot" alt="Website Theme" src="{{docs_base_url}}/assets/img/website/website-theme.png">
+<img class="screenshot" alt="Website Theme" src="/docs/assets/img/website/website-theme.png">
* Select 'create new website theme' if you wish to customize the default website theme.
@@ -23,13 +25,13 @@
You can add a banner/ logo to your website here. Attach the image and click on set banner from Image.
An HTML code will be generated by the system under Banner HTML.
-<img class="screenshot" alt="Banner" src="{{docs_base_url}}/assets/img/website/banner.png">
+<img class="screenshot" alt="Banner" src="/docs/assets/img/website/banner.png">
####Top Bar
You can set the menus items in the Top Bar here.
-<img class="screenshot" alt="Top Bar" src="{{docs_base_url}}/assets/img/website/top-bar.png">
+<img class="screenshot" alt="Top Bar" src="/docs/assets/img/website/top-bar.png">
* Similarlly you can also set sidebar and footer links.
@@ -37,7 +39,7 @@
You can integrate the website using Google Analytics and enable social media sharing for post shared on the website.
-<img class="screenshot" alt="Integrations" src="{{docs_base_url}}/assets/img/website/integrations.png">
+<img class="screenshot" alt="Integrations" src="/docs/assets/img/website/integrations.png">
* You can disable public signup to your ERPNext account by checking 'disable signup'
diff --git a/erpnext/docs/user/manual/en/website/shopping-cart.md b/erpnext/docs/user/manual/en/website/shopping-cart.md
index 6103e3c..8fe5244 100644
--- a/erpnext/docs/user/manual/en/website/shopping-cart.md
+++ b/erpnext/docs/user/manual/en/website/shopping-cart.md
@@ -1,3 +1,5 @@
+# Shopping Cart
+
On the Webpage, a shopping cart is an icon that allows you to store all the
things that you have earmarked for purchasing. It is a graphical
representation of a shopping basket or a shopping cart that allows you to save
@@ -14,7 +16,7 @@
#### Enter Company Details and Checkout Details.
-<img class="screenshot" alt="Shopping Cart Settings" src="{{docs_base_url}}/assets/img/website/item-website-specs.png">
+<img class="screenshot" alt="Shopping Cart Settings" src="/docs/assets/img/website/item-website-specs.png">
To make item available on website go to Item master.
@@ -22,11 +24,11 @@
#### Enable Item for website.
-<img class="screenshot" alt="Item" src="{{docs_base_url}}/assets/img/website/item-in-webiste.png">
+<img class="screenshot" alt="Item" src="/docs/assets/img/website/item-in-webiste.png">
#### Enter Website Specifications for Item.
-<img class="screenshot" alt="Website Specifications" src="{{docs_base_url}}/assets/img/website/item-website-specs.png">
+<img class="screenshot" alt="Website Specifications" src="/docs/assets/img/website/item-website-specs.png">
### Shop using Shopping Cart
@@ -35,20 +37,20 @@
Click on "Add to Cart" to add item to shopping cart.
-<img class="screenshot" alt="Website Specifications" src="{{docs_base_url}}/assets/img/website/item-website-view.png">
+<img class="screenshot" alt="Website Specifications" src="/docs/assets/img/website/item-website-view.png">
#### Goto Checkout
Click on "Go to Cart" to checkout or on "Cart" which is on upper right side
of the screen.
-<img class="screenshot" alt="Website Specifications" src="{{docs_base_url}}/assets/img/website/checkout.png">
+<img class="screenshot" alt="Website Specifications" src="/docs/assets/img/website/checkout.png">
#### Checkout
Change quantity, select Shipping and Billing Address and click
on "Place Order" to place the order.
-<img class="screenshot" alt="Website Specifications" src="{{docs_base_url}}/assets/img/website/place-order.png">
+<img class="screenshot" alt="Website Specifications" src="/docs/assets/img/website/place-order.png">
{next}
diff --git a/erpnext/docs/user/manual/en/website/web-form.md b/erpnext/docs/user/manual/en/website/web-form.md
index 1668ac0..b75ef0b 100644
--- a/erpnext/docs/user/manual/en/website/web-form.md
+++ b/erpnext/docs/user/manual/en/website/web-form.md
@@ -17,7 +17,7 @@
1. Select if you require the user to login, edit records, manage multiple records etc.
1. Add the fields you want in the record.
-<img class="screenshot" alt="Web Form" src="{{docs_base_url}}/assets/img/website/web-form.png">
+<img class="screenshot" alt="Web Form" src="/docs/assets/img/website/web-form.png">
---
@@ -25,7 +25,7 @@
Once you create the web form, you can view it on the url and test it out!
-<img class="screenshot" alt="Web form" src="{{docs_base_url}}/assets/img/website/web-form-view.png">
+<img class="screenshot" alt="Web form" src="/docs/assets/img/website/web-form-view.png">
---
diff --git a/erpnext/docs/user/manual/en/website/web-page.md b/erpnext/docs/user/manual/en/website/web-page.md
index 947891e..f931f02 100644
--- a/erpnext/docs/user/manual/en/website/web-page.md
+++ b/erpnext/docs/user/manual/en/website/web-page.md
@@ -1,10 +1,12 @@
+# Web Page
+
<p class="lead">Static Content like your Home Page, About Us, Contact Us, Terms pages can be created using the Web Page. </p>
To create a new Web Page, go to:
> Website > Web Page > New
-<img class="screenshot" alt="Web Page" src="{{docs_base_url}}/assets/img/website/web-page.png">
+<img class="screenshot" alt="Web Page" src="/docs/assets/img/website/web-page.png">
#### Title
diff --git a/erpnext/docs/user/manual/es/accounts/accounting-entries.md b/erpnext/docs/user/manual/es/accounts/accounting-entries.md
index ffda0b5..9ad5abd 100644
--- a/erpnext/docs/user/manual/es/accounts/accounting-entries.md
+++ b/erpnext/docs/user/manual/es/accounts/accounting-entries.md
@@ -1,3 +1,5 @@
+# Accounting Entries
+
<!---
WORK IN PROGRESS
-->
@@ -8,7 +10,7 @@
* Mama (El propietario de Tea-stall) invierte $25000 para iniciar el negocio.
-
+
__Análisis:__ Mama invierte 25000 en la compañía, con la esperanza de obtener alguna
ganancia. En otras palabras, la compañía es responsable del pago de $25000 a mama en
@@ -21,7 +23,7 @@
que pertenece a un amigo y le concede cierto crédito. Los equipos cuestan 2800 y las
materias primas valen 2200. La compañía paga 2000 de un total de 5000.
-
+
__Análisis:__ Los equipos son "Activos Fijos" (porque tienen una larga vida útil) de la
compañía y las materias primas son "Activos corrientes" (porque son usados en la
@@ -37,7 +39,7 @@
día, Tea Stall vende 325 tazas de té, lo cual da una venta neta de RS. 1575. El propietario
registra feliz su primer día de ventas.
-
+
__Análisis:__ Los ingresos han sido anotados en la cuenta "Ventas de Té", la cual se
debita para incrementar el valor y la misma cantidad se acredita de la cuenta
@@ -48,7 +50,7 @@
Al finalizar el mes, la compañía paga el arriendo del local (5000) y el salario de
un empleado (8000), el cual trabajó desde el primer día.
-
+
### Registro de ganancias
@@ -60,7 +62,7 @@
débito no es igual al crédito, la ganacia aún no ha sido anotada. Se debe realziar
la siguiente entrada:
-
+
Explicación: Las ventas y gastos netos son 40000 y 20000 respectivamente.
Entonces, la compañía tuvo una ganancia de 20000. Para registrar esa entrada,
diff --git a/erpnext/docs/user/manual/es/accounts/accounting-reports.md b/erpnext/docs/user/manual/es/accounts/accounting-reports.md
index 925ea1f..a887f9a 100644
--- a/erpnext/docs/user/manual/es/accounts/accounting-reports.md
+++ b/erpnext/docs/user/manual/es/accounts/accounting-reports.md
@@ -1,3 +1,5 @@
+# Accounting Reports
+
<!---
WORK IN PROGRESS
-->
@@ -12,7 +14,7 @@
periodo determinado.
<img alt="Libro Mayor" class="screenshot"
- src="{{docs_base_url}}/assets/img/accounts/general-ledger.png">
+ src="/docs/assets/img/accounts/general-ledger.png">
### Balance Contable
@@ -24,7 +26,7 @@
* Creditos
* Cierre
-<img alt="Balance Contable" class="screenshot" src="{{docs_base_url}}/assets/img/accounts/trial-balance.png">
+<img alt="Balance Contable" class="screenshot" src="/docs/assets/img/accounts/trial-balance.png">
La suma de todos los balances de cierre en el Balance Contable debe ser igual a cero.
@@ -33,7 +35,7 @@
Este reporte permite hacer seguimiento a las facturas enviadas a los clientes y proveedores. En este
reporte, se resaltan diferentes periodos de tiempo. p.e. entre 0-30 días, 30-60 días y así por el estilo.
-<img alt="Accounts Receivable" class="screenshot" src="{{docs_base_url}}/assets/img/accounts/accounts-receivable.png">
+<img alt="Accounts Receivable" class="screenshot" src="/docs/assets/img/accounts/accounts-receivable.png">
### Registro de Ventas y Compras
@@ -41,7 +43,7 @@
se puede obtener la cantidad de impuestos individuales que debe ser pagados, de acuerdo a la
tabla de Impuestos y Contribuciones,
-<img alt="Sales Register" class="screenshot" src="{{docs_base_url}}/assets/img/accounts/sales-register.png">
+<img alt="Sales Register" class="screenshot" src="/docs/assets/img/accounts/sales-register.png">
**Trabajo en progreso.**
diff --git a/erpnext/docs/user/manual/es/accounts/advance-payment-entry.md b/erpnext/docs/user/manual/es/accounts/advance-payment-entry.md
index 81491bc..e373c7b 100644
--- a/erpnext/docs/user/manual/es/accounts/advance-payment-entry.md
+++ b/erpnext/docs/user/manual/es/accounts/advance-payment-entry.md
@@ -1,35 +1,34 @@
-<!---
-WORK IN PROGRESS
--->
+# Advance Payment Entry
+
Los pagos realizados por el cliente antes de recibir el envío del producto se
denominan Anticipos. Para ordenes de alto costo, los negocios esperan recibir
dcho tipos de pago.
-
+
__Por Ejemplo:__ Consider a customer- Jane D'souza placing an order for a double
bed costing $10000 She is asked to give some advance before the furniture
house begins work on her order. She gives them $5000 in cash.
-
+
Go to Accounts and open a new Journal Entry to make the advance entry.
-> Accounts > Documents > Journal Entry > New Journal Entry
+> Accounts > Documents > Journal Entry > New Journal Entry
Mention the voucher type as cash voucher. This differs for different
customers. If somebody pays by cheque the voucher type will be Bank Voucher.
Then select the customer account and make the respective debit and credit
-entries.
+entries.
Since the customer has given $5000 as cash advance,it will be recorded as a
credit entry against the customer. To balance it with the debit entry [Double
accounting Entry] enter $5000 as debit against the company's cash account. In
the row "Is Advance" click 'Yes'.
-#### Figure 1 : Journal Entry -Advance Entry
+#### Figure 1 : Journal Entry -Advance Entry
-<img class="screenshot" alt="Advace Payment" src="{{docs_base_url}}/assets/img/accounts/advance-payment-1.png">
+<img class="screenshot" alt="Advace Payment" src="/docs/assets/img/accounts/advance-payment-1.png">
-### Double Entry Accounting
+### Double Entry Accounting
Double entry bookkeeping is a system of accounting in which every transaction
has a corresponding positive and negative entry : debits and credits. Every
@@ -41,10 +40,10 @@
one account will be debited because it receives value and the other account
will be credited because it has given value.
-
+
#### Figure 2: Transaction and Difference Entry
-<img class="screenshot" alt="Advace Payment" src="{{docs_base_url}}/assets/img/accounts/advance-payment-2.png">
+<img class="screenshot" alt="Advace Payment" src="/docs/assets/img/accounts/advance-payment-2.png">
Save and submit the JV. If this document is not saved it will not be pulled in
other accounting documents.
@@ -56,9 +55,9 @@
payment entry, click on ‘Get Advances Received’. Allocate the amount of
advance in the advances table. The accounting will be adjusted accordingly.
-#### Figure 3: Receive Advance
+#### Figure 3: Receive Advance
-<img class="screenshot" alt="Advace Payment" src="{{docs_base_url}}/assets/img/accounts/advance-payment-3.png">
+<img class="screenshot" alt="Advace Payment" src="/docs/assets/img/accounts/advance-payment-3.png">
Save and submit the Sales Invoice.
diff --git a/erpnext/docs/user/manual/es/accounts/index.md b/erpnext/docs/user/manual/es/accounts/index.md
index 9599bf9..2617b58 100644
--- a/erpnext/docs/user/manual/es/accounts/index.md
+++ b/erpnext/docs/user/manual/es/accounts/index.md
@@ -1,3 +1,5 @@
+# Accounts
+
<!---
WORK IN PROGRESS
-->
diff --git a/erpnext/docs/user/manual/es/index.md b/erpnext/docs/user/manual/es/index.md
index 330be14..c701b42 100644
--- a/erpnext/docs/user/manual/es/index.md
+++ b/erpnext/docs/user/manual/es/index.md
@@ -1,6 +1,3 @@
-<!---
-WORK IN PROGRESS
--->
# Manual de Usuario (Español)
### Contenido:
@@ -9,4 +6,4 @@
**Trabajo en progreso.**
-[La traducción al Español del manual de ERPNext está en progreso. Click aquí para ver el manual en ingles]({{ docs_base_url }}/user/manual/en)
+[La traducción al Español del manual de ERPNext está en progreso. Click aquí para ver el manual en ingles](/docs/user/manual/en)
diff --git a/erpnext/docs/user/manual/es/introduction/do-i-need-an-erp.md b/erpnext/docs/user/manual/es/introduction/do-i-need-an-erp.md
index a101c83..6d916e7 100644
--- a/erpnext/docs/user/manual/es/introduction/do-i-need-an-erp.md
+++ b/erpnext/docs/user/manual/es/introduction/do-i-need-an-erp.md
@@ -1,3 +1,5 @@
+# Do I Need An Erp
+
ERPNext es una herramienta moderna que no solo abarca el módulo de contabilidad,
sino que también, cubre todas las otras funciones de su negocio en una plataforma integrada.
Tiene muchos beneficios sobre los sistemas tradicionales de contabilidad y otros ERP en el mercado.
diff --git a/erpnext/docs/user/manual/es/introduction/getting-started-with-erpnext.md b/erpnext/docs/user/manual/es/introduction/getting-started-with-erpnext.md
index d1518e5..cc0b1c0 100644
--- a/erpnext/docs/user/manual/es/introduction/getting-started-with-erpnext.md
+++ b/erpnext/docs/user/manual/es/introduction/getting-started-with-erpnext.md
@@ -1,3 +1,5 @@
+# Getting Started With Erpnext
+
Hay muchas manera de comenzar a utilizar ERPNext.
### 1\. Ver el Demo
@@ -10,7 +12,7 @@
### 2\. Comienza con una cuenta gratis en ERPNext.com
-ERPNext.com es manejado por la organización (Frappe) que publicó ERPNext.
+ERPNext.com es manejado por la organización (Frappé) que publicó ERPNext.
Puedes iniciar con su propia cuenta en [registrandote en la página](https://erpnext.com).
También, puedes hostear tu aplicación en erpnext.com comprando un plan de alojamiento.
@@ -26,6 +28,6 @@
### 4\. Instalar ERPNext en su ordenador Unix/Linux/Mac
-En caso de estar relacionado con la instalación de aplicaciones en plataformas *nix, leer las instrucciones de como instalarlo usando [Frappe Bench](https://github.com/frappe/bench).
+En caso de estar relacionado con la instalación de aplicaciones en plataformas *nix, leer las instrucciones de como instalarlo usando [Frappé Bench](https://github.com/frappe/bench).
{next}
diff --git a/erpnext/docs/user/manual/es/introduction/implementation-strategy.md b/erpnext/docs/user/manual/es/introduction/implementation-strategy.md
index e5482f2..6429ddd 100644
--- a/erpnext/docs/user/manual/es/introduction/implementation-strategy.md
+++ b/erpnext/docs/user/manual/es/introduction/implementation-strategy.md
@@ -1,3 +1,5 @@
+# Implementation Strategy
+
Antes de que empieces a manejar todas tus operaciones en ERPNext, primero
deberías estar familiarizado con el sistema y los términos que utiliza.
Por esa razón recomendamos que la implementación pase en dos fases.
diff --git a/erpnext/docs/user/manual/es/introduction/index.md b/erpnext/docs/user/manual/es/introduction/index.md
index bbbf930..17e3704 100644
--- a/erpnext/docs/user/manual/es/introduction/index.md
+++ b/erpnext/docs/user/manual/es/introduction/index.md
@@ -1,3 +1,5 @@
+# Introduction
+
## ¿Qué es un ERP y Por qué debería interesarme?
(Si ya sabes que necesitas un sistema todo-en-uno para su compañia, puedes pasar a la siguiente página)
diff --git a/erpnext/docs/user/manual/es/introduction/key-workflows.md b/erpnext/docs/user/manual/es/introduction/key-workflows.md
index 6a29abf..6877fb3 100644
--- a/erpnext/docs/user/manual/es/introduction/key-workflows.md
+++ b/erpnext/docs/user/manual/es/introduction/key-workflows.md
@@ -3,10 +3,10 @@
Este diagrama cubre como ERPNext hace el seguimiento de la información de su compañia a través de funciones claves.
Este diagrama no cubre toda la funcionalidad o características de ERPNext.
-
+
-<img class="screenshot" alt="Workflow" src="{{docs_base_url}}/assets/img/setup/overview.png">
+<img class="screenshot" alt="Workflow" src="/docs/assets/img/setup/overview.png">
_Nota: No todos los pasos son obligatorios. ERPNext te permite pasar algunos pasos si deseas simplificar el proceso._
diff --git a/erpnext/docs/user/manual/es/introduction/open-source.md b/erpnext/docs/user/manual/es/introduction/open-source.md
index e12fd51..efa2f13 100644
--- a/erpnext/docs/user/manual/es/introduction/open-source.md
+++ b/erpnext/docs/user/manual/es/introduction/open-source.md
@@ -1,3 +1,5 @@
+# Open Source
+
El código fuente de ERPNext es de código abierto. Está abierto para que todos
podamos entenderlo, extenderlo o mejorarlo. Y es gratis!
diff --git a/erpnext/docs/user/manual/es/introduction/the-champion.md b/erpnext/docs/user/manual/es/introduction/the-champion.md
index e124b53..0d2106e 100644
--- a/erpnext/docs/user/manual/es/introduction/the-champion.md
+++ b/erpnext/docs/user/manual/es/introduction/the-champion.md
@@ -1,8 +1,10 @@
+# The Champion
+
<!-- no-heading -->
<h1 class="white">El campeón</h1>
-<img alt="Champion" class="screenshot" src="{{docs_base_url}}/assets/img/setup/implementation-image.png">
+<img alt="Champion" class="screenshot" src="/docs/assets/img/setup/implementation-image.png">
Hemos visto docenas de implementaciones de sistemas ERP en los últimos años
y nos hemos dado cuenta que una implementación exitosa es más sobre cosas intangibles y actitudes.
diff --git a/erpnext/docs/user/manual/index.md b/erpnext/docs/user/manual/index.md
index d6cf4f1..cc37ba4 100644
--- a/erpnext/docs/user/manual/index.md
+++ b/erpnext/docs/user/manual/index.md
@@ -1,10 +1,7 @@
-<!---
-WORK IN PROGRESS
--->
# ERPNext User Manual
Select your language
-1. [English]({{docs_base_url}}/user/manual/en)
-1. [Deutsch]({{docs_base_url}}/user/manual/de)
-1. [Español]({{docs_base_url}}/user/manual/es)
\ No newline at end of file
+1. [English](/docs/user/manual/en)
+1. [Deutsch](/docs/user/manual/de)
+1. [Español](/docs/user/manual/es)
\ No newline at end of file
diff --git a/erpnext/docs/user/videos/index.md b/erpnext/docs/user/videos/index.md
index 9a82db5..8d3b701 100644
--- a/erpnext/docs/user/videos/index.md
+++ b/erpnext/docs/user/videos/index.md
@@ -1,13 +1,13 @@
# ERPNext Videos
<h3>
- <a class="no-decoration" href="{{docs_base_url}}/user/videos/learn">Learn ERPNext</a>
+ <a class="no-decoration" href="/docs/user/videos/learn">Learn ERPNext</a>
</h3>
<div class="row">
<div class="col-sm-4">
- <a href="{{docs_base_url}}/user/videos/learn">
- <img src="{{docs_base_url}}/assets/img/videos/learn.jpg" class="img-responsive" style="margin-top: 0px;">
+ <a href="/docs/user/videos/learn">
+ <img src="/docs/assets/img/videos/learn.jpg" class="img-responsive" style="margin-top: 0px;">
</a>
</div>
<div class="col-sm-8">
@@ -24,7 +24,7 @@
<div class="row">
<div class="col-sm-4">
<a href="https://conf.erpnext.com/2014/videos">
- <img src="{{docs_base_url}}/assets/img/videos/conf-2014.jpg" class="img-responsive" style="margin-top: 0px;">
+ <img src="/docs/assets/img/videos/conf-2014.jpg" class="img-responsive" style="margin-top: 0px;">
</a>
</div>
<div class="col-sm-8">
diff --git a/erpnext/docs/user/videos/learn/index.md b/erpnext/docs/user/videos/learn/index.md
index faaf49c..dad5cc0 100644
--- a/erpnext/docs/user/videos/learn/index.md
+++ b/erpnext/docs/user/videos/learn/index.md
@@ -11,23 +11,23 @@
<br>
<h3>ERPNext Demonstrations</h3>
<ul class="list-unstyled video-list">
- <li><a href="{{docs_base_url}}/user/videos/learn/services.html">
+ <li><a href="/docs/user/videos/learn/services.html">
ERPNext for Services Business</a>
<span class="text-muted pull-right">52:50</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/distributors.html">
+ <li><a href="/docs/user/videos/learn/distributors.html">
ERPNext for Distributors</a>
<span class="text-muted pull-right">51:47</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/manufacturing-make-to-order.html">
+ <li><a href="/docs/user/videos/learn/manufacturing-make-to-order.html">
ERPNext for Manufacturers</a>
<span class="text-muted pull-right">14:26</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/retailers.html">
+ <li><a href="/docs/user/videos/learn/retailers.html">
ERPNext for Retailers</a>
<span class="text-muted pull-right">39:21</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/schools.html">
+ <li><a href="/docs/user/videos/learn/schools.html">
ERPNext for Schools</a>
<span class="text-muted pull-right">39:21</span>
</li>
@@ -35,7 +35,7 @@
<br>
<h3>Using ERPNext</h3>
<ul class="list-unstyled video-list">
- <li><a href="{{docs_base_url}}/user/videos/learn/navigation.html">
+ <li><a href="/docs/user/videos/learn/navigation.html">
User Interface and Navigation</a>
<span class="text-muted pull-right">2:17</span>
</li>
@@ -43,47 +43,47 @@
<br>
<h3>Setting Up</h3>
<ul class="list-unstyled video-list">
- <li><a href="{{docs_base_url}}/user/videos/learn/setup-wizard.html">
+ <li><a href="/docs/user/videos/learn/setup-wizard.html">
The Setup Wizard</a>
<span class="text-muted pull-right">2:28</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/user-and-permission.html">
+ <li><a href="/docs/user/videos/learn/user-and-permission.html">
User and Permissions</a>
<span class="text-muted pull-right">6:16</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/data-import-tool.html">
+ <li><a href="/docs/user/videos/learn/data-import-tool.html">
Data Import Tool</a>
<span class="text-muted pull-right">6:31</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/printing-and-branding.html">
+ <li><a href="/docs/user/videos/learn/printing-and-branding.html">
Printing and Branding</a>
<span class="text-muted pull-right">4:00</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/customer-and-supplier.html">
+ <li><a href="/docs/user/videos/learn/customer-and-supplier.html">
Customer and Supplier</a>
<span class="text-muted pull-right">4:35</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/item.html">
+ <li><a href="/docs/user/videos/learn/item.html">
Item and Pricing</a>
<span class="text-muted pull-right">3:55</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/opening-stock.html">
+ <li><a href="/docs/user/videos/learn/opening-stock.html">
Opening Stock</a>
<span class="text-muted pull-right">4:27</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/chart-of-accounts.html">
+ <li><a href="/docs/user/videos/learn/chart-of-accounts.html">
Chart of Accounts</a>
<span class="text-muted pull-right">3:10</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/opening-account-balances.html">
+ <li><a href="/docs/user/videos/learn/opening-account-balances.html">
Opening Account Balances</a>
<span class="text-muted pull-right">4:40</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/email-account.html">
+ <li><a href="/docs/user/videos/learn/email-account.html">
Email Account</a>
<span class="text-muted pull-right">2:27</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/file-manager.html">
+ <li><a href="/docs/user/videos/learn/file-manager.html">
File Manager</a>
<span class="text-muted pull-right">2:24</span>
</li>
@@ -91,31 +91,31 @@
<br>
<h3>CRM and Sales</h3>
<ul class="list-unstyled video-list">
- <li><a href="{{docs_base_url}}/user/videos/learn/lead-to-quotation.html">
+ <li><a href="/docs/user/videos/learn/lead-to-quotation.html">
Customer Relationship Management</a>
<span class="text-muted pull-right">3:29</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/customer-and-supplier.html">
+ <li><a href="/docs/user/videos/learn/customer-and-supplier.html">
Customer</a>
<span class="text-muted pull-right">4:35</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/sales-cycle.html">
+ <li><a href="/docs/user/videos/learn/sales-cycle.html">
Sales Order to Payment</a>
<span class="text-muted pull-right">4:28</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/product-bundle.html">
+ <li><a href="/docs/user/videos/learn/product-bundle.html">
Product Bundle</a>
<span class="text-muted pull-right">2:31</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/newsletter.html">
+ <li><a href="/docs/user/videos/learn/newsletter.html">
Newsletter</a>
<span class="text-muted pull-right">2:04</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/taxes.html">
+ <li><a href="/docs/user/videos/learn/taxes.html">
Taxes</a>
<span class="text-muted pull-right">3:00</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/drop-ship.html">
+ <li><a href="/docs/user/videos/learn/drop-ship.html">
Drop Ship</a>
<span class="text-muted pull-right">2:26</span>
</li>
@@ -123,23 +123,23 @@
<br>
<h3>Buying</h3>
<ul class="list-unstyled video-list">
- <li><a href="{{docs_base_url}}/user/videos/learn/customer-and-supplier.html">
+ <li><a href="/docs/user/videos/learn/customer-and-supplier.html">
Supplier</a>
<span class="text-muted pull-right">4:35</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/material-request-to-purchase-order.html">
+ <li><a href="/docs/user/videos/learn/material-request-to-purchase-order.html">
Material Request to Purchase Order</a>
<span class="text-muted pull-right">2:25</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/request-for-quotation.html">
+ <li><a href="/docs/user/videos/learn/request-for-quotation.html">
Request for Quotation</a>
<span class="text-muted pull-right">3:17</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/purchase-cycle.html">
+ <li><a href="/docs/user/videos/learn/purchase-cycle.html">
Purchase Order to Payment</a>
<span class="text-muted pull-right">3:16</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/taxes.html">
+ <li><a href="/docs/user/videos/learn/taxes.html">
Taxes</a>
<span class="text-muted pull-right">5:13</span>
</li>
@@ -147,39 +147,39 @@
<br>
<h3>Stock</h3>
<ul class="list-unstyled video-list">
- <li><a href="{{docs_base_url}}/user/videos/learn/item.html">
+ <li><a href="/docs/user/videos/learn/item.html">
Item and Pricing</a>
<span class="text-muted pull-right">3:17</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/item-variant.html">
+ <li><a href="/docs/user/videos/learn/item-variant.html">
Item Variant</a>
<span class="text-muted pull-right">2:38</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/opening-stock.html">
+ <li><a href="/docs/user/videos/learn/opening-stock.html">
Stock Opening Balance</a>
<span class="text-muted pull-right">4:27</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/stock-entries.html">
+ <li><a href="/docs/user/videos/learn/stock-entries.html">
Stock Entries</a>
<span class="text-muted pull-right">3:46</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/serialized-inventory.html">
+ <li><a href="/docs/user/videos/learn/serialized-inventory.html">
Serialized Inventory</a>
<span class="text-muted pull-right">4:12</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/batch-inventory.html">
+ <li><a href="/docs/user/videos/learn/batch-inventory.html">
Batched Inventory</a>
<span class="text-muted pull-right">3:46</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/subcontracting.html">
+ <li><a href="/docs/user/videos/learn/subcontracting.html">
Managing Subcontracting</a>
<span class="text-muted pull-right">4:37</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/quality-inspection.html">
+ <li><a href="/docs/user/videos/learn/quality-inspection.html">
Quality Inspection</a>
<span class="text-muted pull-right">2:36</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/fixed-assets.html">
+ <li><a href="/docs/user/videos/learn/fixed-assets.html">
Fixed Assets Management</a>
<span class="text-muted pull-right">6:35</span>
</li>
@@ -187,23 +187,23 @@
<br>
<h3>Accounts</h3>
<ul class="list-unstyled video-list">
- <li><a href="{{docs_base_url}}/user/videos/learn/chart-of-accounts.html">
+ <li><a href="/docs/user/videos/learn/chart-of-accounts.html">
Chart of Accounts</a>
<span class="text-muted pull-right">3:10</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/opening-account-balances.html">
+ <li><a href="/docs/user/videos/learn/opening-account-balances.html">
Accounts Opening Balances</a>
<span class="text-muted pull-right">4:40</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/taxes.html">
+ <li><a href="/docs/user/videos/learn/taxes.html">
Taxes</a>
<span class="text-muted pull-right">5:13</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/advance-payments.html">
+ <li><a href="/docs/user/videos/learn/advance-payments.html">
Advance Payments</a>
<span class="text-muted pull-right">2:52</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/budgeting.html">
+ <li><a href="/docs/user/videos/learn/budgeting.html">
Budgeting</a>
<span class="text-muted pull-right">3:26</span>
</li>
@@ -211,25 +211,25 @@
<br>
<h3>Manufacturing</h3>
<ul class="list-unstyled video-list">
- <li><a href="{{docs_base_url}}/user/videos/learn/bill-of-materials.html">
+ <li><a href="/docs/user/videos/learn/bill-of-materials.html">
Bill of Materials</a>
<span class="text-muted pull-right">3:27</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/production-planning.html">
+ <li><a href="/docs/user/videos/learn/production-planning.html">
Production Planning Tool</a>
<span class="text-muted pull-right">1:41</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/production-order.html">
+ <li><a href="/docs/user/videos/learn/production-order.html">
Production Order</a>
<span class="text-muted pull-right">2:24</span>
</li>
<li>
- <a href="{{docs_base_url}}/user/videos/learn/manufacturing-make-to-order.html">
+ <a href="/docs/user/videos/learn/manufacturing-make-to-order.html">
ERPNext for Manufacturers (Make to Order)</a>
<span class="text-muted pull-right">14:26</span>
</li>
<li>
- <a href="{{docs_base_url}}/user/videos/learn/manufacturing-enigneer-to-order.html">
+ <a href="/docs/user/videos/learn/manufacturing-enigneer-to-order.html">
ERPNext for Manufacturers (Engineer to Order)</a>
<span class="text-muted pull-right">44:40</span>
</li>
@@ -237,19 +237,19 @@
<br>
<h3>Human Resource</h3>
<ul class="list-unstyled video-list">
- <li><a href="{{docs_base_url}}/user/videos/learn/employee.html">
+ <li><a href="/docs/user/videos/learn/employee.html">
Employees</a>
<span class="text-muted pull-right">1:59</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/processing-payroll.html">
+ <li><a href="/docs/user/videos/learn/processing-payroll.html">
Processing Payroll</a>
<span class="text-muted pull-right">4:00</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/leave-management.html">
+ <li><a href="/docs/user/videos/learn/leave-management.html">
Leave Management</a>
<span class="text-muted pull-right">2:50</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/expense-claim.html">
+ <li><a href="/docs/user/videos/learn/expense-claim.html">
Expense Claims</a>
<span class="text-muted pull-right">2:52</span>
</li>
@@ -257,11 +257,11 @@
<br>
<h3>Retail</h3>
<ul class="list-unstyled video-list">
- <li><a href="{{docs_base_url}}/user/videos/learn/point-of-sale.html">
+ <li><a href="/docs/user/videos/learn/point-of-sale.html">
Point of Sale</a>
<span class="text-muted pull-right">2:34</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/retailers.html">
+ <li><a href="/docs/user/videos/learn/retailers.html">
ERPNext for Retailers (Demo)</a>
<span class="text-muted pull-right">39:21</span>
</li>
@@ -269,7 +269,7 @@
<br>
<h3>Project</h3>
<ul class="list-unstyled video-list">
- <li><a href="{{docs_base_url}}/user/videos/learn/project-and-task.html">
+ <li><a href="/docs/user/videos/learn/project-and-task.html">
Project and Task</a>
<span class="text-muted pull-right">3:52</span>
</li>
@@ -277,10 +277,10 @@
<br>
<h3>Website</h3>
<ul class="list-unstyled video-list">
- <li><a href="{{docs_base_url}}/user/videos/learn/publish-items-on-website.html">
+ <li><a href="/docs/user/videos/learn/publish-items-on-website.html">
Publish Items on Website</a>
<span class="text-muted pull-right">5:14</span>
- </li><li><a href="{{docs_base_url}}/user/videos/learn/shopping-cart.html">
+ </li><li><a href="/docs/user/videos/learn/shopping-cart.html">
Shopping Cart</a>
<span class="text-muted pull-right">6:32</span>
</li>
@@ -288,19 +288,19 @@
<br>
<h3>Customization</h3>
<ul class="list-unstyled video-list">
- <li><a href="{{docs_base_url}}/user/videos/learn/field-customization.html">
+ <li><a href="/docs/user/videos/learn/field-customization.html">
Field Customization</a>
<span class="text-muted pull-right">3:10</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/bulk-update.html">
+ <li><a href="/docs/user/videos/learn/bulk-update.html">
Bulk Update Data</a>
<span class="text-muted pull-right">1:38</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/workflow.html">
+ <li><a href="/docs/user/videos/learn/workflow.html">
Workflow</a>
<span class="text-muted pull-right">3:38</span>
</li>
- <li><a href="{{docs_base_url}}/user/videos/learn/report-builder.html">
+ <li><a href="/docs/user/videos/learn/report-builder.html">
Report Builder</a>
<span class="text-muted pull-right">4:27</span>
</li>
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 472d8f9..fc8d39b 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -62,75 +62,85 @@
{"from_route": "/orders/<path:name>", "to_route": "order",
"defaults": {
"doctype": "Sales Order",
- "parents": [{"title": _("Orders"), "name": "orders"}]
+ "parents": [{"label": _("Orders"), "route": "orders"}]
}
},
{"from_route": "/invoices", "to_route": "Sales Invoice"},
{"from_route": "/invoices/<path:name>", "to_route": "order",
"defaults": {
"doctype": "Sales Invoice",
- "parents": [{"title": _("Invoices"), "name": "invoices"}]
+ "parents": [{"label": _("Invoices"), "route": "invoices"}]
}
},
- {"from_route": "/quotations", "to_route": "Supplier Quotation"},
- {"from_route": "/quotations/<path:name>", "to_route": "order",
+ {"from_route": "/supplier-quotations", "to_route": "Supplier Quotation"},
+ {"from_route": "/supplier-quotations/<path:name>", "to_route": "order",
"defaults": {
"doctype": "Supplier Quotation",
- "parents": [{"title": _("Supplier Quotation"), "name": "quotations"}]
+ "parents": [{"label": _("Supplier Quotation"), "route": "quotations"}]
}
},
- {"from_route": "/quotation", "to_route": "Quotation"},
+ {"from_route": "/quotations", "to_route": "Quotation"},
+ {"from_route": "/quotations/<path:name>", "to_route": "order",
+ "defaults": {
+ "doctype": "Quotation",
+ "parents": [{"label": _("Quotations"), "route": "quotation"}]
+ }
+ },
{"from_route": "/shipments", "to_route": "Delivery Note"},
{"from_route": "/shipments/<path:name>", "to_route": "order",
"defaults": {
"doctype": "Delivery Note",
- "parents": [{"title": _("Shipments"), "name": "shipments"}]
+ "parents": [{"label": _("Shipments"), "route": "shipments"}]
}
},
{"from_route": "/rfq", "to_route": "Request for Quotation"},
{"from_route": "/rfq/<path:name>", "to_route": "rfq",
"defaults": {
"doctype": "Request for Quotation",
- "parents": [{"title": _("Request for Quotation"), "name": "rfq"}]
+ "parents": [{"label": _("Request for Quotation"), "route": "rfq"}]
}
},
{"from_route": "/addresses", "to_route": "Address"},
{"from_route": "/addresses/<path:name>", "to_route": "addresses",
"defaults": {
"doctype": "Address",
- "parents": [{"title": _("Addresses"), "name": "addresses"}]
+ "parents": [{"label": _("Addresses"), "route": "addresses"}]
}
},
{"from_route": "/jobs", "to_route": "Job Opening"},
{"from_route": "/admissions", "to_route": "Student Admission"},
- {"from_route": "/boms", "to_route": "BOM"}
+ {"from_route": "/boms", "to_route": "BOM"},
+ {"from_route": "/timesheets", "to_route": "Timesheet"},
]
standard_portal_menu_items = [
{"title": _("Projects"), "route": "/project", "reference_doctype": "Project"},
{"title": _("Request for Quotations"), "route": "/rfq", "reference_doctype": "Request for Quotation", "role": "Supplier"},
- {"title": _("Supplier Quotation"), "route": "/quotations", "reference_doctype": "Supplier Quotation", "role": "Supplier"},
- {"title": _("Quotations"), "route": "/quotation", "reference_doctype": "Quotation", "role":"Customer"},
+ {"title": _("Supplier Quotation"), "route": "/supplier-quotations", "reference_doctype": "Supplier Quotation", "role": "Supplier"},
+ {"title": _("Quotations"), "route": "/quotations", "reference_doctype": "Quotation", "role":"Customer"},
{"title": _("Orders"), "route": "/orders", "reference_doctype": "Sales Order", "role":"Customer"},
{"title": _("Invoices"), "route": "/invoices", "reference_doctype": "Sales Invoice", "role":"Customer"},
{"title": _("Shipments"), "route": "/shipments", "reference_doctype": "Delivery Note", "role":"Customer"},
{"title": _("Issues"), "route": "/issues", "reference_doctype": "Issue", "role":"Customer"},
{"title": _("Addresses"), "route": "/addresses", "reference_doctype": "Address"},
- {"title": _("Fees"), "route": "/fees", "reference_doctype": "Fees", "role":"Student"}
+ {"title": _("Fees"), "route": "/fees", "reference_doctype": "Fees", "role":"Student"},
+ {"title": _("Timesheets"), "route": "/timesheets", "reference_doctype": "Timesheet", "role":"Customer"}
]
default_roles = [
{'role': 'Customer', 'doctype':'Contact', 'email_field': 'email_id'},
{'role': 'Supplier', 'doctype':'Contact', 'email_field': 'email_id'},
- {'role': 'Student', 'doctype':'Student', 'email_field': 'student_email_id'}
+ {'role': 'Student', 'doctype':'Student', 'email_field': 'student_email_id'},
]
has_website_permission = {
"Sales Order": "erpnext.controllers.website_list_for_contact.has_website_permission",
+ "Quotation": "erpnext.controllers.website_list_for_contact.has_website_permission",
"Sales Invoice": "erpnext.controllers.website_list_for_contact.has_website_permission",
"Supplier Quotation": "erpnext.controllers.website_list_for_contact.has_website_permission",
"Delivery Note": "erpnext.controllers.website_list_for_contact.has_website_permission",
- "Issue": "erpnext.support.doctype.issue.issue.has_website_permission"
+ "Issue": "erpnext.support.doctype.issue.issue.has_website_permission",
+ "Timesheet": "erpnext.controllers.website_list_for_contact.has_website_permission"
}
dump_report_map = "erpnext.startup.report_data_map.data_map"
@@ -184,17 +194,21 @@
"erpnext.accounts.doctype.asset.depreciation.post_depreciation_entries",
"erpnext.hr.doctype.daily_work_summary_settings.daily_work_summary_settings.send_summary",
"erpnext.stock.doctype.serial_no.serial_no.update_maintenance_status",
+ "erpnext.buying.doctype.supplier_scorecard.supplier_scorecard.refresh_scorecards",
"erpnext.setup.doctype.company.company.cache_companies_monthly_sales_history"
]
}
email_brand_image = "assets/erpnext/images/erpnext-logo.jpg"
-default_mail_footer = """<div style="text-align: center;">
- <a href="https://erpnext.com?source=via_email_footer" target="_blank" style="color: #8d99a6;">
- Sent via ERPNext
- </a>
-</div>"""
+default_mail_footer = """
+ <span>
+ Sent via
+ <a class="text-muted" href="https://erpnext.com?source=via_email_footer" target="_blank">
+ ERPNext
+ </a>
+ </span>
+"""
get_translated_dict = {
("doctype", "Global Defaults"): "frappe.geo.country_info.get_translated_dict"
diff --git a/erpnext/hr/doctype/attendance/test_attendance.js b/erpnext/hr/doctype/attendance/test_attendance.js
new file mode 100644
index 0000000..82347ad
--- /dev/null
+++ b/erpnext/hr/doctype/attendance/test_attendance.js
@@ -0,0 +1,35 @@
+QUnit.module('hr');
+
+QUnit.test("Test: Attendance [HR]", function (assert) {
+ assert.expect(4);
+ let done = assert.async();
+
+ frappe.run_serially([
+ // test attendance creation for one employee
+ () => frappe.set_route("List", "Attendance", "List"),
+ () => frappe.timeout(0.5),
+ () => frappe.new_doc("Attendance"),
+ () => frappe.timeout(1),
+ () => assert.equal("Attendance", cur_frm.doctype,
+ "Form for new Attendance opened successfully."),
+ // set values in form
+ () => cur_frm.set_value("company", "Test Company"),
+ () => frappe.db.get_value('Employee', {'employee_name':'Test Employee 1'}, 'name'),
+ (employee) => cur_frm.set_value("employee", employee.message.name),
+ () => cur_frm.save(),
+ () => frappe.timeout(1),
+ // check docstatus of attendance before submit [Draft]
+ () => assert.equal("0", cur_frm.doc.docstatus,
+ "attendance is currently drafted"),
+ // check docstatus of attendance after submit [Present]
+ () => cur_frm.savesubmit(),
+ () => frappe.timeout(0.5),
+ () => frappe.click_button('Yes'),
+ () => assert.equal("1", cur_frm.doc.docstatus,
+ "attendance is saved after submit"),
+ // check if auto filled date is present day
+ () => assert.equal(frappe.datetime.nowdate(), cur_frm.doc.attendance_date,
+ "attendance for Present day is marked"),
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/hr/doctype/branch/test_branch.js b/erpnext/hr/doctype/branch/test_branch.js
new file mode 100644
index 0000000..446db75
--- /dev/null
+++ b/erpnext/hr/doctype/branch/test_branch.js
@@ -0,0 +1,22 @@
+QUnit.module('hr');
+
+QUnit.test("Test: Branch [HR]", function (assert) {
+ assert.expect(1);
+ let done = assert.async();
+
+ frappe.run_serially([
+ // test branch creation
+ () => frappe.set_route("List", "Branch", "List"),
+ () => frappe.new_doc("Branch"),
+ () => frappe.timeout(1),
+ () => frappe.click_link('Edit in full page'),
+ () => cur_frm.set_value("branch", "Test Branch"),
+
+ // save form
+ () => cur_frm.save(),
+ () => frappe.timeout(1),
+ () => assert.equal("Test Branch", cur_frm.doc.branch,
+ 'name of branch correctly saved'),
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/hr/doctype/department/test_department.js b/erpnext/hr/doctype/department/test_department.js
new file mode 100644
index 0000000..1c413e9
--- /dev/null
+++ b/erpnext/hr/doctype/department/test_department.js
@@ -0,0 +1,22 @@
+QUnit.module('hr');
+
+QUnit.test("Test: Department [HR]", function (assert) {
+ assert.expect(1);
+ let done = assert.async();
+
+ frappe.run_serially([
+ // test department creation
+ () => frappe.set_route("List", "Department", "List"),
+ () => frappe.new_doc("Department"),
+ () => frappe.timeout(1),
+ () => frappe.click_link('Edit in full page'),
+ () => cur_frm.set_value("department_name", "Test Department"),
+ () => cur_frm.set_value("leave_block_list", "Test Leave block list"),
+ // save form
+ () => cur_frm.save(),
+ () => frappe.timeout(1),
+ () => assert.equal("Test Department", cur_frm.doc.department_name,
+ 'name of department correctly saved'),
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/hr/doctype/designation/test_designation.js b/erpnext/hr/doctype/designation/test_designation.js
new file mode 100644
index 0000000..a012877
--- /dev/null
+++ b/erpnext/hr/doctype/designation/test_designation.js
@@ -0,0 +1,22 @@
+QUnit.module('hr');
+
+QUnit.test("Test: Designation [HR]", function (assert) {
+ assert.expect(1);
+ let done = assert.async();
+
+ frappe.run_serially([
+ // test designation creation
+ () => frappe.set_route("List", "Designation", "List"),
+ () => frappe.new_doc("Designation"),
+ () => frappe.timeout(1),
+ () => frappe.click_link('Edit in full page'),
+ () => cur_frm.set_value("designation_name", "Test Designation"),
+ () => cur_frm.set_value("description", "This designation is just for testing."),
+ // save form
+ () => cur_frm.save(),
+ () => frappe.timeout(1),
+ () => assert.equal("Test Designation", cur_frm.doc.designation_name,
+ 'name of designation correctly saved'),
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/hr/doctype/employee/test_employee.js b/erpnext/hr/doctype/employee/test_employee.js
new file mode 100644
index 0000000..64a6b7a
--- /dev/null
+++ b/erpnext/hr/doctype/employee/test_employee.js
@@ -0,0 +1,39 @@
+QUnit.module('hr');
+
+QUnit.test("Test: Employee [HR]", function (assert) {
+ assert.expect(3);
+ let done = assert.async();
+ let today_date = frappe.datetime.nowdate();
+
+ frappe.run_serially([
+ // test employee creation
+ () => frappe.set_route("List", "Employee", "List"),
+ () => frappe.new_doc("Employee"),
+ () => frappe.timeout(1),
+ () => cur_frm.set_value("employee_name", "Test Employee 1"),
+ () => cur_frm.set_value("salutation", "Ms"),
+ () => cur_frm.set_value("company", "Test Company"),
+ () => cur_frm.set_value("date_of_joining", frappe.datetime.add_months(today_date, -2)), // joined 2 month from now
+ () => cur_frm.set_value("date_of_birth", frappe.datetime.add_months(today_date, -240)), // age is 20 years
+ () => cur_frm.set_value("employment_type", "Test Employment type"),
+ () => cur_frm.set_value("holiday_list", "Test Holiday list"),
+ () => cur_frm.set_value("branch", "Test Branch"),
+ () => cur_frm.set_value("department", "Test Department"),
+ () => cur_frm.set_value("designation", "Test Designation"),
+ () => frappe.click_button('Add Row'),
+ () => cur_frm.fields_dict.leave_approvers.grid.grid_rows[0].doc.leave_approver="Administrator",
+ // save data
+ () => cur_frm.save(),
+ () => frappe.timeout(1),
+ // check name of employee
+ () => assert.equal("Test Employee 1", cur_frm.doc.employee_name,
+ 'name of employee correctly saved'),
+ // check auto filled gender according to salutation
+ () => assert.equal("Female", cur_frm.doc.gender,
+ 'gender correctly saved as per salutation'),
+ // check auto filled retirement date [60 years from DOB]
+ () => assert.equal(frappe.datetime.add_months(today_date, 480), cur_frm.doc.date_of_retirement, // 40 years from now
+ 'retirement date correctly saved as per date of birth'),
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/hr/doctype/employee_attendance_tool/test_employee_attendance_tool.js b/erpnext/hr/doctype/employee_attendance_tool/test_employee_attendance_tool.js
new file mode 100644
index 0000000..a71ba0f
--- /dev/null
+++ b/erpnext/hr/doctype/employee_attendance_tool/test_employee_attendance_tool.js
@@ -0,0 +1,49 @@
+QUnit.module('hr');
+
+QUnit.test("Test: Employee attendance tool [HR]", function (assert) {
+ assert.expect(3);
+ let done = assert.async();
+ let today_date = frappe.datetime.nowdate();
+ let date_of_attendance = frappe.datetime.add_days(today_date, -1); // previous day
+
+ frappe.run_serially([
+ // create employee
+ () => {
+ return frappe.tests.make('Employee', [
+ {salutation: "Mr"},
+ {employee_name: "Test Employee 2"},
+ {company: "Test Company"},
+ {date_of_joining: frappe.datetime.add_months(today_date, -2)}, // joined 2 month from now
+ {date_of_birth: frappe.datetime.add_months(today_date, -240)}, // age is 20 years
+ {employment_type: "Test Employment type"},
+ {holiday_list: "Test Holiday list"},
+ {branch: "Test Branch"},
+ {department: "Test Department"},
+ {designation: "Test Designation"}
+ ]);
+ },
+ () => frappe.set_route("Form", "Employee Attendance Tool"),
+ () => frappe.timeout(0.5),
+ () => assert.equal("Employee Attendance Tool", cur_frm.doctype,
+ "Form for Employee Attendance Tool opened successfully."),
+ // set values in form
+ () => cur_frm.set_value("date", date_of_attendance),
+ () => cur_frm.set_value("branch", "Test Branch"),
+ () => cur_frm.set_value("department", "Test Department"),
+ () => cur_frm.set_value("company", "Test Company"),
+ () => frappe.timeout(1),
+ () => frappe.click_button('Check all'),
+ () => frappe.click_button('Mark Present'),
+ // check if attendance is marked
+ () => frappe.set_route("List", "Attendance", "List"),
+ () => frappe.timeout(1),
+ () => {
+ assert.deepEqual(["Test Employee 2", "Test Employee 1"], [cur_list.data[0].employee_name, cur_list.data[1].employee_name],
+ "marked attendance correctly saved for both employee");
+ let marked_attendance = cur_list.data.filter(d => d.attendance_date == date_of_attendance);
+ assert.equal(marked_attendance.length, 2,
+ 'both the attendance are marked for correct date');
+ },
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/hr/doctype/employee_loan/employee_loan.js b/erpnext/hr/doctype/employee_loan/employee_loan.js
index 9720bcb..33d3a85 100644
--- a/erpnext/hr/doctype/employee_loan/employee_loan.js
+++ b/erpnext/hr/doctype/employee_loan/employee_loan.js
@@ -23,6 +23,14 @@
};
});
+ frm.set_query("employee", function() {
+ return {
+ "filters": {
+ "company": frm.doc.company,
+ }
+ };
+ });
+
$.each(["payment_account", "employee_loan_account"], function (i, field) {
frm.set_query(field, function () {
return {
diff --git a/erpnext/hr/doctype/employment_type/test_employment_type.js b/erpnext/hr/doctype/employment_type/test_employment_type.js
new file mode 100644
index 0000000..0ddd3e0
--- /dev/null
+++ b/erpnext/hr/doctype/employment_type/test_employment_type.js
@@ -0,0 +1,21 @@
+QUnit.module('hr');
+
+QUnit.test("Test: Employment type [HR]", function (assert) {
+ assert.expect(1);
+ let done = assert.async();
+
+ frappe.run_serially([
+ // test employment type creation
+ () => frappe.set_route("List", "Employment Type", "List"),
+ () => frappe.new_doc("Employment Type"),
+ () => frappe.timeout(1),
+ () => frappe.click_link('Edit in full page'),
+ () => cur_frm.set_value("employee_type_name", "Test Employment type"),
+ // save form
+ () => cur_frm.save(),
+ () => frappe.timeout(1),
+ () => assert.equal("Test Employment type", cur_frm.doc.employee_type_name,
+ 'name of employment type correctly saved'),
+ () => done()
+ ]);
+});
\ 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 b1c43d7..0bd8911 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.js
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.js
@@ -4,26 +4,12 @@
frappe.provide("erpnext.hr");
erpnext.hr.ExpenseClaimController = frappe.ui.form.Controller.extend({
- make_bank_entry: function() {
- var me = this;
- return frappe.call({
- method: "erpnext.hr.doctype.expense_claim.expense_claim.make_bank_entry",
- args: {
- "docname": cur_frm.doc.name,
- },
- callback: function(r) {
- var doc = frappe.model.sync(r.message);
- frappe.set_route('Form', 'Journal Entry', r.message.name);
- }
- });
- },
-
expense_type: function(doc, cdt, cdn) {
var d = locals[cdt][cdn];
if(!doc.company) {
d.expense_type = "";
frappe.msgprint(__("Please set the Company"));
- this.frm.refresh_fields()
+ this.frm.refresh_fields();
return;
}
@@ -44,16 +30,16 @@
}
});
}
-})
+});
$.extend(cur_frm.cscript, new erpnext.hr.ExpenseClaimController({frm: cur_frm}));
cur_frm.add_fetch('employee', 'company', 'company');
cur_frm.add_fetch('employee','employee_name','employee_name');
-cur_frm.cscript.onload = function(doc,cdt,cdn) {
+cur_frm.cscript.onload = function(doc) {
if(!doc.approval_status)
- cur_frm.set_value("approval_status", "Draft")
+ cur_frm.set_value("approval_status", "Draft");
if (doc.__islocal) {
cur_frm.set_value("posting_date", frappe.datetime.get_today());
@@ -62,10 +48,10 @@
cur_frm.cscript.clear_sanctioned(doc);
}
- cur_frm.fields_dict.employee.get_query = function(doc,cdt,cdn) {
- return{
+ cur_frm.fields_dict.employee.get_query = function() {
+ return {
query: "erpnext.controllers.queries.employee_query"
- }
+ };
};
cur_frm.set_query("exp_approver", function() {
@@ -73,7 +59,7 @@
query: "erpnext.hr.doctype.expense_claim.expense_claim.get_expense_approver"
};
});
-}
+};
cur_frm.cscript.clear_sanctioned = function(doc) {
var val = doc.expenses || [];
@@ -83,9 +69,9 @@
doc.total_sanctioned_amount = '';
refresh_many(['sanctioned_amount', 'total_sanctioned_amount']);
-}
+};
-cur_frm.cscript.refresh = function(doc,cdt,cdn) {
+cur_frm.cscript.refresh = function(doc) {
cur_frm.cscript.set_help(doc);
if(!doc.__islocal) {
@@ -96,11 +82,6 @@
cur_frm.savesubmit();
if (doc.docstatus===1 && doc.approval_status=="Approved") {
- if (cint(doc.total_amount_reimbursed) < cint(doc.total_sanctioned_amount) && frappe.model.can_create("Journal Entry")) {
- cur_frm.add_custom_button(__("Bank Entry"), cur_frm.cscript.make_bank_entry, __("Make"));
- cur_frm.page.set_inner_btn_group_as_primary(__("Make"));
- }
-
/* eslint-disable */
// no idea how `me` works here
if (cint(doc.total_amount_reimbursed) > 0 && frappe.model.can_read("Journal Entry")) {
@@ -116,12 +97,12 @@
/* eslint-enable */
}
}
-}
+};
cur_frm.cscript.set_help = function(doc) {
cur_frm.set_intro("");
if(doc.__islocal && !in_list(frappe.user_roles, "HR User")) {
- cur_frm.set_intro(__("Fill the form and save it"))
+ cur_frm.set_intro(__("Fill the form and save it"));
} else {
if(doc.docstatus==0 && doc.approval_status=="Draft") {
if(frappe.session.user==doc.exp_approver) {
@@ -131,13 +112,13 @@
}
}
}
-}
+};
cur_frm.cscript.validate = function(doc) {
cur_frm.cscript.calculate_total(doc);
-}
+};
-cur_frm.cscript.calculate_total = function(doc,cdt,cdn){
+cur_frm.cscript.calculate_total = function(doc){
doc.total_claimed_amount = 0;
doc.total_sanctioned_amount = 0;
$.each((doc.expenses || []), function(i, d) {
@@ -147,18 +128,17 @@
refresh_field("total_claimed_amount");
refresh_field('total_sanctioned_amount');
-
-}
+};
cur_frm.cscript.calculate_total_amount = function(doc,cdt,cdn){
cur_frm.cscript.calculate_total(doc,cdt,cdn);
-}
+};
-cur_frm.cscript.on_submit = function(doc, cdt, cdn) {
+cur_frm.cscript.on_submit = function() {
if(cint(frappe.boot.notification_settings && frappe.boot.notification_settings.expense_claim)) {
cur_frm.email_doc(frappe.boot.notification_settings.expense_claim_message);
}
-}
+};
erpnext.expense_claim = {
set_title :function(frm) {
@@ -169,11 +149,20 @@
frm.set_value("title", frm.doc.employee_name + " for "+ frm.doc.task);
}
}
-}
+};
frappe.ui.form.on("Expense Claim", {
+ setup: function(frm) {
+ frm.trigger("set_query_for_cost_center");
+ frm.trigger("set_query_for_payable_account");
+ frm.add_fetch("company", "cost_center", "cost_center");
+ frm.add_fetch("company", "default_payable_account", "payable_account");
+ },
+
refresh: function(frm) {
- if(frm.doc.docstatus == 1) {
+ frm.trigger("toggle_fields");
+
+ if(frm.doc.docstatus == 1 && frm.doc.approval_status == 'Approved') {
frm.add_custom_button(__('Accounting Ledger'), function() {
frappe.route_options = {
voucher_no: frm.doc.name,
@@ -183,47 +172,41 @@
frappe.set_route("query-report", "General Ledger");
}, __("View"));
}
- }
-})
-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)
+ if (frm.doc.docstatus===1 && frm.doc.approval_status=="Approved"
+ && (cint(frm.doc.total_amount_reimbursed) < cint(frm.doc.total_sanctioned_amount))
+ && frappe.model.can_create("Payment Entry")) {
+ frm.add_custom_button(__('Payment'),
+ function() { frm.events.make_payment_entry(frm); }, __("Make"));
}
-
- 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",{
- setup: function(frm) {
- frm.trigger("set_query_for_cost_center")
- frm.trigger("set_query_for_payable_account")
- frm.add_fetch("company", "cost_center", "cost_center");
- frm.add_fetch("company", "default_payable_account", "payable_account");
+ make_payment_entry: function(frm) {
+ var method = "erpnext.accounts.doctype.payment_entry.payment_entry.get_payment_entry";
+ if(frm.doc.__onload && frm.doc.__onload.make_payment_via_journal_entry) {
+ method = "erpnext.hr.doctype.expense_claim.expense_claim.make_bank_entry"
+ }
+ return frappe.call({
+ method: method,
+ args: {
+ "dt": frm.doc.doctype,
+ "dn": frm.doc.name
+ },
+ callback: function(r) {
+ var doclist = frappe.model.sync(r.message);
+ frappe.set_route("Form", doclist[0].doctype, doclist[0].name);
+ }
+ });
},
-
- refresh: function(frm) {
- frm.trigger("toggle_fields")
- },
-
+
set_query_for_cost_center: function(frm) {
frm.fields_dict["cost_center"].get_query = function() {
return {
filters: {
"company": frm.doc.company
}
- }
- }
+ };
+ };
},
set_query_for_payable_account: function(frm) {
@@ -233,25 +216,43 @@
"report_type": "Balance Sheet",
"account_type": "Payable"
}
- }
- }
+ };
+ };
},
is_paid: function(frm) {
- frm.trigger("toggle_fields")
+ frm.trigger("toggle_fields");
},
toggle_fields: function(frm) {
- frm.toggle_reqd("mode_of_payment", frm.doc.is_paid)
+ frm.toggle_reqd("mode_of_payment", frm.doc.is_paid);
+ },
+
+ employee_name: function(frm) {
+ erpnext.expense_claim.set_title(frm);
+ },
+
+ task: function(frm) {
+ erpnext.expense_claim.set_title(frm);
}
});
-frappe.ui.form.on("Expense Claim", "employee_name", function(frm) {
- erpnext.expense_claim.set_title(frm);
-});
+frappe.ui.form.on("Expense Claim Detail", {
+ claim_amount: function(frm, cdt, cdn) {
+ var child = locals[cdt][cdn];
+ var doc = frm.doc;
-frappe.ui.form.on("Expense Claim", "task", function(frm) {
- erpnext.expense_claim.set_title(frm);
+ 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);
+ }
});
cur_frm.fields_dict['task'].get_query = function(doc) {
@@ -259,5 +260,5 @@
filters:{
'project': doc.project
}
- }
-}
+ };
+};
diff --git a/erpnext/hr/doctype/expense_claim/expense_claim.py b/erpnext/hr/doctype/expense_claim/expense_claim.py
index 2781f28..507d6a9 100644
--- a/erpnext/hr/doctype/expense_claim/expense_claim.py
+++ b/erpnext/hr/doctype/expense_claim/expense_claim.py
@@ -16,6 +16,10 @@
class InvalidExpenseApproverError(frappe.ValidationError): pass
class ExpenseClaim(AccountsController):
+ def onload(self):
+ self.get("__onload").make_payment_via_journal_entry = frappe.db.get_single_value('Accounts Settings',
+ 'make_payment_via_journal_entry')
+
def get_feed(self):
return _("{0}: From {0} for {1}").format(self.approval_status,
self.employee_name, self.total_claimed_amount)
@@ -207,10 +211,10 @@
""", ("%" + txt + "%"))
@frappe.whitelist()
-def make_bank_entry(docname):
+def make_bank_entry(dt, dn):
from erpnext.accounts.doctype.journal_entry.journal_entry import get_default_bank_cash_account
- expense_claim = frappe.get_doc("Expense Claim", docname)
+ expense_claim = frappe.get_doc(dt, dn)
default_bank_cash_account = get_default_bank_cash_account(expense_claim.company, "Bank")
if not default_bank_cash_account:
default_bank_cash_account = get_default_bank_cash_account(expense_claim.company, "Cash")
@@ -218,7 +222,7 @@
je = frappe.new_doc("Journal Entry")
je.voucher_type = 'Bank Entry'
je.company = expense_claim.company
- je.remark = 'Payment against Expense Claim: ' + docname;
+ je.remark = 'Payment against Expense Claim: ' + dn;
je.append("accounts", {
"account": expense_claim.payable_account,
diff --git a/erpnext/hr/doctype/expense_claim/test_expense_claim.py b/erpnext/hr/doctype/expense_claim/test_expense_claim.py
index e8c24bb..b813537 100644
--- a/erpnext/hr/doctype/expense_claim/test_expense_claim.py
+++ b/erpnext/hr/doctype/expense_claim/test_expense_claim.py
@@ -14,6 +14,7 @@
frappe.db.sql("""delete from `tabTask` where project = "_Test Project 1" """)
frappe.db.sql("""delete from `tabProject` where name = "_Test Project 1" """)
+
frappe.get_doc({
"project_name": "_Test Project 1",
"doctype": "Project",
@@ -24,54 +25,27 @@
task_name = frappe.db.get_value("Task", {"project": "_Test Project 1"})
payable_account = get_payable_account("Wind Power LLC")
- expense_claim = frappe.get_doc({
- "doctype": "Expense Claim",
- "employee": "_T-Employee-0001",
- "payable_account": payable_account,
- "approval_status": "Approved",
- "project": "_Test Project 1",
- "task": task_name,
- "expenses":
- [{ "expense_type": "Travel", "default_account": "Travel Expenses - WP", "claim_amount": 300, "sanctioned_amount": 200 }]
- })
- expense_claim.submit()
+ make_expense_claim(payable_account, 300, 200, "Wind Power LLC","Travel Expenses - WP", "_Test Project 1", task_name)
self.assertEqual(frappe.db.get_value("Task", task_name, "total_expense_claim"), 200)
self.assertEqual(frappe.db.get_value("Project", "_Test Project 1", "total_expense_claim"), 200)
- expense_claim2 = frappe.get_doc({
- "doctype": "Expense Claim",
- "employee": "_T-Employee-0001",
- "approval_status": "Approved",
- "project": "_Test Project 1",
- "task": task_name,
- "expenses":
- [{ "expense_type": "Travel", "default_account": "Travel Expenses - WP", "claim_amount": 600, "sanctioned_amount": 500 }]
- })
- expense_claim2.submit()
+ expense_claim2 = make_expense_claim(payable_account, 600, 500, "Wind Power LLC", "Travel Expenses - WP","_Test Project 1", task_name)
self.assertEqual(frappe.db.get_value("Task", task_name, "total_expense_claim"), 700)
self.assertEqual(frappe.db.get_value("Project", "_Test Project 1", "total_expense_claim"), 700)
expense_claim2.cancel()
- frappe.delete_doc("Expenses Claim", expense_claim2.name)
+ frappe.delete_doc("Expense Claim", expense_claim2.name)
self.assertEqual(frappe.db.get_value("Task", task_name, "total_expense_claim"), 200)
self.assertEqual(frappe.db.get_value("Project", "_Test Project 1", "total_expense_claim"), 200)
-
+
def test_expense_claim_status(self):
payable_account = get_payable_account("Wind Power LLC")
- expense_claim = frappe.get_doc({
- "doctype": "Expense Claim",
- "employee": "_T-Employee-0001",
- "payable_account": payable_account,
- "approval_status": "Approved",
- "expenses":
- [{ "expense_type": "Travel", "default_account": "Travel Expenses - WP", "claim_amount": 300, "sanctioned_amount": 200 }]
- })
- expense_claim.submit()
+ expense_claim = make_expense_claim(payable_account, 300, 200, "Wind Power LLC", "Travel Expenses - WP")
- je_dict = make_bank_entry(expense_claim.name)
+ je_dict = make_bank_entry("Expense Claim", expense_claim.name)
je = frappe.get_doc(je_dict)
je.posting_date = nowdate()
je.cheque_no = random_string(5)
@@ -80,23 +54,16 @@
expense_claim = frappe.get_doc("Expense Claim", expense_claim.name)
self.assertEqual(expense_claim.status, "Paid")
-
+
je.cancel()
expense_claim = frappe.get_doc("Expense Claim", expense_claim.name)
self.assertEqual(expense_claim.status, "Unpaid")
def test_expense_claim_gl_entry(self):
payable_account = get_payable_account("Wind Power LLC")
- expense_claim = frappe.get_doc({
- "doctype": "Expense Claim",
- "employee": "_T-Employee-0001",
- "payable_account": payable_account,
- "approval_status": "Approved",
- "expenses":
- [{ "expense_type": "Travel", "default_account": "Travel Expenses - WP", "claim_amount": 300, "sanctioned_amount": 200 }]
- })
+ expense_claim = make_expense_claim(payable_account, 300, 200, "Wind Power LLC", "Travel Expenses - WP")
expense_claim.submit()
-
+
gl_entries = frappe.db.sql("""select account, debit, credit
from `tabGL Entry` where voucher_type='Expense Claim' and voucher_no=%s
order by account asc""", expense_claim.name, as_dict=1)
@@ -133,3 +100,23 @@
def get_payable_account(company):
return frappe.db.get_value('Company', company, 'default_payable_account')
+
+def make_expense_claim(payable_account,claim_amount, sanctioned_amount, company, account, project=None, task_name=None):
+ expense_claim = frappe.get_doc({
+ "doctype": "Expense Claim",
+ "employee": "_T-Employee-0001",
+ "payable_account": payable_account,
+ "approval_status": "Approved",
+ "company": company,
+ "expenses":
+ [{ "expense_type": "Travel", "default_account": account, "claim_amount": claim_amount, "sanctioned_amount": sanctioned_amount }]
+ })
+ if project:
+ expense_claim.project = project
+ if task_name:
+ expense_claim.task = task_name
+
+ expense_claim.submit()
+ return expense_claim
+
+
diff --git a/erpnext/hr/doctype/holiday_list/test_holiday_list.js b/erpnext/hr/doctype/holiday_list/test_holiday_list.js
new file mode 100644
index 0000000..bfcafa9
--- /dev/null
+++ b/erpnext/hr/doctype/holiday_list/test_holiday_list.js
@@ -0,0 +1,42 @@
+QUnit.module('hr');
+
+QUnit.test("Test: Holiday list [HR]", function (assert) {
+ assert.expect(3);
+ let done = assert.async();
+ let date = frappe.datetime.add_months(frappe.datetime.nowdate(), -2); // date 2 months from now
+
+ frappe.run_serially([
+ // test holiday list creation
+ () => frappe.set_route("List", "Holiday List", "List"),
+ () => frappe.new_doc("Holiday List"),
+ () => frappe.timeout(1),
+ () => cur_frm.set_value("holiday_list_name", "Test Holiday list"),
+ () => cur_frm.set_value("from_date", date),
+ () => cur_frm.set_value("weekly_off", "Sunday"), // holiday list for sundays
+ () => frappe.click_button('Get Weekly Off Dates'),
+
+ // save form
+ () => cur_frm.save(),
+ () => frappe.timeout(1),
+ () => assert.equal("Test Holiday list", cur_frm.doc.holiday_list_name,
+ 'name of holiday list correctly saved'),
+
+ // check if holiday list contains correct days
+ () => {
+ var list = cur_frm.doc.holidays;
+ var list_length = list.length;
+ var i = 0;
+ for ( ; i < list_length; i++)
+ if (list[i].description != 'Sunday') break;
+ assert.equal(list_length, i, "all holidays are sundays in holiday list");
+ },
+
+ // check if to_date is set one year from from_date
+ () => {
+ var date_year_later = frappe.datetime.add_days(frappe.datetime.add_months(date, 12), -1); // date after one year
+ assert.equal(date_year_later, cur_frm.doc.to_date,
+ "to date set correctly");
+ },
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/hr/doctype/leave_allocation/test_leave_allocation.js b/erpnext/hr/doctype/leave_allocation/test_leave_allocation.js
new file mode 100644
index 0000000..5d189d2
--- /dev/null
+++ b/erpnext/hr/doctype/leave_allocation/test_leave_allocation.js
@@ -0,0 +1,37 @@
+QUnit.module('hr');
+
+QUnit.test("Test: Leave allocation [HR]", function (assert) {
+ assert.expect(3);
+ let done = assert.async();
+ let today_date = frappe.datetime.nowdate();
+
+ frappe.run_serially([
+ // test creating leave alloction
+ () => frappe.set_route("List", "Leave Allocation", "List"),
+ () => frappe.new_doc("Leave Allocation"),
+ () => frappe.timeout(1),
+ () => frappe.db.get_value('Employee', {'employee_name':'Test Employee 1'}, 'name'),
+ (employee) => cur_frm.set_value("employee", employee.message.name),
+ () => cur_frm.set_value("leave_type", "Test Leave type"),
+ () => cur_frm.set_value("to_date", frappe.datetime.add_months(today_date, 2)), // for two months
+ () => cur_frm.set_value("description", "This is just for testing"),
+ () => cur_frm.set_value("new_leaves_allocated", 2),
+ () => frappe.click_check('Add unused leaves from previous allocations'),
+ // save form
+ () => cur_frm.save(),
+ () => frappe.timeout(1),
+ () => cur_frm.savesubmit(),
+ () => frappe.timeout(1),
+ () => assert.equal("Confirm", cur_dialog.title,
+ 'confirmation for leave alloction shown'),
+ () => frappe.click_button('Yes'),
+ () => frappe.timeout(1),
+ // check auto filled from date
+ () => assert.equal(today_date, cur_frm.doc.from_date,
+ "from date correctly set"),
+ // check for total leaves
+ () => assert.equal(cur_frm.doc.carry_forwarded_leaves + 2, cur_frm.doc.total_leaves_allocated,
+ "total leave calculation is correctly set"),
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/hr/doctype/leave_application/test_leave_application.js b/erpnext/hr/doctype/leave_application/test_leave_application.js
new file mode 100644
index 0000000..51e8ed6
--- /dev/null
+++ b/erpnext/hr/doctype/leave_application/test_leave_application.js
@@ -0,0 +1,50 @@
+QUnit.module('hr');
+
+QUnit.test("Test: Leave application [HR]", function (assert) {
+ assert.expect(5);
+ let done = assert.async();
+ let today_date = frappe.datetime.nowdate();
+ let leave_date = frappe.datetime.add_days(today_date, 1); // leave for tomorrow
+
+ frappe.run_serially([
+ // test creating leave application
+ () => frappe.db.get_value('Employee', {'employee_name':'Test Employee 1'}, 'name'),
+ (employee) => {
+ return frappe.tests.make('Leave Application', [
+ {leave_type: "Test Leave type"},
+ {from_date: leave_date}, // for today
+ {to_date: leave_date},
+ {half_day: 1},
+ {employee: employee.message.name},
+ {leave_approver: "Administrator"},
+ {follow_via_email: 0}
+ ]);
+ },
+ () => frappe.timeout(1),
+ // check calculated total leave days
+ () => assert.equal("0.5", cur_frm.doc.total_leave_days,
+ "leave application for half day"),
+ () => assert.ok(!cur_frm.doc.docstatus,
+ "leave application not submitted with status as open"),
+ () => cur_frm.set_value("status", "Approved"), // approve the application [as administrator]
+ () => frappe.timeout(0.5),
+ // save form
+ () => cur_frm.save(),
+ () => frappe.timeout(1),
+ () => cur_frm.savesubmit(),
+ () => frappe.timeout(1),
+ () => frappe.click_button('Yes'),
+ () => frappe.timeout(1),
+ () => assert.ok(cur_frm.doc.docstatus,
+ "leave application submitted after approval"),
+ // check auto filled posting date [today]
+ () => assert.equal(today_date, cur_frm.doc.posting_date,
+ "posting date correctly set"),
+ () => frappe.set_route("List", "Leave Application", "List"),
+ () => frappe.timeout(1),
+ // check approved application in list
+ () => assert.deepEqual(["Test Employee 1", "Approved"], [cur_list.data[0].employee_name, cur_list.data[0].status],
+ "leave for correct employee is approved"),
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/hr/doctype/leave_block_list/test_leave_block_list.js b/erpnext/hr/doctype/leave_block_list/test_leave_block_list.js
new file mode 100644
index 0000000..1241d3d
--- /dev/null
+++ b/erpnext/hr/doctype/leave_block_list/test_leave_block_list.js
@@ -0,0 +1,27 @@
+QUnit.module('hr');
+
+QUnit.test("Test: Leave block list [HR]", function (assert) {
+ assert.expect(1);
+ let done = assert.async();
+ let today_date = frappe.datetime.nowdate();
+
+ frappe.run_serially([
+ // test leave block list creation
+ () => frappe.set_route("List", "Leave Block List", "List"),
+ () => frappe.new_doc("Leave Block List"),
+ () => frappe.timeout(1),
+ () => cur_frm.set_value("leave_block_list_name", "Test Leave block list"),
+ () => cur_frm.set_value("company", "Test Company"),
+ () => frappe.click_button('Add Row'),
+ () => {
+ cur_frm.fields_dict.leave_block_list_dates.grid.grid_rows[0].doc.block_date = today_date;
+ cur_frm.fields_dict.leave_block_list_dates.grid.grid_rows[0].doc.reason = "Blocked leave test";
+ },
+ // save form
+ () => cur_frm.save(),
+ () => frappe.timeout(1),
+ () => assert.equal("Test Leave block list", cur_frm.doc.leave_block_list_name,
+ 'name of blocked leave list correctly saved'),
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/hr/doctype/leave_control_panel/test_leave_control_panel.js b/erpnext/hr/doctype/leave_control_panel/test_leave_control_panel.js
new file mode 100644
index 0000000..e71ff6e
--- /dev/null
+++ b/erpnext/hr/doctype/leave_control_panel/test_leave_control_panel.js
@@ -0,0 +1,36 @@
+QUnit.module('hr');
+
+QUnit.test("Test: Leave control panel [HR]", function (assert) {
+ assert.expect(2);
+ let done = assert.async();
+ let today_date = frappe.datetime.nowdate();
+
+ frappe.run_serially([
+ // test leave allocation using leave control panel
+ () => frappe.set_route("Form", "Leave Control Panel"),
+ () => frappe.timeout(1),
+ () => cur_frm.set_value("leave_type", "Test Leave type"),
+ () => cur_frm.set_value("company", "Test Company"),
+ () => cur_frm.set_value("employment_type", "Test Employment Type"),
+ () => cur_frm.set_value("branch", "Test Branch"),
+ () => cur_frm.set_value("department", "Test Department"),
+ () => cur_frm.set_value("designation", "Test Designation"),
+ () => cur_frm.set_value("from_date", frappe.datetime.add_months(today_date, -2)),
+ () => cur_frm.set_value("to_date", frappe.datetime.add_days(today_date, -1)), // for two months [not today]
+ () => cur_frm.set_value("no_of_days", 3),
+ // allocate leaves
+ () => frappe.click_button('Allocate'),
+ () => frappe.timeout(1),
+ () => assert.equal("Message", cur_dialog.title,
+ "leave alloction message shown"),
+ () => frappe.click_button('Close'),
+ () => frappe.set_route("List", "Leave Allocation", "List"),
+ () => frappe.timeout(1),
+ () => {
+ let leave_allocated = cur_list.data.filter(d => d.leave_type == "Test Leave type");
+ assert.equal(2, leave_allocated.length,
+ 'leave allocation successfully done for both the employee');
+ },
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/hr/doctype/leave_type/test_leave_type.js b/erpnext/hr/doctype/leave_type/test_leave_type.js
new file mode 100644
index 0000000..4cde49b
--- /dev/null
+++ b/erpnext/hr/doctype/leave_type/test_leave_type.js
@@ -0,0 +1,22 @@
+QUnit.module('hr');
+
+QUnit.test("Test: Leave type [HR]", function (assert) {
+ assert.expect(1);
+ let done = assert.async();
+
+ frappe.run_serially([
+ // test leave type creation
+ () => frappe.set_route("List", "Leave Type", "List"),
+ () => frappe.new_doc("Leave Type"),
+ () => frappe.timeout(1),
+ () => cur_frm.set_value("leave_type_name", "Test Leave type"),
+ () => cur_frm.set_value("max_days_allowed", "5"),
+ () => frappe.click_check('Is Carry Forward'),
+ // save form
+ () => cur_frm.save(),
+ () => frappe.timeout(1),
+ () => assert.equal("Test Leave type", cur_frm.doc.leave_type_name,
+ 'leave type correctly saved'),
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/hr/doctype/process_payroll/process_payroll.py b/erpnext/hr/doctype/process_payroll/process_payroll.py
index b58c787..287ce61 100644
--- a/erpnext/hr/doctype/process_payroll/process_payroll.py
+++ b/erpnext/hr/doctype/process_payroll/process_payroll.py
@@ -311,7 +311,7 @@
journal_entry.submit()
jv_name = journal_entry.name
self.update_salary_slip_status(jv_name = jv_name)
- except Exception, e:
+ except Exception as e:
frappe.msgprint(e)
return jv_name
diff --git a/erpnext/hr/doctype/upload_attendance/upload_attendance.py b/erpnext/hr/doctype/upload_attendance/upload_attendance.py
index fc1a8ae..78d5aee 100644
--- a/erpnext/hr/doctype/upload_attendance/upload_attendance.py
+++ b/erpnext/hr/doctype/upload_attendance/upload_attendance.py
@@ -121,7 +121,7 @@
try:
check_record(d)
ret.append(import_doc(d, "Attendance", 1, row_idx, submit=True))
- except Exception, e:
+ except Exception as e:
error = True
ret.append('Error for row (#%d) %s : %s' % (row_idx,
len(row)>1 and row[1] or "", cstr(e)))
diff --git a/erpnext/manufacturing/doctype/bom/bom.py b/erpnext/manufacturing/doctype/bom/bom.py
index ce895898..7130a3e 100644
--- a/erpnext/manufacturing/doctype/bom/bom.py
+++ b/erpnext/manufacturing/doctype/bom/bom.py
@@ -52,8 +52,8 @@
validate_uom_is_integer(self, "stock_uom", "stock_qty", "BOM Item")
self.update_stock_qty()
- self.validate_materials()
self.set_bom_material_details()
+ self.validate_materials()
self.validate_operations()
self.calculate_cost()
diff --git a/erpnext/manufacturing/doctype/bom/test_bom.js b/erpnext/manufacturing/doctype/bom/test_bom.js
new file mode 100644
index 0000000..80a4ede
--- /dev/null
+++ b/erpnext/manufacturing/doctype/bom/test_bom.js
@@ -0,0 +1,63 @@
+QUnit.test("test: item", function (assert) {
+ assert.expect(1);
+ let done = assert.async();
+
+ frappe.run_serially([
+ // test item creation
+ () => frappe.set_route("List", "Item"),
+
+ // Create a BOM for a laptop
+ () => frappe.tests.make(
+ "BOM", [
+ {item: "Laptop"},
+ {quantity: 1},
+ {with_operations: 1},
+ {company: "Razer Blade"},
+ {operations: [
+ [
+ {operation: "Assemble CPU"},
+ {time_in_mins: 60},
+ ],
+ [
+ {operation: "Assemble Keyboard"},
+ {time_in_mins: 30},
+ ],
+ [
+ {operation: "Assemble Screen"},
+ {time_in_mins: 30},
+ ]
+ ]},
+ {scrap_items: [
+ [
+ {item_code: "Scrap item"}
+ ]
+ ]},
+ {items: [
+ [
+ {item_code: "CPU"},
+ {qty: 1}
+ ],
+ [
+ {item_code: "Keyboard"},
+ {qty: 1}
+ ],
+ [
+ {item_code: "Screen"},
+ {qty: 1}
+ ]
+ ]},
+ ]
+ ),
+ () => cur_frm.savesubmit(),
+ () => frappe.timeout(1),
+ () => frappe.click_button('Yes'),
+ () => frappe.timeout(1),
+
+ () => {
+ assert.ok(cur_frm.doc.operating_cost + cur_frm.doc.raw_material_cost -
+ cur_frm.doc.scrap_material_cost == cur_frm.doc.total_cost, 'Total_Cost calculated correctly');
+ },
+
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/manufacturing/doctype/operation/test_operation.js b/erpnext/manufacturing/doctype/operation/test_operation.js
new file mode 100644
index 0000000..9fedaac
--- /dev/null
+++ b/erpnext/manufacturing/doctype/operation/test_operation.js
@@ -0,0 +1,65 @@
+QUnit.test("test: operation", function (assert) {
+ assert.expect(2);
+ let done = assert.async();
+ let set_op_name = (text) => {
+ $(`input.input-with-feedback.form-control.bold:visible`).val(`${text}`);
+ };
+ let click_create = () => {
+ $(`.btn-primary:contains("Create"):visible`).click();
+ };
+
+ frappe.run_serially([
+ // test operation creation
+ () => frappe.set_route("List", "Operation"),
+
+ // Create a Keyboard operation
+ () => {
+ frappe.tests.make(
+ "Operation", [
+ {workstation: "Keyboard assembly workstation"}
+ ]
+ );
+ },
+ () => frappe.timeout(4),
+ () => set_op_name("Assemble Keyboard"),
+ () => frappe.timeout(0.5),
+ () => click_create(),
+ () => frappe.timeout(1),
+ () => {
+ assert.ok(cur_frm.docname.includes('Assemble Keyboard'),
+ 'Assemble Keyboard created successfully');
+ assert.ok(cur_frm.doc.workstation.includes('Keyboard assembly workstation'),
+ 'Keyboard assembly workstation was linked successfully');
+ },
+
+ // Create a Screen operation
+ () => {
+ frappe.tests.make(
+ "Operation", [
+ {workstation: "Screen assembly workstation"}
+ ]
+ );
+ },
+ () => frappe.timeout(4),
+ () => set_op_name("Assemble Screen"),
+ () => frappe.timeout(0.5),
+ () => click_create(),
+ () => frappe.timeout(1),
+
+ // Create a CPU operation
+ () => {
+ frappe.tests.make(
+ "Operation", [
+ {workstation: "CPU assembly workstation"}
+ ]
+ );
+ },
+ () => frappe.timeout(4),
+ () => set_op_name("Assemble CPU"),
+ () => frappe.timeout(0.5),
+ () => click_create(),
+ () => frappe.timeout(1),
+
+ () => done()
+ ]);
+});
diff --git a/erpnext/manufacturing/doctype/production_order/test_production_order.js b/erpnext/manufacturing/doctype/production_order/test_production_order.js
new file mode 100644
index 0000000..57299db
--- /dev/null
+++ b/erpnext/manufacturing/doctype/production_order/test_production_order.js
@@ -0,0 +1,41 @@
+QUnit.test("test: production order", function (assert) {
+ assert.expect(2);
+ let done = assert.async();
+ let laptop_quantity = 5;
+ let single_laptop_cost = 1340; // Calculated in workstation (time * per_hour_cost) for every item
+
+ frappe.run_serially([
+ // test production order
+ () => frappe.set_route("List", "Production Order"),
+ () => frappe.timeout(0.5),
+
+ // Create a laptop production order
+ () => frappe.new_doc("Production Order"),
+ () => frappe.timeout(1),
+ () => cur_frm.set_value("production_item", "Laptop"),
+ () => frappe.timeout(2),
+ () => cur_frm.set_value("company", "Razer Blade"),
+ () => frappe.timeout(2),
+ () => cur_frm.set_value("qty", laptop_quantity),
+ () => frappe.timeout(2),
+ () => cur_frm.set_value("scrap_warehouse", "Laptop Scrap Warehouse - RB"),
+ () => frappe.timeout(1),
+ () => cur_frm.set_value("wip_warehouse", "Work In Progress - RB"),
+ () => frappe.timeout(1),
+ () => cur_frm.set_value("fg_warehouse", "Finished Goods - RB"),
+ () => cur_frm.save(),
+ () => frappe.timeout(1),
+
+ () => {
+ assert.equal(cur_frm.doc.planned_operating_cost, cur_frm.doc.total_operating_cost, "Total and Planned Cost is equal");
+ assert.equal(cur_frm.doc.planned_operating_cost, laptop_quantity*single_laptop_cost, "Total cost is calculated correctly "+cur_frm.doc.planned_operating_cost);
+ },
+
+ () => cur_frm.savesubmit(),
+ () => frappe.timeout(1),
+ () => frappe.click_button('Yes'),
+ () => frappe.timeout(1),
+
+ () => done()
+ ]);
+});
diff --git a/erpnext/manufacturing/doctype/production_planning_tool/test_production_planning_tool.py b/erpnext/manufacturing/doctype/production_planning_tool/test_production_planning_tool.py
index 4f80b6a..af4220c 100644
--- a/erpnext/manufacturing/doctype/production_planning_tool/test_production_planning_tool.py
+++ b/erpnext/manufacturing/doctype/production_planning_tool/test_production_planning_tool.py
@@ -15,7 +15,7 @@
test_dependencies = ["Item","BOM"]
class TestEvent(unittest.TestCase):
-
+
def test_materials_requests_all_raw_multi_level(self):
items = ["_Test PPT Item Raw A","_Test PPT Item Raw B","_Test PPT Item Raw C","_Test PPT Item Raw D",
"_Test PPT Item Sub A","_Test PPT Item Sub B","_Test PPT Item Sub C","_Test PPT Item SC A",
@@ -23,10 +23,10 @@
quantities = [14,9,36,1,0,0,0,0,0,0]
types = ["Purchase","Purchase","Purchase","Purchase","Manufacture","Manufacture","Manufacture","Purchase",
"Purchase","Manufacture"]
-
+
self.runtest_materials_requests(items, quantities, types, use_multi_level_bom=1, only_raw_materials=1, \
include_subcontracted=1)
-
+
def test_materials_requests_multi_no_subcontracted(self):
items = ["_Test PPT Item Raw A","_Test PPT Item Raw B","_Test PPT Item Raw C","_Test PPT Item Raw D",
"_Test PPT Item Sub A","_Test PPT Item Sub B","_Test PPT Item Sub C","_Test PPT Item SC A",
@@ -34,12 +34,12 @@
quantities = [14,5,20,0,0,0,0,0,0,0]
types = ["Purchase","Purchase","Purchase","Purchase","Manufacture","Manufacture","Manufacture","Purchase",
"Purchase","Manufacture"]
-
+
# This one should fail for now
self.runtest_materials_requests(items, quantities, types, use_multi_level_bom=1, only_raw_materials=1, \
include_subcontracted=0)
-
+
def test_materials_requests_manufacture_and_sub_multi_level(self):
items = ["_Test PPT Item Raw A","_Test PPT Item Raw B","_Test PPT Item Raw C","_Test PPT Item Raw D",
@@ -48,10 +48,10 @@
quantities = [14,9,36,1,2,5,2,1,4,0]
types = ["Purchase","Purchase","Purchase","Purchase","Manufacture","Manufacture","Manufacture","Purchase",
"Purchase","Manufacture"]
-
+
self.runtest_materials_requests(items, quantities, types, use_multi_level_bom=1, only_raw_materials=0, \
include_subcontracted=1)
-
+
def test_materials_requests_manufacture_multi_level(self):
items = ["_Test PPT Item Raw A","_Test PPT Item Raw B","_Test PPT Item Raw C","_Test PPT Item Raw D",
"_Test PPT Item Sub A","_Test PPT Item Sub B","_Test PPT Item Sub C","_Test PPT Item SC A",
@@ -59,12 +59,12 @@
quantities = [14,5,20,0,2,5,2,1,4,0]
types = ["Purchase","Purchase","Purchase","Purchase","Manufacture","Manufacture","Manufacture","Purchase",
"Purchase","Manufacture"]
-
+
self.runtest_materials_requests(items, quantities, types, use_multi_level_bom=1, only_raw_materials=0, \
include_subcontracted=0)
-
-
-
+
+
+
def test_materials_requests_single_level_purch_only(self):
items = ["_Test PPT Item Raw A","_Test PPT Item Raw B","_Test PPT Item Raw C","_Test PPT Item Raw D",
"_Test PPT Item Sub A","_Test PPT Item Sub B","_Test PPT Item Sub C","_Test PPT Item SC A",
@@ -72,10 +72,10 @@
quantities = [2,0,0,0,0,0,0,1,0,0]
types = ["Purchase","Purchase","Purchase","Purchase","Manufacture","Manufacture","Manufacture","Purchase",
"Purchase","Manufacture"]
-
+
self.runtest_materials_requests(items, quantities, types, use_multi_level_bom=0, only_raw_materials=1, \
include_subcontracted=0)
-
+
def test_materials_requests_single_level(self):
items = ["_Test PPT Item Raw A","_Test PPT Item Raw B","_Test PPT Item Raw C","_Test PPT Item Raw D",
"_Test PPT Item Sub A","_Test PPT Item Sub B","_Test PPT Item Sub C","_Test PPT Item SC A",
@@ -83,32 +83,32 @@
quantities = [2,0,0,0,2,1,0,1,0,0]
types = ["Purchase","Purchase","Purchase","Purchase","Manufacture","Manufacture","Manufacture","Purchase",
"Purchase","Manufacture"]
-
+
self.runtest_materials_requests(items, quantities, types, use_multi_level_bom=0, only_raw_materials=0, \
include_subcontracted=0)
-
+
def runtest_materials_requests(self, items, quantities, types,use_multi_level_bom, only_raw_materials, \
include_subcontracted):
-
+
clear_material_requests()
create_test_records()
-
- ppt = run_production_planning_tool(use_multi_level_bom=use_multi_level_bom,
- only_raw_materials=only_raw_materials, include_subcontracted=include_subcontracted,
- item_code = "_Test PPT Item Master", bom_no = "BOM-_Test PPT Item Master-001",
- planned_qty = 1, planned_start_date = "5/5/2029",
+
+ ppt = run_production_planning_tool(use_multi_level_bom=use_multi_level_bom,
+ only_raw_materials=only_raw_materials, include_subcontracted=include_subcontracted,
+ item_code = "_Test PPT Item Master", bom_no = "BOM-_Test PPT Item Master-001",
+ planned_qty = 1, planned_start_date = "5/5/2029",
warehouse = "_Test Warehouse - _TC", company = "_Test Company")
-
+
create_material_requests(ppt)
-
+
for item, qty, type in zip(items, quantities, types):
self.assertEqual(qty, get_requested_qty(item))
for mat_req_type in get_requested_types(item):
- self.assertEqual(type, mat_req_type)
-
+ self.assertEqual(type, mat_req_type)
+
def create_test_records():
from erpnext.stock.doctype.item.test_item import make_item
-
+
subA = make_item("_Test PPT Item Sub A",{
"item_code": "_Test PPT Item Sub A",
"item_name": "_Test PPT Item Sub A",
@@ -119,7 +119,7 @@
"stock_uom": "_Test UOM",
"item_group": "_Test Item Group",
"default_warehouse": "_Test Warehouse - _TC"})
-
+
subB = make_item("_Test PPT Item Sub B",{
"item_code": "_Test PPT Item Sub B",
"item_name": "_Test PPT Item Sub B",
@@ -130,7 +130,7 @@
"stock_uom": "_Test UOM",
"item_group": "_Test Item Group",
"default_warehouse": "_Test Warehouse - _TC"})
-
+
subC = make_item("_Test PPT Item Sub C",{
"item_code": "_Test PPT Item Sub C",
"item_name": "_Test PPT Item Sub C",
@@ -141,7 +141,7 @@
"stock_uom": "_Test UOM",
"item_group": "_Test Item Group",
"default_warehouse": "_Test Warehouse - _TC"})
-
+
sCA = make_item("_Test PPT Item SC A",{
"item_code": "_Test PPT Item SC A",
"item_name": "_Test PPT Item SC A",
@@ -172,7 +172,7 @@
"stock_uom": "_Test UOM",
"item_group": "_Test Item Group",
"default_warehouse": "_Test Warehouse - _TC"})
-
+
rawA = make_item("_Test PPT Item Raw A",{
"item_code": "_Test PPT Item Raw A",
"item_name": "_Test PPT Item Raw A",
@@ -183,7 +183,7 @@
"stock_uom": "_Test UOM",
"item_group": "_Test Item Group",
"default_warehouse": "_Test Warehouse - _TC"})
-
+
rawB = make_item("_Test PPT Item Raw B",{
"item_code": "_Test PPT Item Raw B",
"item_name": "_Test PPT Item Raw B",
@@ -194,7 +194,7 @@
"stock_uom": "_Test UOM",
"item_group": "_Test Item Group",
"default_warehouse": "_Test Warehouse - _TC"})
-
+
rawC = make_item("_Test PPT Item Raw C",{
"item_code": "_Test PPT Item Raw C",
"item_name": "_Test PPT Item Raw C",
@@ -205,7 +205,7 @@
"stock_uom": "_Test UOM",
"item_group": "_Test Item Group",
"default_warehouse": "_Test Warehouse - _TC"})
-
+
rawD = make_item("_Test PPT Item Raw D",{
"item_code": "_Test PPT Item Raw D",
"item_name": "_Test PPT Item Raw D",
@@ -216,7 +216,7 @@
"stock_uom": "_Test UOM",
"item_group": "_Test Item Group",
"default_warehouse": "_Test Warehouse - _TC"})
-
+
master = make_item("_Test PPT Item Master",{
"item_code": "_Test PPT Item Master",
"item_name": "_Test PPT Item Master",
@@ -227,9 +227,9 @@
"stock_uom": "_Test UOM",
"item_group": "_Test Item Group",
"default_warehouse": "_Test Warehouse - _TC"})
-
-
-
+
+
+
bom_subB = make_bom("BOM-_Test PPT Item Sub B-001",{"quantity":1.0,
"item": "_Test PPT Item Sub B",
"is_active": 1,
@@ -239,39 +239,39 @@
"rate":100, "amount": 100, "stock_uom": "_Test UOM"},
{"item_code": "_Test PPT Item Raw C", "doctype":"BOM Item", "stock_qty":4, "rate":100,
"amount": 400,"stock_uom": "_Test UOM"}])
-
+
bom_subC = make_bom("BOM-_Test PPT Item Sub C-001",{"quantity":1,
"item": "_Test PPT Item Sub C",
"is_active": 1,
"is_default": 1,
"docstatus": 1,
"with_operations": 0}, [
- {"item_code": "_Test PPT Item Raw A","item_name": "_Test PPT Item Raw A",
+ {"item_code": "_Test PPT Item Raw A","item_name": "_Test PPT Item Raw A",
"doctype":"BOM Item", "stock_qty":6, "rate":100, "amount": 600},
- {"item_code": "_Test PPT Item Sub B","item_name": "_Test PPT Item Sub B",
+ {"item_code": "_Test PPT Item Sub B","item_name": "_Test PPT Item Sub B",
"bom_no":"BOM-_Test PPT Item Sub B-001", "doctype":"BOM Item", "stock_qty":2,
"rate":100, "amount": 200}])
-
+
bom_sCA = make_bom("BOM-_Test PPT Item SC A-001",{"quantity":1,
"item": "_Test PPT Item SC A",
"is_active": 1,
"is_default": 1,
"docstatus": 1,
"with_operations": 0}, [
- {"item_code": "_Test PPT Item Raw D","item_name": "_Test PPT Item Raw D",
+ {"item_code": "_Test PPT Item Raw D","item_name": "_Test PPT Item Raw D",
"doctype":"BOM Item", "stock_qty":1, "rate":100, "amount": 100}])
-
+
bom_sCB = make_bom("BOM-_Test PPT Item SC B-001",{"quantity":1,
"item": "_Test PPT Item SC B",
"is_active": 1,
"is_default": 1,
"docstatus": 1,
"with_operations": 0}, [
- {"item_code": "_Test PPT Item Raw B","item_name": "_Test PPT Item Raw B",
+ {"item_code": "_Test PPT Item Raw B","item_name": "_Test PPT Item Raw B",
"doctype":"BOM Item", "stock_qty":1, "rate":100, "amount": 100},
- {"item_code": "_Test PPT Item Raw C","item_name": "_Test PPT Item Raw C",
+ {"item_code": "_Test PPT Item Raw C","item_name": "_Test PPT Item Raw C",
"doctype":"BOM Item", "stock_qty":4, "rate":100, "amount": 400}])
-
+
bom_subA = make_bom("BOM-_Test PPT Item Sub A-001",{"quantity":1,
"item": "_Test PPT Item Sub A",
"is_active": 1,
@@ -279,29 +279,29 @@
"docstatus": 1,
"with_operations": 0}, [
{"item_code": "_Test PPT Item Sub C","item_name": "_Test PPT Item Sub C",
- "bom_no":"BOM-_Test PPT Item Sub C-001", "doctype":"BOM Item",
+ "bom_no":"BOM-_Test PPT Item Sub C-001", "doctype":"BOM Item",
"stock_qty":1, "rate":100, "amount": 100},
- {"item_code": "_Test PPT Item SC B","item_name": "_Test PPT Item SC B",
+ {"item_code": "_Test PPT Item SC B","item_name": "_Test PPT Item SC B",
"bom_no":"BOM-_Test PPT Item SC B-001", "doctype":"BOM Item", "stock_qty":2,
- "rate":100, "amount": 200}])
-
+ "rate":100, "amount": 200}])
+
bom_master = make_bom("BOM-_Test PPT Item Master-001",{"quantity":1,
"item": "_Test PPT Item Master",
"is_active": 1,
"is_default": 1,
"docstatus": 1,
"with_operations": 0}, [
- {"item_code": "_Test PPT Item Sub A","item_name": "_Test PPT Item Sub A",
- "bom_no":"BOM-_Test PPT Item Sub A-001",
+ {"item_code": "_Test PPT Item Sub A","item_name": "_Test PPT Item Sub A",
+ "bom_no":"BOM-_Test PPT Item Sub A-001",
"doctype":"BOM Item", "stock_qty":2, "rate":100, "amount": 200},
- {"item_code": "_Test PPT Item Sub B","item_name": "_Test PPT Item Sub B",
- "bom_no":"BOM-_Test PPT Item Sub B-001",
+ {"item_code": "_Test PPT Item Sub B","item_name": "_Test PPT Item Sub B",
+ "bom_no":"BOM-_Test PPT Item Sub B-001",
"doctype":"BOM Item", "stock_qty":1, "rate":100, "amount": 100},
- {"item_code": "_Test PPT Item Raw A","item_name": "_Test PPT Item Raw A",
+ {"item_code": "_Test PPT Item Raw A","item_name": "_Test PPT Item Raw A",
"doctype":"BOM Item", "stock_qty":2, "rate":100,
"amount": 200},
- {"item_code": "_Test PPT Item SC A","item_name": "_Test PPT Item SC A",
- "bom_no":"BOM-_Test PPT Item SC A-001",
+ {"item_code": "_Test PPT Item SC A","item_name": "_Test PPT Item SC A",
+ "bom_no":"BOM-_Test PPT Item SC A-001",
"doctype":"BOM Item", "stock_qty":1, "rate":100, "amount": 100}
])
@@ -309,7 +309,7 @@
def make_bom(name, properties=None, items=None):
if frappe.db.exists("BOM", name):
return frappe.get_doc("BOM", name)
-
+
bom = frappe.new_doc("BOM")
item = frappe.get_doc({
"doctype": "BOM",
@@ -317,20 +317,20 @@
"quantity": "1",
"with_operations": 0
})
-
+
if properties:
bom.update(properties)
-
+
if items:
for item in items:
bom.append("items", item)
-
+
bom.insert()
bom.submit()
-
+
return bom
-
+
def clear_material_requests():
frappe.db.sql("delete from `tabMaterial Request Item`")
frappe.db.sql("delete from `tabMaterial Request`")
@@ -339,53 +339,50 @@
def run_production_planning_tool(**args):
ppt = frappe.new_doc("Production Planning Tool")
args = frappe._dict(args)
-
+
if args.use_multi_level_bom:
ppt.use_multi_level_bom = args.use_multi_level_bom
else:
ppt.use_multi_level_bom = 0
-
+
if args.only_raw_materials:
ppt.only_raw_materials = args.only_raw_materials
else:
ppt.only_raw_materials = 0
-
+
if args.include_subcontracted:
ppt.include_subcontracted = args.include_subcontracted
else:
ppt.include_subcontracted = 0
-
+
if args.warehouse:
- ppt.purchase_request_for_warehouse = args.warehouse
-
+ ppt.purchase_request_for_warehouse = args.warehouse
+
if args.company:
ppt.company = args.company
ppt.create_material_requests_for_all_required_qty = 1
-
- ppt.append("items",{"item_code": args.item_code, "bom_no": args.bom_no, "planned_qty": args.planned_qty,
- "planned_start_date": args.planned_start_date, "warehouse": args.warehouse})
-
- return ppt
-def create_production_orders(ppt):
- raise_production_orders(ppt)
+ ppt.append("items",{"item_code": args.item_code, "bom_no": args.bom_no, "planned_qty": args.planned_qty,
+ "planned_start_date": args.planned_start_date, "warehouse": args.warehouse})
+
+ return ppt
def create_material_requests(ppt):
ppt.raise_material_requests()
-
+
def get_requested_qty(item_code):
total_qty = 0
- for d in frappe.db.sql("""select item.qty as qty
- from `tabMaterial Request` mat_req, `tabMaterial Request Item` item
+ for d in frappe.db.sql("""select item.qty as qty
+ from `tabMaterial Request` mat_req, `tabMaterial Request Item` item
where item.item_code = %(item_code)s and item.parent = mat_req.name""", {"item_code":item_code}, as_dict=1):
total_qty += d.qty
return total_qty
def get_requested_types(item_code):
types = []
- for d in frappe.db.sql("""select mat_req.material_request_type as type
- from `tabMaterial Request` mat_req, `tabMaterial Request Item` item
+ for d in frappe.db.sql("""select mat_req.material_request_type as type
+ from `tabMaterial Request` mat_req, `tabMaterial Request Item` item
where item.item_code = %(item_code)s and item.parent = mat_req.name""", {"item_code":item_code}, as_dict=1):
types.append(d.type)
return types
-
+
diff --git a/erpnext/manufacturing/doctype/workstation/test_workstation.js b/erpnext/manufacturing/doctype/workstation/test_workstation.js
new file mode 100644
index 0000000..1df53d0
--- /dev/null
+++ b/erpnext/manufacturing/doctype/workstation/test_workstation.js
@@ -0,0 +1,89 @@
+QUnit.test("test: workstation", function (assert) {
+ assert.expect(9);
+ let done = assert.async();
+ let elec_rate = 50;
+ let rent = 100;
+ let consumable_rate = 20;
+ let labour_rate = 500;
+ frappe.run_serially([
+ // test workstation creation
+ () => frappe.set_route("List", "Workstation"),
+
+ // Create a keyboard workstation
+ () => frappe.tests.make(
+ "Workstation", [
+ {workstation_name: "Keyboard assembly workstation"},
+ {hour_rate_electricity: elec_rate},
+ {hour_rate_rent: rent},
+ {hour_rate_consumable: consumable_rate},
+ {hour_rate_labour: labour_rate},
+ {working_hours: [
+ [
+ {enabled: 1},
+ {start_time: '11:00:00'},
+ {end_time: '18:00:00'}
+ ]
+ ]}
+ ]
+ ),
+ () => {
+ assert.ok(cur_frm.doc.workstation_name.includes('Keyboard assembly workstation'),
+ 'Keyboard assembly workstation created successfully');
+ assert.equal(cur_frm.doc.hour_rate_electricity, elec_rate,
+ 'electricity rate set correctly');
+ assert.equal(cur_frm.doc.hour_rate_rent, rent,
+ 'rent set correctly');
+ assert.equal(cur_frm.doc.hour_rate_consumable, consumable_rate,
+ 'consumable rate set correctly');
+ assert.equal(cur_frm.doc.hour_rate_labour, labour_rate,
+ 'labour rate set correctly');
+ assert.equal(cur_frm.doc.working_hours[0].enabled, 1,
+ 'working hours enabled');
+ assert.ok(cur_frm.doc.working_hours[0].start_time.includes('11:00:0'),
+ 'start time set correctly');
+ assert.ok(cur_frm.doc.working_hours[0].end_time.includes('18:00:0'),
+ 'end time set correctly');
+ assert.ok(cur_frm.doc.hour_rate_electricity+cur_frm.doc.hour_rate_rent+
+ cur_frm.doc.hour_rate_consumable+cur_frm.doc.hour_rate_labour==
+ cur_frm.doc.hour_rate, 'Net hour rate set correctly');
+ },
+
+ // Create a Screen workstation
+ () => frappe.tests.make(
+ "Workstation", [
+ {workstation_name: "Screen assembly workstation"},
+ {hour_rate_electricity: elec_rate},
+ {hour_rate_rent: rent},
+ {hour_rate_consumable: consumable_rate},
+ {hour_rate_labour: labour_rate},
+ {working_hours: [
+ [
+ {enabled: 1},
+ {start_time: '11:00:00'},
+ {end_time: '18:00:00'}
+ ]
+ ]}
+ ]
+ ),
+
+ // Create a CPU workstation
+ () => frappe.tests.make(
+ "Workstation", [
+ {workstation_name: "CPU assembly workstation"},
+ {hour_rate_electricity: elec_rate},
+ {hour_rate_rent: rent},
+ {hour_rate_consumable: consumable_rate},
+ {hour_rate_labour: labour_rate},
+ {working_hours: [
+ [
+ {enabled: 1},
+ {start_time: '11:00:00'},
+ {end_time: '18:00:00'}
+ ]
+ ]}
+ ]
+ ),
+
+ () => done()
+ ]);
+});
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 2923d6d..64cf5d0 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -422,7 +422,11 @@
erpnext.patches.v8_3.set_restrict_to_domain_for_module_def
erpnext.patches.v8_1.update_expense_claim_status
erpnext.patches.v8_3.update_company_total_sales
+erpnext.patches.v8_4.make_scorecard_records
erpnext.patches.v8_1.set_delivery_date_in_so_item #2017-07-28
erpnext.patches.v8_5.fix_tax_breakup_for_non_invoice_docs
+erpnext.patches.v8_5.remove_quotations_route_in_sidebar
+erpnext.patches.v8_5.update_existing_data_in_project_type
+erpnext.patches.v8_5.set_default_mode_of_payment
erpnext.patches.v8_5.update_customer_group_in_POS_profile
erpnext.patches.v8_6.update_timesheet_company_from_PO
\ No newline at end of file
diff --git a/erpnext/patches/v4_0/apply_user_permissions.py b/erpnext/patches/v4_0/apply_user_permissions.py
index 640fe6b..c21b605 100644
--- a/erpnext/patches/v4_0/apply_user_permissions.py
+++ b/erpnext/patches/v4_0/apply_user_permissions.py
@@ -12,8 +12,6 @@
frappe.clear_cache()
def update_hr_permissions():
- from frappe.core.page.user_permissions import user_permissions
-
# add set user permissions rights to HR Manager
frappe.db.sql("""update `tabDocPerm` set `set_user_permissions`=1 where parent in ('Employee', 'Leave Application')
and role='HR Manager' and permlevel=0 and `read`=1""")
diff --git a/erpnext/patches/v4_0/rename_sitemap_to_route.py b/erpnext/patches/v4_0/rename_sitemap_to_route.py
index 257580b..ffb1fda 100644
--- a/erpnext/patches/v4_0/rename_sitemap_to_route.py
+++ b/erpnext/patches/v4_0/rename_sitemap_to_route.py
@@ -12,6 +12,6 @@
frappe.model.rename_field("Item", "parent_website_sitemap", "parent_website_route")
frappe.model.rename_field("Sales Partner", "parent_website_sitemap",
"parent_website_route")
- except Exception, e:
+ except Exception as e:
if e.args[0]!=1054:
- raise
\ No newline at end of file
+ raise
diff --git a/erpnext/patches/v4_2/add_currency_turkish_lira.py b/erpnext/patches/v4_2/add_currency_turkish_lira.py
index dac1fe9..1a46089 100644
--- a/erpnext/patches/v4_2/add_currency_turkish_lira.py
+++ b/erpnext/patches/v4_2/add_currency_turkish_lira.py
@@ -6,5 +6,5 @@
def execute():
return
- country = get_country_info(country="Turkey")
- add_country_and_currency("Turkey", country)
+ # country = get_country_info(country="Turkey")
+ # add_country_and_currency("Turkey", country)
diff --git a/erpnext/patches/v4_2/default_website_style.py b/erpnext/patches/v4_2/default_website_style.py
index d168c86..e8f9502 100644
--- a/erpnext/patches/v4_2/default_website_style.py
+++ b/erpnext/patches/v4_2/default_website_style.py
@@ -3,9 +3,9 @@
def execute():
return
- frappe.reload_doc('website', 'doctype', 'style_settings')
- style_settings = frappe.get_doc("Style Settings", "Style Settings")
- if not style_settings.apply_style:
- style_settings.update(default_properties)
- style_settings.apply_style = 1
- style_settings.save()
+ # frappe.reload_doc('website', 'doctype', 'style_settings')
+ # style_settings = frappe.get_doc("Style Settings", "Style Settings")
+ # if not style_settings.apply_style:
+ # style_settings.update(default_properties)
+ # style_settings.apply_style = 1
+ # style_settings.save()
diff --git a/erpnext/patches/v4_4/make_email_accounts.py b/erpnext/patches/v4_4/make_email_accounts.py
index 126acfc..510fe3a 100644
--- a/erpnext/patches/v4_4/make_email_accounts.py
+++ b/erpnext/patches/v4_4/make_email_accounts.py
@@ -78,7 +78,7 @@
def insert_or_update(account):
try:
account.insert()
- except frappe.NameError, e:
+ except frappe.NameError as e:
if e.args[0]=="Email Account":
existing_account = frappe.get_doc("Email Account", e.args[1])
for key, value in account.as_dict().items():
diff --git a/erpnext/patches/v7_0/fix_nonwarehouse_ledger_gl_entries_for_transactions.py b/erpnext/patches/v7_0/fix_nonwarehouse_ledger_gl_entries_for_transactions.py
index 2b92b17..58da059 100644
--- a/erpnext/patches/v7_0/fix_nonwarehouse_ledger_gl_entries_for_transactions.py
+++ b/erpnext/patches/v7_0/fix_nonwarehouse_ledger_gl_entries_for_transactions.py
@@ -34,7 +34,7 @@
voucher = frappe.get_doc(voucher_type, voucher_no)
voucher.make_gl_entries()
frappe.db.commit()
- except Exception, e:
+ except Exception as e:
print frappe.get_traceback()
rejected.append([voucher_type, voucher_no])
frappe.db.rollback()
diff --git a/erpnext/patches/v7_0/update_party_status.py b/erpnext/patches/v7_0/update_party_status.py
index f3733db..9ca3d02 100644
--- a/erpnext/patches/v7_0/update_party_status.py
+++ b/erpnext/patches/v7_0/update_party_status.py
@@ -2,19 +2,19 @@
def execute():
return
- for party_type in ('Customer', 'Supplier'):
- frappe.reload_doctype(party_type)
-
- # set all as default status
- frappe.db.sql('update `tab{0}` set status=%s'.format(party_type), default_status[party_type])
-
- for doctype in status_depends_on[party_type]:
- filters = get_filters_for(doctype)
- parties = frappe.get_all(doctype, fields="{0} as party".format(party_type.lower()),
- filters=filters, limit_page_length=1)
-
- parties = filter(None, [p.party for p in parties])
-
- if parties:
- frappe.db.sql('update `tab{0}` set status="Open" where name in ({1})'.format(party_type,
- ', '.join(len(parties) * ['%s'])), parties)
\ No newline at end of file
+ # for party_type in ('Customer', 'Supplier'):
+ # frappe.reload_doctype(party_type)
+ #
+ # # set all as default status
+ # frappe.db.sql('update `tab{0}` set status=%s'.format(party_type), default_status[party_type])
+ #
+ # for doctype in status_depends_on[party_type]:
+ # filters = get_filters_for(doctype)
+ # parties = frappe.get_all(doctype, fields="{0} as party".format(party_type.lower()),
+ # filters=filters, limit_page_length=1)
+ #
+ # parties = filter(None, [p.party for p in parties])
+ #
+ # if parties:
+ # frappe.db.sql('update `tab{0}` set status="Open" where name in ({1})'.format(party_type,
+ # ', '.join(len(parties) * ['%s'])), parties)
\ No newline at end of file
diff --git a/erpnext/patches/v8_0/rename_total_margin_to_rate_with_margin.py b/erpnext/patches/v8_0/rename_total_margin_to_rate_with_margin.py
index 3fc477e..4065438 100644
--- a/erpnext/patches/v8_0/rename_total_margin_to_rate_with_margin.py
+++ b/erpnext/patches/v8_0/rename_total_margin_to_rate_with_margin.py
@@ -19,6 +19,6 @@
def rename_field_if_exists(doctype, old_fieldname, new_fieldname):
try:
rename_field(doctype, old_fieldname, new_fieldname)
- except Exception, e:
+ except Exception as e:
if e.args[0] != 1054:
raise
diff --git a/erpnext/patches/v8_1/delete_deprecated_reports.py b/erpnext/patches/v8_1/delete_deprecated_reports.py
index 887277a..99d77c1 100644
--- a/erpnext/patches/v8_1/delete_deprecated_reports.py
+++ b/erpnext/patches/v8_1/delete_deprecated_reports.py
@@ -51,4 +51,4 @@
frappe.delete_doc("Auto Email Report", auto_email_report)
elif report in ["Customer Addresses And Contacts", "Supplier Addresses And Contacts"]:
- frapppe.db.set_value("Auto Email Report", auto_email_report, "report", report)
\ No newline at end of file
+ frappe.db.set_value("Auto Email Report", auto_email_report, "report", report)
\ No newline at end of file
diff --git a/erpnext/patches/v8_4/__init__.py b/erpnext/patches/v8_4/__init__.py
new file mode 100644
index 0000000..baffc48
--- /dev/null
+++ b/erpnext/patches/v8_4/__init__.py
@@ -0,0 +1 @@
+from __future__ import unicode_literals
diff --git a/erpnext/patches/v8_4/make_scorecard_records.py b/erpnext/patches/v8_4/make_scorecard_records.py
new file mode 100644
index 0000000..73afa27
--- /dev/null
+++ b/erpnext/patches/v8_4/make_scorecard_records.py
@@ -0,0 +1,11 @@
+# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+
+from erpnext.buying.doctype.supplier_scorecard.supplier_scorecard import make_default_records
+def execute():
+ frappe.reload_doc('buying', 'doctype', 'supplier_scorecard_variable')
+ frappe.reload_doc('buying', 'doctype', 'supplier_scorecard_standing')
+ make_default_records()
\ No newline at end of file
diff --git a/erpnext/patches/v8_5/remove_quotations_route_in_sidebar.py b/erpnext/patches/v8_5/remove_quotations_route_in_sidebar.py
new file mode 100644
index 0000000..2d7df4a
--- /dev/null
+++ b/erpnext/patches/v8_5/remove_quotations_route_in_sidebar.py
@@ -0,0 +1,16 @@
+# Copyright (c) 2017, Frappe and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+
+def execute():
+ frappe.reload_doctype("Portal Settings")
+
+ frappe.db.sql("""
+ delete from
+ `tabPortal Menu Item`
+ where
+ (route = '/quotations' and title = 'Supplier Quotation')
+ or (route = '/quotation' and title = 'Quotations')
+ """)
\ No newline at end of file
diff --git a/erpnext/patches/v8_5/set_default_mode_of_payment.py b/erpnext/patches/v8_5/set_default_mode_of_payment.py
new file mode 100644
index 0000000..34ecbb0
--- /dev/null
+++ b/erpnext/patches/v8_5/set_default_mode_of_payment.py
@@ -0,0 +1,17 @@
+# Copyright (c) 2017, Frappe and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+
+def execute():
+ frappe.reload_doctype("POS Profile")
+ frappe.reload_doctype("Sales Invoice Payment")
+
+ frappe.db.sql("""
+ update
+ `tabSales Invoice Payment`
+ set `tabSales Invoice Payment`.default = 1
+ where
+ `tabSales Invoice Payment`.parenttype = 'POS Profile'
+ and `tabSales Invoice Payment`.idx=1""")
\ No newline at end of file
diff --git a/erpnext/patches/v8_5/update_existing_data_in_project_type.py b/erpnext/patches/v8_5/update_existing_data_in_project_type.py
new file mode 100644
index 0000000..497da06
--- /dev/null
+++ b/erpnext/patches/v8_5/update_existing_data_in_project_type.py
@@ -0,0 +1,19 @@
+# Copyright (c) 2017, Frappe and Contributors
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
+import frappe
+
+def execute():
+ frappe.reload_doc("projects", "doctype", "project_type")
+ frappe.reload_doc("projects", "doctype", "project")
+
+ project_types = ["Internal", "External", "Other"]
+
+ for project_type in project_types:
+ if not frappe.db.exists("Project Type", project_type):
+ p_type = frappe.get_doc({
+ "doctype": "Project Type",
+ "project_type": project_type
+ })
+ p_type.insert()
\ No newline at end of file
diff --git a/erpnext/projects/doctype/activity_type/activity_type.json b/erpnext/projects/doctype/activity_type/activity_type.json
index 65a0fa1..dc50a09 100644
--- a/erpnext/projects/doctype/activity_type/activity_type.json
+++ b/erpnext/projects/doctype/activity_type/activity_type.json
@@ -1,5 +1,6 @@
{
"allow_copy": 0,
+ "allow_guest_to_view": 0,
"allow_import": 1,
"allow_rename": 1,
"autoname": "field:activity_type",
@@ -12,6 +13,7 @@
"editable_grid": 0,
"fields": [
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -22,7 +24,8 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
- "in_list_view": 0,
+ "in_global_search": 0,
+ "in_list_view": 1,
"in_standard_filter": 0,
"label": "Activity Type",
"length": 0,
@@ -39,6 +42,7 @@
"unique": 0
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -49,6 +53,7 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Default Costing Rate",
@@ -67,6 +72,7 @@
"unique": 0
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -77,6 +83,7 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"length": 0,
@@ -94,6 +101,7 @@
"unique": 0
},
{
+ "allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
@@ -104,6 +112,7 @@
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
+ "in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Default Billing Rate",
@@ -120,20 +129,51 @@
"search_index": 0,
"set_only_once": 0,
"unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "default": "0",
+ "fieldname": "disabled",
+ "fieldtype": "Check",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Disabled",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
}
],
+ "has_web_view": 0,
"hide_heading": 0,
"hide_toolbar": 0,
"icon": "icon-flag",
"idx": 1,
"image_view": 0,
"in_create": 0,
- "in_dialog": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2016-12-13 12:38:18.218618",
+ "modified": "2017-07-25 20:11:05.229092",
"modified_by": "Administrator",
"module": "Projects",
"name": "Activity Type",
@@ -149,11 +189,11 @@
"export": 1,
"if_owner": 0,
"import": 1,
- "is_custom": 0,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
+ "restrict": 0,
"role": "System Manager",
"set_user_permissions": 0,
"share": 1,
@@ -175,6 +215,7 @@
"print": 1,
"read": 1,
"report": 1,
+ "restrict": 0,
"role": "Projects User",
"set_user_permissions": 0,
"share": 1,
@@ -196,6 +237,7 @@
"print": 0,
"read": 1,
"report": 0,
+ "restrict": 0,
"role": "Employee",
"set_user_permissions": 0,
"share": 0,
@@ -206,6 +248,8 @@
"quick_entry": 1,
"read_only": 0,
"read_only_onload": 0,
+ "show_name_in_global_search": 0,
"sort_order": "ASC",
+ "track_changes": 0,
"track_seen": 0
}
\ No newline at end of file
diff --git a/erpnext/projects/doctype/activity_type/test_activity_type.js b/erpnext/projects/doctype/activity_type/test_activity_type.js
new file mode 100644
index 0000000..8023121
--- /dev/null
+++ b/erpnext/projects/doctype/activity_type/test_activity_type.js
@@ -0,0 +1,20 @@
+QUnit.test("test: Activity Type", function (assert) {
+ // number of asserts
+ assert.expect(1);
+ let done = assert.async();
+
+ frappe.run_serially([
+ // insert a new Activity Type
+ () => frappe.set_route("List", "Activity Type", "List"),
+ () => frappe.new_doc("Activity Type"),
+ () => frappe.timeout(1),
+ () => frappe.click_link('Edit in full page'),
+ () => cur_frm.set_value("activity_type", "Test Activity"),
+ () => frappe.click_button('Save'),
+ () => frappe.timeout(1),
+ () => {
+ assert.equal(cur_frm.doc.name,"Test Activity");
+ },
+ () => done()
+ ]);
+});
diff --git a/erpnext/projects/doctype/project/project.json b/erpnext/projects/doctype/project/project.json
index 28eb730..101e4ff 100644
--- a/erpnext/projects/doctype/project/project.json
+++ b/erpnext/projects/doctype/project/project.json
@@ -84,7 +84,7 @@
"collapsible": 0,
"columns": 0,
"fieldname": "project_type",
- "fieldtype": "Select",
+ "fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
@@ -97,7 +97,7 @@
"no_copy": 0,
"oldfieldname": "project_type",
"oldfieldtype": "Data",
- "options": "Internal\nExternal\nOther",
+ "options": "Project Type",
"permlevel": 0,
"print_hide": 0,
"print_hide_if_no_value": 0,
@@ -1255,7 +1255,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 4,
- "modified": "2017-07-19 14:36:20.857673",
+ "modified": "2017-07-26 14:36:20.857673",
"modified_by": "Administrator",
"module": "Projects",
"name": "Project",
diff --git a/erpnext/projects/doctype/project/project_timesheet.js b/erpnext/projects/doctype/project/project_timesheet.js
new file mode 100644
index 0000000..32df04f
--- /dev/null
+++ b/erpnext/projects/doctype/project/project_timesheet.js
@@ -0,0 +1,91 @@
+
+QUnit.test("test project", function(assert) {
+ assert.expect(6);
+ let done = assert.async();
+ var task_title = ["Documentation","Implementation","Testing"];
+
+ // To create a timesheet with different tasks and costs
+ let timesheet = (title,start_time,end_time,bill_rate,cost_rate) => {
+ return frappe.run_serially([
+ () => frappe.db.get_value('Task', {'subject': title}, 'name'),
+ (task) => {
+ // Creating timesheet for a project
+ return frappe.tests.make('Timesheet', [
+ {time_logs:[
+ [
+ {activity_type: 'Communication'},
+ {from_time: start_time},
+ {to_time: end_time},
+ {hours: 2},
+ {project: 'Test App'},
+ {task: task.name},
+ {billable: '1'},
+ {billing_rate: bill_rate},
+ {costing_rate: cost_rate}
+ ]
+ ]}
+ ]);
+ },
+ // To check if a correct billable and costing amount is calculated for every task
+ () => {
+ if(title=== 'Documentation')
+ {
+ assert.ok(cur_frm.get_field('total_billable_amount').get_value()==20,
+ 'Billable amount for Documentation task is correctly calculated');
+ assert.ok(cur_frm.get_field('total_costing_amount').get_value()==16,
+ 'Costing amount for Documentation task is correctly calculated');
+ }
+ if(title=== 'Implementation')
+ {
+ assert.ok(cur_frm.get_field('total_billable_amount').get_value()==40,
+ 'Billable amount for Implementation task is correctly calculated');
+ assert.ok(cur_frm.get_field('total_costing_amount').get_value()==32,
+ 'Costing amount for Implementation task is correctly calculated');
+ }
+ if(title=== 'Testing')
+ {
+ assert.ok(cur_frm.get_field('total_billable_amount').get_value()==60,
+ 'Billable amount for Testing task correctly calculated');
+ assert.ok(cur_frm.get_field('total_costing_amount').get_value()==50,
+ 'Costing amount for Testing task is correctly calculated');
+ }
+ },
+ ]);
+ };
+ frappe.run_serially([
+ () => {
+ // Creating project with task
+ return frappe.tests.make('Project', [
+ { project_name: 'Test App'},
+ { expected_start_date: '2017-07-22'},
+ { expected_end_date: '2017-09-22'},
+ { estimated_costing: '10,000.00'},
+ { tasks:[
+ [
+ {title: 'Documentation'},
+ {start_date: '2017-07-24'},
+ {end_date: '2017-07-31'},
+ {description: 'To make a proper documentation defining requirements etc'}
+ ],
+ [
+ {title: 'Implementation'},
+ {start_date: '2017-08-01'},
+ {end_date: '2017-08-01'},
+ {description: 'Writing algorithms and to code the functionalities'}
+ ],
+ [
+ {title: 'Testing'},
+ {start_date: '2017-08-01'},
+ {end_date: '2017-08-15'},
+ {description: 'To make the test cases and test the functionalities'}
+ ]
+ ]}
+ ]);
+ },
+ // Creating Timesheet with different tasks
+ () => timesheet(task_title[0],'2017-07-24 13:00:00','2017-07-24 13:00:00',10,8),
+ () => timesheet(task_title[1],'2017-07-25 13:00:00','2017-07-25 15:00:00',20,16),
+ () => timesheet(task_title[2],'2017-07-26 13:00:00','2017-07-26 15:00:00',30,25),
+ () => done()
+ ]);
+});
diff --git a/erpnext/projects/doctype/project_type/__init__.py b/erpnext/projects/doctype/project_type/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/projects/doctype/project_type/__init__.py
diff --git a/erpnext/projects/doctype/project_type/project_type.js b/erpnext/projects/doctype/project_type/project_type.js
new file mode 100644
index 0000000..a1f941f
--- /dev/null
+++ b/erpnext/projects/doctype/project_type/project_type.js
@@ -0,0 +1,6 @@
+// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.ui.form.on('Project Type', {
+
+});
\ No newline at end of file
diff --git a/erpnext/projects/doctype/project_type/project_type.json b/erpnext/projects/doctype/project_type/project_type.json
new file mode 100644
index 0000000..b9a5b54
--- /dev/null
+++ b/erpnext/projects/doctype/project_type/project_type.json
@@ -0,0 +1,163 @@
+{
+ "allow_copy": 0,
+ "allow_guest_to_view": 0,
+ "allow_import": 0,
+ "allow_rename": 1,
+ "autoname": "field:project_type",
+ "beta": 0,
+ "creation": "2017-07-18 13:32:46.031115",
+ "custom": 0,
+ "docstatus": 0,
+ "doctype": "DocType",
+ "document_type": "",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "fields": [
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "project_type",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 1,
+ "in_standard_filter": 0,
+ "label": "Project Type",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 1,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "description",
+ "fieldtype": "Text",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Description",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ }
+ ],
+ "has_web_view": 0,
+ "hide_heading": 0,
+ "hide_toolbar": 0,
+ "idx": 0,
+ "image_view": 0,
+ "in_create": 0,
+ "is_submittable": 0,
+ "issingle": 0,
+ "istable": 0,
+ "max_attachments": 0,
+ "modified": "2017-07-26 17:19:30.126346",
+ "modified_by": "Administrator",
+ "module": "Projects",
+ "name": "Project Type",
+ "name_case": "",
+ "owner": "Administrator",
+ "permissions": [
+ {
+ "amend": 0,
+ "apply_user_permissions": 0,
+ "cancel": 0,
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "if_owner": 0,
+ "import": 0,
+ "permlevel": 0,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "System Manager",
+ "set_user_permissions": 0,
+ "share": 1,
+ "submit": 0,
+ "write": 1
+ },
+ {
+ "amend": 0,
+ "apply_user_permissions": 0,
+ "cancel": 0,
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "if_owner": 0,
+ "import": 0,
+ "permlevel": 0,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Projects Manager",
+ "set_user_permissions": 0,
+ "share": 1,
+ "submit": 0,
+ "write": 1
+ },
+ {
+ "amend": 0,
+ "apply_user_permissions": 0,
+ "cancel": 0,
+ "create": 0,
+ "delete": 0,
+ "email": 1,
+ "export": 1,
+ "if_owner": 0,
+ "import": 0,
+ "permlevel": 0,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Projects User",
+ "set_user_permissions": 0,
+ "share": 1,
+ "submit": 0,
+ "write": 0
+ }
+ ],
+ "quick_entry": 1,
+ "read_only": 0,
+ "read_only_onload": 0,
+ "show_name_in_global_search": 0,
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "track_changes": 1,
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/projects/doctype/project_type/project_type.py b/erpnext/projects/doctype/project_type/project_type.py
new file mode 100644
index 0000000..f46876e
--- /dev/null
+++ b/erpnext/projects/doctype/project_type/project_type.py
@@ -0,0 +1,13 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+from frappe.model.document import Document
+import frappe
+from frappe import _
+
+class ProjectType(Document):
+ def on_trash(self):
+ if self.name == "External":
+ frappe.throw(_("You cannot delete Project Type 'External'"))
\ No newline at end of file
diff --git a/erpnext/projects/doctype/project_type/test_project_type.js b/erpnext/projects/doctype/project_type/test_project_type.js
new file mode 100644
index 0000000..c2198c4
--- /dev/null
+++ b/erpnext/projects/doctype/project_type/test_project_type.js
@@ -0,0 +1,23 @@
+/* eslint-disable */
+// rename this file from _test_[name] to test_[name] to activate
+// and remove above this line
+
+QUnit.test("test: Project Type", function (assert) {
+ let done = assert.async();
+
+ // number of asserts
+ assert.expect(1);
+
+ frappe.run_serially('Project Type', [
+ // insert a new Project Type
+ () => frappe.tests.make([
+ // values to be set
+ {key: 'value'}
+ ]),
+ () => {
+ assert.equal(cur_frm.doc.key, 'value');
+ },
+ () => done()
+ ]);
+
+});
diff --git a/erpnext/projects/doctype/project_type/test_project_type.py b/erpnext/projects/doctype/project_type/test_project_type.py
new file mode 100644
index 0000000..ee23390
--- /dev/null
+++ b/erpnext/projects/doctype/project_type/test_project_type.py
@@ -0,0 +1,9 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and Contributors
+# See license.txt
+from __future__ import unicode_literals
+
+import unittest
+
+class TestProjectType(unittest.TestCase):
+ pass
diff --git a/erpnext/projects/doctype/timesheet/timesheet.py b/erpnext/projects/doctype/timesheet/timesheet.py
index bb3d902..16abd24 100644
--- a/erpnext/projects/doctype/timesheet/timesheet.py
+++ b/erpnext/projects/doctype/timesheet/timesheet.py
@@ -279,7 +279,6 @@
ts_detail.billing_rate = 0.0
ts_detail.costing_rate = 0.0
-
@frappe.whitelist()
def get_projectwise_timesheet_data(project, parent=None):
cond = ''
@@ -391,3 +390,26 @@
"end": end
}, as_dict=True, update={"allDay": 0})
+def get_timesheets_list(doctype, txt, filters, limit_start, limit_page_length=20, order_by="modified"):
+ user = frappe.session.user
+ # find customer name from contact.
+ customer = frappe.db.sql('''SELECT dl.link_name FROM `tabContact` AS c inner join \
+ `tabDynamic Link` AS dl ON c.first_name=dl.link_name WHERE c.email_id=%s''',user)
+ # find list of Sales Invoice for made for customer.
+ sales_invoice = frappe.db.sql('''SELECT name FROM `tabSales Invoice` WHERE customer = %s''',customer)
+ if customer:
+ # Return timesheet related data to web portal.
+ return frappe. db.sql('''SELECT ts.name, tsd.activity_type, ts.status, ts.total_billable_hours, \
+ tsd.sales_invoice, tsd.project FROM `tabTimesheet` AS ts inner join `tabTimesheet Detail` \
+ AS tsd ON tsd.parent = ts.name where tsd.sales_invoice IN %s order by\
+ end_date asc limit {0} , {1}'''.format(limit_start, limit_page_length), [sales_invoice], as_dict = True)
+
+def get_list_context(context=None):
+ return {
+ "show_sidebar": True,
+ "show_search": True,
+ 'no_breadcrumbs': True,
+ "title": _("Timesheets"),
+ "get_list": get_timesheets_list,
+ "row_template": "templates/includes/timesheet/timesheet_row.html"
+ }
diff --git a/erpnext/public/css/email.css b/erpnext/public/css/email.css
new file mode 100644
index 0000000..8cf1a31
--- /dev/null
+++ b/erpnext/public/css/email.css
@@ -0,0 +1,29 @@
+.panel-header {
+ background-color: #fafbfc;
+ border: 1px solid #d1d8dd;
+ border-radius: 3px 3px 0 0;
+}
+.panel-body {
+ background-color: #fff;
+ border: 1px solid #d1d8dd;
+ border-top: none;
+ border-radius: 0 0 3px 3px;
+ overflow-wrap: break-word;
+}
+.sender-avatar {
+ width: 24px;
+ height: 24px;
+ border-radius: 3px;
+ vertical-align: middle;
+}
+.sender-avatar-placeholder {
+ width: 24px;
+ height: 24px;
+ border-radius: 3px;
+ vertical-align: middle;
+ line-height: 24px;
+ text-align: center;
+ color: #d1d8dd;
+ border: 1px solid #d1d8dd;
+ background-color: #fff;
+}
diff --git a/erpnext/public/images/erpnext-grey.png b/erpnext/public/images/erpnext-grey.png
new file mode 100644
index 0000000..0e70f05
--- /dev/null
+++ b/erpnext/public/images/erpnext-grey.png
Binary files differ
diff --git a/erpnext/public/js/controllers/taxes_and_totals.js b/erpnext/public/js/controllers/taxes_and_totals.js
index a54f30d..c653640 100644
--- a/erpnext/public/js/controllers/taxes_and_totals.js
+++ b/erpnext/public/js/controllers/taxes_and_totals.js
@@ -5,7 +5,7 @@
setup: function() {},
apply_pricing_rule_on_item: function(item){
if(item.margin_type == "Percentage"){
- item.rate_with_margin = flt(item.price_list_rate)
+ item.rate_with_margin = flt(item.price_list_rate)
+ flt(item.price_list_rate) * ( flt(item.margin_rate_or_amount) / 100);
} else {
item.rate_with_margin = flt(item.price_list_rate) + flt(item.margin_rate_or_amount);
@@ -70,12 +70,11 @@
} else {
frappe.throw(repl('%(conversion_rate_label)s' +
__(' is mandatory. Maybe Currency Exchange record is not created for ') +
- '%(from_currency)s' + __(" to ") + '%(to_currency)s',
- {
- "conversion_rate_label": conversion_rate_label,
- "from_currency": this.frm.doc.currency,
- "to_currency": company_currency
- }));
+ '%(from_currency)s' + __(" to ") + '%(to_currency)s', {
+ "conversion_rate_label": conversion_rate_label,
+ "from_currency": this.frm.doc.currency,
+ "to_currency": company_currency
+ }));
}
}
@@ -101,7 +100,7 @@
var me = this;
$.each(fields, function(i, f) {
doc["base_"+f] = flt(flt(doc[f], precision(f, doc)) * me.frm.doc.conversion_rate, precision("base_" + f, doc));
- })
+ });
},
initialize_taxes: function() {
@@ -111,14 +110,14 @@
tax.item_wise_tax_detail = {};
var tax_fields = ["total", "tax_amount_after_discount_amount",
"tax_amount_for_current_item", "grand_total_for_current_item",
- "tax_fraction_for_current_item", "grand_total_fraction_for_current_item"]
+ "tax_fraction_for_current_item", "grand_total_fraction_for_current_item"];
if (cstr(tax.charge_type) != "Actual" &&
!(me.discount_amount_applied && me.frm.doc.apply_discount_on=="Grand Total")) {
tax_fields.push("tax_amount");
}
- $.each(tax_fields, function(i, fieldname) { tax[fieldname] = 0.0 });
+ $.each(tax_fields, function(i, fieldname) { tax[fieldname] = 0.0; });
if (!this.discount_amount_applied && cur_frm) {
cur_frm.cscript.validate_taxes_and_charges(tax.doctype, tax.name);
@@ -134,7 +133,7 @@
var has_inclusive_tax = false;
$.each(me.frm.doc["taxes"] || [], function(i, row) {
if(cint(row.included_in_print_rate)) has_inclusive_tax = true;
- })
+ });
if(has_inclusive_tax==false) return;
$.each(me.frm.doc["items"] || [], function(n, item) {
@@ -223,7 +222,6 @@
$.each(this.frm.doc["items"] || [], function(n, item) {
var item_tax_map = me._load_item_tax_rate(item.item_tax_rate);
-
$.each(me.frm.doc["taxes"] || [], function(i, tax) {
// tax_amount represents the amount of tax for the current step
var current_tax_amount = me.get_current_tax_amount(item, tax, item_tax_map);
@@ -232,7 +230,7 @@
if (tax.charge_type == "Actual") {
actual_tax_dict[tax.idx] -= current_tax_amount;
if (n == me.frm.doc["items"].length - 1) {
- current_tax_amount += actual_tax_dict[tax.idx]
+ current_tax_amount += actual_tax_dict[tax.idx];
}
}
@@ -258,23 +256,25 @@
current_tax_amount *= (tax.add_deduct_tax == "Deduct") ? -1.0 : 1.0;
}
- // Calculate tax.total viz. grand total till that step
// note: grand_total_for_current_item contains the contribution of
// item's amount, previously applied tax and the current tax on that item
if(i==0) {
- tax.grand_total_for_current_item = flt(item.net_amount + current_tax_amount, precision("total", tax));
+ tax.grand_total_for_current_item = flt(item.net_amount + current_tax_amount);
} else {
tax.grand_total_for_current_item =
- flt(me.frm.doc["taxes"][i-1].grand_total_for_current_item + current_tax_amount, precision("total", tax));
+ flt(me.frm.doc["taxes"][i-1].grand_total_for_current_item + current_tax_amount);
}
- // in tax.total, accumulate grand total for each item
- tax.total += tax.grand_total_for_current_item;
-
// set precision in the last item iteration
if (n == me.frm.doc["items"].length - 1) {
me.round_off_totals(tax);
+ // in tax.total, accumulate grand total for each item
+ me.set_cumulative_total(i, tax);
+
+ me.set_in_company_currency(tax,
+ ["total", "tax_amount", "tax_amount_after_discount_amount"]);
+
// adjust Discount Amount loss in last tax iteration
if ((i == me.frm.doc["taxes"].length - 1) && me.discount_amount_applied
&& me.frm.doc.apply_discount_on == "Grand Total" && me.frm.doc.discount_amount)
@@ -284,6 +284,16 @@
});
},
+ set_cumulative_total: function(row_idx, tax) {
+ if(row_idx==0) {
+ tax.total = flt(this.frm.doc.net_total + tax.tax_amount_after_discount_amount,
+ precision("total", tax));
+ } else {
+ tax.total = flt(this.frm.doc["taxes"][row_idx-1].total + tax.tax_amount_after_discount_amount,
+ precision("total", tax));
+ }
+ },
+
_load_item_tax_rate: function(item_tax_rate) {
return item_tax_rate ? JSON.parse(item_tax_rate) : {};
},
@@ -300,7 +310,6 @@
} else if(tax.charge_type == "On Net Total") {
current_tax_amount = (tax_rate / 100.0) * item.net_amount;
-
} else if(tax.charge_type == "On Previous Row Amount") {
current_tax_amount = (tax_rate / 100.0) *
this.frm.doc["taxes"][cint(tax.row_id) - 1].tax_amount_for_current_item;
@@ -310,8 +319,6 @@
this.frm.doc["taxes"][cint(tax.row_id) - 1].grand_total_for_current_item;
}
- current_tax_amount = flt(current_tax_amount, precision("tax_amount", tax));
-
this.set_item_wise_tax(item, tax, tax_rate, current_tax_amount);
return current_tax_amount;
@@ -322,18 +329,14 @@
var key = item.item_code || item.item_name;
var item_wise_tax_amount = current_tax_amount * this.frm.doc.conversion_rate;
if (tax.item_wise_tax_detail && tax.item_wise_tax_detail[key])
- item_wise_tax_amount += tax.item_wise_tax_detail[key][1]
+ item_wise_tax_amount += tax.item_wise_tax_detail[key][1];
- tax.item_wise_tax_detail[key] = [tax_rate,flt(item_wise_tax_amount, precision("base_tax_amount", tax))]
-
+ tax.item_wise_tax_detail[key] = [tax_rate, flt(item_wise_tax_amount, precision("base_tax_amount", tax))];
},
round_off_totals: function(tax) {
- tax.total = flt(tax.total, precision("total", tax));
tax.tax_amount = flt(tax.tax_amount, precision("tax_amount", tax));
tax.tax_amount_after_discount_amount = flt(tax.tax_amount_after_discount_amount, precision("tax_amount", tax));
-
- this.set_in_company_currency(tax, ["total", "tax_amount", "tax_amount_after_discount_amount"]);
},
adjust_discount_amount_loss: function(tax) {
@@ -391,7 +394,7 @@
me.frm.doc.taxes_and_charges_deducted += flt(tax.tax_amount_after_discount_amount);
}
}
- })
+ });
frappe.model.round_floats_in(this.frm.doc, ["taxes_and_charges_added", "taxes_and_charges_deducted"]);
}
@@ -437,7 +440,7 @@
if(this.frm.doc["taxes"] && this.frm.doc["taxes"].length) {
var temporary_fields = ["tax_amount_for_current_item", "grand_total_for_current_item",
- "tax_fraction_for_current_item", "grand_total_fraction_for_current_item"]
+ "tax_fraction_for_current_item", "grand_total_fraction_for_current_item"];
if(!frappe.meta.get_docfield(this.frm.doc["taxes"][0].doctype, "tax_amount_after_discount_amount", this.frm.doctype)) {
temporary_fields.push("tax_amount_after_discount_amount");
@@ -473,13 +476,24 @@
precision("base_discount_amount"));
var total_for_discount_amount = this.get_total_for_discount_amount();
+ var net_total = 0;
// calculate item amount after Discount Amount
if (total_for_discount_amount) {
$.each(this.frm.doc["items"] || [], function(i, item) {
distributed_amount = flt(me.frm.doc.discount_amount) * item.net_amount / total_for_discount_amount;
- item.net_amount = flt(item.net_amount - distributed_amount, precision("base_amount", item));
- item.net_rate = flt(item.net_amount / item.qty, precision("net_rate", item));
+ item.net_amount = flt(item.net_amount - distributed_amount,
+ precision("base_amount", item));
+ net_total += item.net_amount;
+ // discount amount rounding loss adjustment if no taxes
+ if ((!(me.frm.doc.taxes || []).length || (me.frm.doc.apply_discount_on == "Net Total"))
+ && i == (me.frm.doc.items || []).length - 1) {
+ var discount_amount_loss = flt(me.frm.doc.net_total - net_total
+ - me.frm.doc.discount_amount, precision("net_total"));
+ item.net_amount = flt(item.net_amount + discount_amount_loss,
+ precision("net_amount", item));
+ }
+ item.net_rate = flt(item.net_amount / item.qty, precision("net_rate", item));
me.set_in_company_currency(item, ["net_rate", "net_amount"]);
});
@@ -490,10 +504,8 @@
},
get_total_for_discount_amount: function() {
- var me = this;
-
if(this.frm.doc.apply_discount_on == "Net Total") {
- return this.frm.doc.net_total
+ return this.frm.doc.net_total;
} else {
var total_actual_tax = 0.0;
var actual_taxes_dict = {};
@@ -517,7 +529,7 @@
calculate_total_advance: function(update_paid_amount) {
var total_allocated_amount = frappe.utils.sum($.map(this.frm.doc["advances"] || [], function(adv) {
- return flt(adv.allocated_amount, precision("allocated_amount", adv))
+ return flt(adv.allocated_amount, precision("allocated_amount", adv));
}));
this.frm.doc.total_advance = flt(total_allocated_amount, precision("total_advance"));
@@ -528,9 +540,9 @@
// NOTE:
// paid_amount and write_off_amount is only for POS Invoice
// total_advance is only for non POS Invoice
-
+
if(this.frm.doc.doctype == "Sales Invoice" && this.frm.doc.is_return){
- this.calculate_paid_amount()
+ this.calculate_paid_amount();
}
if(this.frm.doc.is_return || this.frm.doc.docstatus > 0) return;
@@ -558,25 +570,21 @@
}
if(this.frm.doc.doctype == "Sales Invoice"){
- this.set_default_payment(total_amount_to_pay, update_paid_amount)
- this.calculate_paid_amount()
+ this.set_default_payment(total_amount_to_pay, update_paid_amount);
+ this.calculate_paid_amount();
}
- this.calculate_change_amount()
- var outstanding_amount = 0.0
+ this.calculate_change_amount();
var paid_amount = (this.frm.doc.party_account_currency == this.frm.doc.currency) ?
this.frm.doc.paid_amount : this.frm.doc.base_paid_amount;
- var change_amount = (this.frm.doc.party_account_currency == this.frm.doc.currency) ?
- this.frm.doc.change_amount : this.frm.doc.base_change_amount;
-
this.frm.doc.outstanding_amount = flt(total_amount_to_pay - flt(paid_amount) +
flt(this.frm.doc.change_amount * this.frm.doc.conversion_rate), precision("outstanding_amount"));
} else if(this.frm.doc.doctype == "Purchase Invoice") {
this.frm.doc.outstanding_amount = flt(total_amount_to_pay, precision("outstanding_amount"));
- }
+ }
},
set_default_payment: function(total_amount_to_pay, update_paid_amount){
@@ -584,14 +592,14 @@
var payment_status = true;
if(this.frm.doc.is_pos && (update_paid_amount===undefined || update_paid_amount)){
$.each(this.frm.doc['payments'] || [], function(index, data){
- if(data.type == "Cash" && payment_status && total_amount_to_pay > 0) {
+ if(data.default && payment_status && total_amount_to_pay > 0) {
data.base_amount = flt(total_amount_to_pay, precision("base_amount"));
data.amount = flt(total_amount_to_pay / me.frm.doc.conversion_rate, precision("amount"));
payment_status = false;
}else if(me.frm.doc.paid_amount){
data.amount = 0.0;
}
- })
+ });
}
},
@@ -604,7 +612,7 @@
data.base_amount = flt(data.amount * me.frm.doc.conversion_rate, precision("base_amount"));
paid_amount += data.amount;
base_paid_amount += data.base_amount;
- })
+ });
} else if(!this.frm.doc.is_return){
this.frm.doc.payments = [];
}
@@ -617,30 +625,28 @@
this.frm.doc.change_amount = 0.0;
this.frm.doc.base_change_amount = 0.0;
if(this.frm.doc.paid_amount > this.frm.doc.grand_total && !this.frm.doc.is_return) {
- var payment_types = $.map(this.frm.doc.payments, function(d) { return d.type });
+ var payment_types = $.map(this.frm.doc.payments, function(d) { return d.type; });
if (in_list(payment_types, 'Cash')) {
this.frm.doc.change_amount = flt(this.frm.doc.paid_amount - this.frm.doc.grand_total +
this.frm.doc.write_off_amount, precision("change_amount"));
-
- this.frm.doc.base_change_amount = flt(this.frm.doc.base_paid_amount -
- this.frm.doc.base_grand_total + this.frm.doc.base_write_off_amount,
+
+ this.frm.doc.base_change_amount = flt(this.frm.doc.base_paid_amount -
+ this.frm.doc.base_grand_total + this.frm.doc.base_write_off_amount,
precision("base_change_amount"));
-
}
}
},
calculate_write_off_amount: function(){
if(this.frm.doc.paid_amount > this.frm.doc.grand_total){
- this.frm.doc.write_off_amount = flt(this.frm.doc.grand_total - this.frm.doc.paid_amount + this.frm.doc.change_amount,
- precision("write_off_amount"))
-
+ this.frm.doc.write_off_amount = flt(this.frm.doc.grand_total - this.frm.doc.paid_amount
+ + this.frm.doc.change_amount, precision("write_off_amount"));
+
this.frm.doc.base_write_off_amount = flt(this.frm.doc.write_off_amount * this.frm.doc.conversion_rate,
precision("base_write_off_amount"));
}else{
- this.frm.doc.paid_amount = 0.0
+ this.frm.doc.paid_amount = 0.0;
}
-
- this.calculate_outstanding_amount(false)
+ this.calculate_outstanding_amount(false);
}
-})
+});
diff --git a/erpnext/public/js/help_links.js b/erpnext/public/js/help_links.js
index 6ac60c2..7de87b7 100644
--- a/erpnext/public/js/help_links.js
+++ b/erpnext/public/js/help_links.js
@@ -14,7 +14,7 @@
frappe.help.help_links['permission-manager'] = [
{ label: 'Role Permissions Manager', url: 'https://frappe.github.io/erpnext/user/manual/en/setting-up/users-and-permissions/role-based-permissions' },
{ label: 'Managing Perm Level in Permissions Manager', url: 'https://frappe.github.io/erpnext/user/manual/en/setting-up/articles/managing-perm-level' },
- { label: 'User Permissions Manager', url: 'https://frappe.github.io/erpnext/user/manual/en/setting-up/users-and-permissions/user-permissions' },
+ { label: 'User Permissions', url: 'https://frappe.github.io/erpnext/user/manual/en/setting-up/users-and-permissions/user-permissions' },
{ label: 'Sharing', url: 'https://frappe.github.io/erpnext/user/manual/en/setting-up/users-and-permissions/sharing' },
{ label: 'Password', url: 'https://frappe.github.io/erpnext/user/manual/en/setting-up/articles/change-password' },
]
diff --git a/erpnext/public/js/pos/pos_selected_item.html b/erpnext/public/js/pos/pos_selected_item.html
index 0ed6c71..6f2772b 100644
--- a/erpnext/public/js/pos/pos_selected_item.html
+++ b/erpnext/public/js/pos/pos_selected_item.html
@@ -17,6 +17,6 @@
</div>
<div class="pos-list-row">
<div class="cell">{{ __("Amount") }}:</div>
- <input type="tel" class="form-control cell pos-amount" value="{%= amount %}"/>
+ <input type="tel" class="form-control cell pos-amount" disabled value="{%= amount %}"/>
</div>
</div>
\ No newline at end of file
diff --git a/erpnext/public/js/setup_wizard.js b/erpnext/public/js/setup_wizard.js
index 29ef12c..d551885 100644
--- a/erpnext/public/js/setup_wizard.js
+++ b/erpnext/public/js/setup_wizard.js
@@ -46,13 +46,15 @@
fieldtype: "Attach Image", fieldname: "attach_logo",
label: __("Attach Logo"),
description: __("100px by 100px"),
- is_private: 0
+ is_private: 0,
+ align: 'center'
},
{
fieldname: 'company_name',
label: frappe.setup.domain === 'Education' ?
__('Institute Name') : __('Company Name'),
- fieldtype: 'Data', reqd: 1
+ fieldtype: 'Data',
+ reqd: 1
},
{
fieldname: 'company_abbr',
@@ -422,15 +424,6 @@
frappe.setup.on("before_load", function () {
erpnext_slides.map(frappe.setup.add_slide);
-
- // change header brand
- let $brand = $('header .setup-wizard-brand');
- if($brand.find('.erpnext-icon').length === 0) {
- $brand.find('.frappe-icon').hide();
- $brand.append(`<span>
- <img src="/assets/erpnext/images/erp-icon.svg" class="brand-icon erpnext-icon"
- style="width:36px;"><span class="brand-name">ERPNext</span></span>`);
- }
});
var test_values_edu = {
diff --git a/erpnext/public/less/email.less b/erpnext/public/less/email.less
new file mode 100644
index 0000000..4077c49
--- /dev/null
+++ b/erpnext/public/less/email.less
@@ -0,0 +1,32 @@
+@import "../../../../frappe/frappe/public/less/variables.less";
+
+.panel-header {
+ background-color: @light-bg;
+ border: 1px solid @border-color;
+ border-radius: 3px 3px 0 0;
+}
+
+.panel-body {
+ background-color: #fff;
+ border: 1px solid @border-color;
+ border-top: none;
+ border-radius: 0 0 3px 3px;
+ overflow-wrap: break-word;
+}
+
+.sender-avatar {
+ width: 24px;
+ height: 24px;
+ border-radius: 3px;
+ vertical-align: middle;
+}
+
+.sender-avatar-placeholder {
+ .sender-avatar;
+
+ line-height: 24px;
+ text-align: center;
+ color: @border-color;
+ border: 1px solid @border-color;
+ background-color: #fff;
+}
\ No newline at end of file
diff --git a/erpnext/schools/doctype/academic_term/test_academic_term.js b/erpnext/schools/doctype/academic_term/test_academic_term.js
new file mode 100644
index 0000000..688ad54
--- /dev/null
+++ b/erpnext/schools/doctype/academic_term/test_academic_term.js
@@ -0,0 +1,24 @@
+// Testing Setup Module in Schools
+QUnit.module('schools');
+
+QUnit.test('Test: Academic Term', function(assert){
+ assert.expect(4);
+ let done = assert.async();
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make('Academic Term', [
+ {academic_year: '2016-17'},
+ {term_name: "Semester 1"},
+ {term_start_date: '2016-07-20'},
+ {term_end_date:'2017-06-20'},
+ ]);
+ },
+ () => {
+ assert.ok(cur_frm.doc.academic_year=='2016-17');
+ assert.ok(cur_frm.doc.term_name=='Semester 1');
+ assert.ok(cur_frm.doc.term_start_date=='2016-07-20');
+ assert.ok(cur_frm.doc.term_end_date=='2017-06-20');
+ },
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/schools/doctype/academic_year/test_academic_year.js b/erpnext/schools/doctype/academic_year/test_academic_year.js
new file mode 100644
index 0000000..7bf1772
--- /dev/null
+++ b/erpnext/schools/doctype/academic_year/test_academic_year.js
@@ -0,0 +1,23 @@
+// Testing Setup Module in Schools
+QUnit.module('schools');
+
+QUnit.test('Test: Academic Year', function(assert){
+ assert.expect(3);
+ let done = assert.async();
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make('Academic Year', [
+ {academic_year_name: '2016-17'},
+ {year_start_date: '2016-07-20'},
+ {year_end_date:'2017-06-20'},
+ ]);
+ },
+
+ () => {
+ assert.ok(cur_frm.doc.academic_year_name=='2016-17');
+ assert.ok(cur_frm.doc.year_start_date=='2016-07-20');
+ assert.ok(cur_frm.doc.year_end_date=='2017-06-20');
+ },
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/schools/doctype/assessment_criteria/test_assessment_criteria.js b/erpnext/schools/doctype/assessment_criteria/test_assessment_criteria.js
new file mode 100644
index 0000000..6c0540e
--- /dev/null
+++ b/erpnext/schools/doctype/assessment_criteria/test_assessment_criteria.js
@@ -0,0 +1,16 @@
+// School Assessment module
+QUnit.module('schools');
+
+QUnit.test('Test: Assessment Criteria', function(assert){
+ assert.expect(0);
+ let done = assert.async();
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make('Assessment Criteria', [
+ {assessment_criteria: 'Pass'},
+ {assessment_criteria_group: 'Reservation'}
+ ]);
+ },
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/schools/doctype/assessment_criteria_group/test_assessment_criteria_group.js b/erpnext/schools/doctype/assessment_criteria_group/test_assessment_criteria_group.js
new file mode 100644
index 0000000..92dba1d
--- /dev/null
+++ b/erpnext/schools/doctype/assessment_criteria_group/test_assessment_criteria_group.js
@@ -0,0 +1,15 @@
+// School Assessment module
+QUnit.module('schools');
+
+QUnit.test('Test: Assessment Criteria Group', function(assert){
+ assert.expect(0);
+ let done = assert.async();
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make('Assessment Criteria Group', [
+ {assessment_criteria_group: 'Reservation'}
+ ]);
+ },
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/schools/doctype/course/test_course.js b/erpnext/schools/doctype/course/test_course.js
new file mode 100644
index 0000000..4866730
--- /dev/null
+++ b/erpnext/schools/doctype/course/test_course.js
@@ -0,0 +1,36 @@
+// Testing Setup Module in Schools
+QUnit.module('schools');
+
+QUnit.test('test course', function(assert) {
+ assert.expect(8);
+ let done = assert.async();
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make('Course', [
+ {course_name: 'Test_Subject'},
+ {course_code: 'Test_Sub'},
+ {department: 'Test Department'},
+ {course_abbreviation: 'Test_Sub'},
+ {course_intro: 'Test Subject Intro'},
+ {default_grading_scale: 'GTU'},
+ {assessment_criteria: [
+ [
+ {assessment_criteria: 'Pass'},
+ {weightage: 100}
+ ]
+ ]}
+ ]);
+ },
+ () => {
+ assert.ok(cur_frm.doc.course_name == 'Test_Subject', 'Course name correctly set');
+ assert.ok(cur_frm.doc.course_code == 'Test_Sub', 'Course code correctly set');
+ assert.ok(cur_frm.doc.department == 'Test Department', 'Department selected correctly');
+ assert.ok(cur_frm.doc.course_abbreviation == 'Test_Sub');
+ assert.ok(cur_frm.doc.course_intro == 'Test Subject Intro');
+ assert.ok(cur_frm.doc.default_grading_scale == 'GTU', 'Grading scale selected correctly');
+ assert.ok(cur_frm.doc.assessment_criteria[0].assessment_criteria == 'Pass', 'Assessment criteria selected correctly');
+ assert.ok(cur_frm.doc.assessment_criteria[0].weightage == '100');
+ },
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/schools/doctype/grading_scale/test_grading_scale.js b/erpnext/schools/doctype/grading_scale/test_grading_scale.js
new file mode 100644
index 0000000..6539343
--- /dev/null
+++ b/erpnext/schools/doctype/grading_scale/test_grading_scale.js
@@ -0,0 +1,28 @@
+// School Assessment module
+QUnit.module('schools');
+
+QUnit.test('Test: Grading Scale', function(assert){
+ assert.expect(0);
+ let done = assert.async();
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make('Grading Scale', [
+ {grading_scale_name: 'GTU'},
+ {description: 'The score will be set according to 10 based system.'},
+ {intervals: [
+ [
+ {grade_code: 'AA'},
+ {threshold: '90'},
+ {grade_description: 'Distinction'}
+ ],
+ [
+ {grade_code: 'FF'},
+ {threshold: '0'},
+ {grade_description: 'Fail'}
+ ]
+ ]}
+ ]);
+ },
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/schools/doctype/guardian/test_guardian.js b/erpnext/schools/doctype/guardian/test_guardian.js
new file mode 100644
index 0000000..a16ba08
--- /dev/null
+++ b/erpnext/schools/doctype/guardian/test_guardian.js
@@ -0,0 +1,34 @@
+// Testing Student Module in Schools
+QUnit.module('schools');
+
+QUnit.test('Test: Guardian', function(assert){
+ assert.expect(9);
+ let done = assert.async();
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make('Guardian', [
+ {guardian_name: 'Test Guardian'},
+ {email_address: 'guardian@testmail.com'},
+ {mobile_number: 9898980000},
+ {alternate_number: 8989890000},
+ {date_of_birth: '1982-07-22'},
+ {education: 'Testing'},
+ {occupation: 'Testing'},
+ {designation: 'Testing'},
+ {work_address: 'Testing address'}
+ ]);
+ },
+ () => {
+ assert.ok(cur_frm.doc.guardian_name == 'Test Guardian');
+ assert.ok(cur_frm.doc.email_address == 'guardian@testmail.com');
+ assert.ok(cur_frm.doc.mobile_number == 9898980000);
+ assert.ok(cur_frm.doc.alternate_number == 8989890000);
+ assert.ok(cur_frm.doc.date_of_birth == '1982-07-22');
+ assert.ok(cur_frm.doc.education == 'Testing');
+ assert.ok(cur_frm.doc.occupation == 'Testing');
+ assert.ok(cur_frm.doc.designation == 'Testing');
+ assert.ok(cur_frm.doc.work_address == 'Testing address');
+ },
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/schools/doctype/instructor/test_instructor.js b/erpnext/schools/doctype/instructor/test_instructor.js
new file mode 100644
index 0000000..a9e2561
--- /dev/null
+++ b/erpnext/schools/doctype/instructor/test_instructor.js
@@ -0,0 +1,20 @@
+// Testing Setup Module in Schools
+QUnit.module('schools');
+
+QUnit.test('Test: Instructor', function(assert){
+ assert.expect(2);
+ let done = assert.async();
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make("Instructor", [
+ {instructor_name: 'Instructor 1'},
+ {department: 'Test Department'}
+ ]);
+ },
+ () => {
+ assert.ok(cur_frm.doc.instructor_name == 'Instructor 1');
+ assert.ok(cur_frm.doc.department = 'Test Department');
+ },
+ () => done()
+ ]);
+});
diff --git a/erpnext/schools/doctype/program/test_program.js b/erpnext/schools/doctype/program/test_program.js
new file mode 100644
index 0000000..16bc932
--- /dev/null
+++ b/erpnext/schools/doctype/program/test_program.js
@@ -0,0 +1,78 @@
+// Testing Setup Module in Schools
+QUnit.module('schools');
+
+QUnit.test('Test: Program', function(assert){
+ assert.expect(11);
+ let done = assert.async();
+ let fee_structure_code;
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make('Program', [
+ {program_name: 'Standard Test'},
+ {program_code: 'Standard Test'},
+ {department: 'Test Department'},
+ {program_abbreviation: 'Standard Test'},
+ {courses: [
+ [
+ {course: 'Test_Sub'},
+ {required: true}
+ ]
+ ]}
+ ]);
+ },
+
+ () => cur_frm.save(),
+ // Setting up Fee Category to select in Program doctype
+ () => {
+ return frappe.tests.make('Fee Category', [
+ {category_name: 'Reservation'},
+ {description: 'Special Provision'}
+ ]);
+ },
+ // Setting up Fee Structure to be selected in Program doctype
+ () => {
+ return frappe.tests.make('Fee Structure', [
+ {program: 'Standard Test'},
+ {academic_term: '2016-17 (Semester 1)'},
+ {student_category: 'Reservation'},
+ {components: [
+ [
+ {fees_category: 'Reservation'},
+ {amount: 20000}
+ ]
+ ]}
+ ]);
+ },
+ () => {fee_structure_code = frappe.get_route()[2];}, // Storing naming convention of Fee Structure entry
+ () => frappe.set_route('Form', ('Program/Standard Test')), // Routing to our current Program doctype
+
+ () => $('.shaded-section~ .visible-section+ .visible-section .grid-add-row').trigger('click'), // clicking on Add Row button
+ // Storing data that were inter-dependent
+ () => cur_frm.doc.fees[0].academic_term = '2016-17 (Semester 1)',
+ () => cur_frm.doc.fees[0].student_category = 'Reservation',
+ () => cur_frm.doc.fees[0].due_date = '2016-08-20',
+ () => $('.error').trigger('click'),
+ () => $('.bold.input-sm').trigger('focus'),
+ () => frappe.timeout(1),
+ () => $('.bold.input-sm').trigger('focus'),
+ () => $('.bold.input-sm').val(fee_structure_code),
+ () => $('.bold.input-sm').trigger('focus'),
+ () => frappe.timeout(1),
+ () => cur_frm.save(),
+
+ () => {
+ assert.ok(cur_frm.doc.program_name == 'Standard Test');
+ assert.ok(cur_frm.doc.program_code == 'Standard Test');
+ assert.ok(cur_frm.doc.department == 'Test Department');
+ assert.ok(cur_frm.doc.program_abbreviation == 'Standard Test');
+ assert.ok(cur_frm.doc.courses[0].course == 'Test_Sub');
+ assert.ok(cur_frm.doc.courses[0].required == true);
+ assert.ok(cur_frm.doc.fees[0].academic_term == '2016-17 (Semester 1)');
+ assert.ok(cur_frm.doc.fees[0].fee_structure == fee_structure_code);
+ assert.ok(cur_frm.doc.fees[0].student_category == 'Reservation');
+ assert.ok(cur_frm.doc.fees[0].due_date == '2016-08-20');
+ assert.ok(cur_frm.doc.fees[0].amount == 20000);
+ },
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/schools/doctype/room/test_room.js b/erpnext/schools/doctype/room/test_room.js
new file mode 100644
index 0000000..0a93a85
--- /dev/null
+++ b/erpnext/schools/doctype/room/test_room.js
@@ -0,0 +1,22 @@
+// Testing Setup Module in Schools
+QUnit.module('schools');
+
+QUnit.test('Test: Room', function(assert){
+ assert.expect(3);
+ let done = assert.async();
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make('Room', [
+ {room_name: 'Room 1'},
+ {room_number: '1'},
+ {seating_capacity: '60'},
+ ]);
+ },
+ () => {
+ assert.ok(cur_frm.doc.room_name == 'Room 1');
+ assert.ok(cur_frm.doc.room_number = '1');
+ assert.ok(cur_frm.doc.seating_capacity = '60');
+ },
+ () => done()
+ ]);
+});
diff --git a/erpnext/schools/doctype/school_settings/test_school_settings.js b/erpnext/schools/doctype/school_settings/test_school_settings.js
new file mode 100644
index 0000000..6414056
--- /dev/null
+++ b/erpnext/schools/doctype/school_settings/test_school_settings.js
@@ -0,0 +1,25 @@
+// Testing Setup Module in Schools
+QUnit.module('schools');
+
+QUnit.test("Test: School Settings", function(assert){
+ assert.expect(3);
+ let done = assert.async();
+ frappe.run_serially([
+ () => frappe.set_route("List", "School Settings"),
+ () => frappe.timeout(0.4),
+ () => {
+ return frappe.tests.set_form_values(cur_frm, [
+ {current_academic_year: '2016-17'},
+ {current_academic_term: '2016-17 (Semester 1)'},
+ {attendance_freeze_date: '2016-07-20'}
+ ]);
+ },
+ () => {
+ cur_frm.save();
+ assert.ok(cur_frm.doc.current_academic_year=="2016-17");
+ assert.ok(cur_frm.doc.current_academic_term=="2016-17 (Semester 1)");
+ assert.ok(cur_frm.doc.attendance_freeze_date=="2016-07-20");
+ },
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/schools/doctype/student_admission/test_student_admission.js b/erpnext/schools/doctype/student_admission/test_student_admission.js
new file mode 100644
index 0000000..0d7c997
--- /dev/null
+++ b/erpnext/schools/doctype/student_admission/test_student_admission.js
@@ -0,0 +1,34 @@
+// Testing Admission Module in Schools
+QUnit.module('schools');
+
+QUnit.test('Test: Student Admission', function(assert) {
+ assert.expect(9);
+ let done = assert.async();
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make('Student Admission', [
+ {academic_year: '2016-17'},
+ {admission_start_date: '2016-04-20'},
+ {admission_end_date: '2016-05-31'},
+ {title: '2016-17 Admissions'},
+ {program: 'Standard Test'},
+ {application_fee: 1000},
+ {naming_series_for_student_applicant: 'AP'},
+ {introduction: 'Test intro'},
+ {eligibility: 'Test eligibility'}
+ ]);
+ },
+ () => {
+ assert.ok(cur_frm.doc.academic_year == '2016-17');
+ assert.ok(cur_frm.doc.admission_start_date == '2016-04-20');
+ assert.ok(cur_frm.doc.admission_end_date == '2016-05-31');
+ assert.ok(cur_frm.doc.title == '2016-17 Admissions');
+ assert.ok(cur_frm.doc.program == 'Standard Test', 'Program correctly selected');
+ assert.ok(cur_frm.doc.application_fee == 1000);
+ assert.ok(cur_frm.doc.naming_series_for_student_applicant == 'AP');
+ assert.ok(cur_frm.doc.introduction == 'Test intro');
+ assert.ok(cur_frm.doc.eligibility == 'Test eligibility');
+ },
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/schools/doctype/student_applicant/student_applicant.js b/erpnext/schools/doctype/student_applicant/student_applicant.js
index 974d972..9b08ee5 100644
--- a/erpnext/schools/doctype/student_applicant/student_applicant.js
+++ b/erpnext/schools/doctype/student_applicant/student_applicant.js
@@ -28,7 +28,7 @@
frappe.realtime.on("enroll_student_progress", function(data) {
if(data.progress) {
- frappe.hide_frappe.msgprint(true);
+ frappe.hide_msgprint(true);
frappe.show_progress(__("Enrolling student"), data.progress[0],data.progress[1]);
}
})
diff --git a/erpnext/schools/doctype/student_applicant/tests/test_student_applicant.js b/erpnext/schools/doctype/student_applicant/tests/test_student_applicant.js
new file mode 100644
index 0000000..a45b45a
--- /dev/null
+++ b/erpnext/schools/doctype/student_applicant/tests/test_student_applicant.js
@@ -0,0 +1,95 @@
+// Testing Admission module in Schools
+QUnit.module('schools');
+
+QUnit.test('Test: Student Applicant', function(assert){
+ assert.expect(24);
+ let done = assert.async();
+ let guradian_auto_code;
+ let guardian_name;
+ frappe.run_serially([
+ () => frappe.set_route('List', 'Guardian'),
+ () => frappe.timeout(0.5),
+ () => {$(`a:contains("Test Guardian"):visible`)[0].click();},
+ () => frappe.timeout(1),
+ () => {
+ guardian_name = cur_frm.doc.guardian_name;
+ guradian_auto_code = frappe.get_route()[2];
+ },
+ // Testing data entry for Student Applicant
+ () => {
+ return frappe.tests.make('Student Applicant',[
+ {first_name: 'Fname'},
+ {middle_name: 'Mname'},
+ {last_name: 'Lname'},
+ {program: 'Standard Test'},
+ {student_admission: '2016-17 Admissions'},
+ {academic_year: '2016-17'},
+ {date_of_birth: '1995-07-20'},
+ {student_email_id: 'test@testmail.com'},
+ {gender: 'Male'},
+ {student_mobile_number: '9898980000'},
+ {blood_group: 'O+'},
+ {address_line_1: 'Test appt, Test Society,'},
+ {address_line_2: 'Test district, Test city.'},
+ {city: 'Test'},
+ {state: 'Test'},
+ {pincode: '400086'}
+ ]);
+ },
+ // Entry in Guardian child table
+ () => $('a:contains("Guardian Details"):visible').click(),
+ () => $('.btn:contains("Add Row"):visible').click(),
+ () => {
+ cur_frm.get_field("guardians").grid.grid_rows[0].doc.guardian = guradian_auto_code;
+ cur_frm.get_field("guardians").grid.grid_rows[0].doc.relation = "Father";
+ cur_frm.get_field("guardians").grid.grid_rows[0].doc.guardian_name = guardian_name;
+ $('a:contains("Guardian Details"):visible').click();
+ },
+ // Entry in Sibling child table
+ () => $('a:contains("Sibling Details"):visible').click(),
+ () => $('.btn:contains("Add Row"):visible').click(),
+ () => {
+ cur_frm.get_field("siblings").grid.grid_rows[0].doc.full_name = "Test Name";
+ cur_frm.get_field("siblings").grid.grid_rows[0].doc.gender = "Male";
+ cur_frm.get_field("siblings").grid.grid_rows[0].doc.institution = "Test Institution";
+ cur_frm.get_field("siblings").grid.grid_rows[0].doc.program = "Test Program";
+ cur_frm.get_field("siblings").grid.grid_rows[0].doc.date_of_birth = "1995-07-20";
+ $('span.hidden-xs.octicon.octicon-triangle-up').click();
+ cur_frm.save();
+ },
+ () => {
+ assert.ok(cur_frm.doc.first_name == 'Fname');
+ assert.ok(cur_frm.doc.middle_name == 'Mname');
+ assert.ok(cur_frm.doc.last_name == 'Lname');
+ assert.ok(cur_frm.doc.program == 'Standard Test', 'Program selected correctly');
+ assert.ok(cur_frm.doc.student_admission == '2016-17 Admissions', 'Student Admission entry correctly selected');
+ assert.ok(cur_frm.doc.academic_year == '2016-17');
+ assert.ok(cur_frm.doc.date_of_birth == '1995-07-20');
+ assert.ok(cur_frm.doc.student_email_id == 'test@testmail.com');
+ assert.ok(cur_frm.doc.gender == 'Male');
+ assert.ok(cur_frm.doc.student_mobile_number == '9898980000');
+ assert.ok(cur_frm.doc.blood_group == 'O+');
+ assert.ok(cur_frm.doc.address_line_1 == 'Test appt, Test Society,');
+ assert.ok(cur_frm.doc.address_line_2 == 'Test district, Test city.');
+ assert.ok(cur_frm.doc.city == 'Test');
+ assert.ok(cur_frm.doc.state == 'Test');
+ assert.ok(cur_frm.doc.pincode == '400086');
+ },
+ () => frappe.timeout(1),
+ () => $('a:contains("Guardian Details"):visible').click(),
+ () => {
+ assert.ok(cur_frm.get_field("guardians").grid.grid_rows[0].doc.guardian == guradian_auto_code, 'Guardian correctly selected from dropdown');
+ assert.ok(cur_frm.get_field("guardians").grid.grid_rows[0].doc.relation == 'Father');
+ assert.ok(cur_frm.get_field("guardians").grid.grid_rows[0].doc.guardian_name == guardian_name, 'Guardian name was correctly retrieved');
+ },
+ () => $('a:contains("Sibling Details"):visible').click(),
+ () => {
+ assert.ok(cur_frm.get_field("siblings").grid.grid_rows[0].doc.full_name == 'Test Name');
+ assert.ok(cur_frm.get_field("siblings").grid.grid_rows[0].doc.gender == 'Male');
+ assert.ok(cur_frm.get_field("siblings").grid.grid_rows[0].doc.institution == 'Test Institution');
+ assert.ok(cur_frm.get_field("siblings").grid.grid_rows[0].doc.program == 'Test Program');
+ assert.ok(cur_frm.get_field("siblings").grid.grid_rows[0].doc.date_of_birth == '1995-07-20');
+ },
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/schools/doctype/student_applicant/tests/test_student_applicant_options.js b/erpnext/schools/doctype/student_applicant/tests/test_student_applicant_options.js
new file mode 100644
index 0000000..61f36e2
--- /dev/null
+++ b/erpnext/schools/doctype/student_applicant/tests/test_student_applicant_options.js
@@ -0,0 +1,123 @@
+// Testing Admission module in Schools
+QUnit.module('schools');
+
+QUnit.test('test student applicant', function(assert){
+ assert.expect(12);
+ let done = assert.async();
+ let testing_status;
+ frappe.run_serially([
+ () => frappe.set_route('Form', 'School House/New School House'),
+ () => frappe.timeout(0.5),
+ () => cur_frm.doc.house_name = 'Test_house',
+ () => cur_frm.save(),
+ () => frappe.set_route('List', 'Student Applicant'),
+ () => frappe.timeout(0.5),
+ () => {$(`a:contains("Fname Mname Lname"):visible`)[0].click();},
+
+ // Checking different options
+ // 1. Moving forward with Submit
+ () => frappe.timeout(0.5),
+ () => frappe.tests.click_button('Submit'),
+ () => frappe.tests.click_button('Yes'),
+ () => {
+ testing_status = $('span.indicator.orange').text();
+ assert.ok(testing_status.indexOf('Submit this document to confirm') == -1); // checking if submit has been successfull
+ },
+
+ // 2. Cancelling the Submit request
+ () => frappe.timeout(0.5),
+ () => frappe.tests.click_button('Cancel'),
+ () => frappe.tests.click_button('Yes'),
+ () => frappe.timeout(0.5),
+ () => {
+ testing_status = $('h1.editable-title').text();
+ assert.ok(testing_status.indexOf('Cancelled') != -1); // checking if cancel request has been successfull
+ },
+
+ // 3. Checking Amend option
+ () => frappe.timeout(0.5),
+ () => frappe.tests.click_button('Amend'),
+ () => cur_frm.doc.student_email_id = "test2@testmail.com", // updating email id since same id again is not allowed
+ () => cur_frm.save(),
+ () => frappe.timeout(0.5),
+ () => frappe.tests.click_button('Submit'),
+ () => frappe.tests.click_button('Yes'), // Submitting again after amend
+ () => {
+ testing_status = $('span.indicator.orange').text();
+ assert.ok(testing_status.indexOf('Submit this document to confirm') == -1); // checking if submit has been successfull after amend
+ },
+
+ // Checking different Application status option
+ () => {
+ testing_status = $('h1.editable-title').text();
+ assert.ok(testing_status.indexOf('Applied') != -1); // checking if Applied has been successfull
+ },
+ () => cur_frm.set_value('application_status', "Rejected"), // Rejected Status
+ () => frappe.tests.click_button('Update'),
+ () => {
+ testing_status = $('h1.editable-title').text();
+ assert.ok(testing_status.indexOf('Rejected') != -1); // checking if Rejected has been successfull
+ },
+ () => cur_frm.set_value('application_status', "Admitted"), // Admitted Status
+ () => frappe.tests.click_button('Update'),
+ () => {
+ testing_status = $('h1.editable-title').text();
+ assert.ok(testing_status.indexOf('Admitted') != -1); // checking if Admitted has been successfull
+ },
+ () => cur_frm.set_value('application_status', "Approved"), // Approved Status
+ () => frappe.tests.click_button('Update'),
+ () => {
+ testing_status = $('h1.editable-title').text();
+ assert.ok(testing_status.indexOf('Approved') != -1); // checking if Approved has been successfull
+ },
+
+ // Clicking on Enroll button should add the applicant's entry in Student doctype, and take you to Program Enrollment page
+ () => frappe.timeout(0.5),
+ () => frappe.tests.click_button('Enroll'),
+ () => frappe.timeout(0.5),
+ () => {
+ assert.ok(frappe.get_route()[0] == 'Form'); // Checking if the current page is Program Enrollment page or not
+ assert.ok(frappe.get_route()[1] == 'Program Enrollment');
+ },
+
+ // Routing to Student List to check if the Applicant's entry has been made or not
+ () => frappe.timeout(0.5),
+ () => frappe.set_route('List', 'Student'),
+ () => frappe.timeout(0.5),
+ () => {$(`a:contains("Fname Mname Lname"):visible`)[0].click();},
+ () => frappe.timeout(0.5),
+ () => {assert.ok(($(`h1.editable-title`).text()).indexOf('Enabled') != -1, 'Student entry successfully created');}, // Checking if the Student entry has been enabled
+ // Enrolling the Student into a Program
+ () => {$('.form-documents .row:nth-child(1) .col-xs-6:nth-child(1) .octicon-plus').click();},
+ () => frappe.timeout(1),
+ () => {
+ cur_frm.set_value('program', 'Standard Test');
+ cur_frm.set_value('student_category', 'Reservation');
+ cur_frm.set_value('student_batch_name', 'A');
+ cur_frm.set_value('academic_year', '2016-17');
+ cur_frm.set_value('academic_term', '2016-17 (Semester 1)');
+ cur_frm.set_value('school_house', 'Test_house');
+ $('a:contains("Fees"):visible').click();
+ },
+ () => frappe.timeout(1),
+ () => {
+ cur_frm.doc.fees[0].student_category = "Reservation";
+ },
+ () => cur_frm.save(),
+ // Submitting Program Enrollment form for our Test Student
+ () => frappe.timeout(0.5),
+ () => frappe.tests.click_button('Submit'),
+ () => frappe.tests.click_button('Yes'),
+ () => {
+ testing_status = $('.msgprint').text();
+ assert.ok("Fee Records Created" == (testing_status.substring(0,19)), "Fee record created for enrolled student test");
+ },
+ () => frappe.timeout(0.5),
+ () => frappe.tests.click_button('Close'),
+ () => {
+ testing_status = $('h1').text();
+ assert.ok(testing_status.indexOf('Submitted') != -1, "Program enrollment successfully submitted"); // Checking if the program enrollment entry shows submitted or not
+ },
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/schools/doctype/student_batch_name/test_student_batch_name.js b/erpnext/schools/doctype/student_batch_name/test_student_batch_name.js
new file mode 100644
index 0000000..6a10dc1
--- /dev/null
+++ b/erpnext/schools/doctype/student_batch_name/test_student_batch_name.js
@@ -0,0 +1,19 @@
+// Testing Setup Module in Schools
+QUnit.module('schools');
+
+QUnit.test('Test: Student Batch Name', function(assert){
+ assert.expect(1);
+ let done = assert.async();
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make('Student Batch Name', [
+ {batch_name: 'A'}
+ ]);
+ },
+ () => cur_frm.save(),
+ () => {
+ assert.ok(cur_frm.doc.batch_name=='A');
+ },
+ () => done()
+ ]);
+});
diff --git a/erpnext/schools/doctype/student_category/test_student_category.js b/erpnext/schools/doctype/student_category/test_student_category.js
new file mode 100644
index 0000000..5e3109a
--- /dev/null
+++ b/erpnext/schools/doctype/student_category/test_student_category.js
@@ -0,0 +1,19 @@
+// Testing Setup Module in Schools
+QUnit.module('schools');
+
+QUnit.test('Test: Student Category', function(assert){
+ assert.expect(1);
+ let done = assert.async();
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make('Student Category', [
+ {category: 'Reservation'}
+ ]);
+ },
+ () => cur_frm.save(),
+ () => {
+ assert.ok(cur_frm.doc.name=='Reservation');
+ },
+ () => done()
+ ]);
+});
diff --git a/erpnext/selling/doctype/customer/customer.json b/erpnext/selling/doctype/customer/customer.json
index 1b77418..52c6b6d 100644
--- a/erpnext/selling/doctype/customer/customer.json
+++ b/erpnext/selling/doctype/customer/customer.json
@@ -81,6 +81,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
+ "depends_on": "eval:doc.customer_type!='Company'",
"fieldname": "salutation",
"fieldtype": "Link",
"hidden": 0,
@@ -143,6 +144,7 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
+ "depends_on": "eval:doc.customer_type != 'Company'",
"fieldname": "gender",
"fieldtype": "Link",
"hidden": 0,
@@ -1200,7 +1202,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2017-06-28 14:55:39.910819",
+ "modified": "2017-07-24 00:55:07.445783",
"modified_by": "Administrator",
"module": "Selling",
"name": "Customer",
diff --git a/erpnext/selling/doctype/product_bundle/test_product_bundle.js b/erpnext/selling/doctype/product_bundle/test_product_bundle.js
new file mode 100644
index 0000000..ba5ba0d
--- /dev/null
+++ b/erpnext/selling/doctype/product_bundle/test_product_bundle.js
@@ -0,0 +1,36 @@
+QUnit.test("test sales order", function(assert) {
+ assert.expect(4);
+ let done = assert.async();
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make('Product Bundle', [
+ {new_item_code: 'Computer'},
+ {items: [
+ [
+ {item_code:'CPU'},
+ {qty:1}
+ ],
+ [
+ {item_code:'Screen'},
+ {qty:1}
+ ],
+ [
+ {item_code:'Keyboard'},
+ {qty:1}
+ ]
+ ]},
+ ]);
+ },
+ () => cur_frm.save(),
+ () => {
+ // get_item_details
+ assert.ok(cur_frm.doc.items[0].item_code=='CPU', "Item Code correct");
+ assert.ok(cur_frm.doc.items[1].item_code=='Screen', "Item Code correct");
+ assert.ok(cur_frm.doc.items[2].item_code=='Keyboard', "Item Code correct");
+ assert.ok(cur_frm.doc.new_item_code == "Computer", "Parent Item correct");
+ },
+ () => frappe.timeout(0.3),
+ () => done()
+ ]);
+});
+
diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js
index 43fa20f..b90f725 100644
--- a/erpnext/selling/doctype/quotation/quotation.js
+++ b/erpnext/selling/doctype/quotation/quotation.js
@@ -27,9 +27,19 @@
var me = this;
+ if (doc.valid_till && frappe.datetime.get_diff(doc.valid_till, frappe.datetime.get_today()) < 0) {
+ this.frm.set_intro(__("Validity period of this quotation has ended"));
+ }
+
+ if (doc.__islocal) {
+ this.frm.set_value('valid_till', frappe.datetime.add_months(doc.transaction_date, 1))
+ }
+
if(doc.docstatus == 1 && doc.status!=='Lost') {
- cur_frm.add_custom_button(__('Make Sales Order'),
- cur_frm.cscript['Make Sales Order']);
+ if(!doc.valid_till || frappe.datetime.get_diff(doc.valid_till, frappe.datetime.get_today()) > 0) {
+ cur_frm.add_custom_button(__('Make Sales Order'),
+ cur_frm.cscript['Make Sales Order']);
+ }
if(doc.status!=="Ordered") {
cur_frm.add_custom_button(__('Set as Lost'),
diff --git a/erpnext/selling/doctype/quotation/quotation.json b/erpnext/selling/doctype/quotation/quotation.json
index 2109023..33eed19 100644
--- a/erpnext/selling/doctype/quotation/quotation.json
+++ b/erpnext/selling/doctype/quotation/quotation.json
@@ -369,6 +369,36 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
+ "fieldname": "valid_till",
+ "fieldtype": "Date",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Valid Till",
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
"default": "Sales",
"fieldname": "order_type",
"fieldtype": "Select",
@@ -2572,7 +2602,7 @@
"istable": 0,
"max_attachments": 1,
"menu_index": 0,
- "modified": "2017-07-19 13:49:33.388736",
+ "modified": "2017-07-25 08:14:35.355019",
"modified_by": "Administrator",
"module": "Selling",
"name": "Quotation",
diff --git a/erpnext/selling/doctype/quotation/quotation.py b/erpnext/selling/doctype/quotation/quotation.py
index 420b84a..5eb8b06 100644
--- a/erpnext/selling/doctype/quotation/quotation.py
+++ b/erpnext/selling/doctype/quotation/quotation.py
@@ -4,7 +4,7 @@
from __future__ import unicode_literals
import frappe
from frappe.model.mapper import get_mapped_doc
-from frappe.utils import flt
+from frappe.utils import flt, nowdate, getdate
from frappe import _
from erpnext.controllers.selling_controller import SellingController
@@ -21,9 +21,14 @@
self.validate_order_type()
self.validate_uom_is_integer("stock_uom", "qty")
self.validate_quotation_to()
+ self.validate_valid_till()
if self.items:
self.with_items = 1
+ def validate_valid_till(self):
+ if self.valid_till and self.valid_till < self.transaction_date:
+ frappe.throw(_("Valid till date cannot be before transaction date"))
+
def has_sales_order(self):
return frappe.db.get_value("Sales Order Item", {"prevdoc_docname": self.name, "docstatus": 1})
@@ -100,6 +105,9 @@
@frappe.whitelist()
def make_sales_order(source_name, target_doc=None):
+ quotation = frappe.db.get_value("Quotation", source_name, ["transaction_date", "valid_till"], as_dict = 1)
+ if quotation.valid_till and (quotation.valid_till < quotation.transaction_date or quotation.valid_till < getdate(nowdate())):
+ frappe.throw(_("Validity period of this quotation has ended."))
return _make_sales_order(source_name, target_doc)
def _make_sales_order(source_name, target_doc=None, ignore_permissions=False):
diff --git a/erpnext/selling/doctype/quotation/test_quotation.py b/erpnext/selling/doctype/quotation/test_quotation.py
index fa69df4..c642c47 100644
--- a/erpnext/selling/doctype/quotation/test_quotation.py
+++ b/erpnext/selling/doctype/quotation/test_quotation.py
@@ -3,7 +3,7 @@
from __future__ import unicode_literals
import frappe
-from frappe.utils import flt
+from frappe.utils import flt, add_days, nowdate, add_months
import unittest
test_dependencies = ["Product Bundle"]
@@ -13,10 +13,11 @@
from erpnext.selling.doctype.quotation.quotation import make_sales_order
quotation = frappe.copy_doc(test_records[0])
+ quotation.transaction_date = nowdate()
+ quotation.valid_till = add_months(quotation.transaction_date, 1)
quotation.insert()
self.assertRaises(frappe.ValidationError, make_sales_order, quotation.name)
-
quotation.submit()
sales_order = make_sales_order(quotation.name)
@@ -29,9 +30,21 @@
sales_order.delivery_date = "2014-01-01"
sales_order.naming_series = "_T-Quotation-"
- sales_order.transaction_date = "2013-05-12"
+ sales_order.transaction_date = nowdate()
sales_order.insert()
+ def test_valid_till(self):
+ from erpnext.selling.doctype.quotation.quotation import make_sales_order
+
+ quotation = frappe.copy_doc(test_records[0])
+ quotation.valid_till = add_days(quotation.transaction_date, -1)
+ self.assertRaises(frappe.ValidationError, quotation.validate)
+
+ quotation.valid_till = add_days(nowdate(), -1)
+ quotation.insert()
+ quotation.submit()
+ self.assertRaises(frappe.ValidationError, make_sales_order, quotation.name)
+
def test_create_quotation_with_margin(self):
from erpnext.selling.doctype.quotation.quotation import make_sales_order
from erpnext.selling.doctype.sales_order.sales_order \
@@ -44,6 +57,8 @@
test_records[0]['items'][0]['margin_rate_or_amount'] = 18.75
quotation = frappe.copy_doc(test_records[0])
+ quotation.transaction_date = nowdate()
+ quotation.valid_till = add_months(quotation.transaction_date, 1)
quotation.insert()
self.assertEquals(quotation.get("items")[0].rate, rate_with_margin)
diff --git a/erpnext/selling/doctype/quotation/test_records.json b/erpnext/selling/doctype/quotation/test_records.json
index 5637fb9..7a9d3eb 100644
--- a/erpnext/selling/doctype/quotation/test_records.json
+++ b/erpnext/selling/doctype/quotation/test_records.json
@@ -23,14 +23,15 @@
"parentfield": "items",
"qty": 10.0,
"rate": 100.0,
- "uom": "_Test UOM 1",
+ "uom": "_Test UOM 1",
"stock_uom": "_Test UOM 1",
- "conversion_factor": 1.0
+ "conversion_factor": 1.0
}
],
"quotation_to": "Customer",
"selling_price_list": "_Test Price List",
"territory": "_Test Territory",
- "transaction_date": "2013-02-21"
+ "transaction_date": "2013-02-21",
+ "valid_till": "2013-03-21"
}
]
\ No newline at end of file
diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.py b/erpnext/selling/doctype/sales_order/test_sales_order.py
index ce8c18a..7c0d7f9 100644
--- a/erpnext/selling/doctype/sales_order/test_sales_order.py
+++ b/erpnext/selling/doctype/sales_order/test_sales_order.py
@@ -16,7 +16,7 @@
frappe.set_user("Administrator")
for role in ("Stock User", "Sales User"):
- set_user_permission_doctypes(doctype="Sales Order", role=role,
+ set_user_permission_doctypes(doctypes="Sales Order", role=role,
apply_user_permissions=0, user_permission_doctypes=None)
def test_make_material_request(self):
@@ -137,10 +137,10 @@
total_projected_qty = get_total_projected_qty('_Test Item')
item_doc_after_cancel = frappe.get_doc('Item', '_Test Item')
self.assertEqual(total_projected_qty, item_doc_after_cancel.total_projected_qty)
-
+
def test_reserved_qty_for_over_delivery_via_sales_invoice(self):
make_stock_entry(target="_Test Warehouse - _TC", qty=10, rate=100)
-
+
# set over-delivery tolerance
frappe.db.set_value('Item', "_Test Item", 'tolerance', 50)
@@ -158,9 +158,9 @@
total_projected_qty = get_total_projected_qty('_Test Item')
item_doc = frappe.get_doc('Item', '_Test Item')
self.assertEqual(total_projected_qty, item_doc.total_projected_qty)
-
+
self.assertEqual(get_reserved_qty(), existing_reserved_qty)
-
+
so.load_from_db()
self.assertEqual(so.get("items")[0].delivered_qty, 12)
self.assertEqual(so.per_delivered, 100)
@@ -170,7 +170,7 @@
total_projected_qty = get_total_projected_qty('_Test Item')
item_doc = frappe.get_doc('Item', '_Test Item')
self.assertEqual(total_projected_qty, item_doc.total_projected_qty)
-
+
so.load_from_db()
self.assertEqual(so.get("items")[0].delivered_qty, 0)
self.assertEqual(so.per_delivered, 0)
@@ -178,8 +178,8 @@
def test_reserved_qty_for_partial_delivery_with_packing_list(self):
make_stock_entry(target="_Test Warehouse - _TC", qty=10, rate=100)
make_stock_entry(item="_Test Item Home Desktop 100", target="_Test Warehouse - _TC", qty=10, rate=100)
-
-
+
+
existing_reserved_qty_item1 = get_reserved_qty("_Test Item")
existing_reserved_qty_item2 = get_reserved_qty("_Test Item Home Desktop 100")
@@ -227,7 +227,7 @@
def test_reserved_qty_for_over_delivery_with_packing_list(self):
make_stock_entry(target="_Test Warehouse - _TC", qty=10, rate=100)
make_stock_entry(item="_Test Item Home Desktop 100", target="_Test Warehouse - _TC", qty=10, rate=100)
-
+
# set over-delivery tolerance
frappe.db.set_value('Item', "_Test Product Bundle Item", 'tolerance', 50)
@@ -257,7 +257,7 @@
def test_warehouse_user(self):
for role in ("Stock User", "Sales User"):
- set_user_permission_doctypes(doctype="Sales Order", role=role,
+ set_user_permission_doctypes(doctypes="Sales Order", role=role,
apply_user_permissions=1, user_permission_doctypes=["Warehouse"])
frappe.permissions.add_user_permission("Warehouse", "_Test Warehouse 1 - _TC", "test@example.com")
@@ -283,6 +283,7 @@
frappe.set_user("test2@example.com")
so.insert()
+ frappe.set_user("Administrator")
frappe.permissions.remove_user_permission("Warehouse", "_Test Warehouse 1 - _TC", "test@example.com")
frappe.permissions.remove_user_permission("Warehouse", "_Test Warehouse 2 - _TC1", "test2@example.com")
frappe.permissions.remove_user_permission("Company", "_Test Company 1", "test2@example.com")
@@ -363,7 +364,7 @@
from erpnext.buying.doctype.purchase_order.purchase_order import update_status
make_stock_entry(target="_Test Warehouse - _TC", qty=10, rate=100)
-
+
po_item = make_item("_Test Item for Drop Shipping", {"is_stock_item": 1, "delivered_by_supplier": 1,
'default_supplier': '_Test Supplier',
"expense_account": "_Test Account Cost for Goods Sold - _TC",
diff --git a/erpnext/selling/doctype/sales_order/tests/test_sales_order.js b/erpnext/selling/doctype/sales_order/tests/test_sales_order.js
new file mode 100644
index 0000000..3eceb89
--- /dev/null
+++ b/erpnext/selling/doctype/sales_order/tests/test_sales_order.js
@@ -0,0 +1,62 @@
+QUnit.module('Sales Order');
+
+QUnit.test("test sales order", function(assert) {
+ assert.expect(8);
+ let done = assert.async();
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make('Sales Order', [
+ {customer: 'Test Customer 1'},
+ {items: [
+ [
+ {'delivery_date': frappe.datetime.add_days(frappe.defaults.get_default("year_end_date"), 1)},
+ {'qty': 5},
+ {'item_code': 'Test Product 4'},
+ {'uom': 'unit'},
+ {'margin_type': 'Percentage'},
+ {'discount_percentage': 10},
+ ]
+ ]},
+ {customer_address: 'Test1-Billing'},
+ {shipping_address_name: 'Test1-Shipping'},
+ {contact_person: 'Contact 1-Test Customer 1'},
+ {taxes_and_charges: 'TEST In State GST'},
+ {tc_name: 'Test Term 1'},
+ {terms: 'This is Test'}
+ ]);
+ },
+ () => {
+ return frappe.tests.set_form_values(cur_frm, [
+ {selling_price_list:'Test-Selling-USD'},
+ {currency: 'USD'},
+ {apply_discount_on:'Grand Total'},
+ {additional_discount_percentage:10}
+ ]);
+ },
+ () => cur_frm.save(),
+ () => {
+ // get_item_details
+ assert.ok(cur_frm.doc.items[0].item_name=='Test Product 4', "Item name correct");
+ // get tax details
+ assert.ok(cur_frm.doc.taxes_and_charges=='TEST In State GST', "Tax details correct");
+ // get tax account head details
+ assert.ok(cur_frm.doc.taxes[0].account_head=='CGST - '+frappe.get_abbr(frappe.defaults.get_default('Company')), " Account Head abbr correct");
+ // calculate totals
+ assert.ok(cur_frm.doc.items[0].price_list_rate==1000, "Item 1 price_list_rate");
+ assert.ok(cur_frm.doc.total== 4500, "total correct ");
+ assert.ok(cur_frm.doc.rounded_total== 4414.5, "rounded total correct ");
+
+ },
+ () => cur_frm.print_doc(),
+ () => frappe.timeout(1),
+ () => {
+ assert.ok($('.btn-print-print').is(':visible'), "Print Format Available");
+ assert.ok($(".section-break+ .section-break .column-break:nth-child(1) .data-field:nth-child(1) .value").text().includes("Billing Street 1"), "Print Preview Works As Expected");
+ },
+ () => cur_frm.print_doc(),
+ () => frappe.tests.click_button('Submit'),
+ () => frappe.tests.click_button('Yes'),
+ () => frappe.timeout(0.3),
+ () => done()
+ ]);
+});
diff --git a/erpnext/selling/doctype/sales_order/tests/test_sales_order_with_discount_on_grand_total.js b/erpnext/selling/doctype/sales_order/tests/test_sales_order_with_discount_on_grand_total.js
new file mode 100644
index 0000000..3247c85
--- /dev/null
+++ b/erpnext/selling/doctype/sales_order/tests/test_sales_order_with_discount_on_grand_total.js
@@ -0,0 +1,41 @@
+QUnit.module('Sales Order');
+
+QUnit.test("test sales order with additional discount in grand total", function(assert) {
+ assert.expect(2);
+ let done = assert.async();
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make('Sales Order', [
+ {customer: 'Test Customer 1'},
+ {items: [
+ [
+ {'delivery_date': frappe.datetime.add_days(frappe.defaults.get_default("year_end_date"), 1)},
+ {'qty': 5},
+ {'item_code': 'Test Product 4'},
+ ]
+ ]},
+ {customer_address: 'Test1-Billing'},
+ {shipping_address_name: 'Test1-Shipping'},
+ {contact_person: 'Contact 1-Test Customer 1'}
+ ]);
+ },
+ () => {
+ return frappe.tests.set_form_values(cur_frm, [
+ {apply_discount_on:'Grand Total'},
+ {additional_discount_percentage:10}
+ ]);
+ },
+ () => cur_frm.save(),
+ () => {
+ // get_item_details
+ assert.ok(cur_frm.doc.items[0].item_name=='Test Product 4', "Item name correct");
+ // get grand_total details
+ assert.ok(cur_frm.doc.grand_total== 450, "Grand total correct ");
+
+ },
+ () => frappe.tests.click_button('Submit'),
+ () => frappe.tests.click_button('Yes'),
+ () => frappe.timeout(0.3),
+ () => done()
+ ]);
+});
diff --git a/erpnext/selling/doctype/sales_order/tests/test_sales_order_with_item_wise_discount.js b/erpnext/selling/doctype/sales_order/tests/test_sales_order_with_item_wise_discount.js
new file mode 100644
index 0000000..c745374
--- /dev/null
+++ b/erpnext/selling/doctype/sales_order/tests/test_sales_order_with_item_wise_discount.js
@@ -0,0 +1,37 @@
+QUnit.module('Sales Order');
+
+QUnit.test("test sales order", function(assert) {
+ assert.expect(2);
+ let done = assert.async();
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make('Sales Order', [
+ {customer: 'Test Customer 1'},
+ {items: [
+ [
+ {'delivery_date': frappe.datetime.add_days(frappe.defaults.get_default("year_end_date"), 1)},
+ {'qty': 5},
+ {'item_code': 'Test Product 4'},
+ {'discount_percentage': 10},
+ {'margin_type': 'Percentage'}
+ ]
+ ]},
+ {customer_address: 'Test1-Billing'},
+ {shipping_address_name: 'Test1-Shipping'},
+ {contact_person: 'Contact 1-Test Customer 1'}
+ ]);
+ },
+ () => cur_frm.save(),
+ () => {
+ // get_item_details
+ assert.ok(cur_frm.doc.items[0].item_name=='Test Product 4', "Item name correct");
+ // get grand_total details
+ assert.ok(cur_frm.doc.grand_total== 450, "Grand total correct ");
+
+ },
+ () => frappe.tests.click_button('Submit'),
+ () => frappe.tests.click_button('Yes'),
+ () => frappe.timeout(0.3),
+ () => done()
+ ]);
+});
diff --git a/erpnext/selling/doctype/sales_order/tests/test_sales_order_with_multi_uom.js b/erpnext/selling/doctype/sales_order/tests/test_sales_order_with_multi_uom.js
new file mode 100644
index 0000000..74f51ca
--- /dev/null
+++ b/erpnext/selling/doctype/sales_order/tests/test_sales_order_with_multi_uom.js
@@ -0,0 +1,38 @@
+QUnit.module('Sales Order');
+
+QUnit.test("test sales order", function(assert) {
+ assert.expect(3);
+ let done = assert.async();
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make('Sales Order', [
+ {customer: 'Test Customer 1'},
+ {items: [
+ [
+ {'delivery_date': frappe.datetime.add_days(frappe.defaults.get_default("year_end_date"), 1)},
+ {'qty': 5},
+ {'item_code': 'Test Product 4'},
+ {'uom': 'unit'},
+ ]
+ ]},
+ {customer_address: 'Test1-Billing'},
+ {shipping_address_name: 'Test1-Shipping'},
+ {contact_person: 'Contact 1-Test Customer 1'}
+ ]);
+ },
+ () => cur_frm.save(),
+ () => {
+ // get_item_details
+ assert.ok(cur_frm.doc.items[0].item_name=='Test Product 4', "Item name correct");
+ // get uom details
+ assert.ok(cur_frm.doc.items[0].uom=='Unit', "Multi Uom correct");
+ // get grand_total details
+ assert.ok(cur_frm.doc.grand_total== 5000, "Grand total correct ");
+
+ },
+ () => frappe.tests.click_button('Submit'),
+ () => frappe.tests.click_button('Yes'),
+ () => frappe.timeout(0.3),
+ () => done()
+ ]);
+});
diff --git a/erpnext/selling/doctype/sales_order/test_sales_order.js b/erpnext/selling/doctype/sales_order/tests/test_sales_order_with_multiple_delivery_date.js
similarity index 96%
rename from erpnext/selling/doctype/sales_order/test_sales_order.js
rename to erpnext/selling/doctype/sales_order/tests/test_sales_order_with_multiple_delivery_date.js
index 87f0e96..8e05385 100644
--- a/erpnext/selling/doctype/sales_order/test_sales_order.js
+++ b/erpnext/selling/doctype/sales_order/tests/test_sales_order_with_multiple_delivery_date.js
@@ -27,7 +27,7 @@
assert.ok(cur_frm.doc.items[0].delivery_date == delivery_date);
},
() => frappe.timeout(1),
- // make SO without delivery date in parent,
+ // make SO without delivery date in parent,
// parent delivery date should be set based on final delivery date entered in item
() => {
return frappe.tests.make('Sales Order', [
diff --git a/erpnext/selling/doctype/sales_order/tests/test_sales_order_with_taxes_and_charges.js b/erpnext/selling/doctype/sales_order/tests/test_sales_order_with_taxes_and_charges.js
new file mode 100644
index 0000000..c946443
--- /dev/null
+++ b/erpnext/selling/doctype/sales_order/tests/test_sales_order_with_taxes_and_charges.js
@@ -0,0 +1,40 @@
+QUnit.module('Sales Order');
+
+QUnit.test("test sales order with taxes and charges", function(assert) {
+ assert.expect(3);
+ let done = assert.async();
+ frappe.run_serially([
+ () => {
+ return frappe.tests.make('Sales Order', [
+ {customer: 'Test Customer 1'},
+ {items: [
+ [
+ {'delivery_date': frappe.datetime.add_days(frappe.defaults.get_default("year_end_date"), 1)},
+ {'qty': 5},
+ {'item_code': 'Test Product 4'},
+ ]
+ ]},
+ {customer_address: 'Test1-Billing'},
+ {shipping_address_name: 'Test1-Shipping'},
+ {contact_person: 'Contact 1-Test Customer 1'},
+ {taxes_and_charges: 'TEST In State GST'},
+ {tc_name: 'Test Term 1'},
+ {terms: 'This is Test'}
+ ]);
+ },
+ () => cur_frm.save(),
+ () => {
+ // get_item_details
+ assert.ok(cur_frm.doc.items[0].item_name=='Test Product 4', "Item name correct");
+ // get tax details
+ assert.ok(cur_frm.doc.taxes_and_charges=='TEST In State GST', "Tax details correct");
+ // get tax account head details
+ assert.ok(cur_frm.doc.taxes[0].account_head=='CGST - '+frappe.get_abbr(frappe.defaults.get_default('Company')), " Account Head abbr correct");
+
+ },
+ () => frappe.tests.click_button('Submit'),
+ () => frappe.tests.click_button('Yes'),
+ () => frappe.timeout(0.3),
+ () => done()
+ ]);
+});
diff --git a/erpnext/setup/doctype/company/tests/test_company.js b/erpnext/setup/doctype/company/tests/test_company.js
new file mode 100644
index 0000000..afa3296
--- /dev/null
+++ b/erpnext/setup/doctype/company/tests/test_company.js
@@ -0,0 +1,23 @@
+QUnit.module('setup');
+
+QUnit.test("Test: Company [SetUp]", function (assert) {
+ assert.expect(1);
+ let done = assert.async();
+
+ frappe.run_serially([
+ // test company creation
+ () => frappe.set_route("List", "Company", "List"),
+ () => frappe.new_doc("Company"),
+ () => frappe.timeout(1),
+ () => cur_frm.set_value("company_name", "Test Company"),
+ () => cur_frm.set_value("abbr", "TC"),
+ () => cur_frm.set_value("domain", "Services"),
+ () => cur_frm.set_value("default_currency", "INR"),
+ // save form
+ () => cur_frm.save(),
+ () => frappe.timeout(1),
+ () => assert.equal("Test Company", cur_frm.doc.company_name,
+ 'name of company correctly saved'),
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/setup/doctype/company/tests/test_company_production.js b/erpnext/setup/doctype/company/tests/test_company_production.js
new file mode 100644
index 0000000..73bd710
--- /dev/null
+++ b/erpnext/setup/doctype/company/tests/test_company_production.js
@@ -0,0 +1,19 @@
+QUnit.test("Test: Company", function (assert) {
+ assert.expect(0);
+
+ let done = assert.async();
+
+ frappe.run_serially([
+ // Added company for Production Order testing
+ () => frappe.set_route("List", "Company"),
+ () => frappe.new_doc("Company"),
+ () => frappe.timeout(1),
+ () => cur_frm.set_value("company_name", "Razer Blade"),
+ () => cur_frm.set_value("abbr", "RB"),
+ () => cur_frm.set_value("default_currency", "USD"),
+ () => cur_frm.save(),
+ () => frappe.timeout(1),
+
+ () => done()
+ ]);
+});
\ No newline at end of file
diff --git a/erpnext/setup/page/welcome_to_erpnext/welcome_to_erpnext.html b/erpnext/setup/page/welcome_to_erpnext/welcome_to_erpnext.html
index cd4d977..57fce28 100644
--- a/erpnext/setup/page/welcome_to_erpnext/welcome_to_erpnext.html
+++ b/erpnext/setup/page/welcome_to_erpnext/welcome_to_erpnext.html
@@ -22,7 +22,7 @@
<ul class="list-unstyled">
<li><a class="text-muted" href="#">{%= __("Go to the Desktop and start using ERPNext") %}</a></li>
<li><a class="text-muted" href="#modules/Learn">{%= __("View a list of all the help videos") %}</a></li>
- <li><a class="text-muted" href="https://frappe.github.io/erpnext/user" target="_blank">{%= __("Read the ERPNext Manual") %}</a></li>
+ <li><a class="text-muted" href="https://erpnext.org/docs/user" target="_blank">{%= __("Read the ERPNext Manual") %}</a></li>
<li><a class="text-muted" href="https://discuss.erpnext.com" target="_blank">{%= __("Community Forum") %}</a></li>
</ul>
diff --git a/erpnext/setup/setup_wizard/install_fixtures.py b/erpnext/setup/setup_wizard/install_fixtures.py
index 43baf2f..ea6da04 100644
--- a/erpnext/setup/setup_wizard/install_fixtures.py
+++ b/erpnext/setup/setup_wizard/install_fixtures.py
@@ -185,6 +185,10 @@
{'doctype': "Party Type", "party_type": "Supplier"},
{'doctype': "Party Type", "party_type": "Employee"},
+ {'doctype': "Project Type", "project_type": "Internal"},
+ {'doctype': "Project Type", "project_type": "External"},
+ {'doctype': "Project Type", "project_type": "Other"},
+
{"doctype": "Offer Term", "offer_term": _("Date of Joining")},
{"doctype": "Offer Term", "offer_term": _("Annual Salary")},
{"doctype": "Offer Term", "offer_term": _("Probationary Period")},
@@ -213,6 +217,10 @@
records += [{'doctype': 'Lead Source', 'source_name': _(d)} for d in default_lead_sources]
+ # Records for the Supplier Scorecard
+ from erpnext.buying.doctype.supplier_scorecard.supplier_scorecard import make_default_records
+ make_default_records()
+
from frappe.modules import scrub
for r in records:
doc = frappe.new_doc(r.get("doctype"))
@@ -225,10 +233,10 @@
try:
doc.insert(ignore_permissions=True)
- except frappe.DuplicateEntryError, e:
+ except frappe.DuplicateEntryError as e:
# pass DuplicateEntryError and continue
if e.args and e.args[0]==doc.doctype and e.args[1]==doc.name:
# make sure DuplicateEntryError is for the exact same doc and not a related doc
pass
else:
- raise
\ No newline at end of file
+ raise
diff --git a/erpnext/setup/utils.py b/erpnext/setup/utils.py
index 93dad16..888099f 100644
--- a/erpnext/setup/utils.py
+++ b/erpnext/setup/utils.py
@@ -50,6 +50,7 @@
frappe.db.sql("delete from `tabItem Price`")
frappe.db.set_value("Stock Settings", None, "auto_insert_price_list_rate_if_missing", 0)
+ enable_all_roles_and_domains()
frappe.db.commit()
@@ -94,3 +95,29 @@
except:
frappe.msgprint(_("Unable to find exchange rate for {0} to {1} for key date {2}. Please create a Currency Exchange record manually").format(from_currency, to_currency, transaction_date))
return 0.0
+
+def enable_all_roles_and_domains():
+ """ enable all roles and domain for testing """
+ roles = frappe.get_list("Role", filters={"disabled": 1})
+ for role in roles:
+ _role = frappe.get_doc("Role", role.get("name"))
+ _role.disabled = 0
+ _role.flags.ignore_mandatory = True
+ _role.flags.ignore_permissions = True
+ _role.save()
+
+ # add all roles to users
+ user = frappe.get_doc("User", "Administrator")
+ user.add_roles(*[role.get("name") for role in roles])
+
+ domains = frappe.get_list("Domain")
+ if not domains:
+ return
+
+ domain_settings = frappe.get_doc("Domain Settings", "Domain Settings")
+ domain_settings.set("active_domains", [])
+ for domain in domains:
+ row = domain_settings.append("active_domains", {})
+ row.domain=domain.get("name")
+
+ domain_settings.save()
diff --git a/erpnext/shopping_cart/test_shopping_cart.py b/erpnext/shopping_cart/test_shopping_cart.py
index f221a8a..22b2895 100644
--- a/erpnext/shopping_cart/test_shopping_cart.py
+++ b/erpnext/shopping_cart/test_shopping_cart.py
@@ -4,6 +4,7 @@
from __future__ import unicode_literals
import unittest
import frappe
+from frappe.utils import nowdate, add_months
from erpnext.shopping_cart.cart import _get_cart_quotation, update_cart, get_party
from erpnext.tests.utils import create_test_contact_and_address
@@ -126,6 +127,8 @@
"selling_price_list": "_Test Price List Rest of the World",
"currency": "USD",
"taxes_and_charges" : "_Test Tax 1",
+ "transaction_date" : nowdate(),
+ "valid_till" : add_months(nowdate(), 1),
"items": [{
"item_code": "_Test Item",
"qty": 1
diff --git a/erpnext/stock/doctype/item/item.py b/erpnext/stock/doctype/item/item.py
index 2c6aab5..5dc97f6 100644
--- a/erpnext/stock/doctype/item/item.py
+++ b/erpnext/stock/doctype/item/item.py
@@ -132,7 +132,8 @@
from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry
# default warehouse, or Stores
- default_warehouse = (frappe.db.get_single_value('Stock Settings', 'default_warehouse')
+ default_warehouse = (self.default_warehouse
+ or frappe.db.get_single_value('Stock Settings', 'default_warehouse')
or frappe.db.get_value('Warehouse', {'warehouse_name': _('Stores')}))
if default_warehouse:
@@ -696,7 +697,7 @@
if verbose:
msgprint(msg, raise_exception=True)
else:
- raise frappe.ValidationError, msg
+ raise frappe.ValidationError(msg)
def get_last_purchase_details(item_code, doc_name=None, conversion_rate=1.0):
diff --git a/erpnext/stock/doctype/material_request/material_request.js b/erpnext/stock/doctype/material_request/material_request.js
index 3361020..fc0b9b2 100644
--- a/erpnext/stock/doctype/material_request/material_request.js
+++ b/erpnext/stock/doctype/material_request/material_request.js
@@ -36,9 +36,14 @@
frappe.msgprint(__("Warning: Material Requested Qty is less than Minimum Order Qty"));
}
},
+
item_code: function(frm, doctype, name) {
frm.script_manager.copy_from_first_row('items', frm.selected_doc,
'schedule_date');
+ },
+
+ schedule_date: function(frm, cdt, cdn) {
+ erpnext.utils.copy_value_in_all_row(frm.doc, cdt, cdn, "items", "schedule_date");
}
});
diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
index fdb65cd..92de229 100644
--- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
@@ -32,7 +32,7 @@
set_perpetual_inventory(0)
for role in ("Stock User", "Sales User"):
- set_user_permission_doctypes(doctype="Stock Entry", role=role,
+ set_user_permission_doctypes(doctypes="Stock Entry", role=role,
apply_user_permissions=0, user_permission_doctypes=None)
def test_fifo(self):
@@ -188,18 +188,18 @@
[["_Test Item", "_Test Warehouse - _TC", -45.0], ["_Test Item", "_Test Warehouse 1 - _TC", 45.0]])
stock_in_hand_account = get_inventory_account(mtn.company, mtn.get("items")[0].s_warehouse)
-
+
fixed_asset_account = get_inventory_account(mtn.company, mtn.get("items")[0].t_warehouse)
-
+
if stock_in_hand_account == fixed_asset_account:
# no gl entry as both source and target warehouse has linked to same account.
self.assertFalse(frappe.db.sql("""select * from `tabGL Entry`
where voucher_type='Stock Entry' and voucher_no=%s""", mtn.name))
-
+
else:
stock_value_diff = abs(frappe.db.get_value("Stock Ledger Entry", {"voucher_type": "Stock Entry",
"voucher_no": mtn.name, "warehouse": "_Test Warehouse - _TC"}, "stock_value_difference"))
-
+
self.check_gl_entries("Stock Entry", mtn.name,
sorted([
[stock_in_hand_account, 0.0, stock_value_diff],
@@ -467,7 +467,7 @@
# permission tests
def test_warehouse_user(self):
for role in ("Stock User", "Sales User"):
- set_user_permission_doctypes(doctype="Stock Entry", role=role,
+ set_user_permission_doctypes(doctypes="Stock Entry", role=role,
apply_user_permissions=1, user_permission_doctypes=["Warehouse"])
frappe.defaults.add_default("Warehouse", "_Test Warehouse 1 - _TC", "test@example.com", "User Permission")
diff --git a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
index 9c42529..360ebca 100644
--- a/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
+++ b/erpnext/stock/doctype/stock_reconciliation/stock_reconciliation.py
@@ -143,16 +143,16 @@
# item should not be serialized
if item.has_serial_no == 1:
- raise frappe.ValidationError, _("Serialized Item {0} cannot be updated using Stock Reconciliation, please use Stock Entry").format(item_code)
+ raise frappe.ValidationError(_("Serialized Item {0} cannot be updated using Stock Reconciliation, please use Stock Entry").format(item_code))
# item managed batch-wise not allowed
if item.has_batch_no == 1:
- raise frappe.ValidationError, _("Batched Item {0} cannot be updated using Stock Reconciliation, instead use Stock Entry").format(item_code)
+ raise frappe.ValidationError(_("Batched Item {0} cannot be updated using Stock Reconciliation, instead use Stock Entry").format(item_code))
# docstatus should be < 2
validate_cancelled_item(item_code, item.docstatus, verbose=0)
- except Exception, e:
+ except Exception as e:
self.validation_messages.append(_("Row # ") + ("%d: " % (row_num)) + cstr(e))
def update_stock_ledger(self):
diff --git a/erpnext/stock/doctype/warehouse/test_warehouse.js b/erpnext/stock/doctype/warehouse/test_warehouse.js
new file mode 100644
index 0000000..3763613
--- /dev/null
+++ b/erpnext/stock/doctype/warehouse/test_warehouse.js
@@ -0,0 +1,19 @@
+QUnit.test("test: warehouse", function (assert) {
+ assert.expect(0);
+ let done = assert.async();
+
+ frappe.run_serially([
+ // test warehouse creation
+ () => frappe.set_route("List", "Warehouse"),
+
+ // Create a Laptop Scrap Warehouse
+ () => frappe.tests.make(
+ "Warehouse", [
+ {warehouse_name: "Laptop Scrap Warehouse"},
+ {company: "Razer Blade"}
+ ]
+ ),
+
+ () => done()
+ ]);
+});
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index a3ae0eb..80ef708 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -243,7 +243,8 @@
if meta.get_field("currency"):
validate_price_list(args)
- validate_conversion_rate(args, meta)
+ if args.price_list:
+ validate_conversion_rate(args, meta)
price_list_rate = get_price_list_rate_for(args.price_list, item_doc.name)
diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py
index 8022691..7c6b34b 100644
--- a/erpnext/stock/stock_ledger.py
+++ b/erpnext/stock/stock_ledger.py
@@ -378,7 +378,7 @@
if self.verbose:
frappe.throw(msg, NegativeStockError, title='Insufficent Stock')
else:
- raise NegativeStockError, msg
+ raise NegativeStockError(msg)
def get_previous_sle(args, for_update=False):
"""
diff --git a/erpnext/support/doctype/issue/issue.js b/erpnext/support/doctype/issue/issue.js
index 2bee422..bef8cb4 100644
--- a/erpnext/support/doctype/issue/issue.js
+++ b/erpnext/support/doctype/issue/issue.js
@@ -20,9 +20,11 @@
timeline_refresh: function(frm) {
// create button for "Add to Knowledge Base"
if(frappe.model.can_create('Help Article')) {
- $('<button class="btn btn-xs btn-default btn-add-to-kb pull-right" style="margin-top: -2px">'+
+ // Removing Knowledge Base button if exists to avoid multiple occurance
+ frm.timeline.wrapper.find('.comment-header .asset-details .btn-add-to-kb').remove();
+ $('<button class="btn btn-xs btn-default btn-add-to-kb hidden-xs pull-right" style="margin-top: -2px">'+
__('Add to Knowledge Base') + '</button>')
- .appendTo(frm.timeline.wrapper.find('.comment-header'))
+ .appendTo(frm.timeline.wrapper.find('.comment-header .asset-details'))
.on('click', function() {
var content = $(this).parents('.timeline-item:first').find('.timeline-item-content').html();
var doc = frappe.model.get_new_doc('Help Article');
diff --git a/erpnext/support/web_form/issues/issues.json b/erpnext/support/web_form/issues/issues.json
index 6474799..264b9df 100644
--- a/erpnext/support/web_form/issues/issues.json
+++ b/erpnext/support/web_form/issues/issues.json
@@ -7,16 +7,18 @@
"allow_multiple": 1,
"allow_print": 0,
"amount": 0.0,
- "breadcrumbs": "[{\"title\":\"Issues\", \"name\":\"issues\"}]",
+ "amount_based_on_field": 0,
+ "breadcrumbs": "[{\"label\":_(\"Issues\"), \"route\":\"issues\"}]",
"creation": "2016-06-24 15:50:33.186483",
"doc_type": "Issue",
"docstatus": 0,
"doctype": "Web Form",
"idx": 0,
+ "introduction_text": "",
"is_standard": 1,
"login_required": 1,
"max_attachment_size": 0,
- "modified": "2016-12-07 04:26:13.917693",
+ "modified": "2017-07-25 22:49:10.762704",
"modified_by": "Administrator",
"module": "Support",
"name": "issues",
diff --git a/erpnext/templates/emails/daily_work_summary.html b/erpnext/templates/emails/daily_work_summary.html
index 726de3b..a22e09c 100644
--- a/erpnext/templates/emails/daily_work_summary.html
+++ b/erpnext/templates/emails/daily_work_summary.html
@@ -1,28 +1,25 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
- <div style="color: #333; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; word-wrap: break-word; overflow-wrap: break-word;">
- <h3>{{ title }}</h3>
- </div>
+ <h3>{{ title }}</h3>
</tr>
</table>
{% for reply in replies %}
-<table border="0" cellpadding="0" cellspacing="0" width="100%"
- style="background-color: #fafbfc; border: 1px solid #d1d8dd; border-radius: 3px 3px 0 0">
+<table class="panel-header" border="0" cellpadding="0" cellspacing="0" width="100%">
<tr height="10"></tr>
<tr>
<td width="15"></td>
<td valign="top" width="24">
{% if reply.image %}
- <img width="24" height="24" embed="{{ reply.image }}" style="border-radius: 3px; vertical-align: middle;" />
+ <img class="sender-avatar" width="24" height="24" embed="{{ reply.image }}"/>
{% else %}
- <div style="width: 24px; height: 24px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;background: #fff; border-radius: 3px; border: 1px solid #d1d8dd; text-align: center; line-height: 24px; color: #d1d8dd;">
+ <div class="sender-avatar-placeholder">
{{ reply.sender_name[0] }}
</div>
{% endif %}
</td>
<td width="10"></td>
<td>
- <div style="font-size: 12px; color: #8D99A6; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; word-wrap: break-word; line-height: 22px; overflow-wrap: break-word; text-decoration: none;">
+ <div class="text-medium text-muted">
<span>{{ reply.sender_name }}</span>
</div>
</td>
@@ -30,13 +27,12 @@
</tr>
<tr height="10"></tr>
</table>
-<table border="0" cellpadding="0" cellspacing="0" width="100%"
- style="background-color: #fff; border: 1px solid #d1d8dd; border-top: none; border-radius: 0 0 3px 3px">
+<table class="panel-body" border="0" cellpadding="0" cellspacing="0" width="100%">
<tr height="10"></tr>
<tr>
<td width="15"></td>
<td>
- <div style="font-size: 14px; color: #333; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; word-wrap: break-word; line-height: 22px; overflow-wrap: break-word; text-decoration: none;">
+ <div>
{{ reply.content }}
</div>
</td>
@@ -51,7 +47,7 @@
{% if did_not_reply %}
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
- <div style="font-size: 14px; color: #8D99A6; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; word-wrap: break-word; line-height: 22px; overflow-wrap: break-word; text-decoration: none;">
+ <div class="text-muted">
<p>{{ did_not_reply_title }}: {{ did_not_reply }}</p>
</div>
</tr>
diff --git a/erpnext/templates/includes/announcement/announcement_row.html b/erpnext/templates/includes/announcement/announcement_row.html
index d807bfc..3099441 100644
--- a/erpnext/templates/includes/announcement/announcement_row.html
+++ b/erpnext/templates/includes/announcement/announcement_row.html
@@ -3,12 +3,12 @@
<div class="row">
<a href="/announcements?announcement={{doc.name}}">
<div class="col-xs-12">
- <h1 class="blog-header">{{ doc.subject }}</h1>
+ <h1>{{ doc.subject }}</h1>
<p class="post-description more">{{ doc.description }}</p>
<p class="post-by text-muted small">
<i>{{ doc.posted_by }}</i>
- <i class="blog-dot"></i> {{ frappe.format_date(doc.modified) }}
- <i class="blog-dot"></i> {{ doc.num_attachments }} attachments
+ <i class="spacer-dot"></i> {{ frappe.format_date(doc.modified) }}
+ <i class="spacer-dot"></i> {{ doc.num_attachments }} attachments
</p>
</div>
</a>
diff --git a/erpnext/templates/includes/timesheet/timesheet_row.html b/erpnext/templates/includes/timesheet/timesheet_row.html
new file mode 100644
index 0000000..e9cfcda
--- /dev/null
+++ b/erpnext/templates/includes/timesheet/timesheet_row.html
@@ -0,0 +1,13 @@
+<div class="web-list-item">
+ <a href="/timesheets?name={{ doc.name | urlencode }}" class="no-decoration">
+ <div class="row">
+ <div class="col-xs-3">
+ <span class="indicator {{ "red" if doc.status=="Cancelled" else "green" if doc.status=="Billed" else "blue" if doc.status=="Submitted" else "darkgrey" }}">{{ doc.name }}</span>
+ </div>
+ <div class="col-xs-3"> Billable Hours: {{ doc.total_billable_hours}} </div>
+ <div class="col-xs-2"> {{ _(doc.sales_invoice) }} </div>
+ <div class="col-xs-2"> {{ _(doc.project) }} </div>
+ <div class="col-xs-2"> {{ _(doc.activity_type) }} </div>
+ </div>
+ </a>
+</div>
diff --git a/erpnext/templates/pages/order.html b/erpnext/templates/pages/order.html
index da9eb33..3e4eca3 100644
--- a/erpnext/templates/pages/order.html
+++ b/erpnext/templates/pages/order.html
@@ -80,7 +80,7 @@
<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"
- class="btn btn-primary btn-sm">Pay {{ doc.get_formatted("grand_total") }} </a>
+ class="btn btn-primary btn-sm">{{ _("Pay") }} {{ doc.get_formatted("grand_total") }} </a>
</p>
</div>
{% endif %}
diff --git a/erpnext/templates/pages/order.py b/erpnext/templates/pages/order.py
index b453c7e..7551a0f 100644
--- a/erpnext/templates/pages/order.py
+++ b/erpnext/templates/pages/order.py
@@ -18,6 +18,7 @@
context.attachments = get_attachments(frappe.form_dict.doctype, frappe.form_dict.name)
context.parents = frappe.form_dict.parents
+ context.title = frappe.form_dict.name
context.payment_ref = frappe.db.get_value("Payment Request",
{"reference_name": frappe.form_dict.name}, "name")
diff --git a/erpnext/tests/ui/tests.txt b/erpnext/tests/ui/tests.txt
index 40b1c59..fb86b7c 100644
--- a/erpnext/tests/ui/tests.txt
+++ b/erpnext/tests/ui/tests.txt
@@ -1,6 +1,55 @@
erpnext/tests/ui/make_fixtures.js #long
+erpnext/setup/doctype/company/tests/test_company.js
erpnext/accounts/doctype/account/test_account.js
+erpnext/accounts/doctype/account/test_make_tax_account.js
+erpnext/accounts/doctype/pricing_rule/test_pricing_rule.js
+erpnext/accounts/doctype/sales_taxes_and_charges_template/test_sales_taxes_and_charges_template.js
+erpnext/accounts/doctype/shipping_rule/test_shipping_rule.js
erpnext/crm/doctype/lead/test_lead.js
erpnext/crm/doctype/opportunity/test_opportunity.js
erpnext/selling/doctype/quotation/test_quotation.js
-erpnext/selling/doctype/sales_order/test_sales_order.js
\ No newline at end of file
+erpnext/setup/doctype/company/tests/test_company_production.js
+erpnext/crm/doctype/item/test_item.js
+erpnext/selling/doctype/sales_order/tests/test_sales_order.js
+erpnext/selling/doctype/sales_order/tests/test_sales_order_with_multiple_delivery_date.js
+erpnext/selling/doctype/sales_order/tests/test_sales_order_with_item_wise_discount.js
+erpnext/selling/doctype/sales_order/tests/test_sales_order_with_multi_uom.js
+erpnext/selling/doctype/sales_order/tests/test_sales_order_with_discount_on_grand_total.js
+erpnext/selling/doctype/sales_order/tests/test_sales_order_with_taxes_and_charges.js
+erpnext/manufacturing/doctype/workstation/test_workstation.js
+erpnext/manufacturing/doctype/operation/test_operation.js
+erpnext/manufacturing/doctype/bom/test_bom.js
+erpnext/projects/doctype/project/project_timesheet.js
+erpnext/hr/doctype/holiday_list/test_holiday_list.js
+erpnext/hr/doctype/branch/test_branch.js
+erpnext/hr/doctype/leave_block_list/test_leave_block_list.js
+erpnext/hr/doctype/department/test_department.js
+erpnext/hr/doctype/designation/test_designation.js
+erpnext/hr/doctype/employment_type/test_employment_type.js
+erpnext/hr/doctype/employee/test_employee.js
+erpnext/hr/doctype/employee_attendance_tool/test_employee_attendance_tool.js
+erpnext/hr/doctype/attendance/test_attendance.js
+erpnext/hr/doctype/leave_type/test_leave_type.js
+erpnext/hr/doctype/leave_control_panel/test_leave_control_panel.js
+erpnext/hr/doctype/leave_allocation/test_leave_allocation.js
+erpnext/hr/doctype/leave_application/test_leave_application.js
+erpnext/schools/doctype/academic_year/test_academic_year.js
+erpnext/schools/doctype/academic_term/test_academic_term.js
+erpnext/schools/doctype/school_settings/test_school_settings.js
+erpnext/schools/doctype/student_batch_name/test_student_batch_name.js
+erpnext/schools/doctype/student_category/test_student_category.js
+erpnext/schools/doctype/room/test_room.js
+erpnext/schools/doctype/instructor/test_instructor.js
+erpnext/stock/doctype/warehouse/test_warehouse.js
+erpnext/manufacturing/doctype/production_order/test_production_order.js
+erpnext/accounts/page/pos/test_pos.js
+erpnext/selling/doctype/product_bundle/test_product_bundle.js
+erpnext/schools/doctype/grading_scale/test_grading_scale.js
+erpnext/schools/doctype/assessment_criteria_group/test_assessment_criteria_group.js
+erpnext/schools/doctype/assessment_criteria/test_assessment_criteria.js
+erpnext/schools/doctype/course/test_course.js
+erpnext/schools/doctype/program/test_program.js
+erpnext/schools/doctype/guardian/test_guardian.js
+erpnext/schools/doctype/student_admission/test_student_admission.js
+erpnext/schools/doctype/student_applicant/tests/test_student_applicant.js
+erpnext/schools/doctype/student_applicant/tests/test_student_applicant_options.js
\ No newline at end of file