Reverse Charge Mechanism

@centaur

Hi, Can you please help with RCM in a customized format tax invoice?

When we generate an RCM tax invoice and select our format it will take as a regular tax invoice as we customized

Do we need to customized separate invoices for RCM or can we do something on existing HTML format

Hi

Could you post the code here ?

   {{ (doc.invoice_copy)  }}<br>
<center><h3>TAX INVOICE</h3><center>
<table width=100% height=100% border=1>
   <tr>
   <td width=30% rowspan=3>
    <b><left><h6.5>Aerotek Design</b></h6.5><left><br>
    
       <left><h6.5>Unit:3, Plot NO-27A </h6.5><left>
   <br>
   <left><h6.5>Peenya, Bengaluru - 560058</h6.5><left>
       <br
       <left><h6.5>Karnataka, State Code: 29</h6.5><left> <br>
    
                       <left><h6.5>India</h6.5><left><br>
                
                              <left><h7>Phone: +91 (0) 80 41626362 </h6.5><left> <br>
        <left><h6.5>Email: accounts@aerotekgroup.com</h6.5><left> <br>
        <br>
       
                       <h6.5>GSTIN:29AJHPB8312L1Z2</h6.5><left> <br>
                          
   </td>
   <td width=25%>
   Invoice No.<br>
   <b>{{ doc.name }}</b>
   </td>
   <td width=25%>
   Dated<br>
	   <b>{{ frappe.utils.formatdate(doc.posting_date) }}</b>
   </td>
   </tr>
   <td width=25%>
   Delivery Note<br>
	   <b>&nbsp;</b>
   </td>
   <td width=25%>
   Mode of Payment<br>
   <b>{{ doc.mode_of_payment or " " }}<b></b><br>
	   <b>&nbsp;</b>
   </td>
   </tr>
   <tr>
   <td width=25%>
   Supplier's Ref.<br>
	   <b>&nbsp;</b>
   </td>
   <td width=25%>
   Other Reference(s)<br>
	   <b>&nbsp;</b>
   </td>
   </tr>
   <tr>

   <td width=45% rowspan=4>
   <br>
   <i>Consignee (Bill to)</i><br>
   <strong>{{ doc.customer_name or "" }}</strong><br>
	   {{ doc.address_display or "" }}
   </td>
   <td width=25%>
   PO No.<br>
   <b>{{ doc.po_no or " " }}<b></b><br>
	   <b>&nbsp;</b>
   </td>
   <td width=25%>
   Dated<br>
   <b>{{ frappe.utils.formatdate(doc.po_date) }}</b>
	   <b>&nbsp;</b>
   </td>
   </tr>
   <tr>
   <td width=25%>
   Dispatch Document No.<br>
	   <b>&nbsp;</b>
   </td>
   <td width=25%>
   Dated<br>
	   <b>&nbsp;</b>
   </td>
   </tr>
   <tr>
   <td width=25%>
   Mode of Transport<br>
   <b>{{ doc.mode_of_transport or " " }}</b><br>
	   <b>&nbsp;</b>
   </td>
   <td width=25%>
  <i> Consignee (Ship to)<br></i>
   <B>{{ doc.shipping_address_name or " " }}</b><br>
	   <b>&nbsp;</b>
   </td>
   </tr>
   <tr>
   <td width=25% height=25 colspan=2>
   Terms of Delivery<br>
    <b>{{ doc.tc_name or " " }}</b><br>
	   <b>&nbsp;</b>
   </td>
   </tr>
