From 5ea2208ba939cd781af34bf6bba55b1c533b1a14 Mon Sep 17 00:00:00 2001 From: nataly Date: Thu, 9 May 2024 14:30:01 +0300 Subject: [PATCH] New changes. --- .../add/__pycache__/views.cpython-312.pyc | Bin 5830 -> 8208 bytes osinaweb/billing/add/urls.py | 4 +- osinaweb/billing/add/views.py | 57 ++++++++++++++++++ 3 files changed, 59 insertions(+), 2 deletions(-) diff --git a/osinaweb/billing/add/__pycache__/views.cpython-312.pyc b/osinaweb/billing/add/__pycache__/views.cpython-312.pyc index 76c4c18b97026b658e093e93bcaf7db3b4bc61ba..7f983ad1ca8f9e7586ffb45a0e976851b0a096f5 100644 GIT binary patch delta 3407 zcmaJ@U2NOd6(;pBk(OjpmL0`*7{!eu$MR2`HeLSg#tG^qUeYw_))>V&MxhL80qk)GwgG(!Fkl9fr#>`0=Sp;B zZ|ebcbnm&};W_8Kzkf*InF{`?t1G~O+*>`7{ab7~*vCFyPS$D)qxf?|J~|i8_ssRM zj2cq{?=ue&2{P9UeXgV52YtSyzX$qV9sM};gB|_7&<}O=`<3wf%-q1DC)NEJ1DGN9 zc2~+_xn{0@bJlWBU%9gS6ZRL5o(PN)0aX-LFRDKClq<`2o4<5T9_mNKHpt>NL(NOZ zVo8-WWrqvz{*n7IfJ3VvxxaGO!qBwBWnCqbl+}oCNCi2slJ1?K^JU7qQ3N~b!GVqx z(A|4QCGTk&HRUDo9e!l&ztLnb*isIH30rVWs2&%ahe|2Cz>F;L&3zJ(l|tQDFQzH!%cJ zf&wjqUP1$ncmi7|QDJP0yWS3k+`P&F&T<#&*C-#jM{FWQu|TE44e|{bAjd$ZxQ45m>~p^fovQi!Xx!Wv4N&-v(KoDA=oaT4=B!>%@is3Oo;rq=KUcb5DA&fp?TV}M3~IcHgJYs^{zTUBJ!0ODdj9}BBJ z^glrAK&oB?j|3`8U^_FP!c`m^TlH6b3%C(>NyWd73@Ch+GY;5*O5kCaJ+^==VwV_r zg4C$7!aavlGqozg=hhnzCG;@-pgrqVUg@rQ|JMuvg%O~t%fQt~rNY}uRDBqS0zGM#*On%8RG`{3cPaJvi<&@J3YPG_9ML6T6LOFjO&Xm&tv3Nx`R4GGL_*0e+ zDykuCIbDLCTFQY*AJbY+>GsIzyphjQSNZ1Q`us{NN44YD&F2U;$YjJ*K&)s zV`B1+VyUDR^yKj!Af056iDi;Ilq|`{ykr!mQVS=cJKSG6b<{Aj$rOB!%5Yd=dMf`+l6lojXMRXU3#{xAw+3I%i?Z)+@viScq??`+^)a8Pn zhSN#QwnOWx*e;7!i#gKZaGq#H6_sM9jAx5jgB-pl1*qa$u}nnumZlq8;f4rr1W`8@ zbE=Nn+nxY>O;JRM0cVw#U9=&xE*4Z(Q572u7nDag2z+U&cd8`cP;26CF)x!FTH%=Z z(s=3Caj|+8UL;&A#=NQ;x)m)ERfl9{Ln{{KoHVZ$!0KzS0%^%LT2iub9iGSa6_QJ( zoR*>3F>1H?3^0xdDNfGPe%UbO%sf_qT+G&B9`F%zGLc`D0FIwZED6&skMtQ$FBNqS z1E>00H^>w&Q705(`3xb$t2Ri^cw@*L%$h;ZvztQv?&R|1x^S>599$C)tqbXa&0K z3Y&xb?~SY{PBs%K*Avst#PsLWYl)dZ*1DUC3+su?&BW!#n{TZpzSa2l+s(wawZXZD zZ|}xF@VPg5|J}yKna|&CPRumM&ou_lH+}Jcv`5N~ftMS;_){Mfiv6tkH-dxp*Eb^Z zyJO2^_mXRo;rfLw4&p#bxxX_*NJqje&10&7A$QOL*&e9`3vB`%Tz2m^hmfP7A z*zz%hi7k%d(oYx<=c!L`g_%fvCAl6SZ^p+PdnSGpZG>K_&um5pRx)dmME$~si~Hch z4=${`qRk_&=$*G$ZUe*>edKxt3JLeGOgBa+ABCnM!Gq`OGmWl9({*5j6Y7@;K0Q){ z=Huu_Bydxe^~DnGWrMC-5;T9;6Q9QCK7Fwge610D9T9x@(Dw_S+g~yCGj#gD^qqhc oqnuMuksksGZwmc0vnQ5v{+$ucQ?Y7z%i&>X*(b51Y?QkF2NWzj@&Et; delta 1249 zcmZWoOK;Oa5Y8rXn#8G{Hfc!1biQXW-k=>?>gR)B=yVwu>XMtM|Y2dNS$ zNIb4k?G=f0g*fGexFaO)2>HN)KLA`gRLrdVaDpf3mfLG)7r{}}qc0Y8Vn67Yw%W17mx z*t5T&rm3TDG&!8d$eE5Nml>Pt zY^LsoXGtiH`3lVXHi>gbV_y1jcinaxty&FK{!7VCi#{$O2}%fFstKlrKi9Bp&Mx!f z!pDxa2+Z(#^=kVp(c;%yj@_^vM@Zx0G-|Mcv?sinEr=oyXK$hp>j+M;Kwq$cpLh#7ulUbwAvT4UHq6uc z?|d&mSf=k*Ts0sqfw~mC0A=ikfas#Fzwt#Z)v8%#&@smF@9grsqZ)rc`c(cCj/', views.add_order, name='addorder'), - + path('invoice//', views.add_invoice_pdf, name='addinvoice'), path('service///', views.add_service_in_order, name='addserviceinorder'), - + path('add_payment_comment', views.add_payment_comment_modal, name='add_payment_comment_modal'), path('add_payment', views.add_payment_modal, name='add_payment_modal'), ] diff --git a/osinaweb/billing/add/views.py b/osinaweb/billing/add/views.py index 28ccc22b..32ec723f 100644 --- a/osinaweb/billing/add/views.py +++ b/osinaweb/billing/add/views.py @@ -8,6 +8,7 @@ import os from osinacore.decorators import * from django.core.files.base import ContentFile from django.db.models import Q +from weasyprint import HTML, CSS @@ -143,6 +144,62 @@ def add_payment_modal(request): +def add_invoice_pdf(request, order_id): + order = get_object_or_404(Order, id=order_id) + + current_year = str(timezone.now().year)[-2:] + last_invoice = Invoice.objects.all().last() + if last_invoice: + last_invoice_number = int(last_invoice.invoice_number.split('-')[1].split('+')[0]) + new_invoice_number = f"$0{current_year}-{last_invoice_number + 1}" + else: + new_invoice_number = f"$0{current_year}-1425" + + + + invoice = Invoice.objects.create( + invoice_number = new_invoice_number, + order=order, + date_created=datetime.now(), + ) + + template = get_template('details_templates/invoice-details.html') + context = {'order': order} + html_string = template.render(context) + + # Define the CSS string with Poppins font + css_string = ''' + @font-face { + font-family: 'Poppins'; + src: url('path_to_poppins_font_file.ttf') format('truetype'); /* Update the path to the font file */ + } + + body { + font-family: 'Poppins', sans-serif; /* Use Poppins font for the entire document */ + } + + /* Your existing CSS styles */ + /* Add or modify styles as needed */ + ''' + + # Generate PDF + pdf = HTML(string=html_string).write_pdf( + stylesheets=[ + CSS(string=css_string), + CSS(string='@page { margin: 30px; }') + ], + presentational_hints=True + ) + + filename = f'invoice_{invoice.invoice_number}.pdf' + pdf_content = ContentFile(pdf) + invoice.pdf.save(filename, pdf_content, save=True) + + + # Return PDF + response = HttpResponse(pdf, content_type='application/pdf') + response['Content-Disposition'] = 'attachment; filename="my_pdf.pdf"' + return response