Compare commits

...

42 Commits

Author SHA1 Message Date
Nabin Hait
c1162796c5 Merge branch 'develop' 2016-08-05 16:45:14 +05:30
Nabin Hait
82446bf83e bumped to version 7.0.19 2016-08-05 17:15:14 +06:00
Nabin Hait
c72f8976aa Merge pull request #5989 from umairsy/2aug
updated docs
2016-08-05 15:50:34 +05:30
Nabin Hait
c49a3425ef Merge pull request #6002 from nabinhait/pe_fix_101
Payment Entry fix: Unallocated amount in payment entry considering deductions
2016-08-05 15:44:44 +05:30
Nabin Hait
e1d85f2467 Payment Entry fix: Unallocated amount in payment entry considering deductions 2016-08-05 14:51:36 +05:30
Umair Sayyed
3962cded76 updated docs 2016-08-04 19:01:02 +05:30
Umair Sayyed
66360f694e updated docs 2016-08-04 19:01:02 +05:30
Umair Sayyed
5dba950afa docs update 2016-08-04 19:01:02 +05:30
Umair Sayyed
6a3f51bee2 updated docs 2016-08-04 19:01:02 +05:30
Rushabh Mehta
efe1ab742f [minor] fixes for demo 2016-08-04 17:29:46 +05:30
Rushabh Mehta
4d32d5301a Merge pull request #5996 from KanchanChauhan/users-selection-for-project
'Project Users' role not required to add user to the project
2016-08-04 14:25:52 +05:30
Kanchan Chauhan
58bc00f954 Project Users role not required to add user to the project 2016-08-04 14:21:20 +05:30
Nabin Hait
155074479b Merge pull request #5986 from nabinhait/pe_fix_101
Set received amount based on paid amount if currency is same
2016-08-03 17:54:01 +05:30
Nabin Hait
fa1775b6a6 Merge pull request #5988 from nabinhait/item_route
default material request type field restored in item
2016-08-03 17:53:11 +05:30
Nabin Hait
764e6ef210 default material request type field restored in item 2016-08-03 17:32:26 +05:30
Rushabh Mehta
f2d89987f5 [minor] ignore email validation if comes from email; 2016-08-03 16:42:29 +05:30
Rushabh Mehta
06c92a782a [fix] small text for route 2016-08-03 16:27:11 +05:30
Nabin Hait
f43e49f378 Set received amount based on paid amount if currency is same 2016-08-03 14:17:05 +05:30
Rushabh Mehta
ea5ad84c5e [minor] fix image for demo 2016-08-02 21:26:04 +05:30
Nabin Hait
46f328cbda Merge branch 'develop' 2016-08-02 18:07:53 +05:30
Nabin Hait
1b9a01b6c3 bumped to version 7.0.18 2016-08-02 18:37:52 +06:00
Nabin Hait
e8ab7b8898 Merge pull request #5976 from nabinhait/patch_fix_109
[patch] Set default material request type in Item based on default bom
2016-08-02 18:05:03 +05:30
Nabin Hait
ae921ce2c8 [patch] Set default material request type in Item based on default bom 2016-08-02 18:02:31 +05:30
Nabin Hait
b77ad7c31d Merge branch 'develop' 2016-08-02 17:16:46 +05:30
Nabin Hait
cc13a9f2f6 bumped to version 7.0.17 2016-08-02 17:46:46 +06:00
Nabin Hait
97c74f9f8f Merge pull request #5925 from rohitwaghchaure/bcornwellmott-1
PPT looks at default MR type in Item to set MR type.
2016-08-02 17:15:02 +05:30
Nabin Hait
e1e6468b33 Merge pull request #5974 from nabinhait/pos_change_amount
Change amount calcualtion in POS if there is write off amount and gl entries in this scenario
2016-08-02 17:14:50 +05:30
Nabin Hait
6620e2a494 Test case fixed for pos gl entry 2016-08-02 17:14:28 +05:30
Rohit Waghchaure
08aadb853c PPT looks at default MR type in Item to set MR type. 2016-08-02 16:59:03 +05:30
Nabin Hait
3bb1a421f0 Change amount calcualtion in POS if there is write off amount and gl entries in this scenario 2016-08-02 16:41:15 +05:30
Nabin Hait
afc0bbc8ff Merge pull request #5964 from frappe/neilLasrado-patch-1-1
Fixes for patch - make_guardian.py
2016-08-02 11:30:45 +05:30
Nabin Hait
8869430a81 Merge pull request #5967 from rohitwaghchaure/minor_fix
minor fix in payment entry
2016-08-02 11:29:48 +05:30
Rohit Waghchaure
7f031d1bfd minor fix in payment entry 2016-08-02 11:07:40 +05:30
Rushabh Mehta
5b1ebc5c54 Merge pull request #5933 from shreyasp/erpnext/update-travis
[Minor] Updated the travis.yml to use latest bench installer for erpnext
2016-08-02 10:44:39 +05:30
Neil Trini Lasrado
5bb2f56b47 Update make_guardian.py 2016-08-02 00:01:00 +05:30
Nabin Hait
1e3e6865ce Merge branch 'develop' 2016-08-01 18:07:21 +05:30
Nabin Hait
94542e104c bumped to version 7.0.16 2016-08-01 18:37:20 +06:00
Nabin Hait
90bf69aa52 Merge pull request #5957 from nabinhait/guardian_patch_fix
[patch] reload guardian interest
2016-08-01 18:05:33 +05:30
Nabin Hait
3b8109780f [patch] reload guardian interest 2016-08-01 17:59:46 +05:30
Nabin Hait
f863055b91 Merge pull request #5955 from umairsy/28jul
added documentation for the new features
2016-08-01 17:53:26 +05:30
Umair Sayyed
e96b3ce725 added documentation for the new features 2016-08-01 17:42:30 +05:30
shreyas
60e9f84c8a [Minor] Updated the travis.yml to use new installer for erpnext 2016-08-01 17:40:20 +05:30
115 changed files with 451 additions and 309 deletions

View File

