feat: hook to fetch additional print settings in print view
diff --git a/erpnext/controllers/print_settings.py b/erpnext/controllers/print_settings.py
index c41db25..edd722d 100644
--- a/erpnext/controllers/print_settings.py
+++ b/erpnext/controllers/print_settings.py
@@ -5,20 +5,31 @@
import frappe
from frappe.utils import cint
-def print_settings_for_item_table(doc):
+def print_settings_for_item_table(doc, setting_value=None):
doc.print_templates = {
"qty": "templates/print_formats/includes/item_table_qty.html"
}
doc.hide_in_print_layout = ["uom", "stock_uom"]
- doc.flags.compact_item_print = cint(frappe.db.get_single_value("Print Settings", "compact_item_print"))
+ doc.flags.compact_item_print = setting_value if setting_value is not None\
+ else cint(frappe.db.get_single_value("Print Settings", "compact_item_print"))
if doc.flags.compact_item_print:
doc.print_templates["description"] = "templates/print_formats/includes/item_table_description.html"
doc.flags.compact_item_fields = ["description", "qty", "rate", "amount"]
doc.flags.format_columns = format_columns
+def print_settings_for_taxes(doc, setting_value=None):
+ doc.flags.print_taxes_with_zero_amount = setting_value if setting_value is not None\
+ else cint(frappe.db.get_single_value("Print Settings", "print_taxes_with_zero_amount"))
+ doc.flags.show_inclusive_tax_in_print = doc.is_inclusive_tax()
+
+ doc.print_templates = {
+ "total": "templates/print_formats/includes/total.html",
+ "taxes": "templates/print_formats/includes/taxes.html"
+ }
+
def format_columns(display_columns, compact_fields):
compact_fields = compact_fields + ["image", "item_code", "item_name"]
final_columns = []
@@ -26,3 +37,38 @@
if column not in compact_fields:
final_columns.append(column)
return final_columns
+
+@frappe.whitelist()
+def show_compact_item_setting(doc):
+ meta = frappe.get_meta(doc.doctype)
+ items_field = meta.get_field('items')
+ if items_field and items_field.fieldtype == 'Table':
+ return True
+ return False
+
+@frappe.whitelist()
+def show_taxes_setting(doc):
+ meta = frappe.get_meta(doc.doctype)
+ items_field = meta.get_field('taxes')
+ if items_field and items_field.fieldtype == 'Table':
+ return True
+ return False
+
+def get_print_settings():
+ settings = {
+ 'compact_item_print': {
+ 'condition': 'erpnext.controllers.print_settings.show_compact_item_setting',
+ 'fieldtype': 'Check',
+ 'child_field': 'items',
+ 'label': 'Compact Item Print',
+ 'set_template': 'erpnext.controllers.print_settings.print_settings_for_item_table'
+ },
+ 'print_taxes_with_zero_amount': {
+ 'condition': 'erpnext.controllers.print_settings.show_taxes_setting',
+ 'fieldtype': 'Check',
+ 'label': 'Print taxes with zero amount',
+ 'set_template': 'erpnext.controllers.print_settings.print_settings_for_taxes'
+ }
+ }
+
+ return settings