Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Boa noite. (e desculpem o post longo...)

Estou com problemas em notas conjugadas.

O erro é o seguinte: "O elemento ICMSSN é inesperado"

Estou gerando o xml com este código:


    while not DM2.qrNf02.Eof do begin

        with Det.Add do begin

                Inc(nSequen);

                Prod.nItem    := nSequen;

                Prod.CFOP     := DM2.qrNf02CFOP.AsString

                Prod.cProd    := DM2.qrNf02Codigo.AsString;

                Prod.cEAN     := xEAN;

                Prod.xProd    := txt;

                Prod.NCM      := SemDigitos(DM2.qrNf02NCM.AsString);

                Prod.qCom     := DM2.qrNf02Quantidade.Value;

                Prod.uCom     := DM2.qrNf02UM.Value;

                Prod.vUnCom   := DM2.qrNf02PrecoUni.Value;

                Prod.qTrib    := DM2.qrNf02Quantidade.Value;

                Prod.uTrib    := DM2.qrNf02UM.Value;

                Prod.vUnTrib  := DM2.qrNf02PrecoUni.Value;

                Prod.vProd    := DM2.qrNf02PrecoTot.Value;

                Prod.vFrete   := DM2.qrNf02Frete.AsFloat;   

                Prod.vSeg     := DM2.qrNf02Seguro.AsFloat;

                Prod.vDesc    := DM2.qrNf02Desconto.AsFloat;

                Prod.vOutro   := DM2.qrNf02Despesas.AsFloat; 

                Prod.cEANTrib := '';


                // SE FOR UM SERVIÇO


                if DM2.qrNf02ProdServ.AsString='S' then begin


                  	  Prod.IndTot := itNaoSomaTotalNFe;

                  	  IssItem:=DM2.qrNf02PrecoTot.AsFloat * AliquotaIss/100;

                  	  somaServicos:=somaServicos+DM2.qrNf02PrecoTot.Value;


* NESTA PARTE, SE INFORMO O CSOSN, A NOTA É VALIDADA, MAS O XML FICA MEIO DOIDO COMO PODEM VER MAIS ABAIXO


              {

                    if (CRT='1') then begin

                        aCSOSN:= csosn400;

                        with Imposto do begin

                            with ICMS do begin

                                orig   := xOrigem;

                                CSOSN  := aCSOSN;

                            end;

                        end;

                    end else begin

                        aCST:=cst40;

                        with Imposto do begin

                            with ICMS do begin

                                CST    := aCST;

                                vBC    := 0;

                                pICMS  := 0;

                                vICMS  := 0;

                            end;

                        end;

                    end;

              }