@@ -1,4 +1,5 @@
language: python
dist: trusty
python:
- "2.7"
@@ -11,10 +12,14 @@ before_install:
- "sh -e /etc/init.d/xvfb start"
install:
- sudo apt-get purge -y mysql-common
- wget https://raw.githubusercontent.com/frappe/bench/master/install_scripts/setup_frappe.sh
- sudo bash setup_frappe.sh --skip-setup-bench --mysql-root-password travis --bench-branch develop
- sudo pip install --upgrade pip
- sudo apt-get purge -y mysql-common mysql-server mysql-client
# - wget https://raw.githubusercontent.com/frappe/bench/master/install_scripts/setup_frappe.sh
# - sudo bash setup_frappe.sh --skip-setup-bench --mysql-root-password travis --bench-branch develop
- wget https://raw.githubusercontent.com/frappe/bench/master/playbooks/install.py
- sudo python install.py --develop --user travis --without-bench-setup
- sudo pip install -e ~/bench
# - sudo pip install --upgrade pip
- rm $TRAVIS_BUILD_DIR/.git/shallow
- bash $TRAVIS_BUILD_DIR/travis/bench_init.sh
- cp -r $TRAVIS_BUILD_DIR/test_sites/test_site ~/frappe-bench/sites/
@@ -30,7 +35,7 @@ script:
- bench --verbose run-tests --driver Firefox
before_script:
- mysql -e 'create database test_frappe'
- mysql -u root -ptravis -e 'create database test_frappe'
- echo "USE mysql;\nCREATE USER 'test_frappe'@'localhost' IDENTIFIED BY 'test_frappe';\nFLUSH PRIVILEGES;\n" | mysql -u root -ptravis
- echo "USE mysql;\nGRANT ALL PRIVILEGES ON \`test_frappe\`.* TO 'test_frappe'@'localhost';\n" | mysql -u root -ptravis

View File

@@ -2,7 +2,7 @@
from __future__ import unicode_literals
import frappe
__version__ = '7.0.15'
__version__ = '7.0.19'
def get_default_company(user=None):
'''Get default company for user'''

View File

