81 lines
2.7 KiB
Python
81 lines
2.7 KiB
Python
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
|
# License: GNU General Public License v3. See license.txt
|
|
|
|
|
|
import frappe
|
|
from frappe import _
|
|
from frappe.utils import formatdate
|
|
|
|
from erpnext.controllers.website_list_for_contact import get_customers_suppliers
|
|
|
|
|
|
def get_context(context):
|
|
context.no_cache = 1
|
|
context.show_sidebar = True
|
|
context.doc = frappe.get_doc(frappe.form_dict.doctype, frappe.form_dict.name)
|
|
context.parents = frappe.form_dict.parents
|
|
context.doc.supplier = get_supplier()
|
|
context.doc.rfq_links = get_link_quotation(context.doc.supplier, context.doc.name)
|
|
unauthorized_user(context.doc.supplier)
|
|
update_supplier_details(context)
|
|
context["title"] = frappe.form_dict.name
|
|
|
|
|
|
def get_supplier():
|
|
doctype = frappe.form_dict.doctype
|
|
parties_doctype = (
|
|
"Request for Quotation Supplier" if doctype == "Request for Quotation" else doctype
|
|
)
|
|
customers, suppliers = get_customers_suppliers(parties_doctype, frappe.session.user)
|
|
|
|
return suppliers[0] if suppliers else ""
|
|
|
|
|
|
def check_supplier_has_docname_access(supplier):
|
|
status = True
|
|
if frappe.form_dict.name not in frappe.db.sql_list(
|
|
"""select parent from `tabRequest for Quotation Supplier`
|
|
where supplier = %s""",
|
|
(supplier,),
|
|
):
|
|
status = False
|
|
return status
|
|
|
|
|
|
def unauthorized_user(supplier):
|
|
status = check_supplier_has_docname_access(supplier) or False
|
|
if status == False:
|
|
frappe.throw(_("Not Permitted"), frappe.PermissionError)
|
|
|
|
|
|
def update_supplier_details(context):
|
|
supplier_doc = frappe.get_doc("Supplier", context.doc.supplier)
|
|
context.doc.currency = supplier_doc.default_currency or frappe.get_cached_value(
|
|
"Company", context.doc.company, "default_currency"
|
|
)
|
|
context.doc.currency_symbol = frappe.db.get_value(
|
|
"Currency", context.doc.currency, "symbol", cache=True
|
|
)
|
|
context.doc.number_format = frappe.db.get_value(
|
|
"Currency", context.doc.currency, "number_format", cache=True
|
|
)
|
|
context.doc.buying_price_list = supplier_doc.default_price_list or ""
|
|
|
|
|
|
def get_link_quotation(supplier, rfq):
|
|
quotation = frappe.db.sql(
|
|
""" select distinct `tabSupplier Quotation Item`.parent as name,
|
|
`tabSupplier Quotation`.status, `tabSupplier Quotation`.transaction_date from
|
|
`tabSupplier Quotation Item`, `tabSupplier Quotation` where `tabSupplier Quotation`.docstatus < 2 and
|
|
`tabSupplier Quotation Item`.request_for_quotation =%(name)s and
|
|
`tabSupplier Quotation Item`.parent = `tabSupplier Quotation`.name and
|
|
`tabSupplier Quotation`.supplier = %(supplier)s order by `tabSupplier Quotation`.creation desc""",
|
|
{"name": rfq, "supplier": supplier},
|
|
as_dict=1,
|
|
)
|
|
|
|
for data in quotation:
|
|
data.transaction_date = formatdate(data.transaction_date)
|
|
|
|
return quotation or None
|