Skip to content

Commit

Permalink
[IMP] implementa a carta de correção do CTE
Browse files Browse the repository at this point in the history
  • Loading branch information
marcelsavegnago committed Jul 16, 2024
1 parent 7787f3f commit d2cad5e
Showing 1 changed file with 80 additions and 0 deletions.
80 changes: 80 additions & 0 deletions src/erpbrasil/edoc/cte.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
ConsSitCte,
ConsStatServCte,
EvCancCte,
EvCceCte,
EventoCte,
RetConsSitCte,
RetConsStatServCte,
Expand Down Expand Up @@ -351,6 +352,85 @@ def cancela_documento(
)
return raiz

def carta_correcao(
self,
chave,
protocolo_autorizacao,
justificativa,
sequencia,
data_hora_evento=False,
):
tipo_evento = "110110"
condicao_uso = (
"A Carta de Correcao e disciplinada pelo Art. 58-B do "
"CONVENIO/SINIEF 06/89: Fica permitida a utilizacao de carta de "
"correcao, para regularizacao de erro ocorrido na emissao de "
"documentos fiscais relativos a prestacao de servico de "
"transporte, desde que o erro nao esteja relacionado com: "
"I - as variaveis que determinam o valor do imposto tais como: "
"base de calculo, aliquota, diferenca de preco, quantidade, valor "
"da prestacao; "
"II - a correcao de dados cadastrais que implique mudanca do "
"emitente, tomador,remetente ou do destinatario; "
"III - a data de emissao ou de saida."
)

temp_string = justificativa.replace("\\n", "TEMP_NEW_LINE")

# Separar a string pelo separador
lista = temp_string.split(";")

# Dividir a lista em sublistas usando o separador temporário
result = []
sublist = []

for item in lista:
if "TEMP_NEW_LINE" in item:
parts = item.split("TEMP_NEW_LINE")
sublist.append(parts[0])
result.append(sublist)
sublist = [parts[1]]
else:
sublist.append(item)

# Adicionar a última sublista
result.append(sublist)
correcoes = []
nro_item = 1 # Inicia a sequência de itens alterados

for linha in result:
grupo, campo, valor = linha
correcao = EvCceCte.InfCorrecao(
grupoAlterado=grupo,
campoAlterado=campo,
valorAlterado=valor,
nroItemAlterado=str(
nro_item
), # Adiciona a sequência de itens alterados
)
correcoes.append(correcao)
nro_item += 1 # Incrementa a sequência

raiz = EventoCte.InfEvento(
Id="ID" + tipo_evento + chave + sequencia.zfill(3),
cOrgao=self.uf,
tpAmb=self.ambiente,
CNPJ=chave[6:20],
chCTe=chave,
dhEvento=data_hora_evento or self._hora_agora(),
tpEvento=tipo_evento,
nSeqEvento=sequencia,
detEvento=EventoCte.InfEvento.DetEvento(
EvCceCte(
descEvento="Carta de Correcao",
infCorrecao=correcoes, # Lista de correções
xCondUso=condicao_uso,
),
versaoEvento="4.00",
),
)
return raiz

def consulta_recibo(self):
pass

Expand Down

0 comments on commit d2cad5e

Please sign in to comment.