@@ -95,13 +95,13 @@ frappe.ui.form.on('Payment Entry', {
frm.doc.paid_to_account_currency != company_currency &&
frm.doc.paid_from_account_currency != frm.doc.paid_to_account_currency));
frm.toggle_display("base_paid_amount", frm.doc.paid_from_account_currency != company_currency);
frm.toggle_display("base_paid_amount", frm.doc.paid_from_account_currency != company_currency);
frm.toggle_display("base_received_amount", (frm.doc.paid_to_account_currency != company_currency &&
frm.doc.paid_from_account_currency != frm.doc.paid_to_account_currency));
frm.toggle_display("received_amount",
frm.doc.paid_from_account_currency != frm.doc.paid_to_account_currency)
frm.toggle_display("received_amount", (frm.doc.payment_type=="Internal Transfer" ||
frm.doc.paid_from_account_currency != frm.doc.paid_to_account_currency))
frm.toggle_display(["base_total_allocated_amount"],
(frm.doc.paid_amount && frm.doc.received_amount && frm.doc.base_total_allocated_amount &&
@@ -414,10 +414,7 @@ frappe.ui.form.on('Payment Entry', {
paid_amount: function(frm) {
frm.set_value("base_paid_amount", flt(frm.doc.paid_amount) * flt(frm.doc.source_exchange_rate));
frm.trigger("reset_received_amount");
frm.set_paid_amount_based_on_received_amount = false;
},
received_amount: function(frm) {
@@ -436,22 +433,19 @@ frappe.ui.form.on('Payment Entry', {
frm.events.allocate_party_amount_against_ref_docs(frm, frm.doc.received_amount);
else
frm.events.set_difference_amount(frm);
frm.set_paid_amount_based_on_received_amount = false;
},
reset_received_amount: function(frm) {
if(!frm.set_paid_amount_based_on_received_amount &&
(frm.doc.paid_from_account_currency == frm.doc.paid_to_account_currency)) {
// var total_deductions = frappe.utils.sum($.map(frm.doc.deductions || [],
// function(d) { return d.amount}));
//
// var received_amount = frm.doc.paid_amount +
// flt(total_deductions) / flt(frm.doc.source_exchange_rate);
//
frm.set_value("received_amount", frm.doc.paid_amount);
frm.set_value("target_exchange_rate", frm.doc.source_exchange_rate);
frm.set_value("base_received_amount", frm.doc.base_paid_amount);
}
if(frm.doc.payment_type == "Receive")
frm.events.allocate_party_amount_against_ref_docs(frm, frm.doc.paid_amount);
else
@@ -607,11 +601,18 @@ frappe.ui.form.on('Payment Entry', {
if(frm.doc.party) {
var party_amount = frm.doc.payment_type=="Receive" ?
frm.doc.paid_amount : frm.doc.received_amount;
var total_deductions = frappe.utils.sum($.map(frm.doc.deductions || [],
function(d) { return flt(d.amount) }));
if(frm.doc.total_allocated_amount < party_amount)
unallocated_amount = party_amount - frm.doc.total_allocated_amount;
if(frm.doc.total_allocated_amount < party_amount) {
if(frm.doc.payment_type == "Receive") {
unallocated_amount = party_amount - (frm.doc.total_allocated_amount - total_deductions);
} else {
unallocated_amount = party_amount - (frm.doc.total_allocated_amount + total_deductions);
}
}
}
frm.set_value("unallocated_amount", unallocated_amount);
var difference_amount = 0;

View File

@@ -247,8 +247,13 @@ class PaymentEntry(AccountsController):
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:
self.unallocated_amount = party_amount - self.total_allocated_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)
@@ -569,10 +574,9 @@ def get_company_defaults(company):
@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":
ref_doc = frappe.get_doc(reference_doctype, reference_name)
if party_account_currency == ref_doc.company_currency:
total_amount = ref_doc.base_grand_total
exchange_rate = 1

View File

@@ -10,6 +10,7 @@
"docstatus": 0,
"doctype": "DocType",
"document_type": "",
"editable_grid": 0,
"fields": [
{
"allow_on_submit": 0,
@@ -1135,7 +1136,7 @@
"no_copy": 0,
"permlevel": 0,
"precision": "2",
"print_hide": 0,
"print_hide": 1,
"print_hide_if_no_value": 0,
"read_only": 1,
"report_hide": 0,
@@ -3676,7 +3677,7 @@
"istable": 0,
"max_attachments": 0,
"menu_index": 0,
"modified": "2016-07-07 13:40:27.977803",
"modified": "2016-08-03 11:50:49.680278",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Sales Invoice",

View File

@@ -87,15 +87,6 @@ class SalesInvoice(SellingController):
def before_save(self):
set_account_for_mode_of_payment(self)
def update_change_amount(self):
self.base_paid_amount = 0.0
if self.paid_amount:
self.base_paid_amount = flt(self.paid_amount * self.conversion_rate, self.precision("base_paid_amount"))
self.change_amount = self.base_change_amount = 0.0
if self.paid_amount > self.grand_total:
self.change_amount = flt(self.paid_amount - self.grand_total, self.precision("change_amount"))
self.base_change_amount = flt(self.change_amount * self.conversion_rate, self.precision("base_change_amount"))
def on_submit(self):
if not self.recurring_id:
frappe.get_doc('Authorization Control').validate_approving_authority(self.doctype,
@@ -110,6 +101,7 @@ class SalesInvoice(SellingController):
self.update_status_updater_args()
self.update_prevdoc_status()
self.update_billing_status_in_dn()
self.clear_unallocated_mode_of_payments()
# Updating stock ledger should always be called after updating prevdoc status,
# because updating reserved qty in bin depends upon updated delivered qty in SO
@@ -296,6 +288,12 @@ class SalesInvoice(SellingController):
frappe.throw(_("Debit To account must be a Receivable account"))
self.party_account_currency = account.account_currency
def clear_unallocated_mode_of_payments(self):
self.set("payments", self.get("payments", {"amount": ["not in", [0, None, ""]]}))
frappe.db.sql("""delete from `tabSales Invoice Payment` where parent = %s
and amount = 0""", self.name)
def validate_with_previous_doc(self):
super(SalesInvoice, self).validate_with_previous_doc({
@@ -504,6 +502,7 @@ class SalesInvoice(SellingController):
gl_entries = merge_similar_entries(gl_entries)
self.make_pos_gl_entries(gl_entries)
self.make_gle_for_change(gl_entries)
self.make_write_off_gl_entry(gl_entries)
@@ -578,27 +577,24 @@ class SalesInvoice(SellingController):
def make_pos_gl_entries(self, gl_entries):
if cint(self.is_pos) and self.paid_amount:
# POS, make payment entries
gl_entries.append(
self.get_gl_dict({
"account": self.debit_to,
"party_type": "Customer",
"party": self.customer,
"against": self.cash_bank_account,
"credit": flt(self.base_paid_amount - self.base_change_amount),
"credit_in_account_currency": flt(self.base_paid_amount - self.base_change_amount) \
if self.party_account_currency==self.company_currency else flt(self.paid_amount - self.change_amount),
"against_voucher": self.return_against if cint(self.is_return) else self.name,
"against_voucher_type": self.doctype,
}, self.party_account_currency)
)
cash_account = ''
for payment_mode in self.payments:
if payment_mode.type == 'Cash':
cash_account = payment_mode.account
if payment_mode.base_amount > 0:
# POS, make payment entries
gl_entries.append(
self.get_gl_dict({
"account": self.debit_to,
"party_type": "Customer",
"party": self.customer,
"against": payment_mode.account,
"credit": payment_mode.base_amount,
"credit_in_account_currency": payment_mode.base_amount \
if self.party_account_currency==self.company_currency \
else payment_mode.amount,
"against_voucher": self.return_against if cint(self.is_return) else self.name,
"against_voucher_type": self.doctype,
}, self.party_account_currency)
)
payment_mode_account_currency = get_account_currency(payment_mode.account)
gl_entries.append(
self.get_gl_dict({
@@ -609,20 +605,44 @@ class SalesInvoice(SellingController):
if payment_mode_account_currency==self.company_currency else payment_mode.amount
}, payment_mode_account_currency)
)
if self.change_amount:
cash_account = cash_account or self.payments[0].account
cash_account_currency = get_account_currency(cash_account)
def make_gle_for_change(self, gl_entries):
if cint(self.is_pos) and self.change_amount:
cash_account = self.get_cash_account()
if cash_account:
gl_entries.append(
self.get_gl_dict({
"account": self.debit_to,
"party_type": "Customer",
"party": self.customer,
"against": cash_account,
"debit": flt(self.base_change_amount),
"debit_in_account_currency": flt(self.base_change_amount) \
if self.party_account_currency==self.company_currency else flt(self.change_amount),
"against_voucher": self.return_against if cint(self.is_return) else self.name,
"against_voucher_type": self.doctype
}, self.party_account_currency)
)
gl_entries.append(
self.get_gl_dict({
"account": cash_account,
"against": self.customer,
"credit": self.base_change_amount,
"credit_in_account_currency": self.base_change_amount \
if payment_mode_account_currency==self.company_currency else self.change_amount
}, payment_mode_account_currency)
"credit": self.base_change_amount
})
)
def get_cash_account(self):
cash_account = [d.account for d in self.payments if d.type=="Cash"]
if cash_account:
cash_account = cash_account[0]
else:
cash_account = frappe.db.get_value("Account",
filters={"company": self.company, "account_type": "Cash", "is_group": 0})
return cash_account
def make_write_off_gl_entry(self, gl_entries):
# write off entries, applicable if only pos
if self.write_off_account and self.write_off_amount:

View File

@@ -503,7 +503,8 @@ class TestSalesInvoice(unittest.TestCase):
[pos["taxes"][1]["account_head"], 0.0, 50.0],
[stock_in_hand, 0.0, abs(sle.stock_value_difference)],
[pos["items"][0]["expense_account"], abs(sle.stock_value_difference), 0.0],
[si.debit_to, 0.0, si.paid_amount],
[si.debit_to, 0.0, 300.0],
[si.debit_to, 0.0, cash_amount],
["_Test Bank - _TC", 300.0, 0.0],
["Cash - _TC", cash_amount, 0.0]
])

View File

@@ -26,6 +26,12 @@ def get_data():
"name": "Payment Entry",
"description": _("Bank/Cash transactions against party or for internal transfer")
},
{
"type": "page",
"name": "pos",
"label": _("POS"),
"description": _("Point of Sale")
},
{
"type": "report",
"name": "Accounts Receivable",

View File

@@ -12,7 +12,7 @@ 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 my online
listed as one of the Best Open Source Softwares in the world by many online
blogs."""
docs_version = "6.x.x"

View File

@@ -440,33 +440,32 @@ class calculate_taxes_and_totals(object):
paid_amount = self.doc.paid_amount \
if self.doc.party_account_currency == self.doc.currency else self.doc.base_paid_amount
self.doc.outstanding_amount = 0
if total_amount_to_pay > paid_amount:
self.doc.outstanding_amount = flt(total_amount_to_pay - flt(paid_amount),
self.doc.precision("outstanding_amount"))
self.change_amount()
self.calculate_change_amount()
self.doc.outstanding_amount = flt(total_amount_to_pay - flt(paid_amount) +
flt(self.doc.change_amount), self.doc.precision("outstanding_amount"))
elif self.doc.doctype == "Purchase Invoice":
self.doc.outstanding_amount = flt(total_amount_to_pay, self.doc.precision("outstanding_amount"))
def calculate_paid_amount(self):
paid_amount = base_paid_amount = 0.0
for payment in self.doc.get('payments'):
payment.base_amount = flt(payment.amount * self.doc.conversion_rate)
paid_amount += payment.amount
base_paid_amount += payment.base_amount
if flt(payment.amount) > 0:
payment.base_amount = flt(payment.amount * self.doc.conversion_rate)
paid_amount += payment.amount
base_paid_amount += payment.base_amount
self.doc.paid_amount = flt(paid_amount, self.doc.precision("paid_amount"))
self.doc.base_paid_amount = flt(base_paid_amount, self.doc.precision("base_paid_amount"))
def change_amount(self):
change_amount = 0.0
def calculate_change_amount(self):
self.doc.change_amount = 0.0
if self.doc.paid_amount > self.doc.grand_total:
change_amount = flt(self.doc.paid_amount - self.doc.grand_total,
self.doc.precision("change_amount"))
self.doc.change_amount = flt(self.doc.paid_amount - self.doc.grand_total +
self.doc.write_off_amount, self.doc.precision("change_amount"))
self.doc.change_amount = change_amount;
self.doc.base_change_amount = flt(change_amount * self.doc.conversion_rate,
self.doc.base_change_amount = flt(self.doc.change_amount * self.doc.conversion_rate,
self.doc.precision("base_change_amount"))
def calculate_margin(self, item):

View File

@@ -38,7 +38,8 @@ class Lead(SellingController):
frappe.throw(_("Campaign Name is required"))
if self.email_id:
validate_email_add(self.email_id, True)
if not self.flags.ignore_email_validation:
validate_email_add(self.email_id, True)
if self.email_id == self.lead_owner:
# Lead Owner cannot be same as the Lead

View File

@@ -3,7 +3,7 @@
from __future__ import unicode_literals
import frappe, json
from frappe.utils import cstr, cint, get_fullname, validate_email_add
from frappe.utils import cstr, cint, get_fullname
from frappe import msgprint, _
from frappe.model.mapper import get_mapped_doc
from erpnext.setup.utils import get_exchange_rate
@@ -43,7 +43,7 @@ class Opportunity(TransactionBase):
def make_new_lead_if_required(self):
"""Set lead against new opportunity"""
if not (self.lead or self.customer) and self.contact_email and validate_email_add(self.contact_email):
if not (self.lead or self.customer) and self.contact_email:
lead_name = frappe.db.get_value("Lead", {"email_id": self.contact_email})
if not lead_name:
sender_name = get_fullname(self.contact_email)
@@ -64,6 +64,7 @@ class Opportunity(TransactionBase):
"lead_name": sender_name
})
lead.flags.ignore_email_validation = True
lead.insert(ignore_permissions=True)
lead_name = lead.name

View File

@@ -53,7 +53,7 @@ def simulate():
if not runs_for:
runs_for = frappe.utils.date_diff(frappe.utils.nowdate(), current_date)
# runs_for = 100
fixed_asset.work()
for i in xrange(runs_for):
@@ -72,9 +72,6 @@ def simulate():
stock.work()
accounts.work()
projects.run_projects(current_date)
# run_stock()
# run_accounts()
# run_projects()
# run_messages()
current_date = frappe.utils.add_days(current_date, 1)

View File

@@ -212,7 +212,7 @@ def setup_user():
user = frappe.new_doc("User")
user.update(u)
user.flags.no_welcome_mail
user.password = 'demo'
user.new_password = 'demo'
user.insert()
def import_json(doctype, submit=False, values=None):
@@ -377,6 +377,12 @@ def setup_budget():
def setup_user_roles():
user = frappe.get_doc('User', 'demo@erpnext.com')
user.add_roles('HR User', 'HR Manager', 'Accounts User', 'Accounts Manager',
'Stock User', 'Stock Manager', 'Sales User', 'Sales Manager', 'Purchase User',
'Purchase Manager', 'Projects User', 'Manufacturing User', 'Manufacturing Manager',
'Support Team')
if not frappe.db.get_global('demo_hr_user'):
user = frappe.get_doc('User', 'CharmaineGaudreau@example.com')
user.add_roles('HR User', 'HR Manager', 'Accounts User')
@@ -439,7 +445,7 @@ def setup_leave_allocation():
for leave_type in leave_types:
if not leave_type.max_days_allowed:
leave_type.max_days_allowed = 10
leave_allocation = frappe.get_doc({
"doctype": "Leave Allocation",
"employee": employee.name,
@@ -450,4 +456,4 @@ def setup_leave_allocation():
})
leave_allocation.insert()
leave_allocation.submit()
frappe.db.commit()
frappe.db.commit()

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 125 KiB

View File

@@ -38,7 +38,7 @@ 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 my online
listed as one of the Best Open Source Softwares in the world by many online
blogs.</p>
</div>

View File

@@ -1,21 +1,19 @@
journal-entry
sales-invoice
purchase-invoice
payment-request
chart-of-accounts
opening-accounts
sales-invoice
point-of-sale-pos-invoice
purchase-invoice
journal-entry
payment-entry
multi-currency-accounting
advance-payment-entry
payment-request
credit-limit
opening-entry
accounting-reports
accounting-entries
managing-fixed-assets
budgeting
opening-accounts
item-wise-tax
point-of-sale-pos-invoice
multi-currency-accounting
item-wise-taxation
recurring-orders-and-invoices
pricing-rule
tools

View File

@@ -1,4 +1,3 @@
Taxes selected in the Tax and Other Charges in transactions are applied on all the items. If you need different taxes applied on items selected in the same transaction, you should setup you item and tax master as explained in the steps below.
####Step 1: Mention Tax Applicable in the Item master

View File

@@ -2,30 +2,33 @@ In ERPNext, you can maintain fixed asset records like Computers, Furnitures, Car
## Asset Category
To start first you should create an Asset Category, depending on the type of assets. 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.
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">
> **Note:** You can also set default depreciation related Accounts and Cost Centers in Company.
> **Note:** You can also set default depreciation related Accounts and Cost Centers in Company master.
## Asset
Next step will be creating the fixed asset record. Asset record is the heart of fixed asset management, all the activities like purchasing, depreciation, scrapping or sales are managed against it.
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">
Explanation of the fields:
1. Asset Category: The category of assets it belongs to.
2. 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.
3. Status: The options are - Draft, Submitted, Partially Depreciated, Fully Depreciated, Sold and Scrapped.
4. Warehouse: Set the location of the asset.
5. Gross Purchase Amount: The purchase cost of the asset
6. Expected Value After Useful Life: Useful Life is the time period over in which the company expects that the asset will be productive. After that period, either the asset is scrapped or sold. In case it is sold, mention the estimated value here. This value is also known as Salvage Value, Scrap Value or Residual Value.
7. Opening Accumulated Depreciation: The accumulated depreciation amount which has already been booked for an existing asset.
8. Current Value (After Depreciation): In case you are creating record of an existing asset which has already been partially/fully depreciated, mention the currect value of the asset. In case of new asset, mention the purchase amount or leave it blank.
9. Depreciation Method: There are two options: Straight Line and Double Declining Balance.
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">
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.
4. Status: The options are - Draft, Submitted, Partially Depreciated, Fully Depreciated, Sold and Scrapped.
5. Warehouse: Set the location of the asset.
6. Gross Purchase Amount: The purchase cost of the asset.
7. Expected Value After Useful Life: Useful Life is the time period over in which the company expects that the asset will be productive. After that period, either the asset is scrapped or sold. In case it is sold, mention the estimated value here. This value is also known as Salvage Value, Scrap Value or Residual Value.
8. Opening Accumulated Depreciation: The accumulated depreciation amount which has already been booked for an existing asset.
9. Current Value (After Depreciation): In case you are creating record of an existing asset which has already been partially/fully depreciated, mention the current value of the asset. In case of new asset, mention the purchase amount or leave it blank.
10. Depreciation Method: There are two options: Straight Line and Double Declining Balance.
- Straight Line: This method spreads the cost of the fixed asset evenly over its useful life.
- Double Declining Method: An accelerated method of depreciation, it results in higher depreciation expense in the earlier years of ownership.
10. Total Number of Depreciations: The total number of depreciations during the useful life. In case of existing assets which are partially depreciated, mention the number of pending depreciations.
@@ -52,16 +55,16 @@ For better visibility, net value of the asset on different depreciation dates ar
## 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 teh Asset Category) in the Expense Account field. You need to select Supplier and other necessary details and submit the Purchase Invoice.
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">
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 record.
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.
## Sale an Asset
To sale an asset, open the asset record and create a Sales Invoice using "Sale Asset" button. On submission of the Sales Invoice, following entries will take place:
To sale an asset, open the asset record and create a Sales Invoice by clicking on "Sale Asset". On submission of the Sales Invoice, following entries will take place:
- "Receivable Account" (Debtors) will be debited by the sales amount.
- "Fixed Asset Account" will be credited by the purchase amount of asset.

View File

@@ -1,82 +1,99 @@
Now that you have completed most of the setup, its time to start moving in!
#Updating Opening Balance in Accounts
There are two important sets of data you need to enter before you start your
operations.
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
* Opening Account balances.
* Opening Stock balances.
We recommend that you start using accounting in a new financial year, but you could start midway too. To setup your accounts, you will need the following for the “day” you start using accounting in ERPNext:
To setup your accounts and stock correctly you will need accurate data to work
with. Make sure you have the data setup for this.
* Opening capital accounts - like your shareholders (or owner) capital, loans, bank balances on that day.
### Opening Accounts
* List of outstanding sales and purchase invoices (Payables and Receivables).
We usually recommend that you start using accounting in a new financial year,
but you could start midway too. To setup your accounts, you will need the
following for the “day” you start using accounting in ERPNext:
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.
Opening capital accounts - like your shareholders (or owner) capital, loans,
bank balances on that day. List of outstanding sales and purchase invoices
(Payables and Receivables).
> Opening entry is only for Balance Sheet accounts and not for the Accounts in the Profit and Loss statement.
Based on Voucher Type
* For all assets (excluding Accounts Receivables): This entry will contain all your assets except the amounts you are expecting from your Customers against outstanding Sales Invoices. You will have to update your receivables by making an individual entry for each Invoice (this is because, the system will help you track the invoices which are yet to be paid). You can credit the sum of all these debits against the **Temporary Opening** account.
* For all liabilities: Similarly you need to pass a Journal Entry for your Opening Liabilities (except for the bills you have to pay) against **Temporary Opening** account.
You can select accounts based on the voucher type. In such a scenario, your balance sheet should be balanced.
###Opening Entry
####Step 1: New Journal Entry
To open new Journal Entry, go to:
`Explore > Accounts > Journal Entry`
####Step 2: Entry Type
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">
Also, note that if there are more than 300 ledgers, the system will crash. Thus to avoid such a situation, you can open accounts by using temporary accounts.
####Step 3: Posting Date
#### Temporary Accounts
Select Posting Date on which Accounts Opening Balance will be updated.
A nice way to simplify opening is to use a temporary account just for opening. These accounts will become zero once all your old invoices and opening balances of bank, debt stock etc are entered. In the standard chart of accounts, a **Temporary Opening** account is created under assets
####Step 4: Enter Debit/Credit Value
#### The Opening Entry
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.
In ERPNext Opening Accounts are setup by submitting a special Journal Entries
(Journal Entry).
<img class="screenshot" alt="Opening Account" src="{{docs_base_url}}/assets/img/accounts/opening-6.png">
Note: Make sure to set “Is Opening” as “Yes” in the More Info section.
####Step 5: Is Opening
> Setup > Opening Accounts and Stock > Opening Accounting Entries.
Set field `Is Opening` as `Yes`.
Complete Journal Entries on the Debit and Credit side.
<img class="screenshot" alt="Opening Account" src="{{docs_base_url}}/assets/img/accounts/opening-3.png">
![Opening Entry]({{docs_base_url}}/assets/old_images/erpnext/opening-entry-1.png)
####Step 6: Save and Submit
To update opening balance is to make Journal Entry for an individual/group of accounts.
After enter opening balance for each account, Save and Submit Journal Entry. To check if Opening Balance for an account is updated correctly, you can check Trial Balance report.
For example, if you want to update balance in three bank accounts, then make Journal Entrys in this manner.
###Selecting Accounts Manually
![Opening Temp Entry]({{docs_base_url}}/assets/old_images/erpnext/image-temp-opening.png)
If your Balance Sheet has many Accounts, then updating Account Opening balance from single Journal Entry can lead to performance issues. In such a scenario, you can multiple Journal Entries to update opening balance in all the Accounts.
![Opening Entry]({{docs_base_url}}/assets/old_images/erpnext/opening-entry-2.png)
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.
Temporary Asset and Liability account is used for balancing purpose. When you update opening balance in Liability Account, you can use Temporary Asset Account for balancing.
<img class="screenshot" alt="Opening Account" src="{{docs_base_url}}/assets/img/accounts/opening-7.png">
This way, you can update opening balance in Asset and Liability accounts.
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).
You can make two Opening Journal Entrys:
For example, if you want to update balance in bank accounts, create Journal Entry as following.
* For all assets (excluding Accounts Receivables): This entry will contain all your assets except the amounts you are expecting from your Customers against outstanding Sales Invoices. You will have to update your receivables by making an individual entry for each Invoice (this is because, the system will help you track the invoices which are yet to be paid). You can credit the sum of all these debits against the **Temporary Opening** account.
* For all liabilities: Similarly you need to pass a Journal Entry for your Opening Liabilities (except for the bills you have to pay) against **Temporary Opening** account.
* In this method you can update opening balance of specific balancesheet accounts and not for all.
* Opening entry is only for balance sheet accounts and not for expense or Income accounts.
<img class="screenshot" alt="Opening Account" src="{{docs_base_url}}/assets/img/accounts/opening-2.png">
Once all your invoices are entered, your **Temporary Opening** account will have a balance of zero!
###Trial Balance
After completing the accounting entries, the trial balance report will look like the one given below:
![Trial Balance]({{docs_base_url}}/assets/old_images/erpnext/trial-balance-1.png)
<img class="screenshot" alt="Opening Account" src="{{docs_base_url}}/assets/img/accounts/opening-4.png">
#### Outstanding Invoices
###Stock Opening
After your Opening Journal Entrys are made, you will need to enter each Sales Invoice and Purchase Invoice that is yet to be paid.
To track stock balance in the Chart of Account, an Account is created for each Warehouse.
Since you have already booked the income or expense on these invoices in the previous period, select the temp opening account **Temporary Opening** in the “Income” and “Expense” accounts.
`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">
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.
###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.
### Outstanding Invoices
After opening Journal Entries are made, you will need to enter each Sales Invoice and Purchase Invoice that is yet to be paid.
Since you have already booked the income or expense on these invoices in the previous period, select **Temporary Opening** in the “Income” and “Expense” accounts.
> Note: Make sure to set each invoice as “Is Opening”!
If you dont care what items are in that invoice, just make a dummy item entry in the Invoice. Item code in the Invoice is not necessary, so it should not be such a problem.
Once all your invoices are entered, your **Temporary Opening** account will have a balance of zero!
{next}

View File

@@ -1,7 +0,0 @@
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, please visit [Opening Entry.]({{docs_base_url}}/user/manual/en/accounts/opening-accounts.html)
{next}

View File

@@ -1,30 +1,22 @@
# Point of Sale Invoice
Point of Sale (POS) is the place where a retail transaction is completed. It
is the point at which a customer makes a payment to the merchant in exchange
for goods or services. For retail operations, the delivery of goods, accrual
of sale and payment all happens in one event, that is usually called the
“Point of Sale”.
For retail operations, the delivery of goods, accrual of sale and payment all happens in one event, that is usually called the “Point of Sale” (POS).
You can make a Sales Invoice of type POS by checking on “Is POS”. When you
check this, you will notice that some fields get hidden and some new ones
emerge.
<iframe width="660" height="371" src="https://www.youtube.com/embed/4WkelWkbP_c" frameborder="0" allowfullscreen></iframe>
> Tip: In retail, you may not create a separate Customer record for each
customer. You can create a general Customer called “Walk-in Customer” and make
all your transactions against this Customer record.
###Offline POS
#### Setting Up POS
In the retails business, invoicing needs to done very quickly, hence should less dependency. In the ERPNext, you can create POS Invoices, even when not connected to the internet.
POS Invoices created in the offline mode will be saved locally in the browser. If internet connection is lost which creating POS Invoice, you will still be able can proceed forward. Once internet connection is available again, offline invoices will be synced, and pushed onto your ERPNext account. To learn more on how POS Invoices can be created when offline, [check here.](https://frappe.io/blog/blog/erpnext-features/offline-pos-in-erpnext-7)
#### POS Profile
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
#### Switch to POS View
Open any sales / purchase transaction. Click on the Computer <i class="icon-desktop"></i> Icon.
#### Different sections of the POS
* Update Stock: If this is checked, Stock Ledger Entries will be made when you “Submit” this Sales Invoice thereby eliminating the need for a separate Delivery Note.
@@ -32,17 +24,22 @@ Open any sales / purchase transaction. Click on the Computer <i class="icon-desk
* Update Payment Details like your Bank / Cash Account, Paid amount etc.
* If you are writing off certain amount. For example when you receive extra cash as a result of not having exact denomination of change, check on Write off Outstanding Amount and set the Account.
### Customer
You can select one of the existing Customer from the Customer master. If Customer doesn't exist in the Customer master, enter Customer Name in the POS Invoice view itself. On creation of POS Invoice, Customer will be auto-created in the Customer master.
<img class="screenshot" alt="POS Customer" src="{{docs_base_url}}/assets/img/accounts/pos-customer.png">
### Adding an Item
At the billing counter, the retailer needs to select Items which the consumer
buys. In the POS interface you can select an Item by two methods. One, is by
clicking on the Item image and the other, is through the Barcode / Serial No.
At the billing counter, the retailer needs to select Items which the consumer buys. In the POS interface you can select an Item by two methods. One, is by clicking on the Item image and the other, is through the Barcode / Serial No.
**Select Item** \- To select a product click on the Item image and add it into the cart. A cart is an area that prepares a customer for checkout by allowing to edit product information, adjust taxes and add discounts.
**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.
![POS]({{docs_base_url}}/assets/old_images/erpnext/pos-add-item.png)
<img class="screenshot" alt="POS Item" src="{{docs_base_url}}/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.
@@ -52,18 +49,11 @@ in Search box.
### Removing an Item
There are two ways to remove an Item.
Set Qty as zero to remove Item from the POS invoice. There are two ways to remove an Item.
* Select an Item by clicking on the row of that Item from Item cart. Then click on “Del” button. OR
* If Item's Qty is 1, click on a minus sign to make it zero.
* Enter 0(zero) quantity of any item to delete that item.
To remove multiple Items together, select multiple rows & click on “Del”
button.
> Delete button appears only when Items are selected.
![POS]({{docs_base_url}}/assets/old_images/erpnext/pos-remove-item.png)
* Manually enter 0(zero) quantity.
### Make Payment
@@ -73,8 +63,8 @@ ready to make the Payment. Payment process is divided into 3 steps -
1. Click on “Make Payment” to get the Payment window.
2. Select your “Mode of Payment”.
3. Click on “Pay” button to Save the document.
![POS Payment]({{docs_base_url}}/assets/old_images/erpnext/pos-make-payment.png)
<img class="screenshot" alt="POS Payment" src="{{docs_base_url}}/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.

View File

@@ -1,4 +1,4 @@
Human Resources Reports
# Human Resources Reports
### Employee Leave Balance

View File

@@ -0,0 +1,45 @@
#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">
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.
####Create New
To create a new Print Format based on the specific cheques format, go to:
`Account > Tools > Cheque Printing Template > New`
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">
####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">
####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.
####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">
####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 cheques Print Format.
<img class="screenshot" alt="Sample Cheque" src="{{docs_base_url}}/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">

View File

@@ -4,3 +4,5 @@ print-headings
letter-head
address-template
terms-and-conditions
cheque-print-template
multi-lingual-print-format

View File

@@ -1,28 +1,26 @@
####What is Multlingual Print Format?
#Multi-lngual Print Formats
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.
####How does it work?
Set print language for customer, supplier on their respective form.
####Set Language
`Selling -> Customer -> Customer List -> Click on New`
In the Customer master, select default Language. Say default language for the Customer is <b>deutsch</b>.
Here user has set default language for customer Adalbert as <b>deutsch</b>.
<img src="{{docs_base_url}}/assets/img/multilingual_print_format/set_customer_default_lang.png" class="screenshot">
<img src="{{ docs_base_url }}/assets/img/multilingual_print_format/set_customer_default_lang.png" class="screenshot">
Same way, you can also set default language in the Supplier master.
`Buying -> Supplier -> Supplier List -> Click on New`
<img src="{{docs_base_url}}/assets/img/multilingual_print_format/set_supplier_default_lang.png" class="screenshot">
Here user has set default language for supplier Piero as <b>Italiano</b>.
<img src="{{ docs_base_url }}/assets/img/multilingual_print_format/set_supplier_default_lang.png" class="screenshot">
####Print Preview in the Party's Language
When user click on print icon on the document, system will load the print preview in their default language.
In the Print Preview of a transaction, values will be translated into party's language.
Customer quotation standard print preview in customer's default language.
Customer Quotation print preview in customer's default language.
<img src="{{ docs_base_url }}/assets/img/multilingual_print_format/customer_quotation.png" class="screenshot">
Supplier quotation standard print preview in supplier's default language.
Supplier Quotation print preview in supplier's default language.
<img src="{{ docs_base_url }}/assets/img/multilingual_print_format/supplier_quotation.png" class="screenshot">
@@ -32,16 +30,15 @@ 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">
####Custom Translation
User can set their custom translations using translation form. For example user want to set description of the product in customer's language(Italiano). For that create new translation with language as Italiano, enter source data and Translated information.
`Setup -> Settings -> Translation List -> Click on New`
`Setup > Settings > Translation List > New`
<img src="{{ docs_base_url }}/assets/img/multilingual_print_format/translation.png" class="screenshot">
The translation is applied when user select language as Italiano on supplier quotation's print prieview.
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">

View File

@@ -1,8 +1,8 @@
Existing Users, need to follow some steps to activate the new Perpetual
Inventory system. As Perpetual Inventory always maintains a sync between stock
and account balance, it is not possible to enable it with existing Warehouse
setup. You have to create a whole new set of Warehouses, each linked to
relevant account.
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.
As Perpetual Inventory always maintains a sync between stock and account balance, it is not possible to enable it with existing Warehouse setup. You have to create a whole new set of Warehouses, each linked to relevant account.
Steps:
@@ -18,21 +18,14 @@ Steps:
* Cost Center
* Activate Perpetual Inventory
> Setup > Accounts Settings > Make Accounting Entry For Every Stock Movement
![Activation]({{docs_base_url}}/assets/old_images/erpnext/accounting-for-stock-1.png)
`Explore > Accounts > Accounts Settings`
<img class="screenshot" alt="Perpetual Inventory" src="{{docs_base_url}}/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.
System will not post any accounting entries for existing stock transactions
submitted prior to the activation of Perpetual Inventory as those old
warehouses will not be linked to any account. If you create any new
transaction or modify/amend existing transactions, with old warehouse, there
will be no corresponding accounting entries. You have to manually sync stock
and account balance through Journal Entry.
System will not post any accounting entries for existing stock transactions submitted prior to the activation of Perpetual Inventory as those old warehouses will not be linked to any account. If you create any new transaction or modify/amend existing transactions, with old warehouse, there will be no corresponding accounting entries. You have to manually sync stock and account balance through Journal Entry.
> Note: If you are already using old Perpetual Inventory system, it will be
deactivated automatically. You need to follow the above steps to reactivate
it.
> Note: If you are already using old Perpetual Inventory system, it will be deactivated automatically. You need to follow the above steps to reactivate it.

View File

@@ -19,7 +19,7 @@ asset account will be reduced, based on the valuation amount of those items.
* Stock Adjustment Account
* Expenses Included In Valuation
* Cost Center
2. In perpetual inventory, the system will maintain seperate account balance for each warehouse under separate account head. To create that account head, enter "Create Account Under" in Warehouse master.
2. In perpetual inventory, the system will maintain separate account balance for each warehouse under separate account head. To create that account head, enter "Create Account Under" in Warehouse master.
3. Activate Perpetual Inventory
@@ -370,4 +370,4 @@ Goods Sold" accounts are also affected based on the valuation amount.
<img alt="Stock" class="screenshot" src="{{docs_base_url}}/assets/old_images/erpnext/accounting-for-stock-14.png">
{ next }
{next}

View File

@@ -2,7 +2,7 @@ Assign To feature in ERPNext allows you to allocate particular document to speci
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.
<div class=well>Permissions restriction cannot be done based on Assigned To</div>
<div class=well>Permissions restriction cannot be done based on Assigned To.</div>
Following are the steps to assign document to another user.
@@ -10,30 +10,27 @@ Following are the steps to assign document to another user.
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.
![Assigned To Icon]({{docs_base_url}}/assets/old_images/erpnext/assigned-to-icon.png)
![Assigned To]({{docs_base_url}}/assets/old_images/erpnext/assigned-to.png)
<img class="screenshot" alt="Assign" src="{{docs_base_url}}/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.
![Assign User]({{docs_base_url}}/assets/old_images/erpnext/assign-user.png)
<img class="screenshot" alt="Assign" src="{{docs_base_url}}/assets/img/collaboration-tools/assign-2.png">
With assignment, you can also leave a comment for the review of asignee.
With assignment, you can also leave a comment for the review of assignee.
####ToDo List of Assignee
This transaction will appear in the To-do list of the ser in “Todo” section.
![Assign Todo]({{docs_base_url}}/assets/old_images/erpnext/assign-todo.png)
<img class="screenshot" alt="Assign" src="{{docs_base_url}}/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.
![Assign Remove]({{docs_base_url}}/assets/old_images/erpnext/assign-remove.png)
<img class="screenshot" alt="Assign" src="{{docs_base_url}}/assets/img/collaboration-tools/assign-4.png">
Once assignment is set as completed, Status of its ToDo record will be set as Closed.

View File

@@ -0,0 +1,14 @@
You can send and receive messages from the system by using the Messages tool.
`Explore > Tools > Chat`
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">
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">
{next}

View File

@@ -1,19 +1,24 @@
Following are the tools in each document using which you can collaborate with other Users in your ERPNext account.
### Assigned to
You can email any transaction from the system by clicking on the “Assigned to”
button in the right sidebar. A log of all your sent emails will be maintained
in Communication.
![Forms]({{docs_base_url}}/assets/old_images/erpnext/forms.png)
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)
### 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. Comments can
be added in the right sidebar.
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">
###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">
### Tags
[Read more about Tags]({{docs_base_url}}/user/manual/en/using-erpnext/tags.html)
[Read more about Tags]({{docs_base_url}}/user/manual/en/using-erpnext/tags.html)
{next}

View File

@@ -1,10 +1,9 @@
to-do
collaborating-around-forms
messages
chat
notes
calendar
assignment
tags
articles
pos-view
multilingual_print_format
pos-view

View File

@@ -1,12 +0,0 @@
You can send and receive messages from the system by using the Messages tool.
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.
![Message List]({{docs_base_url}}/assets/old_images/erpnext/message-list.png)
You can choose to send message to all the users, or to specific user.
![Messsage To]({{docs_base_url}}/assets/old_images/erpnext/message-to.png)
{next}

View File

@@ -1,21 +1,17 @@
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.
####Go to Note
`Home > Note > New`
`Explore > Note > New`
####Notes Details
Enter Title and Context.
![Note]({{docs_base_url}}/assets/old_images/erpnext/note.png)
<img class="screenshot" alt="Note New" src="{{docs_base_url}}/assets/img/collaboration-tools/note-1.png">
####Set Permissions to select Users
To make Note accessible for all, check "Public" under links section. If specific Note is to be made accessible to specific user, they shall be selected in the Share With table.
To make Note accessible for all, check "Public" under links section. Else you can share it with the specific User by using Share feature.
![Note Permission]({{docs_base_url}}/assets/old_images/erpnext/note-permission.png)
<div class=well>Notes can also be used as a knowledge base internally. You can also attach file in the Notes, and make it accessible to specific set of users only.</div>
<img class="screenshot" alt="Note New" src="{{docs_base_url}}/assets/img/collaboration-tools/share-1.gif">
{next}

Some files were not shown because too many files have changed in this diff Show More