* SE FOR INFORMADO SOMENTE O ISSQN, DÁ O ERRO [b]"O elemento ICMSSN é inesperado"[/b]


                   	  with Imposto do begin

                     	      with ISSQN do begin

                        	    vAliq  := AliquotaIss;

                         	    vISSQN := IssItem;;

                          	    vBC    := DM2.qrNf02PrecoTot.AsFloat;

                          	    cMunFG := StrToInt(xIBGE);

                           	    cListServ :=1401;

                               end;

                    	 end;


                 else  begin  // SE FOR UM PRODUTO


                    Prod.IndTot := itSomaTotalNFe;

                    vCredItem:= Arredonda(DM2.qrNf02PrecoTot.Value*AlqIcmsDAS/100);

                    with Imposto do begin

                        with ICMS do begin

                            orig   := xOrigem;

                            if (CRT='1') then begin  // Simples Nacional

                                CSOSN    := aCSOSN ;

                                 //modBC  := dbiPrecoTabelado;

                                case aCSOSN of

                                    csosn101:

                                        begin

                                        pCredSN     := AlqIcmsDAS;   

                                        vCredICMSSN := vCredItem; 

                                        end;

                                    csosn102,csosn103,csosn300,csosn400: 

                                        begin

                                        //Tags ORIG e CSON já criadas antes do case

                                        //102 - Tributada pelo Simples Nacional sem permissão de crédito.

                                        //103 – Isenção do ICMS no Simples Nacional para faixa de receita bruta.

                                        //300 – Imune.

                                        //400 – Não tributada pelo Simples Nacional (v.2.0) (v.2.0)

                                        vCredItem:=0;

                                        end;

                                    csosn201:

                                        begin 

                                        modBCST     := dbisMargemValorAgregado;  

                                        pMVAST      := DM2.qrNf02pMVAST.AsFloat;  

                                        pRedBCST    := DM2.qrNf02pRedBCST.AsFloat;

                                        vBCST       := DM2.qrNf02vBCST.AsFloat;  

                                        pICMSST     := DM2.qrNf02pICMSST.AsFloat; 

                                        vICMSST     := DM2.qrNf02vICMSST.AsFloat; 

                                        pCredSN     := AlqIcmsDAS;

                                        vCredICMSSN := vCredItem; 

                                        end;

                                    csosn202,csosn203:

                                        begin   

                                        modBCST     := dbisMargemValorAgregado;  

                                        pMVAST      := DM2.qrNf02pMVAST.AsFloat;

                                        pRedBCST    := DM2.qrNf02pRedBCST.AsFloat;

                                        vBCST       := DM2.qrNf02vBCST.AsFloat;  

                                        pICMSST     := DM2.qrNf02pICMSST.AsFloat; 

                                        vICMSST     := DM2.qrNf02vICMSST.AsFloat; 

                                        vCredItem:=0;

                                        end;

                                    csosn500:

                                        begin 

                                        vBCSTRET   := 0;   

                                        vICMSSTRET := 0; 

                                        vCredItem:=0;

                                        end;

                                    csosn900:

                                        begin 

                                        modBC       := dbiMargemValorAgregado;     

                                        pRedBC      := DM2.qrNf02pRedBCST.AsFloat; 

                                        vBC         := DM2.qrNf02BaseICMS.AsFloat; 

                                        pICMS       := DM2.qrNf02ICMS.AsFloat;     

                                        vICMS       := DM2.qrNf02ValorICMS.AsFloat;

                                        modBCST     := dbisMargemValorAgregado;    

                                        pMVAST      := DM2.qrNf02pMVAST.AsFloat;   

                                        pRedBCST    := DM2.qrNf02pRedBCST.AsFloat; 

                                        vBCST       := DM2.qrNf02vBCST.AsFloat;    

                                        pICMSST     := DM2.qrNf02pICMSST.AsFloat;  

                                        vICMSST     := DM2.qrNf02vICMSST.AsFloat;  

                                        pCredSN     := AlqIcmsDAS;                 

                                        vCredICMSSN := vCredItem;                  

                                        end;

                                end;

                                vTotCred:=vTotCred+vCredItem;


                            end else begin // Regime Normal


                                CST    := aCST ;

                                //modBC  := dbiPrecoTabelado;

                                if txt='20' then

                                    pRedBC := DM2.qrNf02Reducao.AsFloat;

                                if (txt='40') or (txt='41') then begin

                                    vBC    := 0;

                                    pICMS  := 0;

                                    vICMS  := 0;

                                end else begin

                                    vBC    := DM2.qrNf02BaseICMS.AsFloat;

                                    pICMS  := DM2.qrNf02ICMS.AsFloat;

                                    vICMS  := DM2.qrNf02ValorICMS.AsFloat;

                                end;

                            end;

                         end;

                    end;

                    if DM2.qrNf02IPI.AsFloat>0 then begin

                        with Imposto do begin

                            with IPI do begin

                                CST := ipi49;

                                IPI.pIPI:= DM2.qrNf02IPI.AsFloat;

                                IPI.vIPI:= DM2.qrNf02ValorIPI.AsFloat;;

                                IPI.vBC := DM2.qrNf02Quantidade.Value * DM2.qrNf02PrecoUni.Value;

                            end;

                        end;

                    end;

                     with Imposto do begin

                         with PIS do begin

                             CST := pis99;

                             PIS.qBCProd := 0;

                             PIS.vAliqProd := 0;

                             PIS.vPIS := 0;

                         end;

                     end;

                     with Imposto do begin

                         with COFINS do begin

                             CST := cof99;

                             COFINS.qBCProd := 0;

                             COFINS.vAliqProd := 0;

                             COFINS.vCOFINS := 0;

                         end;

                     end;

