def saveAsHandout(self): """Write the PDF document, multiple slides per page.""" styleSheet = getSampleStyleSheet() h1 = styleSheet['Heading1'] bt = styleSheet['BodyText'] if self.sourceFilename : filename = os.path.splitext(self.sourceFilename)[0] + '.pdf' outfile = BytesIO() doc = SimpleDocTemplate(outfile, pagesize=rl_config.defaultPageSize, showBoundary=0) doc.leftMargin = 1*cm doc.rightMargin = 1*cm doc.topMargin = 2*cm doc.bottomMargin = 2*cm multiPageWidth = rl_config.defaultPageSize[0] - doc.leftMargin - doc.rightMargin - 50 story = [] orgFullPageSize = (self.pageWidth, self.pageHeight) t = makeSlideTable(self.slides, orgFullPageSize, multiPageWidth, self.cols) story.append(t) ## #ensure outline visible by default ## if self.showOutline: ## doc.canv.showOutline() doc.build(story) return self.savetofile(outfile, filename)
def saveAsHandout(self): """Write the PDF document, multiple slides per page.""" styleSheet = getSampleStyleSheet() h1 = styleSheet["Heading1"] bt = styleSheet["BodyText"] if self.sourceFilename: filename = os.path.splitext(self.sourceFilename)[0] + ".pdf" outfile = getStringIO() doc = SimpleDocTemplate(outfile, pagesize=rl_config.defaultPageSize, showBoundary=0) doc.leftMargin = 1 * cm doc.rightMargin = 1 * cm doc.topMargin = 2 * cm doc.bottomMargin = 2 * cm multiPageWidth = rl_config.defaultPageSize[0] - doc.leftMargin - doc.rightMargin - 50 story = [] orgFullPageSize = (self.pageWidth, self.pageHeight) t = makeSlideTable(self.slides, orgFullPageSize, multiPageWidth, self.cols) story.append(t) ## #ensure outline visible by default ## if self.showOutline: ## doc.canv.showOutline() doc.build(story) return self.savetofile(outfile, filename)
def print_pay(request, id): non_p = 1 rpt = PaymentReport.objects.get(pk=id) if request.session['matched_employee_id'] == rpt.employee_id: emp = Employee.objects.get(id=request.session['matched_employee_id']) try: emptype = Permanent.objects.get(parent_id=emp.id) except Permanent.DoesNotExist: try: emptype = NonPermanent.objects.get(parent_id=emp.id) non_p = 0 except NonPermanent.DoesNotExist: try: emptype = Administrative.objects.get(parent_id=emp.id) except Administrative.DoesNotExist: emptype = 0 except: raise else: request.session.clear() return HttpResponseRedirect( '/employee/match/?next=/salary/view/') print emptype dict_tax_codes = {c.id: c.calc_type for c in PaymentCode.objects.all()} report = {} report['report_type'] = '0' report['type'] = rpt.type report['year'] = rpt.year report['emp_type'] = non_p if non_p == 1: report['registration_number'] = emptype.registration_number report['vat_number'] = emp.vat_number report['lastname'] = emp.lastname report['firstname'] = emp.firstname report['fathername'] = emp.fathername report['address'] = emp.address report['tax_office'] = emp.tax_office report['profession'] = emp.profession report['telephone_number1'] = emp.telephone_number1 report['rank'] = rpt.rank report['net_amount1'] = rpt.net_amount1 report['net_amount2'] = rpt.net_amount2 pay_cat_list = [] for i in PaymentCategory.objects.filter(paymentreport=rpt.id): pay_cat_dict = {} pay_cat_dict['title'] = i.title pay_cat_dict['month'] = i.month pay_cat_dict['year'] = i.year pay_cat_dict['start_date'] = i.start_date pay_cat_dict['end_date'] = i.end_date pay_cat_dict['payments'] = [] for o in Payment.objects.filter(category=i.id): p = {} p['type'] = o.type p['code'] = o.code p['amount'] = float(o.amount) p['info'] = o.info p['code_tax'] = dict_tax_codes[o.code_id] pay_cat_dict['payments'].append(p) pay_cat_list.append(pay_cat_dict) report['payment_categories'] = pay_cat_list response = HttpResponse(mimetype='application/pdf') response['Content-Disposition'] = 'attachment; filename=pay_report.pdf' registerFont(TTFont('DroidSans', os.path.join(settings.MEDIA_ROOT, 'DroidSans.ttf'))) registerFont(TTFont('DroidSans-Bold', os.path.join(settings.MEDIA_ROOT, 'DroidSans-Bold.ttf'))) doc = SimpleDocTemplate(response, pagesize=A4) doc.topMargin = 1.0 * cm elements = generate_pdf_structure([report]) doc.build(elements) return response
def print_emp_report(request, fid): emp = NonPermanent.objects.select_related().get(parent_id=request.session['matched_employee_id']) reports = NonPermanentUnemploymentMonth.objects.select_related().filter(employee_id=request.session['matched_employee_id'],insurance_file=fid) response = HttpResponse(mimetype='application/pdf') response['Content-Disposition'] = 'attachment; filename=emp_report.pdf' registerFont(TTFont('DroidSans', os.path.join(settings.MEDIA_ROOT, 'DroidSans.ttf'))) registerFont(TTFont('DroidSans-Bold', os.path.join(settings.MEDIA_ROOT, 'DroidSans-Bold.ttf'))) doc = SimpleDocTemplate(response, pagesize=A4) doc.topMargin = 1.0 * cm doc.leftMargin = 1.5 * cm doc.rightMargin = 1.5 * cm elements = [] head_logo = getSampleStyleSheet() head_logo.add(ParagraphStyle(name='Center', alignment=TA_CENTER, fontName='DroidSans', fontSize=8)) heading_style = getSampleStyleSheet() heading_style.add(ParagraphStyle(name='Center', alignment=TA_CENTER, fontName='DroidSans-Bold', fontSize=12)) heading_style.add(ParagraphStyle(name='Spacer', spaceBefore=5, spaceAfter=5, fontName='DroidSans-Bold', fontSize=12)) signature = getSampleStyleSheet() signature.add(ParagraphStyle(name='Center', alignment=TA_CENTER, fontName='DroidSans', fontSize=10)) tbl_style = getSampleStyleSheet() tbl_style.add(ParagraphStyle(name='Left', alignment=TA_LEFT, fontName='DroidSans', fontSize=10)) tbl_style.add(ParagraphStyle(name='Right', alignment=TA_RIGHT, fontName='DroidSans', fontSize=10)) tbl_style.add(ParagraphStyle(name='Justify', alignment=TA_JUSTIFY, fontName='DroidSans', fontSize=10)) tbl_style.add(ParagraphStyle(name='BoldLeft', alignment=TA_LEFT, fontName='DroidSans-Bold', fontSize=10)) tsl = [('ALIGN', (0, 0), (-1, -1), 'CENTER'), ('FONT', (0, 0), (-1, 0), 'DroidSans'), ('FONTSIZE', (0, 0), (-1, 0), 8), ('BOTTOMPADDING', (0, 0), (-1, -1), 0), ('TOPPADDING', (0, 0), (-1, -1), 0)] tsh = [('ALIGN', (1, 1), (-1, -1), 'LEFT'), ('BOX', (0, 0), (-1, -1), 0.25, colors.black)] ts = [('ALIGN', (1, 1), (-1, -1), 'LEFT'), ('FONT', (0, 0), (-1, 0), 'DroidSans'), ('BOX', (0, 0), (-1, -1), 0.25, colors.black), ('GRID', (0, 0), (-1, -1), 0.5, colors.black)] tsf = [('ALIGN', (1, 1), (-1, -1), 'CENTER')] for r in reports: data = [] elements.append(Paragraph(u'ΒΕΒΑΙΩΣΗ ΕΡΓΟΔΟΤΗ', heading_style['Center'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) data.append([Paragraph(u'ΕΠΩΝΥΜΙΑ ΕΡΓΟΔΟΤΗ ', tbl_style['Left']) , Paragraph(u'Διεύθυνση ΔΕ %s' % SETTINGS['dide_place'], tbl_style['Left'])]) data.append([Paragraph(u'ΑΡΙΘΜΟΣ ΜΗΤΡΩΟΥ: %s' % SETTINGS['ika_code_dde'], tbl_style['Left']), Paragraph(u'Α.Φ.Μ. ΕΡΓΟΔΟΤΗ: %s' % SETTINGS['afm_dide'], tbl_style['Left'])]) data.append([Paragraph(u'ΑΡΜΟΔΙΟ ΥΠΟΚΑΤΑΣΤΗΜΑ ΙΚΑ ΕΛΕΓΧΟΥ ', tbl_style['Left']), Paragraph(u' ', tbl_style['Left'])]) data.append([Paragraph(u'ΚΩΔΙΚΟΣ - ΟΝΟΜΑΣΙΑ ', tbl_style['Left']), Paragraph(u'%s' % SETTINGS['ika_code'] , tbl_style['Left'])]) table = Table(data, style=tsf, colWidths=[7.0 * cm, 11.0 * cm]) elements.append(table) elements.append(Paragraph(u' ', heading_style['Spacer'])) data = [] elements.append(Paragraph(u'Βεβαιώνουμε ότι:' , tbl_style['Left'])) elements.append(Paragraph(u'Ο/Η ασφαλισμένος με τα κάτωθι ασφαλιστικά στοιχεία απασχολήθηκε στην υπηρεσία μας κατά τις μισθολογικές περιόδους που ακολουθούν:' , tbl_style['Left'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u'ΣΤΟΙΧΕΙΑ ΥΠΑΛΛΗΛΟΥ', tbl_style['BoldLeft'])) data.append([Paragraph(u'ΑΡ. ΠΑΡΑΡΤ. / Κ.Α.Δ. ', tbl_style['Left']), Paragraph(u'%s' % SETTINGS['subject_kad'], tbl_style['Right'])]) data.append([Paragraph(u'ΑΜΑ: ', tbl_style['Left']), Paragraph(u'%s' % emp.ama, tbl_style['Right'])]) data.append([Paragraph(u'Α.Μ.Κ.Α.: ', tbl_style['Left']), Paragraph(u'%s' % emp.social_security_registration_number, tbl_style['Right'])]) data.append([Paragraph(u'ΕΠΩΝΥΜΟ: ', tbl_style['Left']), Paragraph(u'%s' % emp.lastname, tbl_style['Right'])]) data.append([Paragraph(u'ΟΝΟΜΑ: ', tbl_style['Left']), Paragraph(u'%s' % emp.firstname, tbl_style['Right'])]) data.append([Paragraph(u'ΟΝΟΜΑ ΠΑΤΡΟΣ: ', tbl_style['Left']), Paragraph(u'%s' % emp.fathername, tbl_style['Right'])]) data.append([Paragraph(u'ΟΝΟΜΑ ΜΗΤΡΟΣ: ', tbl_style['Left']), Paragraph(u'%s' % emp.mothername, tbl_style['Right'])]) if emp.birth_date == None: data.append([Paragraph(u'ΗΜΕΡΟΜΗΝΙΑ ΓΕΝΝΗΣΕΩΣ: ', tbl_style['Left']), Paragraph(u' ', tbl_style['Right'])]) else: data.append([Paragraph(u'ΗΜΕΡΟΜΗΝΙΑ ΓΕΝΝΗΣΕΩΣ: ', tbl_style['Left']), Paragraph(u'%s / %s / %s' % (emp.birth_date.day, emp.birth_date.month, emp.birth_date.year), tbl_style['Right'])]) data.append([Paragraph(u'Α.Φ.Μ.: ', tbl_style['Left']), Paragraph(u'%s' % emp.vat_number, tbl_style['Right'])]) data.append([Paragraph(u'ΚΩΔΙΚΟΣ ΕΙΔΙΚΟΤΗΤΑΣ: ', tbl_style['Left']), Paragraph(u'%s' % emp.type(), tbl_style['Right'])]) if emp.other_social_security: ec = emp.other_social_security.code else: ec = '101' data.append([Paragraph(u'ΠΑΚΕΤΟ ΚΑΛΥΨΗΣ: ', tbl_style['Left']), Paragraph(u'%s' % ec, tbl_style['Right'])]) data.append([Paragraph(u'ΜΙΣΘΟΛΟΓΙΚΗ ΠΕΡΙΟΔΟΣ: ', tbl_style['Left']), Paragraph(u'%s / %s' % (r.month, r.year), tbl_style['Right'])]) if r.insured_from.strip() in ('', '/ /'): dtf = '01/'+ str(r.month) + '/' + str(r.year) dtt = str(calendar.monthrange(r.year, r.month)[1]) + '/' + str(r.month) + '/' + str(r.year) else: dtf = r.insured_from dtt = r.insured_to data.append([Paragraph(u'ΑΠΟ ΗΜΕΡΟΜΗΝΙΑ ΑΠΑΣΧΟΛΗΣΗΣ: ', tbl_style['Left']), Paragraph(u'%s' % dtf, tbl_style['Right'])]) data.append([Paragraph(u'ΕΩΣ ΗΜΕΡΟΜΗΝΙΑ ΑΠΑΣΧΟΛΗΣΗΣ: ', tbl_style['Left']), Paragraph(u'%s' % dtt, tbl_style['Right'])]) data.append([Paragraph(u'ΤΥΠΟΣ ΑΠΟΔΟΧΩΝ: ', tbl_style['Left']), Paragraph(u'%s' % r.pay_type, tbl_style['Right'])]) data.append([Paragraph(u'ΗΜΕΡΕΣ ΑΣΦΑΛΙΣΗΣ: ', tbl_style['Left']), Paragraph(u'%s' % r.days_insured, tbl_style['Right'])]) lpam = r.total_earned.split('.')[0] rpam = r.total_earned.split('.')[1] if len(rpam) == 1: rpam = rpam + '0' data.append([Paragraph(u'ΑΠΟΔΟΧΕΣ: ', tbl_style['Left']), Paragraph(u'%s.%s' % (lpam, rpam), tbl_style['Right'])]) lpam = r.employee_contributions.split('.')[0] rpam = r.employee_contributions.split('.')[1] if len(rpam) == 1: rpam = rpam + '0' data.append([Paragraph(u'ΕΙΣΦΟΡΕΣ ΑΣΦΑΛΙΣΜΕΝΟΥ: ', tbl_style['Left']), Paragraph(u'%s.%s' % (lpam, rpam), tbl_style['Right'])]) lpam = r.employer_contributions.split('.')[0] rpam = r.employer_contributions.split('.')[1] if len(rpam) == 1: rpam = rpam + '0' data.append([Paragraph(u'ΕΙΣΦΟΡΕΣ ΕΡΓΟΔΟΤΗ: ', tbl_style['Left']), Paragraph(u'%s.%s' % (lpam, rpam), tbl_style['Right'])]) lpam = r.total_contributions.split('.')[0] rpam = r.total_contributions.split('.')[1] if len(rpam) == 1: rpam = rpam + '0' data.append([Paragraph(u'ΣΥΝΟΛΙΚΕΣ ΕΙΣΦΟΡΕΣ: ', tbl_style['Left']), Paragraph(u'%s.%s' % (lpam, rpam), tbl_style['Right'])]) data.append([Paragraph(u'ΚΑΤΑΒΛ. ΕΙΣΦΟΡΕΣ: ', tbl_style['Left']), Paragraph(u'%s.%s' % (lpam, rpam), tbl_style['Right'])]) table = Table(data, style=tsf, colWidths=[10.0 * cm, 8.0 * cm]) elements.append(table) data = [] elements.append(Paragraph(u'Η παραπάνω βεβαίωση χορηγείται για απόδειξη της ασφάλισης στις προαναφερθείσες περιόδους.', tbl_style['Left'])) elements.append(Paragraph(u'ΠΑΡΑΤΗΡΗΣΗ', tbl_style['Left'])) elements.append(Paragraph(u'Τα αναγραφόμενα στην παρούσα Βεβαίωση ασφαλιστικά στοιχεία λαμβάνονται υπόψη μέχρι την επεξεργασία της Α.Π.Δ. των συγκεκριμένων μισθολογικών περιόδων και την υποβολή και έκδοση από το ΙΚΑ του αντίστοιχου Αποσπάσματος Ατομικού Λογαριασμού Ασφάλισης.', tbl_style['Justify'])) today = datetime.date.today() data.append([Paragraph(u' ', signature['Center']) ,Paragraph(u'Ρόδος, %s / %s / %s' % (today.day, today.month, today.year), signature['Center'])]) table = Table(data, style=tsf, colWidths=[9.0 * cm, 8.0 * cm]) elements.append(table) elements.append(Paragraph(u' ', heading_style['Spacer'])) data = [] sign = os.path.join(settings.MEDIA_ROOT, "signature.png") im = Image(sign) im.drawHeight = 3.2 * cm im.drawWidth = 6.5 * cm data.append([Paragraph(u' ', signature['Center']) ,im]) table = Table(data, style=tsf, colWidths=[10.0 * cm, 7.0 * cm]) elements.append(table) elements.append(PageBreak()) doc.build(elements) return response
def print_mass_pay(request, year): """ This function contains the required methods to create a PDF report. It will be merged with the salary app some time later. """ def sch (c): try: return c.permanent and c.permanent.organization_serving() except: return c.organization_serving() payment_codes = PaymentCode.objects.all() category_titles = PaymentCategoryTitle.objects.all() emp = Employee.objects.get(id=request.session['matched_employee_id']) try: emptype = Permanent.objects.get(parent_id=emp.id) except Permanent.DoesNotExist: try: emptype = NonPermanent.objects.get(parent_id=emp.id) except NonPermanent.DoesNotExist: try: emptype = Administrative.objects.get(parent_id=emp.id) except Administrative.DoesNotExist: emptype = 0 except: raise emp_payments = rprts_from_user(emp.id, year, '11,12,21') u = set([x['employee_id'] for x in emp_payments]) y = {x['employee_id']: x['year'] for x in emp_payments} dict_emp = {c.id: [c.lastname, c.firstname, c.vat_number, c.fathername, c.address, c.tax_office, u'%s' % c.profession, u'%s' % c.profession.description, c.telephone_number1, sch(c)] for c in Employee.objects.filter(id__in=u)} elements = [] reports = [] for empx in u: r_list = calc_reports(filter(lambda s: s['employee_id'] == empx, emp_payments)) hd = r_list[0] ft = [r_list[-2]] + [r_list[-1]] dt = r_list del dt[0] del dt[-2] del dt[-1] newlist = [] output = dict() for sublist in dt: try: output[sublist[0]] = map(operator.add, output[sublist[0]], sublist[1:]) except KeyError: output[sublist[0]] = sublist[1:] for key in output.keys(): newlist.append([key] + output[key]) newlist.sort(key=lambda x: x[0], reverse=True) r_list = [hd] + newlist + ft report = {} report['report_type'] = '1' report['type'] = '' report['year'] = y[empx] report['emp_type'] = 0 report['vat_number'] = dict_emp[empx][2] report['lastname'] = dict_emp[empx][0] report['firstname'] = dict_emp[empx][1] report['fathername'] = dict_emp[empx][3] report['address'] = dict_emp[empx][4] report['tax_office'] = dict_emp[empx][5] report['profession'] = ' '.join([dict_emp[empx][6], dict_emp[empx][7]]) report['telephone_number1'] = dict_emp[empx][8] report['rank'] = None report['net_amount1'] = '' report['net_amount2'] = '' report['organization_serving'] = dict_emp[empx][9] report['payment_categories'] = r_list reports.append(report) response = HttpResponse(mimetype='application/pdf') response['Content-Disposition'] = 'attachment; filename=pay_report_%s.pdf' % year registerFont(TTFont('DroidSans', os.path.join(settings.MEDIA_ROOT, 'DroidSans.ttf'))) registerFont(TTFont('DroidSans-Bold', os.path.join(settings.MEDIA_ROOT, 'DroidSans-Bold.ttf'))) doc = SimpleDocTemplate(response, pagesize=A4) doc.topMargin = 0.5 * cm doc.bottomMargin = 0.5 * cm doc.leftMargin = 1.5 * cm doc.rightMargin = 1.5 * cm doc.pagesize = landscape(A4) if year == '2012': style = getSampleStyleSheet() style.add(ParagraphStyle(name='Center', alignment=TA_CENTER, fontName='DroidSans', fontSize=12)) elements = [Paragraph(u'ΠΑΡΑΚΑΛΟΥΜΕ ΑΠΕΥΘΥΝΘΕΙΤΕ ΣΤΗΝ ΥΠΗΡΕΣΙΑ ΓΙΑ ΤΗΝ ΜΙΣΘΟΛΟΓΙΚΗ ΚΑΤΑΣΤΑΣΗ ΤΟΥ 2012', style['Center'])] else: elements = generate_pdf_landscape_structure(reports) doc.build(elements) return response
def print_exp_report(request): emptype = NonPermanent.objects.select_related().get(parent_id=request.session['matched_employee_id']) response = HttpResponse(mimetype='application/pdf') response['Content-Disposition'] = 'attachment; filename=exp_report.pdf' registerFont(TTFont('DroidSans', os.path.join(settings.MEDIA_ROOT, 'DroidSans.ttf'))) registerFont(TTFont('DroidSans-Bold', os.path.join(settings.MEDIA_ROOT, 'DroidSans-Bold.ttf'))) doc = SimpleDocTemplate(response, pagesize=A4) doc.topMargin = 1.0 * cm doc.bottomMargin = 1.0 * cm doc.leftMargin = 1.5 * cm doc.rightMargin = 1.5 * cm elements = [] logo = os.path.join(settings.MEDIA_ROOT, "logo.png") width, height = A4 head_logo = getSampleStyleSheet() head_logo.add(ParagraphStyle(name='Center', alignment=TA_CENTER, fontName='DroidSans', fontSize=8)) heading_style = getSampleStyleSheet() heading_style.add(ParagraphStyle(name='Center', alignment=TA_CENTER, fontName='DroidSans-Bold', fontSize=12)) heading_style.add(ParagraphStyle(name='Spacer', spaceBefore=5, spaceAfter=5, fontName='DroidSans-Bold', fontSize=12)) signature = getSampleStyleSheet() signature.add(ParagraphStyle(name='Center', alignment=TA_CENTER, fontName='DroidSans', fontSize=10)) tbl_style = getSampleStyleSheet() tbl_style.add(ParagraphStyle(name='Left', alignment=TA_LEFT, fontName='DroidSans', fontSize=10)) tbl_style.add(ParagraphStyle(name='Right', alignment=TA_RIGHT, fontName='DroidSans', fontSize=10)) tbl_style.add(ParagraphStyle(name='Justify', alignment=TA_JUSTIFY, fontName='DroidSans', fontSize=10)) tbl_style.add(ParagraphStyle(name='BoldLeft', alignment=TA_LEFT, fontName='DroidSans-Bold', fontSize=10)) tbl_style.add(ParagraphStyle(name='BoldRight', alignment=TA_RIGHT, fontName='DroidSans-Bold', fontSize=10)) tsl = [('ALIGN', (0, 0), (-1, -1), 'CENTER'), ('FONT', (0, 0), (-1, 0), 'DroidSans'), ('FONTSIZE', (0, 0), (-1, 0), 8), ('BOTTOMPADDING', (0, 0), (-1, -1), 0), ('TOPPADDING', (0, 0), (-1, -1), 0)] tsh = [('ALIGN', (1, 1), (-1, -1), 'LEFT'), ('BOX', (0, 0), (-1, -1), 0.25, colors.black)] ts = [('ALIGN', (1, 1), (-1, -1), 'LEFT'), ('FONT', (0, 0), (-1, 0), 'DroidSans'), ('BOX', (0, 0), (-1, -1), 0.25, colors.black), ('GRID', (0, 0), (-1, -1), 0.5, colors.black)] tsf = [('ALIGN', (1, 1), (-1, -1), 'CENTER')] im = Image(logo) im.drawHeight = 1.25 * cm im.drawWidth = 1.25 * cm data = [] #today = datetime.date.today() date_plus1 = emptype.current_placement().date_to data.append([Paragraph(u'Ρόδος, %s / %s / %s' % (date_plus1.day, date_plus1.month, date_plus1.year), tbl_style['Left'])]) data.append([Paragraph(u' ', heading_style['Spacer'])]) data.append([Paragraph(u' ', heading_style['Spacer'])]) data.append([Paragraph(u'Αρ. Πρωτ.: %s' % protocol_number(emptype.order().order_end_manager), tbl_style['Left'])]) tableh = Table(data, style=tsl, colWidths=[6.0 * cm]) data = [] data.append([im, '', '']) data.append([Paragraph(u'ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ', head_logo['Center']), '', '']) data.append([Paragraph(u'ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ, ΕΡΕΥΝΑΣ', head_logo['Center']), '', '']) data.append([Paragraph(u'ΚΑΙ ΘΡΗΣΚΕΥΜΑΤΩΝ', head_logo['Center']), '', Paragraph(u'Ρόδος, %s / %s / %s' % (date_plus1.day, date_plus1.month, date_plus1.year), tbl_style['Left'])]) data.append([Paragraph(u'ΠΕΡΙΦΕΡΕΙΑΚΗ ΔΙΕΥΘΥΝΣΗ ΠΡΩΤΟΒΑΘΜΙΑΣ', head_logo['Center']), '', Paragraph(u'Αρ. Πρωτ.: %s' % protocol_number(emptype.order().order_end_manager), tbl_style['Left'])]) data.append([Paragraph(u'ΚΑΙ ΔΕΥΤΕΡΟΒΑΘΜΙΑΣ ΕΚΠΑΙΔΕΥΣΗΣ ΝΟΤΙΟΥ ΑΙΓΑΙΟΥ', head_logo['Center']), '', '']) data.append([Paragraph(u'ΔΙΕΥΘΥΝΣΗ ΔΕΥΤΕΡΟΒΑΘΜΙΑΣ ΕΚΠΑΙΔΕΥΣΗΣ ΔΩΔΕΚΑΝΗΣΟΥ', head_logo['Center']), Paragraph(u'ΠΡΟΣ:', tbl_style['BoldRight']), Paragraph(u'%s %s' % (emptype.lastname, emptype.firstname), tbl_style['BoldLeft'])]) table0 = Table(data, style=tsl, colWidths=[8.0 * cm, 5.0 * cm, 6.0 * cm]) elements.append(table0) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u'Ταχ. Διεύθυνση: %s' % SETTINGS['address'], tbl_style['Left'])) elements.append(Paragraph(u'Πληροφορίες: %s' % SETTINGS['substitutes_contact_person'], tbl_style['Left'])) elements.append(Paragraph(u'Τηλέφωνο: %s' % SETTINGS['substitutes_contact_telephone_number'], tbl_style['Left'])) elements.append(Paragraph(u'Email: %s' % SETTINGS['email_substitutes'], tbl_style['Left'])) elements.append(Paragraph(u'Fax: %s' % SETTINGS['fax_number'], tbl_style['Left'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u'ΘΕΜΑ: Αυτοδίκαιη Απόλυση', tbl_style['BoldLeft'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u'Σας ανακοινώνουμε ότι με την ταυτάριθμη απόφαση της Διεύθυνσης Δευτεροβάθμιας Εκπαίδευσης %s απολύεστε αυτοδίκαια και χωρίς καμία αποζημίωση από το Δημόσιο από τη θέση του/της προσωρινού/ης αναπληρωτή/τριας καθηγητή/τριας την %s/%s/%s.' % (SETTINGS['dide_place'], emptype.current_placement().date_to.day, emptype.current_placement().date_to.month, emptype.current_placement().date_to.year), tbl_style['Justify'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u'ΘΕΜΑ: Βεβαίωση Προϋπηρεσίας', tbl_style['BoldLeft'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) hours_type = '' if emptype.type().id == 1: hours_type = u'(23 ώρες την εβδομάδα)' elements.append(Paragraph(u'Σας ανακοινώνουμε ότι, όπως προκύπτει από το αρχείο που τηρείται στην υπηρεσία μας, ο/η %s %s με όνομα πατρός %s του κλάδου %s %s τοποθετήθηκε στο %s ως %s %s με σχέση εργασίας ιδιωτικού δικαίου ορισμένου χρόνου και υπηρέτησε από %s/%s/%s έως %s/%s/%s.' % (emptype.lastname, emptype.firstname, emptype.fathername, emptype.profession, emptype.profession.description, emptype.current_placement(), emptype.type(), hours_type, emptype.current_placement().date_from.day,emptype.current_placement().date_from.month,emptype.current_placement().date_from.year, emptype.current_placement().date_to.day, emptype.current_placement().date_to.month,emptype.current_placement().date_to.year), tbl_style['Justify'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u'Απόφαση διορισμού %s: %s %s/%s/%s' % (SETTINGS['ministry_title'], emptype.order().order, emptype.order().date.day, emptype.order().date.month, emptype.order().date.year), tbl_style['Left'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u'Απόφαση τοποθέτησης Διευθυντή Δ.Ε. Δωδεκανήσου: %s' % emptype.order().order_start_manager, tbl_style['Left'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u'Απόφαση απόλυσης Διευθυντή Δ.Ε. Δωδεκανήσου: %s' % emptype.order().order_end_manager, tbl_style['Left'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) if emptype.current_placement().substituteplacement.date_from_show: elements.append(Paragraph(u'Ημερομηνία ανάληψης υπηρεσίας: %s/%s/%s' % (emptype.current_placement().substituteplacement.date_from_show.day, emptype.current_placement().substituteplacement.date_from_show.month, emptype.current_placement().substituteplacement.date_from_show.year), tbl_style['Left'])) else: elements.append(Paragraph(u'Ημερομηνία ανάληψης υπηρεσίας: %s/%s/%s' % (emptype.current_placement().date_from.day, emptype.current_placement().date_from.month, emptype.current_placement().date_from.year), tbl_style['Left'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u'Χρόνος προϋπηρεσίας με βάση την υπουργική απόφαση: %s' % emptype.experience(), tbl_style['Left'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u'Το πλήρες ωράριο εβδομαδιαίας διδακτικής απασχόλησης των εκπαιδευτικών της Δευτεροβάθμιας Εκπαίδευσης κλάδων ΠΕ που ισχύει σύμφωνα με τον Ν.4152/2013 είναι 23 ώρες.', tbl_style['Justify'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u'Η βεβαίωση αυτή χορηγείται ύστερα από αίτηση του/της ενδιαφερόμενου/ης προκειμένου να τη χρησιμοποιήσει ως δικαιολογητικό για την αναγνώριση της προϋπηρεσίας του/της.', tbl_style['Justify'])) #elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) data = [] sign = os.path.join(settings.MEDIA_ROOT, "signature.png") im = Image(sign) im.drawHeight = 3.2 * cm im.drawWidth = 6.5 * cm data.append([Paragraph(u' ', signature['Center']) ,im]) table6 = Table(data, style=tsf, colWidths=[10.0 * cm, 7.0 * cm]) elements.append(table6) #elements.append(Paragraph(u' ', heading_style['Spacer'])) #elements.append(Paragraph(u' ', heading_style['Spacer'])) #elements.append(Paragraph(u'ΚΟΙΝΟΠΟΙΗΣΗ', tbl_style['BoldLeft'])) #elements.append(Paragraph(u'1. %s' % emptype.current_placement(), tbl_style['Left'])) #elements.append(Paragraph(u'2. Α.Φ.', tbl_style['Left'])) if emptype.order().order_type == 3: logo = os.path.join(settings.MEDIA_ROOT, "espa2.jpg") im = Image(logo) im.drawHeight = 3.0 * cm im.drawWidth = 16.3 * cm elements.append(im) elements.append(PageBreak()) doc.build(elements) return response
def print_pay(request, id): non_p = 1 rpt = PaymentReport.objects.get(pk=id) if request.session['matched_employee_id'] == rpt.employee_id: emp = Employee.objects.get(id=request.session['matched_employee_id']) try: emptype = Permanent.objects.get(parent_id=emp.id) except Permanent.DoesNotExist: try: emptype = NonPermanent.objects.get(parent_id=emp.id) non_p = 0 except NonPermanent.DoesNotExist: try: emptype = Administrative.objects.get(parent_id=emp.id) except Administrative.DoesNotExist: emptype = 0 except: raise else: request.session.clear() return HttpResponseRedirect('/employee/match/?next=/salary/view/') print emptype dict_tax_codes = {c.id: c.calc_type for c in PaymentCode.objects.all()} report = {} report['report_type'] = '0' report['type'] = rpt.type report['year'] = rpt.year report['emp_type'] = non_p if non_p == 1: report['registration_number'] = emptype.registration_number report['vat_number'] = emp.vat_number report['lastname'] = emp.lastname report['firstname'] = emp.firstname report['fathername'] = emp.fathername report['address'] = emp.address report['tax_office'] = emp.tax_office report['profession'] = emp.profession report['telephone_number1'] = emp.telephone_number1 report['rank'] = rpt.rank report['net_amount1'] = rpt.net_amount1 report['net_amount2'] = rpt.net_amount2 pay_cat_list = [] for i in PaymentCategory.objects.filter(paymentreport=rpt.id): pay_cat_dict = {} pay_cat_dict['title'] = i.title pay_cat_dict['month'] = i.month pay_cat_dict['year'] = i.year pay_cat_dict['start_date'] = i.start_date pay_cat_dict['end_date'] = i.end_date pay_cat_dict['payments'] = [] for o in Payment.objects.filter(category=i.id): p = {} p['type'] = o.type p['code'] = o.code p['amount'] = float(o.amount) p['info'] = o.info p['code_tax'] = dict_tax_codes[o.code_id] pay_cat_dict['payments'].append(p) pay_cat_list.append(pay_cat_dict) report['payment_categories'] = pay_cat_list response = HttpResponse(mimetype='application/pdf') response['Content-Disposition'] = 'attachment; filename=pay_report.pdf' registerFont( TTFont('DroidSans', os.path.join(settings.MEDIA_ROOT, 'DroidSans.ttf'))) registerFont( TTFont('DroidSans-Bold', os.path.join(settings.MEDIA_ROOT, 'DroidSans-Bold.ttf'))) doc = SimpleDocTemplate(response, pagesize=A4) doc.topMargin = 1.0 * cm elements = generate_pdf_structure([report]) doc.build(elements) return response
def print_mass_pay(request, year): """ This function contains the required methods to create a PDF report. It will be merged with the salary app some time later. """ def sch(c): try: return c.permanent and c.permanent.organization_serving() except: return c.organization_serving() payment_codes = PaymentCode.objects.all() category_titles = PaymentCategoryTitle.objects.all() emp = Employee.objects.get(id=request.session['matched_employee_id']) try: emptype = Permanent.objects.get(parent_id=emp.id) except Permanent.DoesNotExist: try: emptype = NonPermanent.objects.get(parent_id=emp.id) except NonPermanent.DoesNotExist: try: emptype = Administrative.objects.get(parent_id=emp.id) except Administrative.DoesNotExist: emptype = 0 except: raise emp_payments = rprts_from_user(emp.id, year, '11,12,21') u = set([x['employee_id'] for x in emp_payments]) y = {x['employee_id']: x['year'] for x in emp_payments} dict_emp = { c.id: [ c.lastname, c.firstname, c.vat_number, c.fathername, c.address, c.tax_office, u'%s' % c.profession, u'%s' % c.profession.description, c.telephone_number1, sch(c) ] for c in Employee.objects.filter(id__in=u) } elements = [] reports = [] for empx in u: r_list = calc_reports( filter(lambda s: s['employee_id'] == empx, emp_payments)) hd = r_list[0] ft = [r_list[-2]] + [r_list[-1]] dt = r_list del dt[0] del dt[-2] del dt[-1] newlist = [] output = dict() for sublist in dt: try: output[sublist[0]] = map(operator.add, output[sublist[0]], sublist[1:]) except KeyError: output[sublist[0]] = sublist[1:] for key in output.keys(): newlist.append([key] + output[key]) newlist.sort(key=lambda x: x[0], reverse=True) r_list = [hd] + newlist + ft report = {} report['report_type'] = '1' report['type'] = '' report['year'] = y[empx] report['emp_type'] = 0 report['vat_number'] = dict_emp[empx][2] report['lastname'] = dict_emp[empx][0] report['firstname'] = dict_emp[empx][1] report['fathername'] = dict_emp[empx][3] report['address'] = dict_emp[empx][4] report['tax_office'] = dict_emp[empx][5] report['profession'] = ' '.join([dict_emp[empx][6], dict_emp[empx][7]]) report['telephone_number1'] = dict_emp[empx][8] report['rank'] = None report['net_amount1'] = '' report['net_amount2'] = '' report['organization_serving'] = dict_emp[empx][9] report['payment_categories'] = r_list reports.append(report) response = HttpResponse(mimetype='application/pdf') response[ 'Content-Disposition'] = 'attachment; filename=pay_report_%s.pdf' % year registerFont( TTFont('DroidSans', os.path.join(settings.MEDIA_ROOT, 'DroidSans.ttf'))) registerFont( TTFont('DroidSans-Bold', os.path.join(settings.MEDIA_ROOT, 'DroidSans-Bold.ttf'))) doc = SimpleDocTemplate(response, pagesize=A4) doc.topMargin = 0.5 * cm doc.bottomMargin = 0.5 * cm doc.leftMargin = 1.5 * cm doc.rightMargin = 1.5 * cm doc.pagesize = landscape(A4) if year == '2012': style = getSampleStyleSheet() style.add( ParagraphStyle(name='Center', alignment=TA_CENTER, fontName='DroidSans', fontSize=12)) elements = [ Paragraph( u'ΠΑΡΑΚΑΛΟΥΜΕ ΑΠΕΥΘΥΝΘΕΙΤΕ ΣΤΗΝ ΥΠΗΡΕΣΙΑ ΓΙΑ ΤΗΝ ΜΙΣΘΟΛΟΓΙΚΗ ΚΑΤΑΣΤΑΣΗ ΤΟΥ 2012', style['Center']) ] else: elements = generate_pdf_landscape_structure(reports) doc.build(elements) return response
def print_exp_report(request): emptype = NonPermanent.objects.select_related().get(parent_id=request.session['matched_employee_id']) response = HttpResponse(mimetype='application/pdf') response['Content-Disposition'] = 'attachment; filename=exp_report.pdf' registerFont(TTFont('DroidSans', os.path.join(settings.MEDIA_ROOT, 'DroidSans.ttf'))) registerFont(TTFont('DroidSans-Bold', os.path.join(settings.MEDIA_ROOT, 'DroidSans-Bold.ttf'))) doc = SimpleDocTemplate(response, pagesize=A4) doc.topMargin = 1.0 * cm doc.bottomMargin = 1.0 * cm doc.leftMargin = 1.5 * cm doc.rightMargin = 1.5 * cm elements = [] logo = os.path.join(settings.MEDIA_ROOT, "logo.png") width, height = A4 head_logo = getSampleStyleSheet() head_logo.add(ParagraphStyle(name='Center', alignment=TA_CENTER, fontName='DroidSans', fontSize=8)) heading_style = getSampleStyleSheet() heading_style.add(ParagraphStyle(name='Center', alignment=TA_CENTER, fontName='DroidSans-Bold', fontSize=12)) heading_style.add(ParagraphStyle(name='Spacer', spaceBefore=5, spaceAfter=5, fontName='DroidSans-Bold', fontSize=12)) signature = getSampleStyleSheet() signature.add(ParagraphStyle(name='Center', alignment=TA_CENTER, fontName='DroidSans', fontSize=10)) tbl_style = getSampleStyleSheet() tbl_style.add(ParagraphStyle(name='Left', alignment=TA_LEFT, fontName='DroidSans', fontSize=10)) tbl_style.add(ParagraphStyle(name='Right', alignment=TA_RIGHT, fontName='DroidSans', fontSize=10)) tbl_style.add(ParagraphStyle(name='Justify', alignment=TA_JUSTIFY, fontName='DroidSans', fontSize=10)) tbl_style.add(ParagraphStyle(name='BoldLeft', alignment=TA_LEFT, fontName='DroidSans-Bold', fontSize=10)) tbl_style.add(ParagraphStyle(name='BoldRight', alignment=TA_RIGHT, fontName='DroidSans-Bold', fontSize=10)) tsl = [('ALIGN', (0, 0), (-1, -1), 'CENTER'), ('FONT', (0, 0), (-1, 0), 'DroidSans'), ('FONTSIZE', (0, 0), (-1, 0), 8), ('BOTTOMPADDING', (0, 0), (-1, -1), 0), ('TOPPADDING', (0, 0), (-1, -1), 0)] tsh = [('ALIGN', (1, 1), (-1, -1), 'LEFT'), ('BOX', (0, 0), (-1, -1), 0.25, colors.black)] ts = [('ALIGN', (1, 1), (-1, -1), 'LEFT'), ('FONT', (0, 0), (-1, 0), 'DroidSans'), ('BOX', (0, 0), (-1, -1), 0.25, colors.black), ('GRID', (0, 0), (-1, -1), 0.5, colors.black)] tsf = [('ALIGN', (1, 1), (-1, -1), 'CENTER')] im = Image(logo) im.drawHeight = 1.25 * cm im.drawWidth = 1.25 * cm data = [] date_plus1 = emptype.current_placement().date_to data.append([Paragraph(u'Ρόδος, %s / %s / %s' % (date_plus1.day, date_plus1.month, date_plus1.year), tbl_style['Left'])]) data.append([Paragraph(u' ', heading_style['Spacer'])]) data.append([Paragraph(u' ', heading_style['Spacer'])]) data.append([Paragraph(u'Αρ. Πρωτ.: %s' % protocol_number(emptype.order().order_end_manager), tbl_style['Left'])]) tableh = Table(data, style=tsl, colWidths=[6.0 * cm]) data = [] data.append([im, '', '']) data.append([Paragraph(u'ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ', head_logo['Center']), '', '']) data.append([Paragraph(u'ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ', head_logo['Center']), '', '']) data.append([Paragraph(u'ΚΑΙ ΘΡΗΣΚΕΥΜΑΤΩΝ', head_logo['Center']), '', Paragraph(u'Ρόδος, %s / %s / %s' % (date_plus1.day, date_plus1.month, date_plus1.year), tbl_style['Left'])]) data.append([Paragraph(u'ΠΕΡΙΦΕΡΕΙΑΚΗ ΔΙΕΥΘΥΝΣΗ ΠΡΩΤΟΒΑΘΜΙΑΣ', head_logo['Center']), '', Paragraph(u'Αρ. Πρωτ.: %s' % protocol_number(emptype.order().order_end_manager), tbl_style['Left'])]) data.append([Paragraph(u'ΚΑΙ ΔΕΥΤΕΡΟΒΑΘΜΙΑΣ ΕΚΠΑΙΔΕΥΣΗΣ ΝΟΤΙΟΥ ΑΙΓΑΙΟΥ', head_logo['Center']), '', '']) data.append([Paragraph(u'ΔΙΕΥΘΥΝΣΗ ΔΕΥΤΕΡΟΒΑΘΜΙΑΣ ΕΚΠΑΙΔΕΥΣΗΣ ΔΩΔΕΚΑΝΗΣΟΥ', head_logo['Center']), Paragraph(u'ΠΡΟΣ:', tbl_style['BoldRight']), Paragraph(u'%s %s' % (emptype.lastname, emptype.firstname), tbl_style['BoldLeft'])]) table0 = Table(data, style=tsl, colWidths=[8.0 * cm, 5.0 * cm, 6.0 * cm]) elements.append(table0) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u'Ταχ. Διεύθυνση: %s' % SETTINGS['address'], tbl_style['Left'])) elements.append(Paragraph(u'Πληροφορίες: %s' % SETTINGS['substitutes_contact_person'], tbl_style['Left'])) elements.append(Paragraph(u'Τηλέφωνο: %s' % SETTINGS['substitutes_contact_telephone_number'], tbl_style['Left'])) elements.append(Paragraph(u'Email: %s' % SETTINGS['email_substitutes'], tbl_style['Left'])) elements.append(Paragraph(u'Fax: %s' % SETTINGS['fax_number'], tbl_style['Left'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u'ΘΕΜΑ: Αυτοδίκαιη Απόλυση', tbl_style['BoldLeft'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u'Σας ανακοινώνουμε ότι με την ταυτάριθμη απόφαση της Διεύθυνσης Δευτεροβάθμιας Εκπαίδευσης %s απολύεστε αυτοδίκαια και χωρίς καμία αποζημίωση από το Δημόσιο από τη θέση του/της προσωρινού/ης αναπληρωτή/τριας καθηγητή/τριας την %s/%s/%s.' % (SETTINGS['dide_place'], emptype.current_placement().date_to.day, emptype.current_placement().date_to.month, emptype.current_placement().date_to.year), tbl_style['Justify'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u'ΘΕΜΑ: Βεβαίωση Προϋπηρεσίας', tbl_style['BoldLeft'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) hours_type = '' if emptype.type().id == 1: hours_type = u'(23 ώρες την εβδομάδα)' elements.append(Paragraph(u'Σας ανακοινώνουμε ότι, όπως προκύπτει από το αρχείο που τηρείται στην υπηρεσία μας, ο/η %s %s με όνομα πατρός %s του κλάδου %s %s τοποθετήθηκε στο %s ως %s %s με σχέση εργασίας ιδιωτικού δικαίου ορισμένου χρόνου και υπηρέτησε από %s/%s/%s έως %s/%s/%s.' % (emptype.lastname, emptype.firstname, emptype.fathername, emptype.profession, emptype.profession.description, emptype.current_placement(), emptype.type(), hours_type, emptype.current_placement().date_from.day,emptype.current_placement().date_from.month,emptype.current_placement().date_from.year, emptype.current_placement().date_to.day, emptype.current_placement().date_to.month,emptype.current_placement().date_to.year), tbl_style['Justify'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u'Απόφαση διορισμού %s: %s %s/%s/%s' % (SETTINGS['ministry_title'], emptype.order().order, emptype.order().date.day, emptype.order().date.month, emptype.order().date.year), tbl_style['Left'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u'Απόφαση τοποθέτησης Διευθυντή Δ.Ε. Δωδεκανήσου: %s' % emptype.order().order_start_manager, tbl_style['Left'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u'Απόφαση απόλυσης Διευθυντή Δ.Ε. Δωδεκανήσου: %s' % emptype.order().order_end_manager, tbl_style['Left'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) if emptype.current_placement().substituteplacement.date_from_show: elements.append(Paragraph(u'Ημερομηνία ανάληψης υπηρεσίας: %s/%s/%s' % (emptype.current_placement().substituteplacement.date_from_show.day, emptype.current_placement().substituteplacement.date_from_show.month, emptype.current_placement().substituteplacement.date_from_show.year), tbl_style['Left'])) else: elements.append(Paragraph(u'Ημερομηνία ανάληψης υπηρεσίας: %s/%s/%s' % (emptype.current_placement().date_from.day, emptype.current_placement().date_from.month, emptype.current_placement().date_from.year), tbl_style['Left'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u'Χρόνος προϋπηρεσίας για μισθολογικό κλιμάκιο: %s' % emptype.experience_salary(), tbl_style['Left'])) elements.append(Paragraph(u'Χρόνος προϋπηρεσίας για πίνακες αναπληρωτών: %s' % emptype.experience(), tbl_style['Left'])) # if emptype.current_placement().substituteplacement.date_from_show: # elements.append(Paragraph(u'Χρόνος προϋπηρεσίας για μισθολογικό κλιμάκιο: %s/%s/%s - %s/%s/%s' % (emptype.current_placement().substituteplacement.date_from_show.day, emptype.current_placement().substituteplacement.date_from_show.month, emptype.current_placement().substituteplacement.date_from_show.year, emptype.current_placement().date_to.day, emptype.current_placement().date_to.month, emptype.current_placement().date_to.year), tbl_style['Left'])) # else: # elements.append(Paragraph(u'Χρόνος προϋπηρεσίας για μισθολογικό κλιμάκιο: %s/%s/%s - %s/%s/%s' % (emptype.current_placement().date_from.day, emptype.current_placement().date_from.month, emptype.current_placement().date_from.year, emptype.current_placement().date_to.day, emptype.current_placement().date_to.month, emptype.current_placement().date_to.year), tbl_style['Left'])) # elements.append(Paragraph(u'Χρόνος προϋπηρεσίας για πίνακες αναπληρωτών: %s/%s/%s - %s/%s/%s' % (emptype.current_placement().date_from.day, emptype.current_placement().date_from.month, emptype.current_placement().date_from.year, emptype.current_placement().date_to.day, emptype.current_placement().date_to.month, emptype.current_placement().date_to.year), tbl_style['Left'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u'Το πλήρες ωράριο εβδομαδιαίας διδακτικής απασχόλησης των εκπαιδευτικών της Δευτεροβάθμιας Εκπαίδευσης κλάδων ΠΕ που ισχύει σύμφωνα με τον Ν.4152/2013 είναι 23 ώρες.', tbl_style['Justify'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u'Η βεβαίωση αυτή χορηγείται ύστερα από αίτηση του/της ενδιαφερόμενου/ης προκειμένου να τη χρησιμοποιήσει ως δικαιολογητικό για την αναγνώριση της προϋπηρεσίας του/της.', tbl_style['Justify'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) data = [] sign = os.path.join(settings.MEDIA_ROOT, "signature.png") im = Image(sign) im.drawHeight = 3.2 * cm im.drawWidth = 6.5 * cm data.append([Paragraph(u' ', signature['Center']) ,im]) table6 = Table(data, style=tsf, colWidths=[10.0 * cm, 7.0 * cm]) elements.append(table6) if emptype.order().order_type == 3: logo = os.path.join(settings.MEDIA_ROOT, "espa2.jpg") im = Image(logo) im.drawHeight = 3.0 * cm im.drawWidth = 16.3 * cm elements.append(im) elements.append(PageBreak()) doc.build(elements) return response
def print_emp_report(request, fid): emp = NonPermanent.objects.select_related().get(parent_id=request.session['matched_employee_id']) reports = NonPermanentUnemploymentMonth.objects.select_related().filter(employee_id=request.session['matched_employee_id'],insurance_file=fid) response = HttpResponse(mimetype='application/pdf') response['Content-Disposition'] = 'attachment; filename=emp_report.pdf' registerFont(TTFont('DroidSans', os.path.join(settings.MEDIA_ROOT, 'DroidSans.ttf'))) registerFont(TTFont('DroidSans-Bold', os.path.join(settings.MEDIA_ROOT, 'DroidSans-Bold.ttf'))) doc = SimpleDocTemplate(response, pagesize=A4) doc.topMargin = 1.0 * cm doc.leftMargin = 1.5 * cm doc.rightMargin = 1.5 * cm elements = [] head_logo = getSampleStyleSheet() head_logo.add(ParagraphStyle(name='Center', alignment=TA_CENTER, fontName='DroidSans', fontSize=8)) heading_style = getSampleStyleSheet() heading_style.add(ParagraphStyle(name='Center', alignment=TA_CENTER, fontName='DroidSans-Bold', fontSize=12)) heading_style.add(ParagraphStyle(name='Spacer', spaceBefore=5, spaceAfter=5, fontName='DroidSans-Bold', fontSize=12)) signature = getSampleStyleSheet() signature.add(ParagraphStyle(name='Center', alignment=TA_CENTER, fontName='DroidSans', fontSize=10)) tbl_style = getSampleStyleSheet() tbl_style.add(ParagraphStyle(name='Left', alignment=TA_LEFT, fontName='DroidSans', fontSize=10)) tbl_style.add(ParagraphStyle(name='Right', alignment=TA_RIGHT, fontName='DroidSans', fontSize=10)) tbl_style.add(ParagraphStyle(name='Justify', alignment=TA_JUSTIFY, fontName='DroidSans', fontSize=10)) tbl_style.add(ParagraphStyle(name='BoldLeft', alignment=TA_LEFT, fontName='DroidSans-Bold', fontSize=10)) tsl = [('ALIGN', (0, 0), (-1, -1), 'CENTER'), ('FONT', (0, 0), (-1, 0), 'DroidSans'), ('FONTSIZE', (0, 0), (-1, 0), 8), ('BOTTOMPADDING', (0, 0), (-1, -1), 0), ('TOPPADDING', (0, 0), (-1, -1), 0)] tsh = [('ALIGN', (1, 1), (-1, -1), 'LEFT'), ('BOX', (0, 0), (-1, -1), 0.25, colors.black)] ts = [('ALIGN', (1, 1), (-1, -1), 'LEFT'), ('FONT', (0, 0), (-1, 0), 'DroidSans'), ('BOX', (0, 0), (-1, -1), 0.25, colors.black), ('GRID', (0, 0), (-1, -1), 0.5, colors.black)] tsf = [('ALIGN', (1, 1), (-1, -1), 'CENTER')] for r in reports: data = [] elements.append(Paragraph(u'ΒΕΒΑΙΩΣΗ ΕΡΓΟΔΟΤΗ', heading_style['Center'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) data.append([Paragraph(u'ΕΠΩΝΥΜΙΑ ΕΡΓΟΔΟΤΗ ', tbl_style['Left']) , Paragraph(u'Διεύθυνση ΔΕ %s' % SETTINGS['dide_place'], tbl_style['Left'])]) data.append([Paragraph(u'ΑΡΙΘΜΟΣ ΜΗΤΡΩΟΥ: %s' % SETTINGS['ika_code_dde'], tbl_style['Left']), Paragraph(u'Α.Φ.Μ. ΕΡΓΟΔΟΤΗ: %s' % SETTINGS['afm_dide'], tbl_style['Left'])]) data.append([Paragraph(u'ΑΡΜΟΔΙΟ ΥΠΟΚΑΤΑΣΤΗΜΑ ΙΚΑ ΕΛΕΓΧΟΥ ', tbl_style['Left']), Paragraph(u' ', tbl_style['Left'])]) data.append([Paragraph(u'ΚΩΔΙΚΟΣ - ΟΝΟΜΑΣΙΑ ', tbl_style['Left']), Paragraph(u'%s' % SETTINGS['ika_code'] , tbl_style['Left'])]) table = Table(data, style=tsf, colWidths=[7.0 * cm, 11.0 * cm]) elements.append(table) elements.append(Paragraph(u' ', heading_style['Spacer'])) data = [] elements.append(Paragraph(u'Βεβαιώνουμε ότι:' , tbl_style['Left'])) elements.append(Paragraph(u'Ο/Η ασφαλισμένος με τα κάτωθι ασφαλιστικά στοιχεία απασχολήθηκε στην υπηρεσία μας κατά τις μισθολογικές περιόδους που ακολουθούν:' , tbl_style['Left'])) elements.append(Paragraph(u' ', heading_style['Spacer'])) elements.append(Paragraph(u'ΣΤΟΙΧΕΙΑ ΥΠΑΛΛΗΛΟΥ', tbl_style['BoldLeft'])) data.append([Paragraph(u'ΑΡ. ΠΑΡΑΡΤ. / Κ.Α.Δ. ', tbl_style['Left']), Paragraph(u'%s' % SETTINGS['subject_kad'], tbl_style['Right'])]) data.append([Paragraph(u'ΑΜΑ: ', tbl_style['Left']), Paragraph(u'%s' % emp.ama, tbl_style['Right'])]) data.append([Paragraph(u'Α.Μ.Κ.Α.: ', tbl_style['Left']), Paragraph(u'%s' % emp.social_security_registration_number, tbl_style['Right'])]) data.append([Paragraph(u'ΕΠΩΝΥΜΟ: ', tbl_style['Left']), Paragraph(u'%s' % emp.lastname, tbl_style['Right'])]) data.append([Paragraph(u'ΟΝΟΜΑ: ', tbl_style['Left']), Paragraph(u'%s' % emp.firstname, tbl_style['Right'])]) data.append([Paragraph(u'ΟΝΟΜΑ ΠΑΤΡΟΣ: ', tbl_style['Left']), Paragraph(u'%s' % emp.fathername, tbl_style['Right'])]) data.append([Paragraph(u'ΟΝΟΜΑ ΜΗΤΡΟΣ: ', tbl_style['Left']), Paragraph(u'%s' % emp.mothername, tbl_style['Right'])]) if emp.birth_date == None: data.append([Paragraph(u'ΗΜΕΡΟΜΗΝΙΑ ΓΕΝΝΗΣΕΩΣ: ', tbl_style['Left']), Paragraph(u' ', tbl_style['Right'])]) else: data.append([Paragraph(u'ΗΜΕΡΟΜΗΝΙΑ ΓΕΝΝΗΣΕΩΣ: ', tbl_style['Left']), Paragraph(u'%s / %s / %s' % (emp.birth_date.day, emp.birth_date.month, emp.birth_date.year), tbl_style['Right'])]) data.append([Paragraph(u'Α.Φ.Μ.: ', tbl_style['Left']), Paragraph(u'%s' % emp.vat_number, tbl_style['Right'])]) data.append([Paragraph(u'ΚΩΔΙΚΟΣ ΕΙΔΙΚΟΤΗΤΑΣ: ', tbl_style['Left']), Paragraph(u'%s' % emp.type(), tbl_style['Right'])]) if emp.other_social_security: ec = emp.other_social_security.code else: ec = '101' data.append([Paragraph(u'ΠΑΚΕΤΟ ΚΑΛΥΨΗΣ: ', tbl_style['Left']), Paragraph(u'%s' % ec, tbl_style['Right'])]) data.append([Paragraph(u'ΜΙΣΘΟΛΟΓΙΚΗ ΠΕΡΙΟΔΟΣ: ', tbl_style['Left']), Paragraph(u'%s / %s' % (r.month, r.year), tbl_style['Right'])]) if r.insured_from.strip() in ('', '/ /'): dtf = '01/'+ str(r.month) + '/' + str(r.year) dtt = str(calendar.monthrange(r.year, r.month)[1]) + '/' + str(r.month) + '/' + str(r.year) else: dtf = r.insured_from dtt = r.insured_to data.append([Paragraph(u'ΑΠΟ ΗΜΕΡΟΜΗΝΙΑ ΑΠΑΣΧΟΛΗΣΗΣ: ', tbl_style['Left']), Paragraph(u'%s' % dtf, tbl_style['Right'])]) data.append([Paragraph(u'ΕΩΣ ΗΜΕΡΟΜΗΝΙΑ ΑΠΑΣΧΟΛΗΣΗΣ: ', tbl_style['Left']), Paragraph(u'%s' % dtt, tbl_style['Right'])]) data.append([Paragraph(u'ΤΥΠΟΣ ΑΠΟΔΟΧΩΝ: ', tbl_style['Left']), Paragraph(u'%s' % r.pay_type, tbl_style['Right'])]) data.append([Paragraph(u'ΗΜΕΡΕΣ ΑΣΦΑΛΙΣΗΣ: ', tbl_style['Left']), Paragraph(u'%s' % r.days_insured, tbl_style['Right'])]) lpam = r.total_earned.split('.')[0] rpam = r.total_earned.split('.')[1] if len(rpam) == 1: rpam = rpam + '0' data.append([Paragraph(u'ΑΠΟΔΟΧΕΣ: ', tbl_style['Left']), Paragraph(u'%s.%s' % (lpam, rpam), tbl_style['Right'])]) lpam = r.employee_contributions.split('.')[0] rpam = r.employee_contributions.split('.')[1] if len(rpam) == 1: rpam = rpam + '0' data.append([Paragraph(u'ΕΙΣΦΟΡΕΣ ΑΣΦΑΛΙΣΜΕΝΟΥ: ', tbl_style['Left']), Paragraph(u'%s.%s' % (lpam, rpam), tbl_style['Right'])]) lpam = r.employer_contributions.split('.')[0] rpam = r.employer_contributions.split('.')[1] if len(rpam) == 1: rpam = rpam + '0' data.append([Paragraph(u'ΕΙΣΦΟΡΕΣ ΕΡΓΟΔΟΤΗ: ', tbl_style['Left']), Paragraph(u'%s.%s' % (lpam, rpam), tbl_style['Right'])]) lpam = r.total_contributions.split('.')[0] rpam = r.total_contributions.split('.')[1] if len(rpam) == 1: rpam = rpam + '0' data.append([Paragraph(u'ΣΥΝΟΛΙΚΕΣ ΕΙΣΦΟΡΕΣ: ', tbl_style['Left']), Paragraph(u'%s.%s' % (lpam, rpam), tbl_style['Right'])]) data.append([Paragraph(u'ΚΑΤΑΒΛ. ΕΙΣΦΟΡΕΣ: ', tbl_style['Left']), Paragraph(u'%s.%s' % (lpam, rpam), tbl_style['Right'])]) table = Table(data, style=tsf, colWidths=[10.0 * cm, 8.0 * cm]) elements.append(table) data = [] elements.append(Paragraph(u'Η παραπάνω βεβαίωση χορηγείται για απόδειξη της ασφάλισης στις προαναφερθείσες περιόδους.', tbl_style['Left'])) elements.append(Paragraph(u'ΠΑΡΑΤΗΡΗΣΗ', tbl_style['Left'])) elements.append(Paragraph(u'Τα αναγραφόμενα στην παρούσα Βεβαίωση ασφαλιστικά στοιχεία λαμβάνονται υπόψη μέχρι την επεξεργασία της Α.Π.Δ. των συγκεκριμένων μισθολογικών περιόδων και την υποβολή και έκδοση από το ΙΚΑ του αντίστοιχου Αποσπάσματος Ατομικού Λογαριασμού Ασφάλισης.', tbl_style['Justify'])) today = datetime.date.today() data.append([Paragraph(u' ', signature['Center']) ,Paragraph(u'Ρόδος, %s / %s / %s' % (today.day, today.month, today.year), signature['Center'])]) table = Table(data, style=tsf, colWidths=[9.0 * cm, 8.0 * cm]) elements.append(table) elements.append(Paragraph(u' ', heading_style['Spacer'])) data = [] sign = os.path.join(settings.MEDIA_ROOT, "signature.png") im = Image(sign) im.drawHeight = 3.2 * cm im.drawWidth = 6.5 * cm data.append([Paragraph(u' ', signature['Center']), im]) table = Table(data, style=tsf, colWidths=[10.0 * cm, 7.0 * cm]) elements.append(table) elements.append(PageBreak()) doc.build(elements) return response