Skip to content

Instantly share code, notes, and snippets.

@manojmohangit
Created May 21, 2019 17:30
Show Gist options
  • Save manojmohangit/a53655b6b520723b08b1ac712b00203b to your computer and use it in GitHub Desktop.
Save manojmohangit/a53655b6b520723b08b1ac712b00203b to your computer and use it in GitHub Desktop.
Calculate CGST, SGST, IGST as per section 88A
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