GstModel.calculate constructor
GstModel.calculate({})
Implementation
factory GstModel.calculate({
required num amount,
required GstType gstType,
num? gstPercentage,
GstMode? gstMode,
}) {
final num percentage = (gstPercentage != null && gstPercentage > 0)
? defaultGstPercentage[gstType]! + gstPercentage
: defaultGstPercentage[gstType] ?? 0;
num gstAmount;
num baseAmount;
num total;
if (gstMode == GstMode.inclusive) {
// Inclusive → amount includes GST
gstAmount = amount * percentage / (100 + percentage);
baseAmount = amount - gstAmount;
total = amount;
} else {
// Exclusive or null → add GST
gstAmount = amount * percentage / 100;
baseAmount = amount;
total = amount + gstAmount;
}
return GstModel(
amount: baseAmount,
gstAmount: gstAmount,
total: total,
gstPercentage: percentage,
gstType: gstType,
gstMode: gstMode,
);
}