Skip to content

clean code + EFD ICMS IPI layout 20#13

Open
rvalyi wants to merge 16 commits into
masterfrom
improve
Open

clean code + EFD ICMS IPI layout 20#13
rvalyi wants to merge 16 commits into
masterfrom
improve

Conversation

@rvalyi

@rvalyi rvalyi commented Apr 26, 2026

Copy link
Copy Markdown
Member

Os primeiros commits são para melhorar o código

Os outros commits são para suportar o layout 20 do EFD ICMS IPI, obrigatório a partir de Janeiro desse ano..

O pdf do layout 20 do EFD ICMS IPI mudou muito, em especial o numero e conteúdo das colunas.

layout 19:
2026-04-26_02-55

layout 20:
2026-04-26_02-59

além disso os crânios concursados que fizeram esses pdfs nem consegue copiar uma tabela sem fazer error, deixaram um buraco aqui por exemplo e eu tive que fazer um patch para preencher..

O diff dos csv gerido é maior do que ele realmente é porque eu mudei o formato dos finais das linhas para Linux. Mas o cranios da fazenda tb adicionaram ou tiraram pontos no fim da descrição de muitos campos por exemplo...

O diff real pro EFD ICMS IPI pode ser visto neste commit 1e8c083

Não ha diff pros outros relatórios (vou fazer o commit depois com a mudança dos finais de linha num PR separado para não atrapalhar aqui).

rvalyi added 4 commits March 31, 2026 20:04
1. constants.py - Added TypedDict definitions and type aliases:
- ModuleInfo = tuple[int, str, str]
- RawRows = dict[int, list[list[str]]]
- RegisterDict, FieldDict, BlockDict TypedDict classes with NotRequired fields

2. download.py - Added return type:
- main() -> None

3. extract_tables.py - Added return type:
- main() -> None

4. build_csv.py - Comprehensive type hints for 28 functions:
- Helper functions: _get_mod_header, _atoi, natural_keys, get_raw_rows, clean_row
- Register extraction: _is_register_code, _map_register_row, extract_registers_list
- Field processing: _is_joined_index, _split_code_desc, _format_row, _map_row_mod_header, _is_reg_row, _apply_camelot_patch, _is_field_row, extract_register_fields
- Field conversion: _normalize_field_code, _convert_field_type, _convert_field_required, _convert_field_in_out, _convert_values, _convert_rules, _map_field_row
- CSV builders: build_accurate_fields_csv, build_usable_fields_csv, build_registers_csv
- Getters: get_fields, get_registers
- Block functions: extract_blocks, get_blocks
- Sorting: _sort_header_order, _get_usable_csv_header
- Main: main(patch: bool) -> None

5. gen_odoo.py - Added type hints for 8 functions:
- Module-level: collect_register_children, _get_alphanum_sequence, get_structure, main
- Class methods: registry_comodel, odoo_class_name, _extract_number_attrs

6. get_table_headers.py - Fixed broken imports and added type hints:
- Fixed: Removed references to non-existent MOST_RECENT_YEAR and OLDEST_YEAR
- Changed: Parameter from year to target_layout to match new architecture
- Added: Type hints for get_mod_table_headers and main
@rvalyi rvalyi changed the title Improve clean code + EFD ICMS IPI layout 20 Apr 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants