Merge branch 'develop'
This commit is contained in:
commit
b301603740
@ -1 +1 @@
|
|||||||
__version__ = '4.18.0'
|
__version__ = '4.18.1'
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
{
|
{
|
||||||
"creation": "2012-05-01 12:46:31",
|
"creation": "2012-05-01 12:46:31",
|
||||||
"doc_type": "Journal Voucher",
|
"doc_type": "Journal Voucher",
|
||||||
"docstatus": 0,
|
"docstatus": 0,
|
||||||
"doctype": "Print Format",
|
"doctype": "Print Format",
|
||||||
"html": "{%- from \"templates/print_formats/standard_macros.html\" import add_header -%}\n<div class=\"page-break\">\n {%- if not doc.get(\"print_heading\") and not doc.get(\"select_print_heading\") \n and doc.set(\"select_print_heading\", _(\"Payment Receipt Note\")) -%}{%- endif -%}\n {{ add_header(0, 1, doc, letter_head, no_letterhead) }}\n\n {%- for label, value in (\n (_(\"Received On\"), frappe.utils.formatdate(doc.voucher_date)),\n (_(\"Received From\"), doc.pay_to_recd_from),\n (_(\"Amount\"), \"<strong>\" + doc.total_amount or 0 + \"</strong><br>\" + (doc.total_amount_in_words or \"\") + \"<br>\"),\n (_(\"Remarks\"), doc.remark)\n ) -%}\n <div class=\"row\">\n <div class=\"col-xs-3\"><label class=\"text-right\">{{ label }}</label></div>\n <div class=\"col-xs-9\">{{ value }}</div>\n </div>\n\n {%- endfor -%}\n\n <hr>\n <br>\n <p class=\"strong\">\n {{ _(\"For\") }} {{ doc.company }},<br>\n <br>\n <br>\n <br>\n {{ _(\"Authorized Signatory\") }}\n </p>\n</div>\n\n",
|
"html": "{%- from \"templates/print_formats/standard_macros.html\" import add_header -%}\n<div class=\"page-break\">\n {%- if not doc.get(\"print_heading\") and not doc.get(\"select_print_heading\") \n and doc.set(\"select_print_heading\", _(\"Payment Receipt Note\")) -%}{%- endif -%}\n {{ add_header(0, 1, doc, letter_head, no_letterhead) }}\n\n {%- for label, value in (\n (_(\"Received On\"), frappe.utils.formatdate(doc.voucher_date)),\n (_(\"Received From\"), doc.pay_to_recd_from),\n (_(\"Amount\"), \"<strong>\" + frappe.utils.cstr(doc.total_amount or 0) + \"</strong><br>\" + (doc.total_amount_in_words or \"\") + \"<br>\"),\n (_(\"Remarks\"), doc.remark)\n ) -%}\n <div class=\"row\">\n <div class=\"col-xs-3\"><label class=\"text-right\">{{ label }}</label></div>\n <div class=\"col-xs-9\">{{ value }}</div>\n </div>\n\n {%- endfor -%}\n\n <hr>\n <br>\n <p class=\"strong\">\n {{ _(\"For\") }} {{ doc.company }},<br>\n <br>\n <br>\n <br>\n {{ _(\"Authorized Signatory\") }}\n </p>\n</div>\n\n",
|
||||||
"idx": 1,
|
"idx": 1,
|
||||||
"modified": "2015-01-12 11:03:22.893209",
|
"modified": "2015-01-16 11:03:22.893209",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Accounts",
|
"module": "Accounts",
|
||||||
"name": "Payment Receipt Voucher",
|
"name": "Payment Receipt Voucher",
|
||||||
"owner": "Administrator",
|
"owner": "Administrator",
|
||||||
"print_format_type": "Server",
|
"print_format_type": "Server",
|
||||||
"standard": "Yes"
|
"standard": "Yes"
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ app_publisher = "Web Notes Technologies Pvt. Ltd. and Contributors"
|
|||||||
app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations"
|
app_description = "Open Source Enterprise Resource Planning for Small and Midsized Organizations"
|
||||||
app_icon = "icon-th"
|
app_icon = "icon-th"
|
||||||
app_color = "#e74c3c"
|
app_color = "#e74c3c"
|
||||||
app_version = "4.18.0"
|
app_version = "4.18.1"
|
||||||
|
|
||||||
error_report_email = "support@erpnext.com"
|
error_report_email = "support@erpnext.com"
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ import frappe
|
|||||||
from frappe.modules import scrub, get_doctype_module
|
from frappe.modules import scrub, get_doctype_module
|
||||||
|
|
||||||
def execute():
|
def execute():
|
||||||
for dt in ["Quotation", "Sales Order", "Delivery Note", "Sales invoice"]:
|
for dt in ["Quotation", "Sales Order", "Delivery Note", "Sales Invoice"]:
|
||||||
frappe.reload_doc(get_doctype_module(dt), "doctype", scrub(dt))
|
frappe.reload_doc(get_doctype_module(dt), "doctype", scrub(dt))
|
||||||
frappe.db.sql("""update `tab{0}` set base_discount_amount=discount_amount,
|
frappe.db.sql("""update `tab{0}` set base_discount_amount=discount_amount,
|
||||||
discount_amount=discount_amount/conversion_rate""".format(dt))
|
discount_amount=discount_amount/conversion_rate""".format(dt))
|
||||||
|
@ -45,7 +45,6 @@ class StockEntry(StockController):
|
|||||||
self.validate_warehouse(pro_obj)
|
self.validate_warehouse(pro_obj)
|
||||||
self.validate_production_order()
|
self.validate_production_order()
|
||||||
self.get_stock_and_rate()
|
self.get_stock_and_rate()
|
||||||
self.validate_incoming_rate()
|
|
||||||
self.validate_bom()
|
self.validate_bom()
|
||||||
self.validate_finished_goods()
|
self.validate_finished_goods()
|
||||||
self.validate_return_reference_doc()
|
self.validate_return_reference_doc()
|
||||||
@ -190,16 +189,10 @@ class StockEntry(StockController):
|
|||||||
+ self.production_order + ":" + ", ".join(other_ste), DuplicateEntryForProductionOrderError)
|
+ self.production_order + ":" + ", ".join(other_ste), DuplicateEntryForProductionOrderError)
|
||||||
|
|
||||||
def validate_valuation_rate(self):
|
def validate_valuation_rate(self):
|
||||||
if self.purpose in ["Manufacture", "Repack"]:
|
for d in self.get('mtn_details'):
|
||||||
valuation_at_source, valuation_at_target = 0, 0
|
if d.t_warehouse:
|
||||||
for d in self.get("mtn_details"):
|
self.validate_value("incoming_rate", ">", 0, d, raise_exception=IncorrectValuationRateError)
|
||||||
if d.s_warehouse and not d.t_warehouse:
|
|
||||||
valuation_at_source += flt(d.amount)
|
|
||||||
if d.t_warehouse and not d.s_warehouse:
|
|
||||||
valuation_at_target += flt(d.amount)
|
|
||||||
|
|
||||||
if valuation_at_target < valuation_at_source:
|
|
||||||
frappe.throw(_("Total valuation for manufactured or repacked item(s) can not be less than total valuation of raw materials"))
|
|
||||||
|
|
||||||
def set_total_amount(self):
|
def set_total_amount(self):
|
||||||
self.total_amount = sum([flt(item.amount) for item in self.get("mtn_details")])
|
self.total_amount = sum([flt(item.amount) for item in self.get("mtn_details")])
|
||||||
@ -241,7 +234,7 @@ class StockEntry(StockController):
|
|||||||
incoming_rate = flt(self.get_incoming_rate(args), self.precision("incoming_rate", d))
|
incoming_rate = flt(self.get_incoming_rate(args), self.precision("incoming_rate", d))
|
||||||
if incoming_rate > 0:
|
if incoming_rate > 0:
|
||||||
d.incoming_rate = incoming_rate
|
d.incoming_rate = incoming_rate
|
||||||
d.amount = flt(d.transfer_qty) * flt(d.incoming_rate)
|
d.amount = flt(flt(d.transfer_qty) * flt(d.incoming_rate), self.precision("amount", d))
|
||||||
if not d.t_warehouse:
|
if not d.t_warehouse:
|
||||||
raw_material_cost += flt(d.amount)
|
raw_material_cost += flt(d.amount)
|
||||||
|
|
||||||
@ -255,8 +248,9 @@ class StockEntry(StockController):
|
|||||||
if d.bom_no:
|
if d.bom_no:
|
||||||
bom = frappe.db.get_value("BOM", d.bom_no, ["operating_cost", "quantity"], as_dict=1)
|
bom = frappe.db.get_value("BOM", d.bom_no, ["operating_cost", "quantity"], as_dict=1)
|
||||||
operation_cost_per_unit = flt(bom.operating_cost) / flt(bom.quantity)
|
operation_cost_per_unit = flt(bom.operating_cost) / flt(bom.quantity)
|
||||||
d.incoming_rate = operation_cost_per_unit + (raw_material_cost + flt(self.total_fixed_cost)) / flt(d.transfer_qty)
|
d.incoming_rate = flt(operation_cost_per_unit +
|
||||||
d.amount = flt(d.transfer_qty) * flt(d.incoming_rate)
|
(raw_material_cost + flt(self.total_fixed_cost)) / flt(d.transfer_qty), self.precision("incoming_rate", d))
|
||||||
|
d.amount = flt(flt(d.transfer_qty) * flt(d.incoming_rate), self.precision("transfer_qty", d))
|
||||||
break
|
break
|
||||||
|
|
||||||
def get_incoming_rate(self, args):
|
def get_incoming_rate(self, args):
|
||||||
@ -280,11 +274,6 @@ class StockEntry(StockController):
|
|||||||
|
|
||||||
return incoming_rate
|
return incoming_rate
|
||||||
|
|
||||||
def validate_incoming_rate(self):
|
|
||||||
for d in self.get('mtn_details'):
|
|
||||||
if d.t_warehouse:
|
|
||||||
self.validate_value("incoming_rate", ">", 0, d, raise_exception=IncorrectValuationRateError)
|
|
||||||
|
|
||||||
def validate_bom(self):
|
def validate_bom(self):
|
||||||
for d in self.get('mtn_details'):
|
for d in self.get('mtn_details'):
|
||||||
if d.bom_no and not frappe.db.sql("""select name from `tabBOM`
|
if d.bom_no and not frappe.db.sql("""select name from `tabBOM`
|
||||||
|
2
setup.py
2
setup.py
@ -1,7 +1,7 @@
|
|||||||
from setuptools import setup, find_packages
|
from setuptools import setup, find_packages
|
||||||
import os
|
import os
|
||||||
|
|
||||||
version = "4.18.0"
|
version = "4.18.1"
|
||||||
|
|
||||||
with open("requirements.txt", "r") as f:
|
with open("requirements.txt", "r") as f:
|
||||||
install_requires = f.readlines()
|
install_requires = f.readlines()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user