O XML gerado está assim:

- 

- 
P0425

OE CEDRO 10ML
33012912
5102
FR
1.0000
7.2100000000
7.21

FR
1.0000
7.2100000000
1


- 

- 

- 
0
101
2.58
0.19



- 

- 
99
0.00
0.00
0.00



- 

- 
99
0.00
0.00
0.00





- 

- 
S-001

PRESTACAO DE SERVICOS
99
5933
SV
1.0000
100.0000000000
100.00

SV
1.0000
100.0000000000
0


- 

- 

- 
0
0



- 

- 
01
0.00
0.00
0.00



- 

- 
01
0.00
0.00
0.00





- 

- 
0.00
0.00
0.00
0.00
7.21
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
107.21


- 
100.00
100.00
2.00



Como podem ver, o item 001 está correto, mas o 002 (Serviço) não contém a tag ISSQN.

No manual de integração, página 128 temos:

"O grupo ISSQN é mutuamente exclusivo com os grupos ICMS, IPI e II, isto é se ISSQN for informado os grupos ICMS, IPI e

II não serão informados e viceversa (v2.0)."

Estou fazendo algo errado na forma de passar os valores ? (Antes da versão 2.0 usava desta forma e funcionava corretamente)

Se você leu até aqui, sou muito grato !

Edson

  • Moderadores
Postado

Oi Edson.pol

Em relação ao item 2 eu acredito que você não deva informar a tag ICMSSN e sim a tag ISSQN.

-

-

O colega KRB postou um xml que talvez te auxilie como exemplo, de uma olhada:


logoacbr.pngConheça o Portal do Projeto ACBr

Ajude o Projeto ACBr crescer - Assine o SAC ACBr
Assine um dos planos de longa duração do SAC ACBr, obtenha Descontos Especiais, Parcele no Cartão e ainda ganhe Brindes Exclusivos. Saiba mais aqui

Conheça o ACBrLib, o ACBr de forma nativa para qualquer linguagem de programação. Saiba mais aqui

 

 

 

 

Postado

Kiko Fernandes,

Obrigado pela resposta.

Mas...

* Se no ACBrNfe for informado somente o ISSQN, dá o erro "O elemento ICMSSN é inesperado"

with Imposto do begin

with ISSQN do begin

vAliq := AliquotaIss;

vISSQN := IssItem;;

vBC := DM2.qrNf02PrecoTot.AsFloat;

cMunFG := StrToInt(xIBGE);

cListServ :=1401;

end;

end;

E se informo o ISSQN e o ICMS, o xml não é gerado com as informções do ISSQN

with Imposto do begin

with ICMS do begin

orig := 0;

CSOSN := 400 ;

...

o xml é gerado sem a tag ISSQN no ítem, e o ICMS sai como 'ICMSSN', o que causa o erro.


- 

- 
S-001

PRESTACAO DE SERVICOS
99
5933
SV
1.0000
100.0000000000
100.00

SV
1.0000
100.0000000000
0


- 

- 

- 
0
0



- 

- 
01
0.00
0.00
0.00



- 

- 
01
0.00
0.00
0.00





Não estou entendo o que causa o erro.

Alguém tem algum exemplo de código (Delphi) de geração de notas conjugadas (pra versão 2.0) ?

[]´s

Edson.

  • Moderadores
Postado

Edson.pol

Eu ainda não precisei usar nota conjugada, então não tenho tanta segurança para te informar a respeito. Mesmo assim fiz um teste simulando a tua situação e passou sem problemas, mas observe:

Primeiro:

Estou fazendo algo errado na forma de passar os valores ? (Antes da versão 2.0 usava desta forma e funcionava corretamente)

Na versão 2 no ISSQN foi incluído uma tag chamada

