Um exemplo quando é utilizado o CST 61
else if (CST = cst61) then
begin
cst := cst61;
orig := StrToOrig(OK,copy(banco.TableVendaItensCST.AsString,1,1)) ;
qBCMonoRet := FormataFloat(banco.TableVendaItensMONO_BCRET.AsFloat,2);
adRemICMSRet := banco.TableVendaItensMONO_ADREMICMSRET.AsFloat;
vICMSMonoRet := FormataFloat(banco.TableVendaItensMONO_ICMSRET.AsFloat ,2);
infAdProd := infAdProd +#13 + 'ICMS monofásico sobre combustíveis cobrado anteriormente conforme Convênio ICMS 199/2022. Carga tributaria: BC: (Quantidade em litros ou quilos) '+
FormatFloat('##,##0.000',banco.TableVendaItensMONO_BCRET.AsFloat)+' , Aliquota: '+FormatFloat('##,##0.0000',banco.TableVendaItensMONO_ADREMICMSRET.AsFloat)+
' e Valor de ICMS Retido Anteriormente: '+FormatFloat('##,##0.00',banco.TableVendaItensMONO_ICMSRET.AsFloat);
end
o campo qBCMonoRet é referente quantidade que esta sendo vendida no item
o campo adRemICMSRet é a aliquota que é utilizada para fazer o calculo, essa aliquota vc pega a partir do código ANP do produto.
o campo vICMSMonoRet é o resultado da multiplicação entre o campo qBCMonoRet e a aliquota adRemICMSRet.
No site da sefaz tem disponível a tabela com os códigos ANPs com as aliquotas. Esta disponível também como fazer o calculo referente aos outros CSTs ( 02, 15, 53, 61).
https://www.nfe.fazenda.gov.br/portal/listaConteudo.aspx?tipoConteudo=/NJarYc9nus=