Enhancements to Supplier Portal (#19221)

* fix: Add Purchase Order to portal

* fix: Create Customer or Supplier on first login

Based on default role set in Portal Settings, a Customer or Supplier
will be created when the user logs in for the first time.

* fix: Styling for transaction_row

* fix: Styling for RFQ page

* fix: Add Purchase Invoice route

- Make Purchase Invoice from PO

* fix: minor

- Admissions for Student role
- Remove print statement
diff --git a/erpnext/templates/includes/rfq/rfq_items.html b/erpnext/templates/includes/rfq/rfq_items.html
index cb77f7e..caa15f3 100644
--- a/erpnext/templates/includes/rfq/rfq_items.html
+++ b/erpnext/templates/includes/rfq/rfq_items.html
@@ -3,13 +3,13 @@
 {% for d in doc.items %}
 <div class="rfq-item">
 	<div class="row">
-		<div class="col-sm-5 col-xs-12" style="margin-bottom: 10px;margin-top: 5px;">
+		<div class="col-sm-5 col-12" style="margin-bottom: 10px;margin-top: 5px;">
 			{{ item_name_and_description(d, doc) }}
 		</div>
-		<!-- <div class="col-sm-2 col-xs-2" style="margin-bottom: 10px;">
+		<!-- <div class="col-sm-2 col-2" style="margin-bottom: 10px;">
 			<textarea type="text" style="margin-top: 5px;" class="input-with-feedback form-control rfq-offer_detail" ></textarea>
 		</div> -->
-		<div class="col-sm-2 col-xs-4 text-right">
+		<div class="col-sm-2 col-4 text-right">
 				<input type="text" class="form-control text-right rfq-qty" style="margin-top: 5px;display: inline-block"
 				value = "{{ d.get_formatted('qty') }}"
 				data-idx="{{ d.idx }}">
@@ -17,14 +17,14 @@
 					{{_("UOM") + ":"+ d.uom}}
 				</p>
 		</div>
-		<div class="col-sm-2 col-xs-4 text-right">
+		<div class="col-sm-2 col-4 text-right">
 			<input type="text" class="form-control text-right rfq-rate"
 				style="margin-top: 5px;display: inline-block" value="0.00"
 				data-idx="{{ d.idx }}">
 		</div>
-        <div class="col-sm-3 col-xs-4 text-right" style="padding-top: 9px;">
+        <div class="col-sm-3 col-4 text-right" style="padding-top: 9px;">
            {{doc.currency_symbol}} <span class="rfq-amount" data-idx="{{ d.idx }}">0.00</span>
         </div>
 		</div>
 	</div>
-{% endfor %}
\ No newline at end of file
+{% endfor %}
diff --git a/erpnext/templates/includes/rfq/rfq_macros.html b/erpnext/templates/includes/rfq/rfq_macros.html
index 95bbcfe..88724c3 100644
--- a/erpnext/templates/includes/rfq/rfq_macros.html
+++ b/erpnext/templates/includes/rfq/rfq_macros.html
@@ -1,13 +1,11 @@
-{% from "erpnext/templates/includes/macros.html" import product_image_square %}
+{% from "erpnext/templates/includes/macros.html" import product_image_square, product_image %}
 
 {% macro item_name_and_description(d, doc) %}
     <div class="row">
-        <div class="col-xs-4 col-sm-2 order-image-col">
-            <div class="order-image">
-                {{ product_image_square(d.image) }}
-            </div>
+        <div class="col-3">
+			{{ product_image(d.image) }}
         </div>
-        <div class="col-xs-8 col-sm-10">
+        <div class="col-9">
             {{ d.item_code }}
             <p class="text-muted small">{{ d.description }}</p>
 			{% set supplier_part_no = frappe.db.get_value("Item Supplier", {'parent': d.item_code, 'supplier': doc.supplier}, "supplier_part_no") %}
diff --git a/erpnext/templates/includes/transaction_row.html b/erpnext/templates/includes/transaction_row.html
index 6c58b51..80a542f 100644
--- a/erpnext/templates/includes/transaction_row.html
+++ b/erpnext/templates/includes/transaction_row.html
@@ -1,22 +1,21 @@
 <div class="web-list-item transaction-list-item">
-	<a href="/{{ pathname }}/{{ doc.name }}">
-		<div class="row">
-			<div class="col-sm-4" style='margin-top: -3px;'>
-				<span class="indicator small {{ doc.indicator_color or ("blue" if doc.docstatus==1 else "darkgrey") }}">
-				{{ doc.name }}</span>
-				<div class="small text-muted transaction-time"
-					title="{{ frappe.utils.format_datetime(doc.modified, "medium") }}">
-					{{ frappe.utils.global_date_format(doc.modified) }}
-				</div>
-			</div>
-			<div class="col-sm-5">
-				<div class="small text-muted items-preview ellipsis ellipsis-width">
-					{{ doc.items_preview }}
-				</div>
-			</div>
-			<div class="col-sm-3 text-right bold">
-				{{ doc.get_formatted("grand_total") }}
+	<div class="row">
+		<div class="col-sm-4">
+			<span class="indicator small {{ doc.indicator_color or ("blue" if doc.docstatus==1 else "darkgrey") }}">
+			{{ doc.name }}</span>
+			<div class="small text-muted transaction-time"
+				title="{{ frappe.utils.format_datetime(doc.modified, "medium") }}">
+				{{ frappe.utils.global_date_format(doc.modified) }}
 			</div>
 		</div>
-	</a>
+		<div class="col-sm-5">
+			<div class="small text-muted items-preview ellipsis ellipsis-width">
+				{{ doc.items_preview }}
+			</div>
+		</div>
+		<div class="col-sm-3 text-right bold">
+			{{ doc.get_formatted("grand_total") }}
+		</div>
+	</div>
+	<a class="transaction-item-link" href="/{{ pathname }}/{{ doc.name }}">Link</a>
 </div>