No Grupo NA. ICMS para a UF de destino não mudou a regra, só aumentou o campo vBCFCPUFDest - Valor da BC FCP na UF de destino...
Agora para o Grupo N - ICMS Normal e ST eu fiz assim:
...
cst00: //CST – 00 – Tributada integralmente
begin
ICMS.vBC := RoundTo(cdsItensBASE_ICMS.AsCurrency, -2);
ICMS.pICMS := RoundTo(cdsItensTAXA_ICMS.AsFloat, -2);
ICMS.vICMS := RoundTo(cdsItensICMS.AsCurrency, -2);
//NT 2016.002
//Se Operação interestadual (tag:idDest=2) para Consumidor Final (tag: indFinal=1) deve ser informado o valor do FCP no campo vFCPUFDest
if NOT((Ide.idDest = doInterestadual) and (Ide.indFinal = cfConsumidorFinal)) then
begin
ICMS.vBCFCP := ICMS.vBC; //Mesma Base ??????
ICMS.pFCP := TProdutoController.AliquotaFCP(cdsItensID_PRODUTO.AsInteger);
ICMS.vFCP := RoundTo(ICMS.vBC * (ICMS.pFCP / 100), -2);
end;
end;
...
//NT 2016.002
//TOTALIZAR
FTotalFCP := FTotalFCP + ICMS.vFCP;
FTotalFCPST := FTotalFCPST + ICMS.vFCPST;
FTotalFCPRet := FTotalFCPRet + ICMS.vFCPSTRet;
Totalizo tudo no laço que preenche os itens e jogo no Grupo W - Valores Totais da NF-e, fiz os teste com alguns itens com contribuição para o FCP, deu certo todas as operações com Consumidor final e Contribuinte na versão 4.0.