diff --git a/erpnext/__init__.py b/erpnext/__init__.py index d018c4f745..4c87187bc4 100644 --- a/erpnext/__init__.py +++ b/erpnext/__init__.py @@ -2,7 +2,7 @@ from __future__ import unicode_literals import frappe -__version__ = '7.1.2' +__version__ = '7.1.3' def get_default_company(user=None): '''Get default company for user''' diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py index 1c9bcbc577..22de07fa39 100644 --- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py +++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py @@ -305,25 +305,8 @@ class PurchaseInvoice(BuyingController): if not self.grand_total: return - self.auto_accounting_for_stock = \ - cint(frappe.defaults.get_global_default("auto_accounting_for_stock")) - - self.stock_received_but_not_billed = self.get_company_default("stock_received_but_not_billed") - self.expenses_included_in_valuation = self.get_company_default("expenses_included_in_valuation") - self.negative_expense_to_be_booked = 0.0 - gl_entries = [] - - - self.make_supplier_gl_entry(gl_entries) - self.make_item_gl_entries(gl_entries) - self.make_tax_gl_entries(gl_entries) - - gl_entries = merge_similar_entries(gl_entries) - - self.make_payment_gl_entries(gl_entries) - - self.make_write_off_gl_entry(gl_entries) - + gl_entries = self.get_gl_entries() + if gl_entries: update_outstanding = "No" if (cint(self.is_paid) or self.write_off_account) else "Yes" @@ -342,6 +325,26 @@ class PurchaseInvoice(BuyingController): elif self.docstatus == 2 and cint(self.update_stock) and self.auto_accounting_for_stock: delete_gl_entries(voucher_type=self.doctype, voucher_no=self.name) + def get_gl_entries(self, warehouse_account=None): + self.auto_accounting_for_stock = \ + cint(frappe.defaults.get_global_default("auto_accounting_for_stock")) + + self.stock_received_but_not_billed = self.get_company_default("stock_received_but_not_billed") + self.expenses_included_in_valuation = self.get_company_default("expenses_included_in_valuation") + self.negative_expense_to_be_booked = 0.0 + gl_entries = [] + + + self.make_supplier_gl_entry(gl_entries) + self.make_item_gl_entries(gl_entries) + self.make_tax_gl_entries(gl_entries) + + gl_entries = merge_similar_entries(gl_entries) + + self.make_payment_gl_entries(gl_entries) + self.make_write_off_gl_entry(gl_entries) + + return gl_entries def make_supplier_gl_entry(self, gl_entries): if self.grand_total: diff --git a/erpnext/docs/assets/img/accounts/change-amount.png b/erpnext/docs/assets/img/accounts/change-amount.png new file mode 100644 index 0000000000..33f9c88991 Binary files /dev/null and b/erpnext/docs/assets/img/accounts/change-amount.png differ diff --git a/erpnext/docs/assets/img/accounts/offline-records.png b/erpnext/docs/assets/img/accounts/offline-records.png new file mode 100644 index 0000000000..78bb730b09 Binary files /dev/null and b/erpnext/docs/assets/img/accounts/offline-records.png differ diff --git a/erpnext/docs/assets/img/accounts/pos-item.png b/erpnext/docs/assets/img/accounts/pos-item.png index fb6c1f87dd..321e8dc392 100644 Binary files a/erpnext/docs/assets/img/accounts/pos-item.png and b/erpnext/docs/assets/img/accounts/pos-item.png differ diff --git a/erpnext/docs/assets/img/accounts/pos-payment.png b/erpnext/docs/assets/img/accounts/pos-payment.png index 0a0d37f551..187e82c402 100644 Binary files a/erpnext/docs/assets/img/accounts/pos-payment.png and b/erpnext/docs/assets/img/accounts/pos-payment.png differ diff --git a/erpnext/docs/assets/img/accounts/write-off.png b/erpnext/docs/assets/img/accounts/write-off.png new file mode 100644 index 0000000000..c6896ea823 Binary files /dev/null and b/erpnext/docs/assets/img/accounts/write-off.png differ diff --git a/erpnext/docs/assets/img/articles/price-list.png b/erpnext/docs/assets/img/articles/price-list.png new file mode 100644 index 0000000000..a6982f9eb5 Binary files /dev/null and b/erpnext/docs/assets/img/articles/price-list.png differ diff --git a/erpnext/docs/assets/img/articles/pricing-rule-invoice.png b/erpnext/docs/assets/img/articles/pricing-rule-invoice.png new file mode 100644 index 0000000000..79d7fa7b9b Binary files /dev/null and b/erpnext/docs/assets/img/articles/pricing-rule-invoice.png differ diff --git a/erpnext/docs/assets/img/articles/pricing-rule-margin.png b/erpnext/docs/assets/img/articles/pricing-rule-margin.png new file mode 100644 index 0000000000..66f6050c33 Binary files /dev/null and b/erpnext/docs/assets/img/articles/pricing-rule-margin.png differ 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 6a697b1d85..64fa22c5b8 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 @@ -69,6 +69,25 @@ ready to make the Payment. Payment process is divided into 3 steps - Submit the document to finalise the record. After the document is submitted, you can either print or email it directly to the customer. +### Write off Amount + +Outstanding amount can be write off from the POS, user has to enter the amount under write off field on the payment screen. + +POS Payment + +System books the write off amount into the ledger which has selected on the POS Profile. + +### Change Amount + +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. + +POS Payment + +### 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 + +POS Payment + #### Accounting entries (GL Entry) for a Point of Sale: Debits: @@ -82,6 +101,7 @@ Credits: * Taxes (liabilities to be paid to the government) * Customer (payment) * Write Off (optional) + * Account for Change Amount (optional) To see entries after “Submit”, click on “View Ledger”. diff --git a/erpnext/docs/user/manual/en/accounts/pricing-rule.md b/erpnext/docs/user/manual/en/accounts/pricing-rule.md index 7afcbea0a1..bd3c51a834 100644 --- a/erpnext/docs/user/manual/en/accounts/pricing-rule.md +++ b/erpnext/docs/user/manual/en/accounts/pricing-rule.md @@ -79,4 +79,31 @@ Check to Disable Pricing Rule. Disable +### Add Margin + +Using pricing rule user can add margin on the sales transactions + +For example : User want to add 10% margin on the supplier price list at the time of sales + +####1. Make Price List + +Create price list for supllier and create item price against the price list. + +Disable + + +####2. Make Pricing Rule + +Create pricing rule for the item against which supplier rate has created + +Disable + +####2. Make Invoice + +System apply the margin rate on the item price on selection of an item. + +Disable + +For more details about pricing rule [Click Here]({{docs_base_url}}/user/manual/en/selling/articles/adding-margin.html) + \ No newline at end of file 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 2a9ddfa25e..2b2fb09350 100644 --- a/erpnext/docs/user/manual/en/selling/articles/adding-margin.md +++ b/erpnext/docs/user/manual/en/selling/articles/adding-margin.md @@ -9,7 +9,7 @@ To setup Pricing Rule, go to: ####Adding Margin in Pricing Rule -Adding Margin in Pricing Rule +Adding Margin in Pricing Rule Total Margin is calculated as follows: `Rate = Price List Rate + Margin Rate` @@ -22,7 +22,7 @@ To add Price List, go to: ####Adding Item Price -Adding Margin in Pricing Rule +Adding Margin in Pricing Rule 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 +34,4 @@ add item and scroll down to section where you can find the Margin Type ####Adding Margin in Quotation -Adding Margin in Quotation +Adding Margin in Quotation diff --git a/erpnext/patches.txt b/erpnext/patches.txt index e5cdb1adad..d694ef4e8e 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -341,4 +341,5 @@ erpnext.patches.v7_1.add_field_for_task_dependent erpnext.patches.v7_0.repost_bin_qty_and_item_projected_qty erpnext.patches.v7_1.set_prefered_contact_email execute:frappe.db.sql("update `tabSingles` set value = 1 where field = 'unlink_payment_on_cancellation_of_invoice' and doctype = 'Accounts Settings'") -execute:frappe.db.sql("update `tabStock Entry` set total_amount = null where purpose in('Repack', 'Manufacture')") \ No newline at end of file +execute:frappe.db.sql("update `tabStock Entry` set total_amount = null where purpose in('Repack', 'Manufacture')") +erpnext.patches.v7_1.repost_gle_for_pi_with_update_stock \ No newline at end of file diff --git a/erpnext/patches/v7_1/repost_gle_for_pi_with_update_stock.py b/erpnext/patches/v7_1/repost_gle_for_pi_with_update_stock.py new file mode 100644 index 0000000000..2355d539ae --- /dev/null +++ b/erpnext/patches/v7_1/repost_gle_for_pi_with_update_stock.py @@ -0,0 +1,16 @@ +# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors +# License: GNU General Public License v3. See license.txt + +from __future__ import unicode_literals +import frappe +from frappe.utils import cint + +def execute(): + if not cint(frappe.defaults.get_global_default("auto_accounting_for_stock")): + return + + for pi in frappe.db.sql("""select name from `tabPurchase Invoice` + where update_stock=1 and docstatus=1 order by posting_date asc""", as_dict=1): + pi_doc = frappe.get_doc("Purchase Invoice", pi.name) + pi_doc.make_gl_entries() + frappe.db.commit() \ No newline at end of file