feat: provision to draft quotation from portal
diff --git a/erpnext/controllers/website_list_for_contact.py b/erpnext/controllers/website_list_for_contact.py
index ecf041e..801c405 100644
--- a/erpnext/controllers/website_list_for_contact.py
+++ b/erpnext/controllers/website_list_for_contact.py
@@ -25,7 +25,7 @@
if not filters: filters = []
- if doctype in ['Supplier Quotation', 'Purchase Invoice']:
+ if doctype in ['Supplier Quotation', 'Purchase Invoice', 'Quotation']:
filters.append((doctype, 'docstatus', '<', 2))
else:
filters.append((doctype, 'docstatus', '=', 1))
diff --git a/erpnext/shopping_cart/cart.py b/erpnext/shopping_cart/cart.py
index a7e8388..414b3de 100644
--- a/erpnext/shopping_cart/cart.py
+++ b/erpnext/shopping_cart/cart.py
@@ -96,7 +96,7 @@
def request_for_quotation():
quotation = _get_cart_quotation()
quotation.flags.ignore_permissions = True
- quotation.submit()
+ quotation.save() if get_shopping_cart_settings().draft_quotation else quotation.submit()
return quotation.name
@frappe.whitelist()
diff --git a/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.json b/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.json
index 32004ef..b3286ed 100644
--- a/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.json
+++ b/erpnext/shopping_cart/doctype/shopping_cart_settings/shopping_cart_settings.json
@@ -12,6 +12,7 @@
"show_price",
"show_stock_availability",
"enable_variants",
+ "draft_quotation",
"column_break_7",
"show_contact_us_button",
"show_quantity_in_website",
@@ -166,13 +167,20 @@
"fieldname": "enable_variants",
"fieldtype": "Check",
"label": "Enable Variants"
+ },
+ {
+ "default": "0",
+ "depends_on": "eval: doc.enable_checkout == 0",
+ "fieldname": "draft_quotation",
+ "fieldtype": "Check",
+ "label": "Draft Quotation"
}
],
"icon": "fa fa-shopping-cart",
"idx": 1,
"issingle": 1,
"links": [],
- "modified": "2020-08-02 18:21:43.873303",
+ "modified": "2020-09-23 13:18:09.057707",
"modified_by": "Administrator",
"module": "Shopping Cart",
"name": "Shopping Cart Settings",
diff --git a/erpnext/templates/includes/transaction_row.html b/erpnext/templates/includes/transaction_row.html
index 80a542f..c3b717d 100644
--- a/erpnext/templates/includes/transaction_row.html
+++ b/erpnext/templates/includes/transaction_row.html
@@ -14,7 +14,11 @@
</div>
</div>
<div class="col-sm-3 text-right bold">
- {{ doc.get_formatted("grand_total") }}
+ {% if doc.doctype == "Quotation" and not doc.docstatus %}
+ {{ _("Pending For Approval") }}
+ {% else %}
+ {{ doc.get_formatted("grand_total") }}
+ {% endif %}
</div>
</div>
<a class="transaction-item-link" href="/{{ pathname }}/{{ doc.name }}">Link</a>
diff --git a/erpnext/templates/pages/order.html b/erpnext/templates/pages/order.html
index 9e3c58b..19a1027 100644
--- a/erpnext/templates/pages/order.html
+++ b/erpnext/templates/pages/order.html
@@ -12,22 +12,23 @@
{% endblock %}
{% block header_actions %}
-<div class="dropdown">
- <button class="btn btn-outline-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
- <span>{{ _('Actions') }}</span>
- <b class="caret"></b>
- </button>
- <ul class="dropdown-menu dropdown-menu-right" role="menu">
- {% if doc.doctype == 'Purchase Order' %}
- <a class="dropdown-item" href="/api/method/erpnext.buying.doctype.purchase_order.purchase_order.make_purchase_invoice_from_portal?purchase_order_name={{ doc.name }}" data-action="make_purchase_invoice">{{ _("Make Purchase Invoice") }}</a>
- {% endif %}
- <a class="dropdown-item" href='/printview?doctype={{ doc.doctype}}&name={{ doc.name }}&format={{ print_format }}'
- target="_blank" rel="noopener noreferrer">
- {{ _("Print") }}
- </a>
- </ul>
-</div>
-
+ {% if not(doc.doctype == "Quotation" and not doc.docstatus) %}
+ <div class="dropdown">
+ <button class="btn btn-outline-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
+ <span>{{ _('Actions') }}</span>
+ <b class="caret"></b>
+ </button>
+ <ul class="dropdown-menu dropdown-menu-right" role="menu">
+ {% if doc.doctype == 'Purchase Order' %}
+ <a class="dropdown-item" href="/api/method/erpnext.buying.doctype.purchase_order.purchase_order.make_purchase_invoice_from_portal?purchase_order_name={{ doc.name }}" data-action="make_purchase_invoice">{{ _("Make Purchase Invoice") }}</a>
+ {% endif %}
+ <a class="dropdown-item" href='/printview?doctype={{ doc.doctype}}&name={{ doc.name }}&format={{ print_format }}'
+ target="_blank" rel="noopener noreferrer">
+ {{ _("Print") }}
+ </a>
+ </ul>
+ </div>
+ {% endif %}
{% endblock %}
{% block page_content %}
@@ -65,43 +66,46 @@
<div class="order-container">
<!-- items -->
- <div class="order-item-table">
- <div class="row order-items order-item-header text-muted">
- <div class="col-sm-6 col-6 h6 text-uppercase">
- {{ _("Item") }}
+ {% if doc.doctype == "Quotation" and not doc.docstatus %}
+ {{ _("Pending For Approval") }}
+ {% else %}
+ <div class="order-item-table">
+ <div class="row order-items order-item-header text-muted">
+ <div class="col-sm-6 col-6 h6 text-uppercase">
+ {{ _("Item") }}
+ </div>
+ <div class="col-sm-3 col-xs-3 text-right h6 text-uppercase">
+ {{ _("Quantity") }}
+ </div>
+ <div class="col-sm-3 col-xs-3 text-right h6 text-uppercase">
+ {{ _("Amount") }}
+ </div>
</div>
- <div class="col-sm-3 col-xs-3 text-right h6 text-uppercase">
- {{ _("Quantity") }}
+ {% for d in doc.items %}
+ <div class="row order-items">
+ <div class="col-sm-6 col-6">
+ {{ item_name_and_description(d) }}
+ </div>
+ <div class="col-sm-3 col-xs-3 text-right">
+ {{ d.qty }}
+ {% if d.delivered_qty is defined and d.delivered_qty != None %}
+ <p class="text-muted small">{{ _("Delivered") }} {{ d.delivered_qty }}</p>
+ {% endif %}
+ </div>
+ <div class="col-sm-3 col-xs-3 text-right">
+ {{ d.get_formatted("amount") }}
+ <p class="text-muted small">{{ _("Rate:") }} {{ d.get_formatted("rate") }}</p>
+ </div>
</div>
- <div class="col-sm-3 col-xs-3 text-right h6 text-uppercase">
- {{ _("Amount") }}
- </div>
+ {% endfor %}
</div>
- {% for d in doc.items %}
- <div class="row order-items">
- <div class="col-sm-6 col-6">
- {{ item_name_and_description(d) }}
- </div>
- <div class="col-sm-3 col-xs-3 text-right">
- {{ d.qty }}
- {% if d.delivered_qty is defined and d.delivered_qty != None %}
- <p class="text-muted small">{{ _("Delivered") }} {{ d.delivered_qty }}</p>
- {% endif %}
- </div>
- <div class="col-sm-3 col-xs-3 text-right">
- {{ d.get_formatted("amount") }}
- <p class="text-muted small">{{ _("Rate:") }} {{ d.get_formatted("rate") }}</p>
- </div>
- </div>
- {% endfor %}
- </div>
-
- <!-- taxes -->
+ <!-- taxes -->
<div class="order-taxes d-flex justify-content-end">
<table>
{% include "erpnext/templates/includes/order/order_taxes.html" %}
</table>
</div>
+ {% endif %}
</div>
{% if enabled_checkout and ((doc.doctype=="Sales Order" and doc.per_billed <= 0)