</table>
<TABLE cellpadding=0 cellspacing=0 width=100% border=1>
<TR>
<tbody>
	<tr>
		<th>SL NO</th>
		<th>DESCRIPTION</th>
		<th>HSN/ASN</th>
		<th class="text-right">QUANTITY</th>
		<th class="text-right">UNIT RATE</th>
		<th class="text-right">TAXABLE AMOUNT</th>
	</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: 25%;"><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.qty }}<br><small>{{ row.uom or row.stock_uom }}</small> </font></td>
		<td style="width: 10%; text-align: right;"><font size = "1">{{
			row.get_formatted("rate", doc) }}</font></td>
		<td style=display:none;"width: 11%; text-align: right;"><font size = "1">{{
			"₹ {:,.2f}".format(cgst_amt[0])  }}<br><small>{{
			it_cgst_rate[0] }}%</small></font></td>
		<td style=display:none;"width: 11%; text-align: right;"><font size = "1">{{
			"₹ {:,.2f}".format(sgst_amt[0])  }}<br><small>{{
			it_sgst_rate[0] }}%</small></font></td>
		<td style=display:none;"width: 11%; text-align: right;"><font size = "1">{{
			"₹ {:,.2f}".format(igst_amt[0])  }}<br><small>{{
			it_igst_rate[0] }}%</small></font></td>
		<td style="width: 11%; text-align: right;"><font size = "1">{{
			row.get_formatted("amount", doc) }}</font></td>
</td>
</tr>

{% set trate = "" %}
{% endfor %}

<!-- {% set loop = 10 - doc.items|length  %}
{% for i in range(loop) %}

	<TD>&nbsp;</TD>
	<TD>&nbsp;</TD>
	<TD>&nbsp;</TD>
	<TD>&nbsp;</TD>
	<TD>&nbsp;</TD>
<TABLE cellpadding=2 cellspacing=1 width=100% border=1>
</td>
</TR>
{% endfor %} -->
</TABLE>

<TABLE cellpadding=0 cellspacing=0 width=100% border=1>
<TR>        <TD rowspan=3 >
    Amount in Words<br>
    <B>{{ doc.base_in_words }}</B>
</TD>
	<TD WIDTH=20% align=right>SUB TOTAL</TD>
	<TD WIDTH=20% align=right>{{ doc.get_formatted("total", doc) }}</TD>
	
	
</TR>
<TR>


<TD align=right>CGST - 9%</TD>
<TD WIDTH=20% align=right>{{ "₹ {:,.2f}".format(grand_total["cgst_amt"])  }}</TD>

</TR>

<TR>

<TD align=right>SGST - 9%</TD>
<TD WIDTH=20% align=right>{{ "₹ {:,.2f}".format(grand_total["sgst_amt"])  }}</TD>

</TR>

<TR>

	<TD WIDTH=60% align=right><B><TD align=right><B>TOTAL</B></TD>
<TD WIDTH=60% align=right><B>{{ doc.get_formatted("grand_total", doc) }}</B></TD>

</TR>
<TR>


<TD WIDTH=60% align=right><B><TD align=right><B>ROUNDED TOTAL</B></TD>
<TD WIDTH=60% align=right><B>{{ doc.get_formatted("base_rounded_total", doc) }}</B></TD>

</TR>
<TR>
	<TD colspan=2 height=120>E&OE<br>
	<br>
	<U><b>DECLARATION:</b></U>
	<br>
		We declare that this invoice shows the actual price of the goods described and that all particulars
are true and correct. <br>

<br>
<u><B>STATE BANK OF INDIA </B></u> <br>
<p>A/c Name &nbsp;&nbsp;&nbsp;&nbsp;      :    &nbsp;&nbsp;&nbsp;&nbsp;AEROTEK DESIGN <br></p>
<p>A/c No &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:    &nbsp;&nbsp;&nbsp;&nbsp;38461140033 <br></p>
<p>Branch &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SSI Peenya Industrial Area<br></p>
<p>IFSC &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;          :    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SBIN0040284 <br></p>

</TD>
</TD>
	<TD align=right colspan=3>
    <B>for {{ doc.company }}</B>
    <br>
    <br>
    <br>
    <br>
    <br>
    <div style="position: relative; height: 100px; border: solid; border-style: none;">
        <div style="position: relative; height: 100px; border: solid; border-style: none;">
       <div style="position: absolute; height: 10px; border: solid; bottom: 0; right: 0;  left: 0; border-style: none;">
           
                             Authorised Signatory
       </div>
    </div>
</TD>
</TR>
</TABLE>

If you have already have created the Reverse Charge account head… its a matter of calling it in this Custom Tax invoice in the same way as the gst account head