Landed cost voucher minor fixes

This commit is contained in:
Nabin Hait
2014-08-08 13:16:33 +05:30
parent f3e1181ad9
commit 2b776e8c3a
6 changed files with 51 additions and 41 deletions

View File

@@ -32,8 +32,10 @@
"fieldtype": "Link", "fieldtype": "Link",
"hidden": 0, "hidden": 0,
"label": "Purchase Receipt", "label": "Purchase Receipt",
"no_copy": 1,
"options": "Purchase Receipt", "options": "Purchase Receipt",
"permlevel": 0, "permlevel": 0,
"print_hide": 1,
"read_only": 1 "read_only": 1
}, },
{ {
@@ -54,6 +56,7 @@
"fieldtype": "Currency", "fieldtype": "Currency",
"in_list_view": 0, "in_list_view": 0,
"label": "Rate", "label": "Rate",
"options": "Company:company:default_currency",
"permlevel": 0, "permlevel": 0,
"read_only": 1 "read_only": 1
}, },
@@ -64,7 +67,7 @@
"label": "Amount", "label": "Amount",
"oldfieldname": "amount", "oldfieldname": "amount",
"oldfieldtype": "Currency", "oldfieldtype": "Currency",
"options": "currency", "options": "Company:company:default_currency",
"permlevel": 0, "permlevel": 0,
"read_only": 1, "read_only": 1,
"reqd": 1 "reqd": 1
@@ -74,19 +77,24 @@
"fieldtype": "Currency", "fieldtype": "Currency",
"in_list_view": 1, "in_list_view": 1,
"label": "Applicable Charges", "label": "Applicable Charges",
"options": "Company:company:default_currency",
"permlevel": 0, "permlevel": 0,
"read_only": 1 "read_only": 1
}, },
{ {
"fieldname": "pr_item_row_id", "fieldname": "purchase_receipt_item",
"fieldtype": "Data", "fieldtype": "Data",
"label": "PR Item Row Id", "hidden": 1,
"permlevel": 0 "label": "Purchase Receipt Item",
"no_copy": 1,
"permlevel": 0,
"print_hide": 1,
"read_only": 1
} }
], ],
"idx": 1, "idx": 1,
"istable": 1, "istable": 1,
"modified": "2014-07-15 18:01:26.152422", "modified": "2014-08-08 13:11:29.438664",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Stock", "module": "Stock",
"name": "Landed Cost Item", "name": "Landed Cost Item",

View File

@@ -34,12 +34,13 @@
"fieldtype": "Currency", "fieldtype": "Currency",
"in_list_view": 1, "in_list_view": 1,
"label": "Amount", "label": "Amount",
"options": "Company:company:default_currency",
"permlevel": 0, "permlevel": 0,
"reqd": 1 "reqd": 1
} }
], ],
"istable": 1, "istable": 1,
"modified": "2014-07-11 13:00:14.770284", "modified": "2014-08-08 13:12:02.594698",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Stock", "module": "Stock",
"name": "Landed Cost Taxes and Charges", "name": "Landed Cost Taxes and Charges",

View File

@@ -48,6 +48,7 @@
"fieldname": "total_taxes_and_charges", "fieldname": "total_taxes_and_charges",
"fieldtype": "Currency", "fieldtype": "Currency",
"label": "Total Taxes and Charges", "label": "Total Taxes and Charges",
"options": "Company:company:default_currency",
"permlevel": 0, "permlevel": 0,
"read_only": 1, "read_only": 1,
"reqd": 1 "reqd": 1
@@ -71,7 +72,7 @@
} }
], ],
"is_submittable": 1, "is_submittable": 1,
"modified": "2014-07-11 15:34:51.306164", "modified": "2014-08-08 13:11:55.764550",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Stock", "module": "Stock",
"name": "Landed Cost Voucher", "name": "Landed Cost Voucher",

View File

@@ -28,7 +28,7 @@ class LandedCostVoucher(Document):
item.rate = d.rate item.rate = d.rate
item.amount = d.amount item.amount = d.amount
item.purchase_receipt = pr.purchase_receipt item.purchase_receipt = pr.purchase_receipt
item.pr_item_row_id = d.name item.purchase_receipt_item = d.name
if self.get("landed_cost_taxes_and_charges"): if self.get("landed_cost_taxes_and_charges"):
self.set_applicable_charges_for_item() self.set_applicable_charges_for_item()

View File

