feat: warehouse places accounting
This commit is contained in:
		
							
								
								
									
										1
									
								
								generators/warehouse_place_qr_code_generator/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								generators/warehouse_place_qr_code_generator/__init__.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
from .generator import WarehousePlaceQRCodeGenerator
 | 
			
		||||
							
								
								
									
										46
									
								
								generators/warehouse_place_qr_code_generator/generator.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								generators/warehouse_place_qr_code_generator/generator.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,46 @@
 | 
			
		||||
from io import BytesIO
 | 
			
		||||
 | 
			
		||||
from reportlab.lib.units import mm
 | 
			
		||||
from reportlab.pdfgen.canvas import Canvas
 | 
			
		||||
from reportlab.platypus import Paragraph, SimpleDocTemplate, Frame
 | 
			
		||||
from reportlab_qrcode import QRCodeImage
 | 
			
		||||
 | 
			
		||||
from generators.base_pdf_card_generator.base_pdf_card_generator import BasePdfCardGenerator
 | 
			
		||||
from services.warehouse_management import WmsService
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class WarehousePlaceQRCodeGenerator(BasePdfCardGenerator):
 | 
			
		||||
    async def generate(self, place_id: int, is_short: bool) -> BytesIO:
 | 
			
		||||
        service = WmsService(self._session)
 | 
			
		||||
        place_code = await service.get_code_of_place(place_id)
 | 
			
		||||
 | 
			
		||||
        buffer = BytesIO()
 | 
			
		||||
        doc: SimpleDocTemplate = self._create_doc(buffer)
 | 
			
		||||
 | 
			
		||||
        def on_first_page(canvas: Canvas, doc):
 | 
			
		||||
            denco_paragraph = Paragraph('DENCO', self.small_centered_style)
 | 
			
		||||
 | 
			
		||||
            if is_short:
 | 
			
		||||
                qr = QRCodeImage(place_code, size=20 * mm)
 | 
			
		||||
                qr.drawOn(canvas, 39 * mm, -4)
 | 
			
		||||
 | 
			
		||||
                number_paragraph = Paragraph(str(place_code), self._get_paragraph_style(26))
 | 
			
		||||
                number_frame = Frame(x1=0 * mm, y1=-15 * mm, width=42 * mm, height=30 * mm)
 | 
			
		||||
                denco_frame = Frame(x1=0 * mm, y1=-2 * mm, width=42 * mm, height=20 * mm)
 | 
			
		||||
            else:
 | 
			
		||||
                qr = QRCodeImage(place_code, size=25 * mm)
 | 
			
		||||
                qr.drawOn(canvas, 34 * mm, -4)
 | 
			
		||||
 | 
			
		||||
                number_paragraph = Paragraph(str(place_code), self._get_paragraph_style(34))
 | 
			
		||||
                number_frame = Frame(x1=0 * mm, y1=9 * mm, width=60 * mm, height=30 * mm)
 | 
			
		||||
                denco_frame = Frame(x1=0 * mm, y1=-13 * mm, width=58 * mm, height=20 * mm)
 | 
			
		||||
 | 
			
		||||
            number_frame.addFromList([number_paragraph], canvas)
 | 
			
		||||
            denco_frame.addFromList([denco_paragraph], canvas)
 | 
			
		||||
 | 
			
		||||
        empty_paragraph = Paragraph("", self.small_centered_style)
 | 
			
		||||
        elements = [empty_paragraph]
 | 
			
		||||
        doc.build(elements, on_first_page)
 | 
			
		||||
 | 
			
		||||
        buffer.seek(0)
 | 
			
		||||
        return buffer
 | 
			
		||||
		Reference in New Issue
	
	Block a user