From bcc6d8a9d99486a8ad53947448415d43b7e63bf2 Mon Sep 17 00:00:00 2001 From: CristianoMafraJunior Date: Wed, 11 Dec 2024 15:40:46 -0300 Subject: [PATCH] damdfe: fix info seg --- brazilfiscalreport/damdfe/damdfe.py | 87 ++++++++++++++---- tests/fixtures/mdf-e_test_1.xml | 26 ++++-- tests/generated/damdfe/damdfe_default.pdf | Bin 8709 -> 8728 bytes .../generated/damdfe/damdfe_default_logo.pdf | Bin 15127 -> 15149 bytes .../damdfe/damdfe_default_logo_margins.pdf | Bin 15147 -> 15169 bytes 5 files changed, 88 insertions(+), 25 deletions(-) diff --git a/brazilfiscalreport/damdfe/damdfe.py b/brazilfiscalreport/damdfe/damdfe.py index 91912ae..8fcbba9 100644 --- a/brazilfiscalreport/damdfe/damdfe.py +++ b/brazilfiscalreport/damdfe/damdfe.py @@ -50,7 +50,7 @@ def __init__(self, xml, config: DamdfeConfig = None): root = ET.fromstring(xml) self.inf_adic = root.find(f"{URL}infAdic") - self.inf_seg = root.find(f"{URL}infSeg") + self.inf_seg = root.findall(f"{URL}seg") self.disp = root.find(f"{URL}disp") self.inf_mdfe = root.find(f"{URL}infMDFe") self.prot_mdfe = root.find(f"{URL}protMDFe") @@ -85,6 +85,31 @@ def _build_chCTe_str(self): self.chCTe_str.append(chCTe_value) return self.chCTe_str + def _build_seg_str(self): + self.inf_seg_str = [] + for seg in self.inf_seg: + xSeg = extract_text(seg.find(f"{URL}infSeg"), "xSeg") + infSeg_cnpj = extract_text(seg.find(f"{URL}infSeg"), "CNPJ") + nApol = extract_text(seg, "nApol") + """ + # TODO: criado uma lista para cada tag + para não conter duplicações da tag nAver + """ + nAver_list = [] + for nAver in seg.findall(f"{URL}nAver"): + nAver_value = nAver.text.strip() if nAver.text else None + if nAver_value: + nAver_list.append(nAver_value) + self.inf_seg_str.append( + { + "nome": xSeg or "", + "cnpj": infSeg_cnpj or "", + "apolice": nApol if nApol else "", + "averbacoes": nAver_list if nAver_list else [""], + } + ) + return self.inf_seg_str + def _build_chnfe_str(self): self.chNFe_str = [] for chnfe in self.inf_mun_descarga: @@ -1601,10 +1626,7 @@ def _draw_insurance_information(self): self.fisco = extract_text(self.inf_adic, "infAdFisco") self.obs = extract_text(self.inf_adic, "infCl") - self.seguradora_nome = extract_text(self.inf_seg, "xSeg") - self.cnpj_segurado = extract_text(self.inf_seg, "CNPJ") - self.n_apol = extract_text(self.inf_seg, "nApol") - self.nome_averbacao = extract_text(self.inf_seg, "nAver") + self._build_seg_str() self.rect( x=x_margin, @@ -1621,24 +1643,51 @@ def _draw_insurance_information(self): w=100, h=0, text="INFORMAÇÕES SOBRE OS SEGUROS", border=0, align="L" ) self.set_font(self.default_font, "", 6) - self.set_xy(x=x_margin, y=y_middle) - if self.seguradora_nome: - self.multi_cell( - w=100, - h=0, - text=f"NOME: {self.seguradora_nome} CNPJ: {self.cnpj_segurado}", - border=0, - align="L", - ) - self.set_xy(x=x_margin, y=y_middle + 4) - if self.n_apol: + y_position = self.get_y() + 2 + for seg_data in self.inf_seg_str: + self.set_xy(x=x_margin, y=y_position) self.multi_cell( - w=100, - h=0, - text=f"APÓLICE: {self.n_apol} AVERBAÇÃO: {self.nome_averbacao}", + w=190, + h=4, + text=( + f"NOME: {seg_data['nome']} " + f"CNPJ: {seg_data['cnpj']} " + f"APÓLICE: {seg_data['apolice']}" + ), border=0, align="L", ) + y_position += 4 + max_averbacoes_por_linha = 3 + averbacao_linha = "" + averbacao_count = 0 + for _, aver in enumerate(seg_data["averbacoes"]): + if averbacao_count < max_averbacoes_por_linha: + if aver: + averbacao_linha += f"AVERBAÇÃO: {aver} " + averbacao_count += 1 + else: + self.set_xy(x=x_margin, y=y_position) + self.multi_cell( + w=190, + h=4, + text=averbacao_linha.strip(), + border=0, + align="L", + ) + y_position += 4 + averbacao_linha = f"AVERBAÇÃO: {aver} " + averbacao_count = 1 + if averbacao_linha: + self.set_xy(x=x_margin, y=y_position) + self.multi_cell( + w=190, + h=4, + text=averbacao_linha.strip(), + border=0, + align="L", + ) + y_position += 4 self.rect( x=x_margin, diff --git a/tests/fixtures/mdf-e_test_1.xml b/tests/fixtures/mdf-e_test_1.xml index a6c2e43..52c945a 100644 --- a/tests/fixtures/mdf-e_test_1.xml +++ b/tests/fixtures/mdf-e_test_1.xml @@ -47,14 +47,28 @@ teste@gmail.com - - + + 1 + 00000000000000 + SEGURADO TESTE 12345678000199 - 12345678901234567890 - 1234567890123456789012345678901234567890 - - + + 12345678901234567890 + + + 1 + 00000000000000 + + SEGURADO TESTE + 12345678000199 + + 12345678901234567890 + 1234567890123456789012345678901234567890 + 1234567890123456789012345678901234567890 + 1234567890123456789012345678901234567890 + 1234567890123456789012345678901234567890 + diff --git a/tests/generated/damdfe/damdfe_default.pdf b/tests/generated/damdfe/damdfe_default.pdf index b0a8cf5a0a71c7144811e86c7bf4a232b1fcce25..df8c5e3b13469a63a36081a07d10f0a19756ccd0 100644 GIT binary patch delta 3182 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 H4Z;5bEDyGC delta 3139 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 SCkO`DfWbj>at5~yLH`C%5zoB< delta 3179 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 diff --git a/tests/generated/damdfe/damdfe_default_logo_margins.pdf b/tests/generated/damdfe/damdfe_default_logo_margins.pdf index 09f283c09480a8ae55697eb98db658402dbef6c0..eb95e2b231148b433142d08c68e43e5bb64fbda9 100644 GIT binary patch delta 3236 zcmai%XEYm*8pf?6q109-LW-aW2||oop=PPQYFAa&7J}G{Hbzy|7OmJTRLz!JrB>Cd zz4s_Js>=QU@BMJk`QH!s{q&sQdEWD!_set6Tk7BDUll}-ladB1DFJLEz{BE0KHt*FUH+SV&=JR5RSC`X`BWQfpzsTvMF=J3_@cz8l z!`LH>A~li7sO+<8gyUU3J`^?)dEufxd$zC=v0qyWePVJS7CT_QoRh7PmE+Ftqid2*b*rOl&*gldRB#jn5XB>z&;nyJ&Ab&1RXY?0!P)6iHf9 z4>EWzG*!QxP-vZ;>0mLs>^A%*e&v%^GpQGrq~|j@x7v)jWF^)#9%b zj?AveLHf7JN{-7dC^mx*n-cQEuNjHFt&?;zw8hM|#TG5R)Uv6pKcZj$LAPa*W;WW` ze0oN=f@{4nS2ucdp;glf#GK6uj zX<}e?#{HM(JLe1i0VnmmIlNjwX6ANh=UPHnwlbCiL;(jYzYiG zQSUveA56SF^E_EyC^kcsgp=J)omNxPt6QIcgT_6TfOl}*rMjWT++%WA>Ml|zn_8pGFaWDsWI{*4=_QK#C7BiMXaOzLVZ&{d)TU{RAoRRst=VX^wW-CekGyT5 zyTj`Axv_7&Qa@+4{=&9E;Z&l<&T?{tpfms62j8}E6}|GW@T}m|r@^d5RYR1~rCZ>< z7Y-egldu+l5A`+F)}78MrLrWbmiV?Hw3c>t@HL7<7pl;lv>P$WJ%=hm2Uk}1lof3q zIL8R2CxW&b@cy2?W{!e~HIr+Ob`V_ppr(TbZEMo{A~DritcL$UFLOgZcf%oTOME~r z7;LFK)Nb_TUXZFtQJTPOv&T{u)D{u)xME$=?Xt^lJEt|PI}$haTLbxVr;v;Dv?yR$ z$C71m@Hblh0d9>kucwXbZ4{lF!I8C{%?1{z3vl)aNF_z(MfF?42-U8$7<^f$2uF5Z ze5koQHX3oSd%q!13ZuwGCYi(w2~(7gSnvhlfiT4o0JIo?J+M(*6_UXOB(mTzB8JTR z_ameFu9^`m`Q8Y^+q5Q+Go$ph<>l>X!YCbyijdouLO;FWa=#;Y@`vMq>wY8PQ z$?}DW9d52X**SIs2+r9_0B)+^M}!zvqRDgQ-p)Lm_tSVF4ZFZf2K z>B*jPA$%vy5otH8PwR;fHOnXFR55rE$G{-@NMU{|)uhh=>F5G9w6G9)EkxTkMn5l! zB7~H^csmvFsX0S6eD||%oOOk&L9fuZ5*1(cl#sh}MLU@+-=PmZ&LQxZd^ClZ>ozNm z!%hD#121q)-$S-%H}c|zlONG{2D=GjxCOfCq~EHk_0Ny#{>U92>E*2VaNt>j!UOqG z_Sc~|Y~yn%E*?yC6Zct-?*-lCr503lrX={%J}5*EZ5c|V>{mD+3ciH5-IR{kBYdRa z>tqF{GQ9nksstiM<4%Iwsac^ss*`}XYIf$Z-UeaTbWCdQ{O$1K%qv*{Rv8J`+(c`> zNUvqqfIMGJ`JW9#ftv*FDFD{g?yK|nkgo8Z0F-4xgGLLYCr;-17$a{^EB5j{V|w<5 zva&Mnx35>|#qrF}WIbczVCCEhagR3_dJ%HCulQ$VDG*7EL+xqR9EN#%X7a?iq`(N! z8Eqp^W*=QwA%)e)UC6`l(f5BOs5w4JO*0>1ctrZdC8uuB5Jt0KbcxUkcPTp>}SX{>b56)X+YuMOfT6R8+E7bdRVxsv8bt2OFIvT-l* zBv3&-`i^9jRi3fS(js^V!|MI2J!DK;#8ypswh^M6udYmf`{2IWxjxNsSoSWqgSE7; z6Q4dr4PKX$yKf>I^`q}v^Y64T>4HB@NMc(WCVLZ76-~0voPFA<>*z}iXb}}9jHuY)>;(%iIg?FM}fI$o;b}qGrx`kv9)qWFk zsaGdi{Z!(Q{HLnblVbv~X#n-RTue(;pe~W1Ch`+JEqUZ8E$WTG3p04Jr{+0_ z(@p#D(aqlngkL`%^f-~76(2j>1hdn-Leg-^Ym$_SdXvUZR*$=}3i(%c?>63C@%F8U zRB5A(P_qF$-dp?B9!F2KkPdYR_4pl(f~DI&#%1bhSen{<}W}-niyG z(7&ZDBm4dODH_)Fb7L`2P0KS>EOjyOla?nwc`>hhqREnr5VqkV`y{QiY@%2R<&3Kl z7}m0upOqhb^#vu29~(2)pq3jq(~MR>*X>y!x(xeVEz;>jzGE_Ncs)*#<*Us!51Rli z3G#M@(Cg=QuM7{=F>ZhjQe{}A>#uYs)yWbpw!f4dDg2~yCb7ILyZVDq1j5Z-IuGHa z9v4FT{6VH*K}++U#)F^zon0^6q1Y))p|*@t~;qrF&(kw->ex z36*AYF+#Otx)t8NiKz}T4Q5uj8RnF>i=TcN&tBicZ!qYGEk(kf?hExp!CN3ia+eD$1c?$GhIJ>uDj?1BFZ`aQJm%v%MgFJtd2+|*2zw1m9C~hkb@Zm~ z?q-so1}+g~DRt|S%|P$3(-O}Q+&iS@fp_RZj7P-)WG)^|Av4q`6*_ZnI z944FV{XhvD*I}l^^kG)J$wqoLbwxES{GsRSBp!a!P^cB}ujFvj!h!Vd;hfA4j$nzq zEhe>)C{7QqJ{u!#oqc?YtDfV5G6G~)?tAC7pqMm7C5n?G*Qpq9XigsYhTeXAcQCit}9X&x4uCAJn#>>Ue2OE4EOVtIsQUZ*kGXAN{1qX<+UeJDHSmm}%J* zfTj*TXU?xTFmC|aRz3&>EKi6-yg|0KZtz7rhR83x_Y)e*Dl^T-SI8adk@WDgfL?j3 zWC|=_owQM4d3w^Ay~7eaI9Mi#hDd6Yw9mdGWxs0%(4o7x^F2|*{o^l24u4(q`YPRt zN^|oA*JnR26su%#`y?)+vDHyfV)rYwca*tLYzt@sf>lh;e_4<9nyjr1;G@nwSn;#j zNyGZ&37Bx^N9zjFmLBk@@F$I6o!^Aii)I197FHYsPnw0^Oq|zPf9YKafAEPIvgX4! zJ95fPry@#pJTaS2J#tPjXM6!Vqk4ELL{RJ$IFsiKEnmbfg{9g(^kw%BGc)bY<8!{ys=WTkJ!7cGhj#$gc?D$&~MK;sp z3f97>x`$LaOP}#p``(cE(laB?>9L2EemyfymWi_p@-=?%Uo4apk7p__p0`c?Zdz-q zXI!3&?WSX@3Hoyy^X17Nue`@4^+KI1J872wnivj_0K@(sum>3UZvlfN;8Op?q~VhP zWHLxN@}Eo&DJ%02CW(N{{WC)n@fZBJ5AxsOzaa8|mt~}7UL?sY*~qG^$RgCyXf*^< zP7N*zQ(o%9t3abClVe_B=!`|B$Y_+tFLQD_QuqpM6~xzJzfl-yK*5tc~u$s`}CTjul{P-c2@c z7Q57SD0z}6VfO8fxhbOFQl|RBiOAFiuWp=~l#PZpZDnvt+nwSUOYtrmH8qJ=ML8Ig zbj)l#T^ku#X0-`U%F@>0_A%FRC_Om|N;si*uJDGEB!_Ty=XZgXo ziAujVT>g1UfNS#ehFSjrHW^k`-Pbk9u-o02x8;vn5lvT$*AHs50x{2U3O&0emML6w z{<&X?sQXuLwDh+TdASyt52`%d6m%+(&>FGrg^=$er8Ec+Wo^9jb3sevffq?(x>IW~ zDbu~uE2WuAO(z!@hwXdR5-qBiP926GUhiD11%iuV&QD(2*UHOfHTaR@sGMA%a60O}ca=@=gtSGVucfCgm4 z&3c~?Qn=|%F>TuTumxJOtY#2BlR$3Db*P-rhY#JxU)vclVTUE@DLpqMX^({_sc)u} z7WQIgqNUSDP`}H#9Kvix$hXB-r_|=Q_M&{xw@oZohvNV=H{xOz?~1!23E zFES?P8l@{Ozf%r$Cq>*m=a}>;wl?)h!nNZ@!QP+WOy2~dCDhf5BuOO5=RBsBUs6@tKLWX8KPU>*g1up>6P(-)w zhifdpeqn7N5i)8o3I<*uPBlGZr=4emhh;-l1h(pv*oFDo2{gaDXwtDYYQ6xfh}>oN zvp14SrUsMDVM3wbfzil#U7W#$xEEwR^BpT8xy~m0T`cnqb;dl>wfIR}7K9>TqVq$H zm4E+RqB-;1{1NuD5W04Gc^t9vsljrh(LqsumcBXQOF(g$(K&{SAWPOY!1Fx(?wXiB z&(Ni_Oh3PW!oCjHO6$5j z1?*9t`f0q+@l$DO1sz(LlRljB3vWA&Me^&0;~gWYoB2$t*-fK``U(i5sRf#qIvnVB zKUgT>wVDLtbxg+;vCU5bN6nZB%H0SV7QmZByXz%5&^zKvlt4hC2Pas2 z^f?auHE?)=d|0TJ6id44F1BG2m;f2sf`i;zr}Gi%R-<~subf7Pel4_*9BpUcPnh=G zty^8)&Vuw0%(XNsoNg`boE-T5+HYTC|J3^E#^Nf~KhQgCz~lFqU^xSqF&JF*Gb-oExbC&?84v;6k2)AWc%m zDWqvabDtP#Xpt^(Wr@khifi2wJ2w5mW{hG`o%hTlR{wnZjZM^wH+sOuPy3I`hI<<% zp!=mDNWz{8Sry#ML}`4~73F;8K4QAc=I%kXah2T+4%9$>WqfD}Gi48Pnq~&wu z68}_3fkpG3?X7O>Sof7?d@?-9Thp(~f59k;d!rMQz|Ti#0)<;*MX}Foa?g8OyTjZf z8u&l?Hg1~dX}32j^w0>3za%{du-IKyP^D)9tMYrn|2nKV;oyBRkPoT|t8!bS<b)QAu*j=ZrqerohECM%i4dK7o|#RCvf=2_ z=p*aKuX0U+R_F9rG|NmchAMeuwDg$y2HdW*4H6hq1k{g5DhrwR>C!b}QM$>k{qIu# z+IBA9IR?iRMQa`}24H`As4r^ zhgHX~_@`o@hQ6eibn>tMS}TerWdpgH&skD=N{umGgEpUdlj5AD1!g|Y+_?jwClu7& zyIT+Oh#0$rdvTL%B~2NAd8D`rTy>}^6Pam2&I-TCar16VCJQL4JA?$=UG*3KIRA_0 z;kz4JgaJDq9(qe*PI;Cx>(A~8;xx~n_IZOXt?v&eZF=jtXdeE-haksqlFcC=17P~s zqHTY;Xo0s=JCaACwF41`LE$v9y~8tc^7=!IwPxRb)O$R-N>9gjQNT@06Jk4f9_ntR zVU!X(s#_(os?>aMUxVC3m01Qd#VKcPAM@o0(?>yA<)T1*(9gHPrZTqsL}m{g{l(>X zAPckoqwl#Q?N#H;Wv^n&8IO8~6!o^;T=%0^SJp7QZy5w_v2Qc7J-V0GThM3W{rpSU z%dylG7GzbsXV@seEbRN6yzuc42u@Kbb3bPK@rvREht5#H)<(+_ARNRk)RrcRN+Qg2G?syZJdN@&7g7>%lul z6G`kdBAZTj9B+e59EbQ4BOae}I(DOf?F-6JPR_>_C9piH@Ay7XrPgprj`+Jtd&z)K zOSDq=zV8P_zi_LE<^||&KCA4wle@`r8bYR}q1p+bYLWj?oY)qeCs_KR`Mv7ewS&p5 z@b#5}&LnNKBJtl+^+Fxq+;Mw9RgE&(=sm&q7sr;p4goVw4Gg#nzkRuwbj_}}6eQ#D0P@im+tT!|bcXN< zR8z3c4|mk+_gkr5_?f=M%qh-esUGX4u9V(Je7