Try ERPNext Try Frappe Cloud Buy Support Partners Foundation

Insert a column in the sales invoice print format for item wise sales tax amount

hi I want to insert a column in the sales invoice print format that shows item wise sales tax amount
kindly advise us

Any update

<table border = 2; width = "650">
<tbody>
    <tr>
        <th><font size = "1">Sr</font></th>
		<th><font size = "1">Description</font></th>
		<th><font size = "1">Tariff/HSN</font></th>
		<th class="text-right"><font size = "1">Quantity</font></th>
		<th class="text-right"><font size = "1">Rate</font></th>
		<th class="text-right"><font size = "1">Amount</font></th>
		<th class="text-right"><font size = "1">CGST Rate</font></th>
		<th class="text-right"><font size = "1">CGST Amount</font></th>
		<th class="text-right"><font size = "1">SGST Rate</font></th>
		<th class="text-right"><font size = "1">SGST Amount</font></th>
		<th class="text-right"><font size = "1">IGST Rate</font></th>
		<th class="text-right"><font size = "1">IGST Amount</font></th>
        </font>
	</tr>

	{% set cgst_rate = [] -%}
	{% set sgst_rate = [] -%}
	{% set igst_rate = [] -%}
	{% set cgst_account_head = [] -%}
	{% set sgst_account_head = [] -%}
	{% set igst_account_head = [] -%}
	{% set tot_cgst_amount = [] %}
	{% set tot_sgst_amount = [] %}
	{% set grand_total = {"qty":0.0, "amount":0.0, "cgst_amt":0.0, "sgst_amt":0.0, "igst_amt":0.0} %}

	{%- for row in doc.taxes -%}
  	   {% if 'CGST' in row.account_head -%}
		    {% set _ = cgst_account_head.append(row.account_head) %}
		    {% set _ = cgst_rate.append(row.rate) %}
	   {%- endif -%}
	   {% if 'SGST' in row.account_head -%}
		    {% set _ = sgst_account_head.append(row.account_head) %}
		    {% set _ = sgst_rate.append(row.rate) %}
	    {%- endif -%}
	   {% if 'IGST' in row.account_head -%}
		    {% set _ = igst_account_head.append(row.account_head) %}
		    {% set _ = igst_rate.append(row.rate) %}
	   {%- endif -%}
	{%- endfor -%}

