fix: GSTR-1 B2CS Json file generation and cess amount fixes
diff --git a/erpnext/regional/report/gstr_1/gstr_1.py b/erpnext/regional/report/gstr_1/gstr_1.py
index eff5780..e8c170e 100644
--- a/erpnext/regional/report/gstr_1/gstr_1.py
+++ b/erpnext/regional/report/gstr_1/gstr_1.py
@@ -74,7 +74,6 @@
 
 		for inv, items_based_on_rate in self.items_based_on_tax_rate.items():
 			invoice_details = self.invoices.get(inv)
-
 			for rate, items in items_based_on_rate.items():
 				place_of_supply = invoice_details.get("place_of_supply")
 				ecommerce_gstin =  invoice_details.get("ecommerce_gstin")
@@ -85,7 +84,7 @@
 					"rate": "",
 					"taxable_value": 0,
 					"cess_amount": 0,
-					"type": 0
+					"type": ""
 				})
 
 				row = b2cs_output.get((rate, place_of_supply, ecommerce_gstin))
@@ -94,6 +93,7 @@
 				row["rate"] = rate
 				row["taxable_value"] += sum([abs(net_amount)
 					for item_code, net_amount in self.invoice_items.get(inv).items() if item_code in items])
+				row["cess_amount"] += flt(self.invoice_cess.get(inv), 2)
 				row["type"] = "E" if ecommerce_gstin else "OE"
 
 		for key, value in iteritems(b2cs_output):
@@ -123,6 +123,10 @@
 
 		row += [tax_rate or 0, taxable_value]
 
+		for column in self.other_columns:
+			if column.get('fieldname') == 'cess_amount':
+				row.append(flt(self.invoice_cess.get(invoice), 2))
+
 		return row, taxable_value
 
 	def get_invoice_data(self):
@@ -327,7 +331,7 @@
 					"fieldtype": "Data"
 				},
 				{
-					"fieldname": "invoice_type",
+					"fieldname": "gst_category",
 					"label": "Invoice Type",
 					"fieldtype": "Data"
 				},
@@ -564,12 +568,18 @@
 
 		out = get_b2b_json(res, gstin)
 		gst_json["b2b"] = out
+
 	elif filters["type_of_business"] == "B2C Large":
 		for item in report_data[:-1]:
 			res.setdefault(item["place_of_supply"], []).append(item)
 
 		out = get_b2cl_json(res, gstin)
 		gst_json["b2cl"] = out
+
+	elif filters["type_of_business"] == "B2C Small":
+		out = get_b2cs_json(report_data[:-1], gstin)
+		gst_json["b2cs"] = out
+
 	elif filters["type_of_business"] == "EXPORT":
 		for item in report_data[:-1]:
 			res.setdefault(item["export_type"], []).append(item)
@@ -605,6 +615,45 @@
 
 	return out
 
+def get_b2cs_json(data, gstin):
+
+	company_state_number = gstin[0:2]
+
+	out = []
+	for d in data:
+
+		pos = d.get('place_of_supply').split('-')[0]
+		tax_details = {}
+
+		rate = d.get('rate', 0)
+		tax = flt((d["taxable_value"]*rate)/100.0, 2)
+
+		if company_state_number == pos:
+			tax_details.update({"camt": flt(tax/2.0, 2), "samt": flt(tax/2.0, 2)})
+		else:
+			tax_details.update({"iamt": tax})
+
+		inv = {
+			"sply_ty": "INTRA" if company_state_number == pos else "INTER",
+			"pos": pos,
+			"typ": d.get('type'),
+			"txval": flt(d.get('taxable_value'), 2),
+			"rt": rate,
+			"iamt": flt(tax_details.get('iamt'), 2),
+			"camt": flt(tax_details.get('camt'), 2),
+			"samt": flt(tax_details.get('samt'), 2),
+			"csamt": flt(d.get('cess_amount'), 2)
+		}
+
+		if d.get('type') == "E" and d.get('ecommerce_gstin'):
+			inv.update({
+				"etin": d.get('ecommerce_gstin')
+			})
+
+		out.append(inv)
+
+	return out
+
 def get_b2cl_json(res, gstin):
 	out = []
 	for pos in res: