Created
May 21, 2019 17:30
-
-
Save manojmohangit/a53655b6b520723b08b1ac712b00203b to your computer and use it in GitHub Desktop.
Calculate CGST, SGST, IGST as per section 88A
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var Ip = 500, // Payable IGST | |
Cp = 500, // Payable CGST | |
Sp = 500, // Payable SGST | |
Ic = 200, // IGST Credit | |
Cc = 400, // CGST Credit | |
Sc = 700; // SGST Credit | |
// Calculate Tax as per Section 88(A) | |
function calculateTaxToBePaid(Ip,Cp,Sp,Ic,Cc,Sc) { | |
var result = []; | |
var taxToBePaid = { "SGST" : 0, "CGST" : 0, "IGST" : 0 }; | |
var creditLeft = { "SGST" : 0, "CGST" : 0, "IGST" : 0 }; | |
var I = Ic-Ip; | |
var C = 0; | |
var S = 0; | |
result["TaxToBePaid"] = taxToBePaid; | |
result["CreditLeft"] = creditLeft; | |
if( I > 0 ) { // IGST is remaining | |
if( Sc-Cc > 0 ) { // SGST credit is more | |
Cp = I > (Sc - Cc) ? (Cp - (Sc - Cc)) : (Cp - I) // adjust IGST leftover in SGST | |
I = ( I - (Sc - Cc) ) > 0 ? I - (Sc - Cc) : 0; | |
} else if(Sc-Cc < 0){ | |
Sp = I > (Cc - Sc) ? Sp - (Cc - Sc) : Sp - I // adjust IGST leftover in CGST | |
I = ( I - (Cc - Sc) ) > 0 ? I - (Cc - Sc) : 0; | |
} | |
// adjust IGST to both SGST and CGST; | |
if( I > 0 && (I/2 < Sp) ) { | |
Sp = Sp - I / 2; | |
Cp = Cp - I / 2; | |
I = 0; | |
} else { | |
I = I - Sp * 2; | |
Sp = Cp = 0; | |
} | |
Ic = I; | |
} | |
S = Sc - Sp >= 0 ? 0 : Sp - Sc; | |
C = (Cc - Cp >= 0) ? 0 : (Cp - Cc); | |
Sc = Sc - Sp > 0 ? Sc - Sp : 0; | |
Cc = Cc - Cp > 0 ? Cc - Cp : 0; | |
// If after adjusting CGST and SGST, remaining credit amount can be adjusted with IGST | |
if( I < 0 ) { | |
Ic = 0; | |
I = -I; | |
if((I) >= Sc ) { | |
I = ((I) - Sc) ; | |
Sc = 0; | |
} else { | |
Sc = Sc - (-I); | |
I = 0; | |
} | |
if( I > 0 ) { | |
if((I) >= Cc ) { | |
I = ((I) - Cc) ; | |
Cc = 0; | |
} else { | |
Cc = Cc - (I); | |
I = 0 | |
} | |
} | |
} | |
taxToBePaid["SGST"] = S; | |
taxToBePaid["IGST"] = I; | |
taxToBePaid["CGST"] = C; | |
creditLeft["SGST"] = Sc; | |
creditLeft["IGST"] = Ic; | |
creditLeft["CGST"] = Cc; | |
return result; | |
} | |
//console.log(calculateTaxToBePaid(Ip,Cp,Sp,Ic,Cc,Sc)); | |
calculateTaxToBePaid(Ip,Cp,Sp,Ic,Cc,Sc); // [ TaxToBePaid: { SGST: 0, CGST: 100, IGST: 100 }, CreditLeft: { SGST: 0, CGST: 0, IGST: 0 } ] | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment