Leyenda cancelada en PDF a partir de JSON
This commit is contained in:
parent
cf0c4b8622
commit
538a9f39ce
|
@ -29,6 +29,9 @@ from reportlab.platypus import Paragraph, Table, TableStyle, Spacer
|
||||||
from reportlab.pdfgen import canvas
|
from reportlab.pdfgen import canvas
|
||||||
|
|
||||||
|
|
||||||
|
CANCEL = False
|
||||||
|
|
||||||
|
|
||||||
#~ https://github.com/kennethreitz/requests/blob/v1.2.3/requests/structures.py#L37
|
#~ https://github.com/kennethreitz/requests/blob/v1.2.3/requests/structures.py#L37
|
||||||
class CaseInsensitiveDict(collections.MutableMapping):
|
class CaseInsensitiveDict(collections.MutableMapping):
|
||||||
"""A case-insensitive ``dict``-like object.
|
"""A case-insensitive ``dict``-like object.
|
||||||
|
@ -358,6 +361,7 @@ class NumberedCanvas(canvas.Canvas):
|
||||||
for state in self._saved_page_states:
|
for state in self._saved_page_states:
|
||||||
self.__dict__.update(state)
|
self.__dict__.update(state)
|
||||||
self.draw_page_number(page_count)
|
self.draw_page_number(page_count)
|
||||||
|
self.draw_cancel()
|
||||||
canvas.Canvas.showPage(self)
|
canvas.Canvas.showPage(self)
|
||||||
canvas.Canvas.save(self)
|
canvas.Canvas.save(self)
|
||||||
return
|
return
|
||||||
|
@ -375,6 +379,15 @@ class NumberedCanvas(canvas.Canvas):
|
||||||
self.drawString(1.5 * cm, 1.5 * cm, text)
|
self.drawString(1.5 * cm, 1.5 * cm, text)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
def draw_cancel(self):
|
||||||
|
global CANCEL
|
||||||
|
if CANCEL:
|
||||||
|
self.rotate(45)
|
||||||
|
self.setFont('Helvetica', 100)
|
||||||
|
self.setFillColor(colors.red)
|
||||||
|
text = 'Cancelada'
|
||||||
|
self.drawCentredString(20 * cm, 3 * cm, text)
|
||||||
|
return
|
||||||
|
|
||||||
class TemplateInvoice(BaseDocTemplate):
|
class TemplateInvoice(BaseDocTemplate):
|
||||||
|
|
||||||
|
@ -425,6 +438,7 @@ class TemplateInvoice(BaseDocTemplate):
|
||||||
logo_style = styles.pop('logo', {})
|
logo_style = styles.pop('logo', {})
|
||||||
logo_path2 = data.pop('logo2', '')
|
logo_path2 = data.pop('logo2', '')
|
||||||
logo_style2 = styles.pop('logo2', {})
|
logo_style2 = styles.pop('logo2', {})
|
||||||
|
sucursales = styles.pop('sucursales', {})
|
||||||
|
|
||||||
for k, v in styles.items():
|
for k, v in styles.items():
|
||||||
self._set_text(styles[k], data.get(k, ''))
|
self._set_text(styles[k], data.get(k, ''))
|
||||||
|
@ -443,6 +457,20 @@ class TemplateInvoice(BaseDocTemplate):
|
||||||
rect[k] = rect[k] * cm
|
rect[k] = rect[k] * cm
|
||||||
self.canv.drawImage(logo_path2, **rect)
|
self.canv.drawImage(logo_path2, **rect)
|
||||||
|
|
||||||
|
if sucursales:
|
||||||
|
for k, sucursal in sucursales.items():
|
||||||
|
values = sucursal.pop('textos')
|
||||||
|
x = sucursal['rectangulo']['x']
|
||||||
|
y = sucursal['rectangulo']['y']
|
||||||
|
w = sucursal['rectangulo']['width']
|
||||||
|
h = sucursal['rectangulo']['height']
|
||||||
|
for v in values:
|
||||||
|
self._set_text(sucursal, v)
|
||||||
|
y -= h
|
||||||
|
sucursal['rectangulo']['x'] = x
|
||||||
|
sucursal['rectangulo']['y'] = y
|
||||||
|
sucursal['rectangulo']['width'] = w
|
||||||
|
sucursal['rectangulo']['height'] = h
|
||||||
return
|
return
|
||||||
|
|
||||||
def _receptor(self, styles, data):
|
def _receptor(self, styles, data):
|
||||||
|
@ -618,8 +646,10 @@ class TemplateInvoice(BaseDocTemplate):
|
||||||
return self._data
|
return self._data
|
||||||
@data.setter
|
@data.setter
|
||||||
def data(self, values):
|
def data(self, values):
|
||||||
|
global CANCEL
|
||||||
# ~ print (values)
|
# ~ print (values)
|
||||||
self._data = values
|
self._data = values
|
||||||
|
CANCEL = self._data['cancelada']
|
||||||
|
|
||||||
rows = self._conceptos(self._data['conceptos'])
|
rows = self._conceptos(self._data['conceptos'])
|
||||||
widths = [2 * cm, 9 * cm, 1.5 * cm, 2 * cm, 2 * cm, 3 * cm]
|
widths = [2 * cm, 9 * cm, 1.5 * cm, 2 * cm, 2 * cm, 3 * cm]
|
||||||
|
@ -645,7 +675,7 @@ class TemplateInvoice(BaseDocTemplate):
|
||||||
comprobante = self._comprobante2(
|
comprobante = self._comprobante2(
|
||||||
self._custom_styles['comprobante'], self.data['comprobante'])
|
self._custom_styles['comprobante'], self.data['comprobante'])
|
||||||
|
|
||||||
self._rows = [Spacer(0, 6*cm), table_conceptos, totales] + comprobante
|
self._rows = [Spacer(0, 5.7 * cm), table_conceptos, totales] + comprobante
|
||||||
|
|
||||||
def render(self):
|
def render(self):
|
||||||
frame = Frame(self.leftMargin, self.bottomMargin,
|
frame = Frame(self.leftMargin, self.bottomMargin,
|
||||||
|
|
Loading…
Reference in New Issue