{%- for row in doc.items -%}
	<tr>
	    {% set cgst_amt = [] -%}
	    {% set sgst_amt = [] -%}
		{% set igst_amt = [] -%}
		{% set it_cgst_rate = [] -%}
	 	{% set it_sgst_rate = [] -%}
		{% set it_igst_rate = [] -%}
		{% set rate_found_item = 0 -%}
		{%- set item_record = frappe.get_doc("Item", row.item_code) -%}
		{% for item_tax in item_record.taxes %}
        {% if item_tax.tax_type == igst_account_head[0] %}
		{% set _ = it_igst_rate.append(item_tax.tax_rate) %}
			{% set _ = igst_amt.append(row.amount * it_igst_rate[0] / 100) -%}
			{% set rate_found_item = 1 -%}
		{% endif %}		
		{% if item_tax.tax_type == sgst_account_head[0] %}	
			{% set _ = it_sgst_rate.append(item_tax.tax_rate) %}
			{% set _ = sgst_amt.append(row.amount * it_sgst_rate[0] / 100) -%}
			{% set rate_found_item = 1 -%}
		{% endif %}	
		{% if item_tax.tax_type == cgst_account_head[0] %}
			{% set _ = it_cgst_rate.append(item_tax.tax_rate) %}
			{% set _ = cgst_amt.append(row.amount * it_cgst_rate[0] / 100) -%}
			{% set rate_found_item = 1 -%}
		{% endif %}
{% endfor %}	
  	{% if rate_found_item == 0 %}
    	{% if cgst_rate[0] -%}
		   {% set _ = cgst_amt.append((row.amount * cgst_rate[0])/100) -%}
		   {% set _= it_cgst_rate.append(cgst_rate[0]) -%}
		   {% set rate_found_inv = 1 -%}
	  	{%- endif -%}
		{% if sgst_rate[0] -%}
		   {% set _ = sgst_amt.append((row.amount * sgst_rate[0])/100) -%}
		   {% set _= it_sgst_rate.append(sgst_rate[0]) -%}
		{%- endif -%}
		{% if igst_rate[0] -%}
		   {% set _ = igst_amt.append((row.amount * igst_rate[0])/100) -%}
		   {% set _= it_igst_rate.append(igst_rate[0]) -%}
		   {% set rate_found_inv = 1 -%}
	    {%- endif -%}
	{% endif %}
        {% if not it_cgst_rate[0] %}
		   {% set _ = it_cgst_rate.append(0) %}
		   {% set _ = cgst_amt.append(0) %}
	{% endif %}
	{% if not it_sgst_rate[0] %}
		{% set _ = it_sgst_rate.append(0) %}
		{% set _ = sgst_amt.append(0) %}
	{% endif %}
	{% if not it_igst_rate[0] %}
		{% set _ = it_igst_rate.append(0) %}
		{% set _ = igst_amt.append(0) %}
	{% endif %}
	{% set temp_cgst_amt = grand_total["cgst_amt"] + cgst_amt[0] %}
	{% set temp_sgst_amt = grand_total["sgst_amt"] + sgst_amt[0] %}
	{% set temp_igst_amt = grand_total["igst_amt"] + igst_amt[0] %}
	{% set temp_qty = grand_total["qty"] + row.qty %}
	{% set temp_amount = grand_total["amount"] + row.amount %}
	{% set check = grand_total.update({"qty": temp_qty, "amount": temp_amount, "cgst_amt":temp_cgst_amt, "sgst_amt":temp_sgst_amt, "igst_amt":temp_igst_amt}) %}
	<td style="width: 5%;"><font size = "1">{{ row.idx }}</font></td>
		<td style="width: 15%;"><font size = "1">
			{% if row.item_code != row.item_name -%}
			<b>{{ row.item_code}}</b><br>
			{%- endif %}
            {{ row.item_name }}
		</font></td>
		<td style="width: 10%;"><font size = "1">{{ row.gst_hsn_code }}</font></td>
		<td style="width: 10%; text-align: left;"><font size = "1">{{ row.uom or row.stock_uom }}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {{ row.qty }} </font></td>
		<td style="width: 5%; text-align: right;"><font size = "1">{{
			row.get_formatted("rate", doc) }}</font></td>
		<td style="width: 10%; text-align: right;"><font size = "1">{{
			row.get_formatted("amount", doc) }}</font></td>
		<td style="width: 4%; text-align: right;"><font size = "1">{{
			it_cgst_rate[0] }}%</font></td>
		<td style="width: 10%; text-align: right;"><font size = "1">{{
			"₹ {:,.2f}".format(cgst_amt[0])  }}</font></td>
		<td style="width: 4%; text-align: right;"><font size = "1">{{
			it_sgst_rate[0] }}%</font></td>
		<td style="width: 10%; text-align: right;"><font size = "1">{{
			"₹ {:,.2f}".format(sgst_amt[0])  }}</font></td>
		<td style="width: 4%; text-align: right;"><font size = "1">{{
			it_igst_rate[0] }}%</font></td>
		<td style="width: 10%; text-align: right;"><font size = "1">{{
			"₹ {:,.2f}".format(igst_amt[0])  }}</font></td>
        </tr>
    {%- endfor -%}
    <tr>
		<td style="width: 5%;"><font size = "1"></font></td>
		<td style="width: 15%;"><font size = "1"><b>
			Total
		</b></font></td>
		<td style="width: 10%;"><font size = "1"></font></td>
		<td style="width: 10%; text-align: left;"><font size = "1"><b> {{ grand_total["qty"] }} </b></font></td>
		<td style="width: 5%; text-align: right;"><font size = "1"></font></td>
		<td style="width: 10%; text-align: right;"><font size = "1"><b>{{
			"₹ {:,.2f}".format(grand_total["amount"]) }}</b></font></td>
		<td style="width: 4%; text-align: right;"><font size = "1"><font></td>
		<td style="width: 10%; text-align: right;"><font size = "1"><b>{{
			"₹ {:,.2f}".format(grand_total["cgst_amt"])  }}</b></font></td>
		<td style="width: 4%; text-align: right;"><font size = "1"></font></td>
		<td style="width: 10%; text-align: right;"><font size = "1"><b>{{
			"₹ {:,.2f}".format(grand_total["sgst_amt"])  }}</b></font></td>
		<td style="width: 4%; text-align: right;"><font size = "1"></font></td>
		<td style="width: 10%; text-align: right;"><font size = "1"><b>{{
			"₹ {:,.2f}".format(grand_total["igst_amt"])  }}</b></font></td>	
</tr>
</tbody>
</table>

Thanks for your reply can you tell me where is the location for copying this custom Script

in sales invoice items customization form

I am a beginner so kindly advise us.

Find in Global Search > Print Format List

Thanks to @UmaG for sharing such a helpfull complete Jinja Code link.

thanks for your reply after update following error show

jinja2.exceptions.UndefinedError: ‘erpnext.stock.doctype.item_tax.item_tax.ItemTax object’ has no attribute ‘tax_rate’

Have you configured Item Tax Template ?

no, we don’t configure item tax template just calculate GST Text item wise

Required Item Tax Template to be created. No need to assign at Item Level