Boa tarde a todos,
Estou usando o ACBrCTe na versão 3.00, me corrijam se eu estiver enganado, mas observei a seguinte divergência:
Segundo o manual:
Código pcnConversao:
// CST ICMS ********************************************************************
function CSTICMSToStr(const t: TpcnCSTIcms): string;
begin
// ID -> N02 - Tributada integralmente
// ID -> N03 - Tributada e com cobrança do ICMS por substituição tributária
// ID -> N04 - Com redução de base de cálculo
// ID -> N05 - Isenta ou não tributada e com cobrança do ICMS por substituição tributária
// ID -> N06 - Isenta
// ID -> N06 - Não tributada
// ID -> N06 - Suspensão
// ID -> N07 - Diferimento A exigência do preenchimento das informações do ICMS diferido fica à critério de cada UF.
// ID -> N08 - ICMS cobrado anteriormente por substituição
// ID -> N09 - Com redução de base de cálculo e cobrança do ICMS por substituição tributária
// ID -> N10 - ICMS pagto atribuído ao tomador ou ao terceiro previsto na legislação p/ ST
// ID -> N10a - Operação interestadual para consumidor final com partilhado ICMS devido na operaçãoentre a UF de origem e a UF do destinatário ou a UF definida na legislação. (Ex. UF daconcessionária de entrega do veículos) (v2.0)
// ID -> N10b - Grupo de informação do ICMS ST devido para a UF de destino,nas operações interestaduais de produtos que tiveram retenção antecipada de ICMS por ST na UF do remetente. Repasse via Substituto Tributário. (v2.0)
// ID -> N11 - ICMS devido para outras UF
// ID -> N12 - Outros
result := EnumeradoToStr(t, ['00' , '10' , '20' , '30' , '40' , '41' , '50' , '51' ,
'60' , '70' , '80' , '81', '90', '10', '90', '41', '90', 'SN', '60'],
[cst00, cst10, cst20, cst30, cst40, cst41, cst50, cst51,
cst60, cst70, cst80, cst81, cst90, cstPart10 , cstPart90 ,
cstRep41, cstICMSOutraUF, cstICMSSN, cstRep60]);
end;
function StrToCSTICMS(out ok: boolean; const s: string): TpcnCSTIcms;
begin
result := StrToEnumerado(ok, s, ['00', '10', '20', '30', '40', '41', '50', '51', '60', '70', '80', '81', '90', '91', '92'],
[cst00, cst10, cst20, cst30, cst40, cst41, cst50, cst51, cst60, cst70, cst80, cst81, cst90, cstICMSOutraUF, cstICMSSN]);
end;
function CSTICMSToStrTagPosText(const t: TpcnCSTIcms): string;
begin
result := EnumeradoToStr(t,
['00 - TRIBUTAÇÃO NORMAL DO ICMS',
'10 - TRIBUTAÇÃO COM COBRANÇA DO ICMS POR SUBST. TRIBUTÁRIA',
'20 - TRIBUTAÇÃO COM REDUÇÃO DE BC DO ICMS',
'30 - TRIBUTAÇÃO ISENTA E COM COBRANÇA DO ICMS POR SUBST. TRIBUTÁRIA',
'40 - ICMS ISENÇÃO',
'41 - ICMS NÃO TRIBUTADO',
'45 - ICMS ISENTO, NÃO TRIBUTADO OU DIFERIDO',
'50 - ICMS SUSPENSÃO',
'51 - ICMS DIFERIDO',
'60 - ICMS COBRADO ANTERIORMENTE POR SUBSTITUIÇÃO TRIBUTÁRIA',
'70 - TRIBUTAÇÃO COM REDUÇÃO DE BC E COBRANÇA DO ICMS POR SUBST. TRIBUTÁRIA',
'80 - RESPONSABILIDADE DO RECOLHIMENTO DO ICMS ATRIBUÍDO AO TOMADOR OU 3° POR ST',
'81 - ICMS DEVIDO À OUTRA UF',
'90 - ICMS OUTROS',
'90 - ICMS DEVIDO A UF DE ORIGEM DA PRESTACAO, QUANDO DIFERENTE DA UF DO EMITENTE',
'SN - SIMPLES NACIONAL'],
[cst00, cst10, cst20, cst30, cst40, cst41, cst45, cst50, cst51, cst60, cst70, cst80, cst81, cst90, cstICMSOutraUF, cstICMSSN]);
end;
O correto não seria?:
function StrToCSTICMS(out ok: boolean; const s: string): TpcnCSTIcms;
begin
result := StrToEnumerado(ok, s, ['00', '10', '20', '30', '40', '41', '50', '51', '60', '70', '80', '81', '90', '91', 'SN'],
[cst00, cst10, cst20, cst30, cst40, cst41, cst50, cst51, cst60, cst70, cst80, cst81, cst90, cstICMSOutraUF, cstICMSSN]);
end;