diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 7fda960356e..2773d69d78c 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -91,3 +91,4 @@ erpnext.patches.v4_2.update_requested_and_ordered_qty
execute:frappe.delete_doc("DocType", "Contact Control")
erpnext.patches.v4_2.recalculate_bom_costs
erpnext.patches.v4_2.discount_amount
+erpnext.patches.v4_2.update_landed_cost_voucher
diff --git a/erpnext/patches/v4_2/update_landed_cost_voucher.py b/erpnext/patches/v4_2/update_landed_cost_voucher.py
new file mode 100644
index 00000000000..6563b7b534a
--- /dev/null
+++ b/erpnext/patches/v4_2/update_landed_cost_voucher.py
@@ -0,0 +1,10 @@
+# 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
+
+def execute():
+ frappe.reload_doc("stock", "doctype", "landed_cost_voucher")
+ frappe.db.sql("""update `tabLanded Cost Voucher` set distribute_charges_based_on = 'Amount'
+ where docstatus=1""")
diff --git a/erpnext/stock/doctype/landed_cost_taxes_and_charges/landed_cost_taxes_and_charges.json b/erpnext/stock/doctype/landed_cost_taxes_and_charges/landed_cost_taxes_and_charges.json
index f183b331a25..9ea9150fda0 100644
--- a/erpnext/stock/doctype/landed_cost_taxes_and_charges/landed_cost_taxes_and_charges.json
+++ b/erpnext/stock/doctype/landed_cost_taxes_and_charges/landed_cost_taxes_and_charges.json
@@ -18,17 +18,6 @@
"permlevel": 0,
"width": "50%"
},
- {
- "fieldname": "account",
- "fieldtype": "Link",
- "in_list_view": 1,
- "label": "Account",
- "options": "Account",
- "permlevel": 0,
- "print_hide": 1,
- "read_only": 0,
- "reqd": 1
- },
{
"fieldname": "amount",
"fieldtype": "Currency",
@@ -40,7 +29,7 @@
}
],
"istable": 1,
- "modified": "2014-08-08 13:12:02.594698",
+ "modified": "2015-01-21 11:51:33.964438",
"modified_by": "Administrator",
"module": "Stock",
"name": "Landed Cost Taxes and Charges",
diff --git a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.js b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.js
index 042011a9911..ea469f04117 100644
--- a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.js
+++ b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.js
@@ -5,10 +5,10 @@
frappe.provide("erpnext.stock");
frappe.require("assets/erpnext/js/controllers/stock_controller.js");
-erpnext.stock.LandedCostVoucher = erpnext.stock.StockController.extend({
+erpnext.stock.LandedCostVoucher = erpnext.stock.StockController.extend({
setup: function() {
var me = this;
- this.frm.fields_dict.landed_cost_purchase_receipts.grid.get_field('purchase_receipt').get_query =
+ this.frm.fields_dict.landed_cost_purchase_receipts.grid.get_field('purchase_receipt').get_query =
function() {
if(!me.frm.doc.company) msgprint(__("Please enter company first"));
return {
@@ -18,53 +18,44 @@ erpnext.stock.LandedCostVoucher = erpnext.stock.StockController.extend({
]
}
};
-
- this.frm.fields_dict.landed_cost_taxes_and_charges.grid.get_field('account').get_query = function() {
- if(!me.frm.doc.company) msgprint(__("Please enter company first"));
- return {
- filters:[
- ['Account', 'group_or_ledger', '=', 'Ledger'],
- ['Account', 'account_type', 'in', ['Tax', 'Chargeable', 'Expense Account']],
- ['Account', 'company', '=', me.frm.doc.company]
- ]
- }
- };
-
+
this.frm.add_fetch("purchase_receipt", "supplier", "supplier");
this.frm.add_fetch("purchase_receipt", "posting_date", "posting_date");
this.frm.add_fetch("purchase_receipt", "grand_total", "grand_total");
-
- },
-
+
+ },
+
refresh: function() {
- var help_content = ['
',
- '',
- ' ',
- __('Notes'),
- ':',
- '',
- '- ',
- __("Charges will be distributed proportionately based on item amount"),
- '
',
- '- ',
- __("Remove item if charges is not applicable to that item"),
- '
',
- '- ',
- __("Charges are updated in Purchase Receipt against each item"),
- '
',
- '- ',
- __("Item valuation rate is recalculated considering landed cost voucher amount"),
- '
',
- '- ',
- __("Stock Ledger Entries and GL Entries are reposted for the selected Purchase Receipts"),
- '
',
- ' ',
- ' |
',
- '
'].join("\n");
+ var help_content = [
+ '
',
+ '',
+ '',
+ ' ',
+ __('Notes'),
+ ':',
+ '',
+ '- ',
+ __("Charges will be distributed proportionately based on item qty or amount, as per your selection"),
+ '
',
+ '- ',
+ __("Remove item if charges is not applicable to that item"),
+ '
',
+ '- ',
+ __("Charges are updated in Purchase Receipt against each item"),
+ '
',
+ '- ',
+ __("Item valuation rate is recalculated considering landed cost voucher amount"),
+ '
',
+ '- ',
+ __("Stock Ledger Entries and GL Entries are reposted for the selected Purchase Receipts"),
+ '
',
+ ' ',
+ ' |
',
+ '
'].join("\n");
set_field_options("landed_cost_help", help_content);
},
-
+
get_items_from_purchase_receipts: function() {
var me = this;
if(!this.frm.doc.landed_cost_purchase_receipts.length) {
@@ -75,13 +66,13 @@ erpnext.stock.LandedCostVoucher = erpnext.stock.StockController.extend({
method: "get_items_from_purchase_receipts"
});
}
- },
-
+ },
+
amount: function() {
this.set_total_taxes_and_charges();
this.set_applicable_charges_for_item();
},
-
+
set_total_taxes_and_charges: function() {
total_taxes_and_charges = 0.0;
$.each(this.frm.doc.landed_cost_taxes_and_charges, function(i, d) {
@@ -89,7 +80,7 @@ erpnext.stock.LandedCostVoucher = erpnext.stock.StockController.extend({
});
cur_frm.set_value("total_taxes_and_charges", total_taxes_and_charges);
},
-
+
set_applicable_charges_for_item: function() {
var me = this;
if(this.frm.doc.landed_cost_taxes_and_charges.length) {
@@ -97,14 +88,14 @@ erpnext.stock.LandedCostVoucher = erpnext.stock.StockController.extend({
$.each(this.frm.doc.landed_cost_items, function(i, d) {
total_item_cost += flt(d.amount)
});
-
+
$.each(this.frm.doc.landed_cost_items, function(i, item) {
item.applicable_charges = flt(item.amount) * flt(me.frm.doc.total_taxes_and_charges) / flt(total_item_cost)
});
refresh_field("landed_cost_items");
}
}
-
+
});
-cur_frm.script_manager.make(erpnext.stock.LandedCostVoucher);
\ No newline at end of file
+cur_frm.script_manager.make(erpnext.stock.LandedCostVoucher);
diff --git a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.json b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.json
index 682a16bfd13..3425d9dc712 100644
--- a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.json
+++ b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.json
@@ -44,6 +44,13 @@
"options": "Landed Cost Taxes and Charges",
"permlevel": 0
},
+ {
+ "fieldname": "sec_break1",
+ "fieldtype": "Section Break",
+ "options": "Simple",
+ "permlevel": 0,
+ "precision": ""
+ },
{
"fieldname": "total_taxes_and_charges",
"fieldtype": "Currency",
@@ -53,13 +60,6 @@
"read_only": 1,
"reqd": 1
},
- {
- "fieldname": "landed_cost_help",
- "fieldtype": "HTML",
- "label": "Landed Cost Help",
- "options": "",
- "permlevel": 0
- },
{
"fieldname": "amended_from",
"fieldtype": "Link",
@@ -69,11 +69,40 @@
"permlevel": 0,
"print_hide": 1,
"read_only": 1
+ },
+ {
+ "fieldname": "col_break1",
+ "fieldtype": "Column Break",
+ "permlevel": 0,
+ "precision": ""
+ },
+ {
+ "default": "Amount",
+ "fieldname": "distribute_charges_based_on",
+ "fieldtype": "Select",
+ "label": "Distribute Charges Based On",
+ "options": "\nQty\nAmount",
+ "permlevel": 0,
+ "precision": "",
+ "reqd": 1
+ },
+ {
+ "fieldname": "sec_break2",
+ "fieldtype": "Section Break",
+ "permlevel": 0,
+ "precision": ""
+ },
+ {
+ "fieldname": "landed_cost_help",
+ "fieldtype": "HTML",
+ "label": "Landed Cost Help",
+ "options": "",
+ "permlevel": 0
}
],
"icon": "icon-usd",
"is_submittable": 1,
- "modified": "2014-09-01 12:05:46.834513",
+ "modified": "2015-01-21 11:56:37.698326",
"modified_by": "Administrator",
"module": "Stock",
"name": "Landed Cost Voucher",
diff --git a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
index 3046c5e9211..7bafcf60584 100644
--- a/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
+++ b/erpnext/stock/doctype/landed_cost_voucher/landed_cost_voucher.py
@@ -7,9 +7,6 @@ from frappe import _
from frappe.utils import flt
from frappe.model.document import Document
-from erpnext.stock.utils import get_valuation_method
-from erpnext.stock.stock_ledger import get_previous_sle
-
class LandedCostVoucher(Document):
def get_items_from_purchase_receipts(self):
self.set("landed_cost_items", [])
@@ -69,10 +66,11 @@ class LandedCostVoucher(Document):
self.total_taxes_and_charges = sum([flt(d.amount) for d in self.get("landed_cost_taxes_and_charges")])
def set_applicable_charges_for_item(self):
- total_item_cost = sum([flt(d.amount) for d in self.get("landed_cost_items")])
+ based_on = self.distribute_charges_based_on.lower()
+ total = sum([flt(d.get(based_on)) for d in self.get("landed_cost_items")])
for item in self.get("landed_cost_items"):
- item.applicable_charges = flt(item.amount) * flt(self.total_taxes_and_charges) / flt(total_item_cost)
+ item.applicable_charges = flt(item.get(based_on)) * flt(self.total_taxes_and_charges) / flt(total)
def on_submit(self):
self.update_landed_cost()
@@ -92,13 +90,16 @@ class LandedCostVoucher(Document):
pr.update_valuation_rate("purchase_receipt_details")
# save will update landed_cost_voucher_amount and voucher_amount in PR,
- # as those fields are ellowed to edit after submit
+ # as those fields are allowed to edit after submit
pr.save()
- # update stock & gl entries for cancelled state of PR
- pr.docstatus = 2
- pr.update_stock_ledger()
- pr.make_gl_entries_on_cancel()
+ # delete stock ledger entries & gl entries for cancelled state of PR
+
+ frappe.db.sql("""delete from `tabStock Ledger Entry`
+ where voucher_type='Purchase Receipt' and voucher_no=%s""", pr.name)
+
+ frappe.db.sql("""delete from `tabGL Entry`
+ where voucher_type='Purchase Receipt' and voucher_no=%s""", pr.name)
# update stock & gl entries for submit state of PR
pr.docstatus = 1