Olá,
será que isso pode ajudar?
adicionai a conversão no ACBrEPCBlocos.pas.
talvez poderia melhorar passando a StrToEnumerado que hj esta no Monitor para o Comuns, mas daí teria mais manutenção.
se for necessário posso gerar o código que faz o inverso.
...
function StrToSituacaoTribICMS(var ok: boolean; const s: string): TACBrSituacaoTribICMS;
function StrToSituacaoTribIPI(var ok: boolean; const s: string): TACBrSituacaoTribIPI;
function StrToSituacaoTribPIS(var ok: boolean; const s: string): TACBrSituacaoTribPIS;
function StrToSituacaoTribCOFINS(var ok: boolean; const s: string): TACBrSituacaoTribCOFINS;
implementation
uses Windows;
{ TOpenBlocos }
function StrToEnumerado(var ok: boolean; const s: string; const AString:
array of string; const AEnumerados: array of variant): variant;
var
i: integer;
begin
result := -1;
for i := Low(AString) to High(AString) do
if AnsiSameText(s, AString[i]) then
result := AEnumerados[i];
ok := result <> -1;
if not ok then
result := AEnumerados[0];
end;
function StrToSituacaoTribICMS(var ok: boolean; const s: string): TACBrSituacaoTribICMS;
begin
result := StrToEnumerado(ok, s, ['000', '010', '020', '030', '040', '041', '050', '051', '060', '070', '090', '100', '110', '120',
'130', '140', '141', '150', '151', '160', '170', '190', '200', '210', '220', '230', '240', '241',
'250', '251', '260', '270', '290', '101', '102', '103', '201', '202', '203', '300', '400', '500', '900'],
[sticmsTributadaIntegralmente,sticmsTributadaComCobracaPorST,sticmsComReducao,sticmsIsentaComCobracaPorST ,sticmsIsenta,
sticmsNaoTributada,sticmsSuspensao ,sticmsDiferimento ,sticmsCobradoAnteriormentePorST ,sticmsComReducaoPorST ,sticmsOutros,
sticmsEstrangeiraImportacaoDiretaTributadaIntegralmente ,sticmsEstrangeiraImportacaoDiretaTributadaComCobracaPorST ,
sticmsEstrangeiraImportacaoDiretaComReducao ,sticmsEstrangeiraImportacaoDiretaIsentaComCobracaPorST,sticmsEstrangeiraImportacaoDiretaIsenta ,
sticmsEstrangeiraImportacaoDiretaNaoTributada ,sticmsEstrangeiraImportacaoDiretaSuspensao,sticmsEstrangeiraImportacaoDiretaDiferimento,
sticmsEstrangeiraImportacaoDiretaCobradoAnteriormentePorST,sticmsEstrangeiraImportacaoDiretaComReducaoPorST,
sticmsEstrangeiraImportacaoDiretaOutros ,sticmsEstrangeiraAdqMercIntTributadaIntegralmente ,sticmsEstrangeiraAdqMercIntTributadaComCobracaPorST ,
sticmsEstrangeiraAdqMercIntComReducao ,sticmsEstrangeiraAdqMercIntIsentaComCobracaPorST,sticmsEstrangeiraAdqMercIntIsenta ,
sticmsEstrangeiraAdqMercIntNaoTributada ,sticmsEstrangeiraAdqMercIntSuspensao,sticmsEstrangeiraAdqMercIntDiferimento,
sticmsEstrangeiraAdqMercIntCobradoAnteriormentePorST,sticmsEstrangeiraAdqMercIntComReducaoPorST,sticmsEstrangeiraAdqMercIntOutros ,
sticmsSimplesNacionalTributadaComPermissaoCredito ,sticmsSimplesNacionalTributadaSemPermissaoCredito ,
sticmsSimplesNacionalIsencaoPorFaixaReceitaBruta,sticmsSimplesNacionalTributadaComPermissaoCreditoComST,
sticmsSimplesNacionalTributadaSemPermissaoCreditoComST,sticmsSimplesNacionalIsencaoPorFaixaReceitaBrutaComST ,
sticmsSimplesNacionalImune,sticmsSimplesNacionalNaoTributada ,sticmsSimplesNacionalCobradoAnteriormentePorST ,sticmsSimplesNacionalOutros]);
end;
function StrToSituacaoTribIPI(var ok: boolean; const s: string): TACBrSituacaoTribIPI;
begin
result := StrToEnumerado(ok, s, ['00', '01', '02', '03', '04', '05', '49', '50', '51', '52', '53', '54', '55', '99'],
[stipiEntradaRecuperacaoCredito, stipiEntradaTributradaZero, stipiEntradaIsenta, stipiEntradaNaoTributada, stipiEntradaImune,
stipiEntradaComSuspensao, stipiOutrasEntradas, stipiSaidaTributada, stipiSaidaTributadaZero, stipiSaidaIsenta, stipiSaidaNaoTributada,
stipiSaidaImune, stipiSaidaComSuspensao, stipiOutrasSaidas]);
end;
function StrToSituacaoTribPIS(var ok: boolean; const s: string): TACBrSituacaoTribPIS;
begin
result := StrToEnumerado(ok, s, ['01', '02', '03', '04', '05', '06', '07', '08',
'09', '49', '50', '51', '52', '53', '54', '55',
'56', '60', '61', '62', '63', '64', '65', '66',
'67', '70', '71', '72', '73', '74', '75', '98', '99'],
[stpisValorAliquotaNormal, stpisValorAliquotaDiferenciada, stpisQtdeAliquotaUnidade,
stpisMonofaticaAliquotaZero, stpisValorAliquotaPorST, stpisAliquotaZero, stpisIsentaContribuicao,
stpisSemIncidenciaContribuicao, stpisSuspensaoContribuicao, stpisOutrasOperacoesSaida,
stpisOperCredExcRecTribMercInt, stpisOperCredExcRecNaoTribMercInt, stpisOperCredExcRecExportacao,
stpisOperCredRecTribNaoTribMercInt, stpisOperCredRecTribMercIntEExportacao,
stpisOperCredRecNaoTribMercIntEExportacao, stpisOperCredRecTribENaoTribMercIntEExportacao,
stpisCredPresAquiExcRecTribMercInt, stpisCredPresAquiExcRecNaoTribMercInt,
stpisCredPresAquiExcExcRecExportacao, stpisCredPresAquiRecTribNaoTribMercInt,
stpisCredPresAquiRecTribMercIntEExportacao, stpisCredPresAquiRecNaoTribMercIntEExportacao,
stpisCredPresAquiRecTribENaoTribMercIntEExportacao, stpisOutrasOperacoes_CredPresumido,
stpisOperAquiSemDirCredito, stpisOperAquiComIsensao, stpisOperAquiComSuspensao,
stpisOperAquiAliquotaZero, stpisOperAqui_SemIncidenciaContribuicao, stpisOperAquiPorST,
stpisOutrasOperacoesEntrada, stpisOutrasOperacoes]);
end;
function StrToSituacaoTribCOFINS(var ok: boolean; const s: string): TACBrSituacaoTribCOFINS;
begin
result := StrToEnumerado(ok, s, ['01', '02', '03', '04', '05', '06', '07', '08',
'09', '49', '50', '51', '52', '53', '54', '55',
'56', '60', '61', '62', '63', '64', '65', '66',
'67', '70', '71', '72', '73', '74', '75', '98', '99'],
[stcofinsValorAliquotaNormal, stcofinsValorAliquotaDiferenciada, stcofinsQtdeAliquotaUnidade,
stcofinsMonofaticaAliquotaZero, stcofinsValorAliquotaPorST, stcofinsAliquotaZero, stcofinsIsentaContribuicao,
stcofinsSemIncidenciaContribuicao, stcofinsSuspensaoContribuicao, stcofinsOutrasOperacoesSaida,
stcofinsOperCredExcRecTribMercInt, stcofinsOperCredExcRecNaoTribMercInt, stcofinsOperCredExcRecExportacao,
stcofinsOperCredRecTribNaoTribMercInt, stcofinsOperCredRecTribMercIntEExportacao,
stcofinsOperCredRecNaoTribMercIntEExportacao, stcofinsOperCredRecTribENaoTribMercIntEExportacao,
stcofinsCredPresAquiExcRecTribMercInt, stcofinsCredPresAquiExcRecNaoTribMercInt,
stcofinsCredPresAquiExcExcRecExportacao, stcofinsCredPresAquiRecTribNaoTribMercInt,
stcofinsCredPresAquiRecTribMercIntEExportacao, stcofinsCredPresAquiRecNaoTribMercIntEExportacao,
stcofinsCredPresAquiRecTribENaoTribMercIntEExportacao, stcofinsOutrasOperacoes_CredPresumido,
stcofinsOperAquiSemDirCredito, stcofinsOperAquiComIsensao, stcofinsOperAquiComSuspensao,
stcofinsOperAquiAliquotaZero, stcofinsOperAqui_SemIncidenciaContribuicao, stcofinsOperAquiPorST,
stcofinsOutrasOperacoesEntrada, stcofinsOutrasOperacoes]);
end;
....
Ai ele seria usado similar como é no NFe StrToSituacaoTribCOFINS(lok, QAux.FieldByName('cst').AsString) ;
Até mais.