Пример #1
0
	def _calculate_taxes_and_totals(self):
		# validate conversion rate
		company_currency = get_company_currency(self.company)
		if not self.currency or self.currency == company_currency:
			self.currency = company_currency
			self.conversion_rate = 1.0
		else:
			from erpnext.setup.doctype.currency.currency import validate_conversion_rate
			validate_conversion_rate(self.currency, self.conversion_rate,
				self.meta.get_label("conversion_rate"), self.company)

		self.conversion_rate = flt(self.conversion_rate)
		self.item_doclist = self.get(self.fname)
		self.tax_doclist = self.get(self.other_fname)

		self.calculate_item_values()
		self.initialize_taxes()

		if hasattr(self, "determine_exclusive_rate"):
			self.determine_exclusive_rate()

		self.calculate_net_total()
		self.calculate_taxes()
		self.calculate_totals()
		self._cleanup()
Пример #2
0
def validate_conversion_rate(args, meta):
    from erpnext.setup.doctype.currency.currency import validate_conversion_rate
    from frappe.model.meta import get_field_precision

    # validate currency conversion rate
    validate_conversion_rate(args.currency, args.conversion_rate,
                             meta.get_label("conversion_rate"), args.company)

    args.conversion_rate = flt(
        args.conversion_rate,
        get_field_precision(meta.get_field("conversion_rate"),
                            frappe._dict({"fields": args})))

    # validate price list currency conversion rate
    if not args.get("price_list_currency"):
        throw(_("Price List Currency not selected"))
    else:
        validate_conversion_rate(args.price_list_currency,
                                 args.plc_conversion_rate,
                                 meta.get_label("plc_conversion_rate"),
                                 args.company)

        args.plc_conversion_rate = flt(
            args.plc_conversion_rate,
            get_field_precision(meta.get_field("plc_conversion_rate"),
                                frappe._dict({"fields": args})))
Пример #3
0
	def _calculate_taxes_and_totals(self):
		# validate conversion rate
		company_currency = get_company_currency(self.company)
		if not self.currency or self.currency == company_currency:
			self.currency = company_currency
			self.conversion_rate = 1.0
		else:
			from erpnext.setup.doctype.currency.currency import validate_conversion_rate
			validate_conversion_rate(self.currency, self.conversion_rate,
				self.meta.get_label("conversion_rate"), self.company)

		self.conversion_rate = flt(self.conversion_rate)
		self.item_doclist = self.get(self.fname)
		self.tax_doclist = self.get(self.other_fname)

		self.calculate_item_values()
		self.initialize_taxes()

		if hasattr(self, "determine_exclusive_rate"):
			self.determine_exclusive_rate()

		self.calculate_net_total()
		self.calculate_taxes()
		self.calculate_totals()
		self._cleanup()
Пример #4
0
def get_price_list_rate(args, item_doc, out):
	meta = frappe.get_meta(args.doctype)

	if meta.get_field("currency"):
		validate_price_list(args)
		validate_conversion_rate(args, meta)

		price_list_rate = frappe.db.get_value("Item Price",
			{"price_list": args.price_list, "item_code": args.item_code}, "price_list_rate")

		if not price_list_rate: return {}

		out.price_list_rate = flt(price_list_rate) * flt(args.plc_conversion_rate) \
			/ flt(args.conversion_rate)

		if not out.price_list_rate and args.transaction_type == "buying":
			from erpnext.stock.doctype.item.item import get_last_purchase_details
			out.update(get_last_purchase_details(item_doc.name,
				args.docname, args.conversion_rate))
def validate_conversion_rate(args, meta):
	from erpnext.setup.doctype.currency.currency import validate_conversion_rate
	from frappe.model.meta import get_field_precision

	# validate currency conversion rate
	validate_conversion_rate(args.currency, args.conversion_rate,
		meta.get_label("conversion_rate"), args.company)

	args.conversion_rate = flt(args.conversion_rate,
		get_field_precision(meta.get_field("conversion_rate"),
			frappe._dict({"fields": args})))

	# validate price list currency conversion rate
	if not args.get("price_list_currency"):
		throw(_("Price List Currency not selected"))
	else:
		validate_conversion_rate(args.price_list_currency, args.plc_conversion_rate,
			meta.get_label("plc_conversion_rate"), args.company)

		args.plc_conversion_rate = flt(args.plc_conversion_rate,
			get_field_precision(meta.get_field("plc_conversion_rate"),
			frappe._dict({"fields": args})))