Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Olá, pessoal!

No meu sistema coloquei a opção para no caso de CST selecionar a CST90 ou CSTPart90, porém ao gerar o XML sempre cai na tag <imposto><ICMSPart><CST>90</CST> e preciso que saia na tab <Imposto><ICMS90><CST>90</CST>, da primeira forma tem dado erro na validação.

Acredito que seja algo simples que não estou sabendo resolver e gostaria que se possível me desse uma dica.

Grato,

Luís Godinho.

Postado

Olá Leonardo, Obrigado pelo retorno.

Estou usando como Regime normal. Veja como estou usando o codigo:

      while not CdsItensNFe.Eof do
      begin
        Inc(aNumIten);
        with Det.Add do
        begin
          Prod.nItem := aNumIten;
          Prod.cProd := IntToStr(CdsItensNFe.FieldByName('ID_PRODUTO').AsInteger);
          Prod.cEAN := '';
          Prod.xProd := CdsItensNFe.FieldByName('DESCRICAO').AsString;
          Prod.NCM := CdsItensNFe.FieldByName('NCM').AsString;
          Prod.EXTIPI := CdsItensNFe.FieldByName('EXTIPI').AsString; ;
          Prod.CFOP := CdsItensNFe.FieldByName('CFOP').AsString;
          Prod.uCom := CdsItensNFe.FieldByName('UNIDADE').AsString;
          Prod.qCom := CdsItensNFe.FieldByName('QUANTIDADE').AsFloat;
          Prod.vUnCom := CdsItensNFe.FieldByName('VALOR_UNITARIO').AsFloat;
          Prod.vProd := CdsItensNFe.FieldByName('QUANTIDADE').AsFloat*
                                 CdsItensNFe.FieldByName('VALOR_UNITARIO').AsFloat;
          Prod.cEANTrib := '';
          Prod.uTrib := CdsItensNFe.FieldByName('UNIDADE').AsString;
          Prod.qTrib := CdsItensNFe.FieldByName('QUANTIDADE').AsFloat;
          Prod.vUnTrib := CdsItensNFe.FieldByName('VALOR_UNITARIO').AsFloat;
          Prod.vFrete := CdsItensNFe.FieldByName('VALOR_FRETE').AsFloat;
          Prod.vSeg := CdsItensNFe.FieldByName('VALOR_SEGURO').AsFloat;
          Prod.vDesc := CdsItensNFe.FieldByName('VALOR_DESCONTO').AsFloat;
          Prod.vOutro := CdsItensNFe.FieldByName('OUTRAS_DESPESAS').AsFloat;
          with Imposto do
          begin
            with ICMS do
            begin
              // simples nacional
              if (CdsEmitente.FieldByName('CRT').AsInteger = 1) then
              begin
                if CdsItensNFe.FieldByName('CSOSN').AsString = '101' then
                  CSOSN := csosn101
                else if CdsItensNFe.FieldByName('CSOSN').AsString = '102' then
                  CSOSN := csosn102
                else if CdsItensNFe.FieldByName('CSOSN').AsString = '103' then
                  CSOSN := csosn103
                else if CdsItensNFe.FieldByName('CSOSN').AsString = '202' then
                  CSOSN := csosn202
                else if CdsItensNFe.FieldByName('CSOSN').AsString = '203' then
                  CSOSN := csosn203
                else if CdsItensNFe.FieldByName('CSOSN').AsString = '400' then
                  CSOSN := csosn400
                else if CdsItensNFe.FieldByName('CSOSN').AsString = '500' then
                  CSOSN := csosn500
                else if CdsItensNFe.FieldByName('CSOSN').AsString = '900' then
                  CSOSN := csosn900;
              end;
              // regime normal ou excesso
              if (CdsEmitente.FieldByName('CRT').AsInteger = 2) or
                 (CdsEmitente.FieldByName('CRT').AsInteger = 3) then
              begin
                if CdsItensNFe.FieldByName('CST').AsString = '00' then
                   CST := cst00
                else if CdsItensNFe.FieldByName('CST').AsString = '10' then
                begin
                  if CdsItensNFe.FieldByName('ICMS_PART').AsString = 'S' then
                     CST := cstPart10
                  else
                     CST := cst10
                end
                else if CdsItensNFe.FieldByName('CST').AsString = '20' then
                   CST := cst20
                else if CdsItensNFe.FieldByName('CST').AsString = '30' then
                   CST := cst30
                else if CdsItensNFe.FieldByName('CST').AsString = '40' then
                   CST := cst40
                else if CdsItensNFe.FieldByName('CST').AsString = '41' then
                   CST := cst41
                else if CdsItensNFe.FieldByName('CST').AsString = '45' then
                   CST := cst45
                else if CdsItensNFe.FieldByName('CST').AsString = '50' then
                   CST := cst50
                else if CdsItensNFe.FieldByName('CST').AsString = '51' then
                   CST := cst51
                else if CdsItensNFe.FieldByName('CST').AsString = '60' then
                   CST := cst60
                else if CdsItensNFe.FieldByName('CST').AsString = '70' then
                   CST := cst70
                else if CdsItensNFe.FieldByName('CST').AsString = '90' then
                begin
                  if CdsItensNFe.FieldByName('ICMS_PART').AsString = 'S' then
                     CST := cstPart90
                  else
                     CST := cst90;
                end;
              end;
              //
              ICMS.orig := oeNacional;
              ICMS.modBC := dbiValorOperacao;
              ICMS.pRedBC := CdsItensNFe.FieldByName('REDUCAO_BASE').AsFloat;
              ICMS.vBC := CdsItensNFe.FieldByName('BASE_ICMS').AsFloat;
              ICMS.pICMS := CdsItensNFe.FieldByName('ALIQ_ICMS').AsFloat;
              ICMS.vICMS := CdsItensNFe.FieldByName('VALOR_ICMS').AsFloat;
              ICMS.modBCST := dbisMargemValorAgregado;
              ICMS.pMVAST := CdsItensNFe.FieldByName('PERC_MVA').AsFloat;
              ICMS.pRedBCST := CdsItensNFe.FieldByName('REDUCAO_BASE').AsFloat;
              ICMS.vBCST := CdsItensNFe.FieldByName('BASE_ICMS_ST').AsFloat;
              ICMS.pICMSST := CdsItensNFe.FieldByName('ALIQ_ICMS_ST').AsFloat;
              ICMS.vICMSST := CdsItensNFe.FieldByName('VALOR_ICMS_ST').AsFloat;
              ICMS.UFST := EdtUF.Text;
              ICMS.pCredSN := CdsItensNFe.FieldByName('ALIQ_ICMS').AsFloat;
              ICMS.vCredICMSSN := CdsItensNFe.FieldByName('VALOR_ICMS').AsFloat;

Grato,

Luís Godinho.

  • Este tópico foi criado há 3431 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.