Correct zera TSO parsing
This commit is contained in:
@@ -33,16 +33,26 @@ def normalize_interval(value):
|
||||
|
||||
|
||||
def parse_control_fields(tokens):
|
||||
nivel_descricao = {
|
||||
"B": "Base",
|
||||
"P": "Parque",
|
||||
"O": "Orgânico",
|
||||
}
|
||||
fields = {
|
||||
"tso": "",
|
||||
"zera_tso": "",
|
||||
"letra": "",
|
||||
"nivel": "",
|
||||
"nivel_descricao": "",
|
||||
"var_media": "",
|
||||
"duracao": "",
|
||||
"duracao_valor": "",
|
||||
"duracao_unidade": "",
|
||||
}
|
||||
|
||||
if tokens:
|
||||
fields["zera_tso"] = tokens[0]
|
||||
tokens = tokens[1:]
|
||||
|
||||
if len(tokens) >= 2 and tokens[-1] in {"D", "H"} and tokens[-2].isdigit():
|
||||
duracao_valor = tokens[-2]
|
||||
duracao_codigo = tokens[-1]
|
||||
@@ -52,14 +62,24 @@ def parse_control_fields(tokens):
|
||||
fields["duracao_unidade"] = "dias" if duracao_codigo == "D" else "horas"
|
||||
|
||||
if len(tokens) == 1:
|
||||
fields["letra"] = tokens[0]
|
||||
if tokens[0] in nivel_descricao:
|
||||
fields["nivel"] = tokens[0]
|
||||
else:
|
||||
fields["letra"] = tokens[0]
|
||||
elif len(tokens) >= 2:
|
||||
fields["tso"] = tokens[0]
|
||||
fields["letra"] = tokens[1]
|
||||
if len(tokens) >= 3:
|
||||
fields["nivel"] = tokens[2]
|
||||
if len(tokens) >= 4:
|
||||
fields["var_media"] = " ".join(tokens[3:])
|
||||
if tokens[1] in nivel_descricao:
|
||||
fields["letra"] = tokens[0]
|
||||
fields["nivel"] = tokens[1]
|
||||
fields["var_media"] = " ".join(tokens[2:])
|
||||
elif tokens[0] in nivel_descricao:
|
||||
fields["nivel"] = tokens[0]
|
||||
fields["var_media"] = " ".join(tokens[1:])
|
||||
else:
|
||||
fields["letra"] = tokens[0]
|
||||
fields["nivel"] = tokens[1]
|
||||
fields["var_media"] = " ".join(tokens[2:])
|
||||
|
||||
fields["nivel_descricao"] = nivel_descricao.get(fields["nivel"], "")
|
||||
|
||||
return fields
|
||||
|
||||
@@ -122,8 +142,7 @@ def parse_record(record):
|
||||
right_before_interval = INTERVAL_RE.split(right, maxsplit=1)[0].strip()
|
||||
tokens = right_before_interval.split()
|
||||
|
||||
zera = tokens[0] if tokens else ""
|
||||
controle_tokens = tokens[1:]
|
||||
controle_tokens = tokens
|
||||
controle = " ".join(controle_tokens)
|
||||
control_fields = parse_control_fields(controle_tokens)
|
||||
|
||||
@@ -163,10 +182,10 @@ def parse_record(record):
|
||||
"descricao_mnt": descricao,
|
||||
"referencia": referencia,
|
||||
"tipo_vencimento": "Término da Anterior",
|
||||
"zera": zera,
|
||||
"tso": control_fields["tso"],
|
||||
"zera_tso": control_fields["zera_tso"],
|
||||
"letra": control_fields["letra"],
|
||||
"nivel": control_fields["nivel"],
|
||||
"nivel_descricao": control_fields["nivel_descricao"],
|
||||
"var_media": control_fields["var_media"],
|
||||
"duracao": control_fields["duracao"],
|
||||
"duracao_valor": control_fields["duracao_valor"],
|
||||
@@ -198,10 +217,10 @@ def main():
|
||||
"descricao_mnt",
|
||||
"referencia",
|
||||
"tipo_vencimento",
|
||||
"zera",
|
||||
"tso",
|
||||
"zera_tso",
|
||||
"letra",
|
||||
"nivel",
|
||||
"nivel_descricao",
|
||||
"var_media",
|
||||
"duracao",
|
||||
"duracao_valor",
|
||||
|
||||
Reference in New Issue
Block a user