def tableDataShow(self): if select_bill_of_material_for_maintenance(self.mainte.id): bom = select_bill_of_material_for_maintenance(self.mainte.id) for idx, val in enumerate(getAllItemForBOM(bom.id)): self.tableData.addItems(BillOfMaterialItem(getAllItemForBOM(bom.id)[ idx].raw_material_id , getAllItemForBOM(bom.id)[idx].spare_part_id , None, getAllItemForBOM(bom.id)[idx].cost_of_material, getAllItemForBOM(bom.id)[idx].qty_of_material, getAllItemForBOM(bom.id)[idx].gen_code))
def create_pdf(self): """ Create a pdf """ story = [] doc = SimpleDocTemplate(self.refile, pagesize=A4) styles = getSampleStyleSheet() spacer = Spacer(0, 0.07 * inch) story.append(spacer) story.append(spacer) ptext = '<font size=10><a>Customer Name: {}</a></font>'.format(self.maint.customers.name) story.append(Paragraph(ptext, styles["Normal"])) story.append(spacer) ptext = '<font size=10><a>Customer Mobile Number: {}</a></font>'.format( self.maint.customers.mobile_number) story.append(Paragraph(ptext, styles["Normal"])) story.append(spacer) ptext = '<font size=10><a>Maintenance Product: {}</a></font>'.format( self.maint.product_of_maintenance) story.append(Paragraph(ptext, styles["Normal"])) story.append(spacer) ptext = '<font size=10><p>Maintenance Description :</p></font>' story.append(Paragraph(ptext, styles["Normal"])) story.append(spacer) ptext = '<font size=10><p>{}</p></font>'.format(self.maint.maintenance_description) story.append(Paragraph(ptext, styles["Normal"])) story.append(spacer) line = MCLine(-30, 470) story.append(line) story.append(spacer) """ Create the line items """ text_data = ["#", "Material Name", "Material Type", "QTY", "Cost"] d = [] font_size = 8 centered = ParagraphStyle(name="centered", alignment=TA_CENTER) for text in text_data: ptext = "<font size=%s><b>%s</b></font>" % (font_size, text) p = Paragraph(ptext, centered) d.append(p) data = [d] line_num = 1 formatted_line_data = [] bom = select_bill_of_material_for_maintenance(self.maint.id) for idx, val in enumerate(getAllItemForBOM(bom.id)): if val.raw_material_id: raw = select_row_material_by_id(val.raw_material_id) mname = raw.name typeName = "Raw Material" if val.spare_part_id: spare = select_spare_parts_by_id(val.spare_part_id) mname = spare.name typeName = "Spare Parts" line_data = [str(line_num), mname, typeName, val.qty_of_material , val.cost_of_material] for item in line_data: ptext = "<font size=%s>%s</font>" % (font_size - 1, item) p = Paragraph(ptext, centered) formatted_line_data.append(p) data.append(formatted_line_data) formatted_line_data = [] line_num += 1 table = Table(data, colWidths=[20, 220, 100, 80, 80], rowHeights=20 , style=[('GRID', (0, 0), (-1, -1), 0.5, colors.black)]) story.append(table) story.append(spacer) ######################################################################################### bomtxt = '<font size=9><p><b>BOM Cost</b></p></font>' pbomtxt = Paragraph(bomtxt, styles["Normal"]) bomtxtnum = "<p>{}<p>".format(self.maint.cost_of_bill_of_material) pbomtxtnum = Paragraph(bomtxtnum, styles["Normal"]) labtxt = '<font size=9><p><b>Extra Cost</b></p></font>' plabtxt = Paragraph(labtxt, styles["Normal"]) labtxtnum = '<p>{}</p>'.format(self.maint.cost_of_labor) plabtxtnum = Paragraph(labtxtnum, styles["Normal"]) totxt = '<font size=9><p><b>Total</b></p></font>' ptotxt = Paragraph(totxt, styles["Normal"]) totxtnum = '<p>{}</p>'.format(self.maint.cost_of_labor + self.maint.cost_of_bill_of_material) ptotxtnum = Paragraph(totxtnum, styles["Normal"]) data = [['', '', '', pbomtxt, pbomtxtnum], ['', '', '', plabtxt, plabtxtnum], ['', '', '', ptotxt, ptotxtnum]] t = Table(data, colWidths=[5, 5, 380, 60, 50], rowHeights=15) t.setStyle(TableStyle([('LINEABOVE', (3, 2), (-1, -1), 0.25, colors.black)])) story.append(t) for x in range(10): story.append(spacer) ######################################################################################### actxt = '<font size=11><p><u>Accountant</u><br/>Rani Mohamed</p></font>' pactxt = Paragraph(actxt, centered) matxtnum = '<font size=11><p><u>Manager</u><br/>Mohamed Althubiti</p></font>' pmatxtnum = Paragraph(matxtnum, centered) data = [[pactxt, '', '', '', pmatxtnum]] t = Table(data, colWidths=[150, 5, 250, 5, 150]) t.setStyle(TableStyle([('LINEABOVE', (3, 2), (-1, -1), 0.25, colors.black)])) story.append(t) ######################################################################################### story.append(spacer) doc.build(story, onFirstPage=self.createDocument, onLaterPages=self.createDocument) subprocess.Popen([self.refile], shell=True)