@@ -69,14 +69,14 @@ class PurchaseReceipt(BuyingController):
self.create_raw_materials_supplied("pr_raw_material_details") self.create_raw_materials_supplied("pr_raw_material_details")
self.set_landed_cost_voucher_amount() self.set_landed_cost_voucher_amount()
self.update_valuation_rate("purchase_receipt_details") self.update_valuation_rate("purchase_receipt_details")
def set_landed_cost_voucher_amount(self): def set_landed_cost_voucher_amount(self):
for d in self.get("purchase_receipt_details"): for d in self.get("purchase_receipt_details"):
lc_voucher_amount = frappe.db.sql("""select sum(ifnull(applicable_charges, 0)) lc_voucher_amount = frappe.db.sql("""select sum(ifnull(applicable_charges, 0))
from `tabLanded Cost Item` from `tabLanded Cost Item`
where docstatus = 1 and pr_item_row_id = %s""", d.name) where docstatus = 1 and purchase_receipt_item = %s""", d.name)
d.landed_cost_voucher_amount = lc_voucher_amount[0][0] if lc_voucher_amount else 0.0 d.landed_cost_voucher_amount = lc_voucher_amount[0][0] if lc_voucher_amount else 0.0
def validate_rejected_warehouse(self): def validate_rejected_warehouse(self):
for d in self.get("purchase_receipt_details"): for d in self.get("purchase_receipt_details"):
if flt(d.rejected_qty) and not d.rejected_warehouse: if flt(d.rejected_qty) and not d.rejected_warehouse:
@@ -285,26 +285,26 @@ class PurchaseReceipt(BuyingController):
def get_gl_entries(self, warehouse_account=None): def get_gl_entries(self, warehouse_account=None):
from erpnext.accounts.general_ledger import process_gl_map from erpnext.accounts.general_ledger import process_gl_map
stock_rbnb = self.get_company_default("stock_received_but_not_billed") stock_rbnb = self.get_company_default("stock_received_but_not_billed")
expenses_included_in_valuation = self.get_company_default("expenses_included_in_valuation") expenses_included_in_valuation = self.get_company_default("expenses_included_in_valuation")
default_cost_center = self.get_company_default("cost_center")
gl_entries = [] gl_entries = []
warehouse_with_no_account = [] warehouse_with_no_account = []
negative_expense_to_be_booked = 0.0 negative_expense_to_be_booked = 0.0
stock_items = self.get_stock_items() stock_items = self.get_stock_items()
for d in self.get("purchase_receipt_details"): for d in self.get("purchase_receipt_details"):
if d.item_code in stock_items and flt(d.valuation_rate): if d.item_code in stock_items and flt(d.valuation_rate) and flt(d.qty):
if warehouse_account.get(d.warehouse) and flt(d.qty) and flt(d.valuation_rate): if warehouse_account.get(d.warehouse):
# warehouse account # warehouse account
gl_entries.append(self.get_gl_dict({ gl_entries.append(self.get_gl_dict({
"account": warehouse_account[d.warehouse], "account": warehouse_account[d.warehouse],
"against": stock_rbnb, "against": stock_rbnb,
"cost_center": d.cost_center, "cost_center": d.cost_center,
"remarks": self.get("remarks") or "Accounting Entry for Stock", "remarks": self.get("remarks") or _("Accounting Entry for Stock"),
"debit": flt(d.valuation_rate) * flt(d.qty) * flt(d.conversion_factor) "debit": flt(flt(d.valuation_rate) * flt(d.qty) * flt(d.conversion_factor),
self.precision("valuation_rate", d))
})) }))
# stock received but not billed # stock received but not billed
@@ -312,36 +312,36 @@ class PurchaseReceipt(BuyingController):
"account": stock_rbnb, "account": stock_rbnb,
"against": warehouse_account[d.warehouse], "against": warehouse_account[d.warehouse],
"cost_center": d.cost_center, "cost_center": d.cost_center,
"remarks": self.get("remarks") or "Accounting Entry for Stock", "remarks": self.get("remarks") or _("Accounting Entry for Stock"),
"credit": flt(d.base_amount, self.precision("base_amount", d)) "credit": flt(d.base_amount, self.precision("base_amount", d))
})) }))
negative_expense_to_be_booked += flt(d.item_tax_amount) negative_expense_to_be_booked += flt(d.item_tax_amount)
# Amount added through landed-cost-voucher # Amount added through landed-cost-voucher
if flt(d.landed_cost_voucher_amount): if flt(d.landed_cost_voucher_amount):
gl_entries.append(self.get_gl_dict({ gl_entries.append(self.get_gl_dict({
"account": expenses_included_in_valuation, "account": expenses_included_in_valuation,
"against": warehouse_account[d.warehouse], "against": warehouse_account[d.warehouse],
"cost_center": d.cost_center, "cost_center": d.cost_center,
"remarks": self.get("remarks") or "Accounting Entry for Stock", "remarks": self.get("remarks") or _("Accounting Entry for Stock"),
"credit": flt(d.landed_cost_voucher_amount) "credit": flt(d.landed_cost_voucher_amount)
})) }))
# sub-contracting warehouse # sub-contracting warehouse
if flt(d.rm_supp_cost) and warehouse_account.get(self.supplier_warehouse): if flt(d.rm_supp_cost) and warehouse_account.get(self.supplier_warehouse):
gl_entries.append(self.get_gl_dict({ gl_entries.append(self.get_gl_dict({
"account": warehouse_account[self.supplier_warehouse], "account": warehouse_account[self.supplier_warehouse],
"against": warehouse_account[d.warehouse], "against": warehouse_account[d.warehouse],
"cost_center": d.cost_center, "cost_center": d.cost_center,
"remarks": self.get("remarks") or "Accounting Entry for Stock", "remarks": self.get("remarks") or _("Accounting Entry for Stock"),
"credit": flt(d.rm_supp_cost) "credit": flt(d.rm_supp_cost)
})) }))
elif d.warehouse not in warehouse_with_no_account or \ elif d.warehouse not in warehouse_with_no_account or \
d.rejected_warehouse not in warehouse_with_no_account: d.rejected_warehouse not in warehouse_with_no_account:
warehouse_with_no_account.append(d.warehouse) warehouse_with_no_account.append(d.warehouse)
# Cost center-wise amount breakup for other charges included for valuation # Cost center-wise amount breakup for other charges included for valuation
valuation_tax = {} valuation_tax = {}
for tax in self.get("other_charges"): for tax in self.get("other_charges"):
@@ -351,21 +351,21 @@ class PurchaseReceipt(BuyingController):
valuation_tax.setdefault(tax.cost_center, 0) valuation_tax.setdefault(tax.cost_center, 0)
valuation_tax[tax.cost_center] += \ valuation_tax[tax.cost_center] += \
(tax.add_deduct_tax == "Add" and 1 or -1) * flt(tax.tax_amount) (tax.add_deduct_tax == "Add" and 1 or -1) * flt(tax.tax_amount)
if negative_expense_to_be_booked and valuation_tax: if negative_expense_to_be_booked and valuation_tax:
# Backward compatibility: # Backward compatibility:
# If expenses_included_in_valuation account has been credited in against PI # If expenses_included_in_valuation account has been credited in against PI
# and charges added via Landed Cost Voucher, # and charges added via Landed Cost Voucher,
# post valuation related charges on "Stock Received But Not Billed" # post valuation related charges on "Stock Received But Not Billed"
negative_expense_booked_in_pi = frappe.db.sql("""select name from `tabPurchase Invoice Item` pi negative_expense_booked_in_pi = frappe.db.sql("""select name from `tabPurchase Invoice Item` pi
where docstatus = 1 and purchase_receipt=%s where docstatus = 1 and purchase_receipt=%s
and exists(select name from `tabGL Entry` where voucher_type='Purchase Invoice' and exists(select name from `tabGL Entry` where voucher_type='Purchase Invoice'
and voucher_no=pi.parent and account=%s)""", (self.name, expenses_included_in_valuation)) and voucher_no=pi.parent and account=%s)""", (self.name, expenses_included_in_valuation))
if negative_expense_booked_in_pi: if negative_expense_booked_in_pi:
expenses_included_in_valuation = stock_rbnb expenses_included_in_valuation = stock_rbnb
against_account = ", ".join([d.account for d in gl_entries if flt(d.debit) > 0]) against_account = ", ".join([d.account for d in gl_entries if flt(d.debit) > 0])
total_valuation_amount = sum(valuation_tax.values()) total_valuation_amount = sum(valuation_tax.values())
amount_including_divisional_loss = negative_expense_to_be_booked amount_including_divisional_loss = negative_expense_to_be_booked
@@ -376,17 +376,17 @@ class PurchaseReceipt(BuyingController):
else: else:
applicable_amount = negative_expense_to_be_booked * (amount / total_valuation_amount) applicable_amount = negative_expense_to_be_booked * (amount / total_valuation_amount)
amount_including_divisional_loss -= applicable_amount amount_including_divisional_loss -= applicable_amount
gl_entries.append( gl_entries.append(
self.get_gl_dict({ self.get_gl_dict({
"account": expenses_included_in_valuation, "account": expenses_included_in_valuation,
"cost_center": cost_center, "cost_center": cost_center,
"credit": applicable_amount, "credit": applicable_amount,
"remarks": self.remarks or "Accounting Entry for Stock", "remarks": self.remarks or _("Accounting Entry for Stock"),
"against": against_account "against": against_account
}) })
) )
i += 1 i += 1
if warehouse_with_no_account: if warehouse_with_no_account:

View File

@@ -555,7 +555,7 @@
], ],
"idx": 1, "idx": 1,
"istable": 1, "istable": 1,
"modified": "2014-07-30 18:13:18.337564", "modified": "2014-08-08 13:15:06.362562",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Stock", "module": "Stock",
"name": "Purchase Receipt Item", "name": "Purchase Receipt Item",