Aonde vc deve informar:

cSitTrib -> Informar o código de tributação do ISSQN: N-Normal, R-Retida, S-Substituta e I-Isenta (campo novo)

Se esta informação não estiver presente na tag ISSQN você terá o erro: " Element '{http://www.portalfiscal.inf.br/nfe}ICMSSN' is unexpected according to content model of parent element '{http://www.portalfiscal.inf.br/nfe}ICMS'. "

Segundo:

Para o ítem do serviço vc deverá informar as tag do ISSQN

-

-

Segue um exemplo do xml da tag até ao final. Espero que te ajude.

Um abraço, té+


- 
99999999000191
NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL

- 
TESTE
011
CENTRO
4108304
FOZ DO IGUACU
PR
85850000
1058




- 

- 
55

ABRAC. DE NYLON FISCHER BC 1822
33012902
5102
PC
1.0000
0.4400000000
0.44

PC
1.0000
0.4400000000
1


- 

- 

- 
0
101
2.58
0.01



- 
999

- 
99
0.00
0.00
0.00



- 

- 
99
0.00
0.00
0.00



- 

- 
99
0.00
0.00
0.00





- 

- 
24

TESTE PREST. DE SERVICO
99
5933
PC
1.0000
100.0000000000
100.00

PC
1.0000
100.0000000000
0


- 

- 
100.00
5.00
5.00
4108304
1401        (use o código conforme a lista de serviços) 
N               (preste atenção nesta tag, sem ela aparece o erro que você citou)


- 

- 
01
0.00
0.00
0.00



- 

- 
01
0.00
0.00
0.00





- 

- 
0.00
0.00
0.00
0.00
0.44
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.00
0.44


- 
100.00                   (Observe também se vc informa estas tags - Valor do serviço, Base calc e valor 
5.00                               do ISS )
5.00



- 
9


- 
DOCUMENTO EMITIDO POR ME OU EPP OPTANTE PELO SIMPLES NACIONAL.;NAO GERA DIREITO A CREDITO FISCAL DE IPI.;http://www.procon.pr.gov.br/ Telefone 0800411512 - Rua Presidente Faria, 431, Edificio Francisco Braz - Centro, Curitiba Pr, CEP 80.020-290;;PERMITE O APROVEITAMENTO DO CREDITO DE ICMS NO VALOR DE R$ 0,01;CORRESPONDENTE A ALIQUOTA DE 2,58%, NOS TERMOS DO ART. 23 DA CLT 123/2006




logoacbr.pngConheça o Portal do Projeto ACBr

Ajude o Projeto ACBr crescer - Assine o SAC ACBr
Assine um dos planos de longa duração do SAC ACBr, obtenha Descontos Especiais, Parcele no Cartão e ainda ganhe Brindes Exclusivos. Saiba mais aqui

Conheça o ACBrLib, o ACBr de forma nativa para qualquer linguagem de programação. Saiba mais aqui

 

 

 

 

Postado

Boa tarde Kiko Fernandes.

Cara, muito obrigado !

Matou o coelho "com uma cx dágua só" :)

Repassei umas 200 vezes o código e não notei a falta da tag "cSitTrib" no ISSQN.

Problema resolvido.

[]´s

Edson.

Postado

Milenium,

Eu usei assim:


with Imposto do begin

              with ISSQN do begin

                            vAliq  := AliquotaIss;

                            vISSQN := IssItem;;

                            vBC    := DM2.qrNf02PrecoTot.AsFloat;

                            cMunFG := StrToInt(xIBGE);

                            cListServ :=1401;

                            if (PessoaFisica) or not (ClienteDaCidade) then

                                  cSitTrib:= ISSQNcSitTribNORMAL

                            else

                                  cSitTrib:= ISSQNcSitTribRETIDA;

               end;

// ISSQNcSitTribVazio , ISSQNcSitTribNORMAL, ISSQNcSitTribRETIDA, ISSQNcSitTribSUBSTITUTA,ISSQNcSitTribISENTA

end;

[]´s

Edson.

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