From d3626cb31985411856ce94b690eaa40b0e5afd51 Mon Sep 17 00:00:00 2001 From: CristianoMafraJunior Date: Wed, 11 Dec 2024 09:53:40 -0300 Subject: [PATCH] dacte: add modal dutoviario --- brazilfiscalreport/dacte/dacte.py | 132 ++++++++++++ tests/fixtures/dacte_dutoviario_test.xml | 190 ++++++++++++++++++ .../dacte/dacte_default_dutoviario.pdf | Bin 0 -> 14026 bytes tests/test_dacte.py | 9 + 4 files changed, 331 insertions(+) create mode 100644 tests/fixtures/dacte_dutoviario_test.xml create mode 100644 tests/generated/dacte/dacte_default_dutoviario.pdf diff --git a/brazilfiscalreport/dacte/dacte.py b/brazilfiscalreport/dacte/dacte.py index 55065a2..09f6517 100644 --- a/brazilfiscalreport/dacte/dacte.py +++ b/brazilfiscalreport/dacte/dacte.py @@ -1923,6 +1923,136 @@ def draw_aquaviario_info(self, config): style="", ) + def draw_dutoviario_info(self, config): + x_margin = self.l_margin + page_width = self.epw + + section_start_y = self.get_y() + 7 + section_start_y = self.draw_section( + section_start_y, + 13, + "DADOS ESPECÍFICOS DO MODAL DUTOVIÁRIO", + ) + self.rect( + x=x_margin, + y=section_start_y - 10, + w=page_width - 0.1 * x_margin, + h=6, + style="", + ) + + col_width = (page_width - 2 * x_margin) / 5 + for i in range(1, 5): + x_line = x_margin + i * col_width + self.line( + x1=x_line, + x2=x_line, + y1=section_start_y - 10, + y2=section_start_y - 4, + ) + + self.set_font(self.default_font, "", 6) + road_titles = [ + "VALOR UNITÁRIO", + "VALOR DO FRETE", + "OUTROS", + "BASE DE CÁLCULO", + "ALÍQUOTA", + ] + + road_values = [ + "", + "", + "", + "", + "", + ] + + for i, (title, value) in enumerate(zip(road_titles, road_values)): + self.set_xy(x_margin + i * col_width, section_start_y - 10) + self.multi_cell(w=col_width, h=3, text=title, align="L") + self.set_font(self.default_font, "B", 7) + self.set_xy(x_margin + i * col_width, section_start_y - 7) + self.multi_cell(w=col_width, h=3, text=value, align="L") + self.set_font(self.default_font, "", 6) + + section_start_y = self.get_y() + 10 + self.rect( + x=x_margin, + y=section_start_y - 10, + w=page_width - 0.1 * x_margin, + h=6, + style="", + ) + + col_width = (page_width - 2 * x_margin) / 6 + for i in range(1, 6): + x_line = x_margin + i * col_width + self.line( + x1=x_line, + x2=x_line, + y1=section_start_y - 10, + y2=section_start_y - 4, + ) + + self.set_font(self.default_font, "", 6) + road_titles = [ + "VALOR DO IMPOSTO", + "VALOR TOTAL DO FRETE", + "OBSERVAÇÕES", + "EMITENTE", + "SÉRIE", + "NÚMERO", + ] + + road_values = [ + "", + "", + "", + "", + "", + "", + ] + + for i, (title, value) in enumerate(zip(road_titles, road_values)): + self.set_xy(x_margin + i * col_width, section_start_y - 10) + self.multi_cell(w=col_width, h=3, text=title, align="L") + self.set_font(self.default_font, "B", 7) + self.set_xy(x_margin + i * col_width, section_start_y - 7) + self.multi_cell(w=col_width, h=3, text=value, align="L") + self.set_font(self.default_font, "", 6) + + self.set_font(self.default_font, "", 7) + section_start_y = self.get_y() + section_start_y = self.draw_section( + section_start_y, 3, "USO EXCLUSIVO DO EMISSOR DO CT-E" + ) + self.set_margins( + left=config.margins.left, + top=config.margins.top, + right=config.margins.right, + ) + margins_to_height = { + 2: 20, + 3: 19, + 4: 17, + 5: 16, + 6: 13, + 7: 11, + 8: 11, + 9: 9, + 10: 8, + } + rect_height = margins_to_height[config.margins.left] + + self.rect( + x=x_margin, + y=section_start_y, + w=page_width - 0.1 * x_margin, + h=rect_height, + style="", + ) + def _draw_specific_data(self, config): x_margin = self.l_margin page_width = self.epw @@ -2008,6 +2138,8 @@ def _draw_specific_data(self, config): self.draw_aquaviario_info(config) if self.tp_modal == ModalType.FERROVIARIO: self.draw_ferroviario_info(config) + if self.tp_modal == ModalType.DUTOVIARIO: + self.draw_dutoviario_info(config) # Adicionando outra página def _add_new_page(self, config): diff --git a/tests/fixtures/dacte_dutoviario_test.xml b/tests/fixtures/dacte_dutoviario_test.xml new file mode 100644 index 0000000..dd1f1f1 --- /dev/null +++ b/tests/fixtures/dacte_dutoviario_test.xml @@ -0,0 +1,190 @@ + + + + + 35 + 57000111 + 5352 + Venda + 57 + 1 + 577 + 2020-01-01T12:00:00+01:00 + 1 + 1 + 0 + 2 + 0 + 0 + Odoo Brasil OCA v14 + 3550308 + São Paulo + SP + 05 + 0 + 3550308 + São Paulo + SP + 1302603 + Manaus + AM + 1 + 1 + + 3 + + + + Documento emitido por: Marc Demo + + Documento emitido por: Marc Demo + + + + 81583054000129 + 078016350838 + Empresa Lucro Presumido Ltda + Empresa Lucro Presumido + + Avenida Paulista + 1 + Bela Vista + 3550308 + São Paulo + 01311000 + SP + 551199999999 + + 3 + + + 12046835000161 + 887273429152 + CTE EMITIDO EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL + Cliente 2 -SP - Simples Nacional + 1177777777 + + Avenida Doutor Chucri Zaidan + 950 + Vila Cordeiro + 3550308 + São Paulo + 04583110 + SP + 1058 + Brasil + + cliente2@cliente2.com.br + + + 12046835000161 + 887273429152 + CTE EMITIDO EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL + 1177777777 + + Avenida Doutor Chucri Zaidan + 950 + Vila Cordeiro + 3550308 + São Paulo + 04583110 + SP + 1058 + Brasil + + cliente2@cliente2.com.br + + + 84148732000113 + 095693211 + CTE EMITIDO EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL + 9221458888 + + Avenida Javari + s/n + Lote 9.45/15E + Distrito Industrial + 1302603 + Manaus + 69075110 + AM + 1058 + Brasil + + cliente4@cliente4.com.br + + + 46081676000158 + 782175040 + CTE EMITIDO EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL + 9221459999 + 101362102 + + Avenida Javari + s/n + Lote 8.45/30E + Distrito Industrial + 1302603 + Manaus + 69075110 + AM + 1058 + Brasil + + cliente3@cliente3.com.br + + + 47.00 + 47.00 + + Frete + 47.00 + + + + + + 00 + 47.00 + 18.00 + 8.46 + + + + + + 1000.00 + XYZ Product + Other Product Data + + 00 + Volume + 1000.0000 + + + 01 + Peso Bruto + 500.0000 + + + 03 + Unidade + 2.0000 + + 1000.00 + + + + 41190806117473000150550010000586251016759484 + + + + + 1500.000000 + 2024-01-01 + 2024-12-31 + + + + + diff --git a/tests/generated/dacte/dacte_default_dutoviario.pdf b/tests/generated/dacte/dacte_default_dutoviario.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e63b6ffb85f2d78833795c330bf128f2b9badf86 GIT binary patch literal 14026 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 literal 0 HcmV?d00001 diff --git a/tests/test_dacte.py b/tests/test_dacte.py index 3b6512a..6e378f3 100644 --- a/tests/test_dacte.py +++ b/tests/test_dacte.py @@ -81,3 +81,12 @@ def test_dacte_default_ferroviario(tmp_path, load_dacte, logo_path): dacte = load_dacte("dacte_ferroviario_test.xml", config=dacte_config) pdf_path = get_pdf_output_path("dacte", "dacte_default_ferroviario") assert_pdf_equal(dacte, pdf_path, tmp_path) + + +def test_dacte_default_dutoviario(tmp_path, load_dacte, logo_path): + dacte_config = DacteConfig( + logo=logo_path, + ) + dacte = load_dacte("dacte_dutoviario_test.xml", config=dacte_config) + pdf_path = get_pdf_output_path("dacte", "dacte_default_dutoviario") + assert_pdf_equal(dacte, pdf_path, tmp_path)