Ir para conteúdo
  • Cadastre-se

dev botao

Erro Em Pcnconversao.csticmstostr ?


Ivan Cesar
  • Este tópico foi criado há 3813 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Passando um xml para o ACBrNFe, usando LoadFromString, faço uma análise no conteúdo carregado pelo componente desse xml, retornando os valores das propriedades do mesmo.

 

Fazendo uma verificação, percebi que após ele carregar o xml, na propriedade Det.Imposto.ICMS.CST sempre é carregado o cst00, mesmo não existindo essa tag no xml passado.

 

Analisando a forma que ele carrega, é usada a função StrToCSTICMS que por sua vez usa a StrToEnumerado, retornando sempre o primeiro valor encontrado em caso de erro ou de não achar nenhum dos passados no array.

 

Como não tem essa tag no xml, esse valor sempre é o cst00.

 

Então quando eu mando analisar se o Det.Imposto.ICMS.CST <> cstVazio sempre retorna True.

 

Notei que existe o cstVazio, mas ele não é referenciado nas funções de conversão, então alterando a assinatura das funções de:

 

function CSTICMSToStr(const t: TpcnCSTIcms): string;

begin

...

   result := EnumeradoToStr(t, ['00', '10' , '20' , '30' , '40' , '41' , '50' , '51' , '60' , '70' , '80' , '81', '90', '10', '90', '41', '90', 'SN'],

                              [cst00, cst10, cst20, cst30, cst40, cst41, cst50, cst51, cst60, cst70, cst80, cst81, cst90, cstPart10 , cstPart90 , cstRep41, cstICMSOutraUF, cstICMSSN]);
end;
 
 
function StrToCSTICMS(var 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;
 
 
para 
 

function CSTICMSToStr(const t: TpcnCSTIcms): string;

begin

...

result := EnumeradoToStr(t, ['', '00' , '10' , '20' , '30' , '40' , '41' , '50' , '51' , '60' , '70' , '80' , '81', '90', '10', '90', '41', '90', 'SN'],
                              [cstVazio, cst00, cst10, cst20, cst30, cst40, cst41, cst50, cst51, cst60, cst70, cst80, cst81, cst90, cstPart10 , cstPart90 , cstRep41, cstICMSOutraUF, cstICMSSN]);
end;
 
 
function StrToCSTICMS(var 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'],
    [cstVazio, cst00, cst10, cst20, cst30, cst40, cst41, cst50, cst51, cst60, cst70, cst80, cst81, cst90, cstICMSOutraUF, cstICMSSN]);
end;
 
 
resolve esse problema.
 
 
 
O mesmo acontece com outras propriedades tipadas que usam conversões na leitura, como TpcnMotivoDesoneracaoICMS, pois não existe um valor mdiVazio pra esse tipo.
 
 
Minha dúvida é se esse procedimento não vai afetar em algum outro procedimento usado pela classe.
 
Gostaria de um parecer do pessoal mais experiente, e fica minha sugestão para criar tipos vazios para serem usados nas conversões e caso seja possível, para ser implementado no repositório.
 
Agradeço os retornos.
 
Editado por Ivan Cesar
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3813 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.