Merge pull request #5133 from rohitwaghchaure/new_rfq
[Fixes]Portal, Supplier can view their addresses, default buying price list …
This commit is contained in:
commit
126ef64203
@ -31,6 +31,9 @@ def get_transaction_list(doctype, txt=None, filters=None, limit_start=0, limit_p
|
||||
parties_doctype = 'Request for Quotation Supplier' if doctype == 'Request for Quotation' else doctype
|
||||
# find party for this contact
|
||||
customers, suppliers = get_customers_suppliers(parties_doctype, user)
|
||||
|
||||
if not customers and not suppliers: return []
|
||||
|
||||
key, parties = get_party_details(customers, suppliers)
|
||||
|
||||
if doctype == 'Request for Quotation':
|
||||
@ -93,7 +96,6 @@ def post_process(doctype, data):
|
||||
return result
|
||||
|
||||
def get_customers_suppliers(doctype, user):
|
||||
from erpnext.shopping_cart.cart import get_customer
|
||||
meta = frappe.get_meta(doctype)
|
||||
contacts = frappe.get_all("Contact", fields=["customer", "supplier", "email_id"],
|
||||
filters={"email_id": user})
|
||||
@ -101,9 +103,6 @@ def get_customers_suppliers(doctype, user):
|
||||
customers = [c.customer for c in contacts if c.customer] if meta.get_field("customer") else None
|
||||
suppliers = [c.supplier for c in contacts if c.supplier] if meta.get_field("supplier") else None
|
||||
|
||||
if not customers and not suppliers:
|
||||
return [get_customer().name], None
|
||||
|
||||
return customers, suppliers
|
||||
|
||||
def has_website_permission(doc, ptype, user, verbose=False):
|
||||
|
@ -24,7 +24,7 @@ def set_cart_count(quotation=None):
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_cart_quotation(doc=None):
|
||||
party = get_customer()
|
||||
party = get_party()
|
||||
|
||||
if not doc:
|
||||
quotation = _get_cart_quotation(party)
|
||||
@ -150,7 +150,7 @@ def decorate_quotation_doc(doc):
|
||||
|
||||
def _get_cart_quotation(party=None):
|
||||
if not party:
|
||||
party = get_customer()
|
||||
party = get_party()
|
||||
|
||||
quotation = frappe.get_all("Quotation", fields=["name"], filters=
|
||||
{party.doctype.lower(): party.name, "order_type": "Shopping Cart", "docstatus": 0},
|
||||
@ -182,7 +182,7 @@ def _get_cart_quotation(party=None):
|
||||
return qdoc
|
||||
|
||||
def update_party(fullname, company_name=None, mobile_no=None, phone=None):
|
||||
party = get_customer()
|
||||
party = get_party()
|
||||
|
||||
party.customer_name = company_name or fullname
|
||||
party.customer_type == "Company" if company_name else "Individual"
|
||||
@ -211,7 +211,7 @@ def update_party(fullname, company_name=None, mobile_no=None, phone=None):
|
||||
|
||||
def apply_cart_settings(party=None, quotation=None):
|
||||
if not party:
|
||||
party = get_customer()
|
||||
party = get_party()
|
||||
if not quotation:
|
||||
quotation = _get_cart_quotation(party)
|
||||
|
||||
@ -276,20 +276,24 @@ def set_taxes(quotation, cart_settings):
|
||||
# # append taxes
|
||||
quotation.append_taxes_from_master()
|
||||
|
||||
def get_customer(user=None):
|
||||
def get_party(user=None):
|
||||
if not user:
|
||||
user = frappe.session.user
|
||||
|
||||
customer = frappe.db.get_value("Contact", {"email_id": user}, "customer")
|
||||
party = frappe.db.get_value("Contact", {"email_id": user}, ["customer", "supplier"], as_dict=1)
|
||||
if party:
|
||||
party_doctype = 'Customer' if party.customer else 'Supplier'
|
||||
party = party.customer or party.supplier
|
||||
|
||||
cart_settings = frappe.get_doc("Shopping Cart Settings")
|
||||
|
||||
|
||||
debtors_account = ''
|
||||
|
||||
|
||||
if cart_settings.enable_checkout:
|
||||
debtors_account = get_debtors_account(cart_settings)
|
||||
|
||||
if customer:
|
||||
return frappe.get_doc("Customer", customer)
|
||||
|
||||
if party:
|
||||
return frappe.get_doc(party_doctype, party)
|
||||
|
||||
else:
|
||||
customer = frappe.new_doc("Customer")
|
||||
@ -300,7 +304,7 @@ def get_customer(user=None):
|
||||
"customer_group": get_shopping_cart_settings().default_customer_group,
|
||||
"territory": get_root_of("Territory")
|
||||
})
|
||||
|
||||
|
||||
if debtors_account:
|
||||
customer.update({
|
||||
"accounts": [{
|
||||
@ -308,7 +312,7 @@ def get_customer(user=None):
|
||||
"account": debtors_account
|
||||
}]
|
||||
})
|
||||
|
||||
|
||||
customer.flags.ignore_mandatory = True
|
||||
customer.insert(ignore_permissions=True)
|
||||
|
||||
@ -326,12 +330,12 @@ def get_customer(user=None):
|
||||
def get_debtors_account(cart_settings):
|
||||
payment_gateway_account_currency = \
|
||||
frappe.get_doc("Payment Gateway Account", cart_settings.payment_gateway_account).currency
|
||||
|
||||
|
||||
account_name = _("Debtors ({0})".format(payment_gateway_account_currency))
|
||||
|
||||
|
||||
debtors_account_name = get_account_name("Receivable", "Asset", is_group=0,\
|
||||
account_currency=payment_gateway_account_currency, company=cart_settings.company)
|
||||
|
||||
|
||||
if not debtors_account_name:
|
||||
debtors_account = frappe.get_doc({
|
||||
"doctype": "Account",
|
||||
@ -340,18 +344,18 @@ def get_debtors_account(cart_settings):
|
||||
"is_group": 0,
|
||||
"parent_account": get_account_name(root_type="Asset", is_group=1, company=cart_settings.company),
|
||||
"account_name": account_name,
|
||||
"currency": payment_gateway_account_currency
|
||||
"currency": payment_gateway_account_currency
|
||||
}).insert(ignore_permissions=True)
|
||||
|
||||
|
||||
return debtors_account.name
|
||||
|
||||
|
||||
else:
|
||||
return debtors_account_name
|
||||
|
||||
|
||||
|
||||
def get_address_docs(doctype=None, txt=None, filters=None, limit_start=0, limit_page_length=20, party=None):
|
||||
if not party:
|
||||
return
|
||||
party = get_party()
|
||||
|
||||
address_docs = frappe.db.sql("""select * from `tabAddress`
|
||||
where `{0}`=%s order by name limit {1}, {2}""".format(party.doctype.lower(),
|
||||
@ -371,7 +375,7 @@ def set_customer_in_address(doc, method=None):
|
||||
|
||||
if not doc.flags.linked and (frappe.db.get_value("User", frappe.session.user, "user_type") == "Website User"):
|
||||
# creates a customer if one does not exist
|
||||
get_customer()
|
||||
get_party()
|
||||
doc.link_address()
|
||||
|
||||
@frappe.whitelist()
|
||||
@ -439,4 +443,4 @@ def get_address_territory(address_name):
|
||||
return territory
|
||||
|
||||
def show_terms(doc):
|
||||
return doc.tc_name
|
||||
return doc.tc_name
|
||||
|
@ -4,7 +4,7 @@
|
||||
from __future__ import unicode_literals
|
||||
import unittest
|
||||
import frappe
|
||||
from erpnext.shopping_cart.cart import _get_cart_quotation, update_cart, get_customer
|
||||
from erpnext.shopping_cart.cart import _get_cart_quotation, update_cart, get_party
|
||||
|
||||
class TestShoppingCart(unittest.TestCase):
|
||||
"""
|
||||
@ -118,7 +118,7 @@ class TestShoppingCart(unittest.TestCase):
|
||||
"doctype": "Quotation",
|
||||
"quotation_to": "Customer",
|
||||
"order_type": "Shopping Cart",
|
||||
"customer": get_customer(frappe.session.user).name,
|
||||
"customer": get_party(frappe.session.user).name,
|
||||
"docstatus": 0,
|
||||
"contact_email": frappe.session.user,
|
||||
"selling_price_list": "_Test Price List Rest of the World",
|
||||
|
@ -64,7 +64,7 @@
|
||||
<div class="row grand-total-row">
|
||||
<div class="col-xs-10 text-right">{{ _("Grand Total") }}</div>
|
||||
<div class="col-xs-2 text-right">
|
||||
{{doc.currency_symbol}} <span class="tax-grand-total">0.0</span>
|
||||
{{doc.currency_symbol}} <span class="tax-grand-total">0.0</span>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
@ -4,16 +4,16 @@
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe import _
|
||||
from erpnext.controllers.website_list_for_contact import get_customers_suppliers, \
|
||||
get_party_details
|
||||
from erpnext.controllers.website_list_for_contact import (get_customers_suppliers,
|
||||
get_party_details)
|
||||
|
||||
def get_context(context):
|
||||
context.no_cache = 1
|
||||
context.doc = frappe.get_doc(frappe.form_dict.doctype, frappe.form_dict.name)
|
||||
context.parents = frappe.form_dict.parents
|
||||
context.doc.supplier = get_supplier()
|
||||
update_supplier_details(context)
|
||||
unauthorized_user(context.doc.supplier)
|
||||
update_supplier_details(context)
|
||||
context["title"] = frappe.form_dict.name
|
||||
|
||||
def get_supplier():
|
||||
@ -31,13 +31,13 @@ def check_supplier_has_docname_access(supplier):
|
||||
return status
|
||||
|
||||
def unauthorized_user(supplier):
|
||||
status = check_supplier_has_docname_access(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
|
||||
context.doc.currency = supplier_doc.default_currency or frappe.db.get_value("Company", context.doc.company, "default_currency")
|
||||
context.doc.currency_symbol = frappe.db.get_value("Currency", context.doc.currency, "symbol")
|
||||
context.doc.number_format = frappe.db.get_value("Currency", context.doc.currency, "number_format")
|
||||
context.doc.buying_price_list = supplier_doc.default_price_list
|
||||
context.doc.buying_price_list = supplier_doc.default_price_list or ''
|
Loading…
x
Reference in New Issue
Block a user