def listar_grilla(self): from clases import listado from reportlab.platypus import Paragraph as Par from reportlab.lib.pagesizes import A4 datos = self.obj("grilla").get_model() cant = len(datos) head = listado.tabla_celda_titulo() body_ce = listado.tabla_celda_centrado() body_de = listado.tabla_celda_just_derecho() body_iz = listado.tabla_celda_just_izquierdo() lista = [[ Par("Cód. Moneda", head), Par("Moneda", head), Par("Fecha", head), Par("Compra", head), Par("Venta", head) ]] for i in range(0, cant): lista.append([ Par(str(datos[i][0]), body_ce), Par(datos[i][1], body_iz), Par(datos[i][2], body_ce), Par(str(datos[i][3]), body_de), Par(str(datos[i][4]), body_de) ]) listado.listado(self.titulo, lista, [70, 100, 100, 70, 70], A4)
def genera_asistencia_empleado(datos, datos_tabla): ubicacion_archivo = dialogo_guardar("Asistencias") if ubicacion_archivo is not None: # Si no tiene la terminación .pdf se le agrega if ubicacion_archivo[-4:].lower() != ".pdf": ubicacion_archivo += ".pdf" story = [] cabecera = cabecera_style() texto = tabla_celda_just_izquierdo() titulo = tabla_celda_just_derecho() parrafo = Par("Registro de Asistencias", cabecera) story.append(parrafo) story.append(Spacer(0, 20)) # Generar encabezado tabla = Table([ [Par("<b>Empleado:</b>", titulo), Par(datos[0], texto)], [Par("<b>Nro. C.I.:</b>", titulo), Par(datos[1], texto)], [Par("<b>Nro. Contrato:</b>", titulo), Par(datos[2], texto)], [Par("<b>Cargo:</b>", titulo), Par(datos[3], texto)] ], [100, 300]) tabla.setStyle([ ('ALIGN', (0, 0), (0, -1), 'RIGHT'), # Alineación de la Primera Columna ('ALIGN', (1, 1), (-1, -1), 'LEFT'), # Alineación de Otras Columnas ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), # Alineación Vertical de la Tabla ('TOPPADDING', (0, 0), (-1, -1), 1), # Espacio Arriba ('BOTTOMPADDING', (0, 0), (-1, -1), 3), # Espacio Abajo ('LEFTPADDING', (0, 0), (-1, -1), 3), # Espacio a la Izquierda ('RIGHTPADDING', (0, 0), (-1, -1), 3), # Espacio a la Derecha ]) story.append(tabla) story.append(Spacer(0, 20)) # Generar Tabla de Asistencias tabla = Table(datos_tabla, [125, 75, 50, 175, 75]) tabla = tabla_style(tabla) story.append(tabla) doc = SimpleDocTemplate( ubicacion_archivo, pagesize=A4, # Tamaño de Página (landscape(A4) hoja horizontal) leftMargin=3 * cm, # Margen Izquierdo rightMargin=3 * cm, # Margen Derecho topMargin=2.5 * cm, # Margen Superior bottomMargin=2.5 * cm, # Margen Inferior allowSplitting=1, title="Registro de Asistencias", author="Sistema Distribuidora" ) try: # Generar Archivo doc.build(story) popen(ubicacion_archivo) except PermissionError as e: error_permiso_archivo(str(e))
def listar_grilla(self): from clases import listado from reportlab.platypus import Paragraph as Par from reportlab.lib.pagesizes import A4 datos = self.obj("grilla").get_model() cant = len(datos) head = listado.tabla_celda_titulo() body_ce = listado.tabla_celda_centrado() body_iz = listado.tabla_celda_just_izquierdo() lista = [[ Par("Código", head), Par("Nombre", head), Par("País", head), Par("Símbolo", head) ]] for i in range(0, cant): lista.append([ Par(str(datos[i][0]), body_ce), Par(datos[i][1], body_iz), Par(datos[i][3], body_iz), Par(datos[i][4], body_ce) ]) listado.listado(self.titulo, lista, [100, 150, 150, 100], A4)
def listar_grilla(self): from clases import listado from reportlab.platypus import Paragraph as Par from reportlab.lib.pagesizes import A4 datos = self.obj("grilla").get_model() cant = len(datos) head = listado.tabla_celda_titulo() body_ce = listado.tabla_celda_centrado() body_iz = listado.tabla_celda_just_izquierdo() lista = [[ Par("Empleado", head), Par("Beneficiario", head), Par("Edad", head), Par("Parentesco", head) ]] for i in range(0, cant): lista.append([ Par(str(datos[i][3]), body_ce), Par(datos[i][9], body_ce), Par(datos[i][11], body_iz), Par(datos[i][15], body_iz) ]) listado.listado(self.titulo, lista, [125, 125, 75, 100], A4)
def listar_grilla(self): from clases import listado from reportlab.platypus import Paragraph as Par from reportlab.lib.pagesizes import A4 datos = self.obj("grilla").get_model() cant = len(datos) head = listado.tabla_celda_titulo() body_ce = listado.tabla_celda_centrado() body_iz = listado.tabla_celda_just_izquierdo() lista = [[ Par("Nro. de Orden", head), Par("Fecha de Elaboración", head), Par("Alias de Usuario", head), Par("Nombre", head) ]] for i in range(0, cant): lista.append([ Par(str(datos[i][0]), body_ce), Par(datos[i][1], body_ce), Par(datos[i][9], body_ce), Par(str(datos[i][11]), body_iz) ]) listado.listado(self.titulo, lista, [70, 125, 75, 150], A4)
def on_btn_aprobar_clicked(self, objeto): self.encabezado_guardado = False self.guardar_encabezado("1") # Generar Orden en formato PDF orden = self.obj("txt_00").get_text() proveedor = [ self.obj("txt_01_2").get_text(), self.obj("txt_01_1").get_text(), self.obj("txt_01_3").get_text(), self.obj("txt_01_4").get_text() ] # Obtención de los datos de la Tabla, los detalles de la Orden datos = self.obj("grilla").get_model() cant = len(datos) from clases.listado import tabla_celda_titulo from clases.listado import tabla_celda_centrado from clases.listado import tabla_celda_just_izquierdo from clases.listado import tabla_celda_just_derecho from informes.compra_ordenes import genera_orden_compra from reportlab.platypus import Paragraph as Par head = tabla_celda_titulo() body_ce = tabla_celda_centrado() body_iz = tabla_celda_just_izquierdo() body_de = tabla_celda_just_derecho() lista = [[ Par("Cód. Ítem", head), Par("Código de Barras", head), Par("Nombre", head), Par("Cantidad", head) ]] for i in range(0, cant): codbar = "" if datos[i][1] is None else datos[i][1] lista.append([ Par(str(datos[i][0]), body_ce), Par(codbar, body_iz), Par(datos[i][2], body_ce), Par(str(datos[i][5]), body_de) ]) # Obtención de la Forma de Pago del Combo de Pago model = self.obj("cmb_pago").get_model() active = self.obj("cmb_pago").get_active() pago = model[active][1] datos = [orden, proveedor, pago, lista] genera_orden_compra(datos) self.guardar_cerrar()
def listar_grilla(self): from clases import listado from reportlab.platypus import Paragraph as Par from reportlab.lib.pagesizes import A4, landscape datos = self.obj("grilla").get_model() cant = len(datos) head = listado.tabla_celda_titulo() body_ce = listado.tabla_celda_centrado() body_iz = listado.tabla_celda_just_izquierdo() lista = [[Par("Nro. Tarjeta", head), Par("Banco", head), Par("Titular", head), Par("Fecha de Vencimiento", head), Par("Tipo", head)]] for i in range(0, cant): lista.append([Par(datos[i][0], body_ce), Par(datos[i][4], body_iz), Par(datos[i][10], body_iz), Par(datos[i][15], body_ce), Par(datos[i][14], body_ce)]) listado.listado(self.titulo, lista, [125, 170, 170, 150, 75], landscape(A4))
def listar_grilla(self): from clases import listado from reportlab.platypus import Paragraph as Par from reportlab.lib.pagesizes import A4 datos = self.obj("grilla").get_model() cant = len(datos) head = listado.tabla_celda_titulo() body_ce = listado.tabla_celda_centrado() body_de = listado.tabla_celda_just_derecho() body_iz = listado.tabla_celda_just_izquierdo() lista = [[Par("Código", head), Par("Descripción", head), Par("Tipo de Denominación", head), Par("Valor", head)]] for i in range(0, cant): lista.append([Par(str(datos[i][0]), body_ce), Par(datos[i][1], body_iz), Par(datos[i][3], body_iz), Par(str(datos[i][4]), body_de)]) listado.listado(self.titulo, lista, [75, 150, 150, 100], A4)
def listar_grilla(self): from clases import listado from reportlab.platypus import Paragraph as Par from reportlab.lib.pagesizes import A4 datos = self.obj("grilla").get_model() cant = len(datos) head = listado.tabla_celda_titulo() body_ce = listado.tabla_celda_centrado() body_de = listado.tabla_celda_just_derecho() body_iz = listado.tabla_celda_just_izquierdo() listafila = [ Par("Código", head), Par(self.titulodos, head), Par(self.titulotres, head) ] if self.tabla == "categorias": listafila.append(Par("Porc.", head)) tamanos = [100, 200, 100, 50] else: tamanos = [100, 200, 100] lista = [listafila] for i in range(0, cant): listafila = [ Par(str(datos[i][0]), body_ce), Par(datos[i][1], body_iz), Par(datos[i][2], body_iz) ] if self.tabla == "categorias": listafila.append(Par(str(datos[i][3]), body_de)) lista.append(listafila) listado.listado(self.titulo, lista, tamanos, A4)
def listar_grilla(self): from clases import listado from reportlab.platypus import Paragraph as Par from reportlab.lib.pagesizes import A4 datos = self.obj("grilla").get_model() cant = len(datos) head = listado.tabla_celda_titulo() body_ce = listado.tabla_celda_centrado() body_de = listado.tabla_celda_just_derecho() body_iz = listado.tabla_celda_just_izquierdo() listafila = [Par("Código", head), Par(self.titulodos, head)] if self.tabla in ("conceptopagos", "impuestos", "monedas", "motivoajustes", "motivosalidas", "motivosanciones", "paises", "presentaciones", "sistematablas", "tipocalles"): listafila.append(Par(self.titulotres, head)) tamanos = [100, 200, 100] else: tamanos = [100, 300] lista = [listafila] for i in range(0, cant): listafila = [Par(str(datos[i][0]), body_ce), Par(datos[i][1], body_iz)] if self.tabla in ("conceptopagos", "impuestos", "monedas", "motivoajustes", "motivosalidas", "motivosanciones", "paises", "presentaciones", "sistematablas", "tipocalles", "zonaventas"): if self.tabla == "impuestos": estilo = body_de elif self.tabla == "paises": estilo = body_iz else: estilo = body_ce listafila.append(Par(str(datos[i][2]), estilo)) lista.append(listafila) listado.listado(self.titulo, lista, tamanos, A4)
def listar_grilla(self): from clases import listado from reportlab.platypus import Paragraph as Par from reportlab.lib.pagesizes import A4, landscape datos = self.obj("grilla").get_model() cant = len(datos) head = listado.tabla_celda_titulo() body_ce = listado.tabla_celda_centrado() body_iz = listado.tabla_celda_just_izquierdo() body_de = listado.tabla_celda_just_derecho() lista = [[ Par("Código", head), Par("Código de Barras", head), Par("Nombre", head), Par("Presentación", head), Par("Precio de Costo", head), Par("Precio de Venta", head), Par("Estado", head) ]] for i in range(0, cant): codbar = "" if datos[i][1] is None else datos[i][1] estado = "Activo" if datos[i][21] == 1 else "Inactivo" lista.append([ Par(str(datos[i][0]), body_ce), Par(codbar, body_iz), Par(datos[i][2], body_iz), Par(datos[i][13], body_iz), Par(str(datos[i][17]), body_de), Par(str(datos[i][18]), body_de), Par(estado, body_ce) ]) listado.listado(self.titulo, lista, [75, 100, 175, 100, 100, 100, 50], landscape(A4))
def preparar_pdf(self, grilla): datos = grilla.get_model() cant = len(datos) ubicacion_archivo = dialogo_guardar("Notas de Débito por Ventas") if ubicacion_archivo is not None: # Si no tiene la terminación .pdf se le agrega if ubicacion_archivo[-4:].lower() != ".pdf": ubicacion_archivo += ".pdf" story = [] cabecera = cabecera_style() parrafo = parrafo_bodytext() head = tabla_celda_titulo() body_ce = tabla_celda_centrado() body_iz = tabla_celda_just_izquierdo() body_de = tabla_celda_just_derecho() story.append(Par("Notas de Débito por Ventas", cabecera)) story.append(Spacer(0, 20)) if self.obj("chk_01").get_active(): # Nro. de Timbrado story.append( Par( "Notas de Débito por el Timbrado Nro. <b>" + self.obj("txt_timb").get_text() + "</b>, del " + "Establecimiento Nro. <b>" + self.obj("txt_estab").get_text() + "</b>" + " y la Caja Nro. <b>" + self.obj("txt_caja").get_text() + "</b>", parrafo)) if self.obj("chk_02").get_active(): # Nro. de Nota de Debito story.append( Par( "Números de Nota de Débito entre <b>" + str(self.obj("txt_nro_ini").get_value_as_int()) + "</b> y <b>" + str(self.obj("txt_nro_fin").get_value_as_int()) + "</b>", parrafo)) if self.obj("chk_03").get_active(): # Cliente story.append( Par( "Notas de Débito del Cliente <b>" + self.obj("txt_cliente_02").get_text() + "</b>", parrafo)) if self.obj("chk_04").get_active(): # Vendedor story.append( Par( "Notas de Débito del Vendedor <b>" + self.obj("txt_vendedor_02").get_text() + "</b>", parrafo)) if self.obj("chk_05").get_active(): # Fecha story.append( Par( "Notas de Débito expedidas entre el " + "<b>" + cadena_fecha(self.fecha_ini) + "</b> y el " + "<b>" + cadena_fecha(self.fecha_fin) + "</b>", parrafo)) if self.obj("chk_06").get_active(): # Total if self.idTotal == 1: # Entre tipo, segundo = "entre", " y <b>" + \ str(self.obj("txt_total_fin").get_value()) + "</b>" elif self.idTotal == 2: # Mayor que tipo, segundo = "mayor que", "" elif self.idTotal == 3: # Mayor o igual que tipo, segundo = "mayor o igual que", "" elif self.idTotal == 4: # Menor que tipo, segundo = "menor que", "" elif self.idTotal == 5: # Menor o igual que tipo, segundo = "menor o igual que", "" story.append( Par( "Notas de Débito expedidas por un Monto " + tipo + " <b>" + str(self.obj("txt_total_ini").get_value()) + " </b>" + segundo, parrafo)) story.append(Spacer(0, 20)) lista = [[ Par("Nro. Timbrado", head), Par("Nro. Nota de Débito", head), Par("Fecha de Expedición", head), Par("Nro. Doc. Cliente", head), Par("Cliente", head), Par("Total", head) ]] for i in range(0, cant): lista.append([ Par(str(datos[i][0]), body_ce), Par(datos[i][1], body_ce), Par(datos[i][2], body_ce), Par(datos[i][3], body_ce), Par(datos[i][4], body_iz), Par(str(datos[i][5]), body_de) ]) tabla = Table(lista, [100, 100, 150, 100, 175, 75]) tabla = tabla_style(tabla) story.append(tabla) doc = SimpleDocTemplate( ubicacion_archivo, pagesize=landscape(A4), leftMargin=3 * cm, # Margen Izquierdo rightMargin=3 * cm, # Margen Derecho topMargin=2.5 * cm, # Margen Superior bottomMargin=2.5 * cm, # Margen Inferior allowSplitting=1, title="Notas de Débito por Ventas", author="Sistema Distribuidora") try: # Generar Archivo doc.build(story) popen(ubicacion_archivo) except PermissionError as e: error_permiso_archivo(str(e))
def preparar_pdf(self, grilla): datos = grilla.get_model() cant = len(datos) ubicacion_archivo = dialogo_guardar("Facturas de Compra") if ubicacion_archivo is not None: # Si no tiene la terminación .pdf se le agrega if ubicacion_archivo[-4:].lower() != ".pdf": ubicacion_archivo += ".pdf" story = [] cabecera = cabecera_style() parrafo = parrafo_bodytext() head = tabla_celda_titulo() body_ce = tabla_celda_centrado() body_iz = tabla_celda_just_izquierdo() body_de = tabla_celda_just_derecho() story.append(Par("Facturas de Compra", cabecera)) story.append(Spacer(0, 20)) if self.obj("chk_01").get_active(): # Proveedor story.append(Par("Facturas del Proveedor <b>" + self.obj("txt_prov_02").get_text() + "</b>", parrafo)) if self.obj("chk_02").get_active(): # Tipo de Factura model = self.obj("cmb_tipo_fact").get_model() active = self.obj("cmb_tipo_fact").get_active() story.append(Par("<b>" + model[active][1] + "</b>", parrafo)) if self.obj("chk_03").get_active(): # Fecha story.append(Par("Facturas expedidas entre el " + "<b>" + cadena_fecha(self.fecha_ini) + "</b> y el " + "<b>" + cadena_fecha(self.fecha_fin) + "</b>", parrafo)) if self.obj("chk_04").get_active(): # Total if self.idTotal == 1: # Entre tipo, segundo = "entre", " y <b>" + \ str(self.obj("txt_total_fin").get_value()) + "</b>" elif self.idTotal == 2: # Mayor que tipo, segundo = "mayor que", "" elif self.idTotal == 3: # Mayor o igual que tipo, segundo = "mayor o igual que", "" elif self.idTotal == 4: # Menor que tipo, segundo = "menor que", "" elif self.idTotal == 5: # Menor o igual que tipo, segundo = "menor o igual que", "" story.append(Par("Facturas expedidas por un Monto " + tipo + " <b>" + str(self.obj("txt_total_ini").get_value()) + " </b>" + segundo, parrafo)) story.append(Spacer(0, 20)) lista = [[Par("Nro. Timbrado", head), Par("Nro. Factura", head), Par("Fecha", head), Par("Tipo de Factura", head), Par("Nro. Doc. Prov.", head), Par("Proveedor", head), Par("Total", head)]] for i in range(0, cant): lista.append([Par(str(datos[i][0]), body_ce), Par(datos[i][1], body_ce), Par(datos[i][2], body_ce), Par(datos[i][3], body_ce), Par(datos[i][4], body_ce), Par(datos[i][5], body_iz), Par(str(datos[i][6]), body_de)]) tabla = Table(lista, [100, 100, 150, 100, 100, 125, 75]) tabla = tabla_style(tabla) story.append(tabla) doc = SimpleDocTemplate( ubicacion_archivo, pagesize=landscape(A4), leftMargin=3 * cm, # Margen Izquierdo rightMargin=3 * cm, # Margen Derecho topMargin=2.5 * cm, # Margen Superior bottomMargin=2.5 * cm, # Margen Inferior allowSplitting=1, title="Facturas de Compra", author="Sistema Distribuidora" ) try: # Generar Archivo doc.build(story) popen(ubicacion_archivo) except PermissionError as e: error_permiso_archivo(str(e))
def listar_grilla(self): from clases import listado from reportlab.platypus import Paragraph as Par from reportlab.lib.pagesizes import A4, landscape datos = self.obj("grilla").get_model() cant = len(datos) head = listado.tabla_celda_titulo() body_ce = listado.tabla_celda_centrado() body_iz = listado.tabla_celda_just_izquierdo() lista = [[ Par("Nro. Est.", head), Par("Nombre", head), Par("Ciudad", head), Par("Barrio", head), Par("Dirección", head), Par("Activo", head) ]] for i in range(0, cant): estado = "Activo" if datos[i][8] == 1 else "Inactivo" lista.append([ Par(str(datos[i][0]), body_ce), Par(datos[i][1], body_iz), Par(datos[i][4], body_iz), Par(datos[i][5], body_iz), Par(datos[i][6], body_iz), Par(estado, body_ce) ]) listado.listado(self.titulo, lista, [75, 150, 100, 100, 250, 50], landscape(A4))
def listar_grilla(self): from clases import listado from reportlab.platypus import Paragraph as Par from reportlab.lib.pagesizes import A4, landscape datos = self.obj("grilla").get_model() cant = len(datos) head = listado.tabla_celda_titulo() body_ce = listado.tabla_celda_centrado() body_iz = listado.tabla_celda_just_izquierdo() body_de = listado.tabla_celda_just_derecho() lista = [[Par("Nro. Cheque", head), Par("Banco", head), Par("Titular", head), Par("Fecha de Emisión", head), Par("Fecha de Cobro", head), Par("Monto", head)]] for i in range(0, cant): lista.append([Par(str(datos[i][1]), body_ce), Par(datos[i][6], body_iz), Par(datos[i][12], body_iz), Par(datos[i][15], body_ce), Par(datos[i][16], body_ce), Par(str(datos[i][17]), body_de)]) listado.listado(self.titulo, lista, [100, 150, 150, 110, 110, 70], landscape(A4))
def informe_caja_mov_actual(conexion, estab, caja, numero): ubicacion_archivo = dialogo_guardar("Movimiento de Caja Actual") if ubicacion_archivo is not None: # Si no tiene la terminación .pdf se le agrega if ubicacion_archivo[-4:].lower() != ".pdf": ubicacion_archivo += ".pdf" print("Generar Informe de Movimiento de Caja Actual") story = [] cabecera = cabecera_style() cel_monto = tabla_celda_just_derecho() cel_centro = tabla_celda_centrado() cel_total = tabla_celda_total() parrafo = Par("Apertura Nº " + numero, cabecera) story.append(parrafo) parrafo = Par("Establecimiento Nº " + cad(estab, 3), cabecera) story.append(parrafo) parrafo = Par("Caja Nº " + cad(caja, 3), cabecera) story.append(parrafo) story.append(Spacer(0, 20)) # Obtener Datos de la Apertura de Caja parrafo = Par("<u>Resumen</u>", cabecera) story.append(parrafo) story.append(Spacer(0, 20)) total = total_apertura = total_fact_cont = total_fact_cred = \ total_nota_cred = total_nota_deb = total_recibo = cheque = tarjeta = 0.0 # Obtener Monto inicial de la Apertura de esta Caja cursor = consultar( conexion, "MontoApertura", "cajaaperturas", " WHERE NroApertura = " + numero + " AND NroEstablecimiento = " + estab + " AND NroCaja = " + caja) total_apertura = cursor.fetchall()[0][0] total += total_apertura try: # Obtener Monto Total y Monto de Cheques y Tarjetas por Facturas Contado de esta Caja cursor = consultar( conexion, "IFNULL(SUM(TotalChequeTerceros), 0)," + " IFNULL(SUM(TotalTarjetas), 0), IFNULL(SUM(Total), 0)", "facturaventas_s", " WHERE NroApertura = " + numero + " AND idTipoFactura = 1" + " AND NroEstablecimiento = " + estab + " AND NroCaja = " + caja + " AND Anulado <> 1" + " GROUP BY NroApertura, NroEstablecimiento, NroCaja") except: pass else: if cursor.rowcount > 0: datos = cursor.fetchall() cheque += datos[0][0] tarjeta += datos[0][1] total_fact_cont = datos[0][2] total += total_fact_cont try: # Obtener Monto Total por Facturas Crédito de esta Caja cursor = consultar( conexion, "IFNULL(SUM(Total), 0)", "facturaventas_s", " WHERE NroApertura = " + numero + " AND idTipoFactura = 2" + " AND NroEstablecimiento = " + estab + " AND NroCaja = " + caja + " AND Anulado <> 1" + " GROUP BY NroApertura, NroEstablecimiento, NroCaja") except: pass else: if cursor.rowcount > 0: total_fact_cred = cursor.fetchall()[0][0] total += total_fact_cred try: # Obtener Monto Total de Notas de Crédito de esta Caja cursor = consultar( conexion, "IFNULL(SUM(Total), 0)", "notacreditoventas_s", " WHERE NroApertura = " + numero + " AND NroEstablecimiento = " + estab + " AND NroCaja = " + caja + " AND Anulado <> 1" + " GROUP BY NroApertura, NroEstablecimiento, NroCaja") except: pass else: if cursor.rowcount > 0: total_nota_cred = cursor.fetchall()[0][0] total += total_nota_cred try: # Obtener Monto Total de Notas de Débito de esta Caja cursor = consultar( conexion, "IFNULL(SUM(Total), 0)", "notadebitoventas_s", " WHERE NroApertura = " + numero + " AND NroEstablecimiento = " + estab + " AND NroCaja = " + caja + " AND Anulado <> 1" + " GROUP BY NroApertura, NroEstablecimiento, NroCaja") except: pass else: if cursor.rowcount > 0: total_nota_deb = cursor.fetchall()[0][0] total += total_nota_deb try: # Obtener Monto Total de Recibos de esta Caja cursor = consultar( conexion, "IFNULL(SUM(TotalChequeTerceros), 0), " + "IFNULL(SUM(TotalTarjetas), 0), IFNULL(SUM(Total), 0)", "recibos_s", " WHERE NroApertura = " + numero + " AND NroEstablecimiento = " + estab + " AND NroCaja = " + caja + " AND Anulado <> 1" + " GROUP BY NroApertura, NroEstablecimiento, NroCaja") except: pass else: if cursor.rowcount > 0: datos = cursor.fetchall() cheque += datos[0][0] tarjeta += datos[0][1] total_recibo = datos[0][2] total += total_recibo tabla = Table([ [ Par("<b>Apertura:</b>", cel_monto), Par(str(total_apertura), cel_monto) ], [ Par("<b>Facturas Contado:</b>", cel_monto), Par(str(total_fact_cont), cel_monto) ], [ Par("<b>Facturas Crédito:</b>", cel_monto), Par(str(total_fact_cred), cel_monto) ], [ Par("<b>Notas de Crédito:</b>", cel_monto), Par(str(total_nota_cred), cel_monto) ], [ Par("<b>Notas de Débito:</b>", cel_monto), Par(str(total_nota_deb), cel_monto) ], [ Par("<b>Recibos:</b>", cel_monto), Par(str(total_recibo), cel_monto) ], [Par("<b>Total:</b>", cel_total), Par(str(total), cel_total)], [Par("<b>Cheques:</b>", cel_monto), Par(str(cheque), cel_monto)], [Par("<b>Tarjetas:</b>", cel_monto), Par(str(tarjeta), cel_monto)], [ Par("<b>Total:</b>", cel_total), Par(str(cheque + tarjeta), cel_total) ] ], [100, 100]) tabla.setStyle([ ('BACKGROUND', (0, -4), (-1, -4), colors.black), # Color de Fondo del Total Documentos ('TEXTCOLOR', (0, -4), (-1, -4), colors.white), # Color del Texto del Total Documentos ('BACKGROUND', (0, -1), (-1, -1), colors.black), # Color de Fondo del Total Cheque y Tarjeta ('TEXTCOLOR', (0, -1), (-1, -1), colors.white), # Color del Texto del Total Cheque y Tarjeta ('ALIGN', (0, 0), (0, -1), 'RIGHT'), # Alineación de la Primera Columna ('ALIGN', (1, 1), (-1, -1), 'LEFT'), # Alineación de Otras Columnas ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), # Alineación Vertical de la Tabla ('BOX', (0, 0), (-1, -1), 0.25, colors.black), # Borde Exterior de la Tabla ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black), # Grilla Interior de la Tabla ('TOPPADDING', (0, 0), (-1, -1), 1), # Espacio Arriba ('BOTTOMPADDING', (0, 0), (-1, -1), 3), # Espacio Abajo ('LEFTPADDING', (0, 0), (-1, -1), 3), # Espacio a la Izquierda ('RIGHTPADDING', (0, 0), (-1, -1), 3), # Espacio a la Derecha ]) story.append(tabla) story.append(Spacer(0, 20)) # Obtener Datos de las Facturas Contado lista_fact_cont = [] parrafo = Par("<u>Facturas Contado</u>", cabecera) story.append(parrafo) story.append(Spacer(0, 20)) try: cursor = consultar( conexion, "NroFactura, FechaHora, Total", "facturaventas_s", " WHERE NroApertura = " + numero + " AND idTipoFactura = 1" + " AND NroEstablecimiento = " + estab + " AND NroCaja = " + caja + " AND Anulado <> 1") except: pass else: cant = cursor.rowcount if cant > 0: datos = cursor.fetchall() for i in range(0, cant): lista_fact_cont.append([ Par( cad(estab, 3) + "-" + cad(caja, 3) + "-" + cad(datos[i][0], 7), cel_centro), Par(mysql_fecha_hora(datos[i][1]), cel_centro), Par(str(datos[i][2]), cel_monto) ]) lista_fact_cont.append([ "", Par("<b>Total:</b>", cel_total), Par(str(total_fact_cont), cel_total) ]) tabla = Table(lista_fact_cont, [100, 175, 100]) tabla.setStyle([ ('BACKGROUND', (0, -1), (-1, -1), colors.black), # Color de Fondo del Total ('TEXTCOLOR', (0, -1), (-1, -1), colors.white), # Color del Texto del Total ('ALIGN', (0, 0), (0, -1), 'RIGHT'), # Alineación de la Primera Columna ('ALIGN', (1, 1), (-1, -1), 'LEFT'), # Alineación de Otras Columnas ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), # Alineación Vertical de la Tabla ('BOX', (0, 0), (-1, -1), 0.25, colors.black), # Borde Exterior de la Tabla ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black), # Grilla Interior de la Tabla ('TOPPADDING', (0, 0), (-1, -1), 1), # Espacio Arriba ('BOTTOMPADDING', (0, 0), (-1, -1), 3), # Espacio Abajo ('LEFTPADDING', (0, 0), (-1, -1), 3), # Espacio a la Izquierda ('RIGHTPADDING', (0, 0), (-1, -1), 3), # Espacio a la Derecha ]) story.append(tabla) story.append(Spacer(0, 20)) # Obtener Datos de las Facturas Crédito lista_fact_cred = [] parrafo = Par("<u>Facturas Crédito</u>", cabecera) story.append(parrafo) story.append(Spacer(0, 20)) try: cursor = consultar( conexion, "NroFactura, FechaHora, Total", "facturaventas_s", " WHERE NroApertura = " + numero + " AND idTipoFactura = 2" + " AND NroEstablecimiento = " + estab + " AND NroCaja = " + caja + " AND Anulado <> 1") except: pass else: cant = cursor.rowcount if cant > 0: datos = cursor.fetchall() for i in range(0, cant): lista_fact_cred.append([ Par( cad(estab, 3) + "-" + cad(caja, 3) + "-" + cad(datos[i][0], 7), cel_centro), Par(mysql_fecha_hora(datos[i][1]), cel_centro), Par(str(datos[i][2]), cel_monto) ]) lista_fact_cred.append([ "", Par("<b>Total:</b>", cel_total), Par(str(total_fact_cred), cel_total) ]) tabla = Table(lista_fact_cred, [100, 175, 100]) tabla.setStyle([ ('BACKGROUND', (0, -1), (-1, -1), colors.black), # Color de Fondo del Total ('TEXTCOLOR', (0, -1), (-1, -1), colors.white), # Color del Texto del Total ('ALIGN', (0, 0), (0, -1), 'RIGHT'), # Alineación de la Primera Columna ('ALIGN', (1, 1), (-1, -1), 'LEFT'), # Alineación de Otras Columnas ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), # Alineación Vertical de la Tabla ('BOX', (0, 0), (-1, -1), 0.25, colors.black), # Borde Exterior de la Tabla ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black), # Grilla Interior de la Tabla ('TOPPADDING', (0, 0), (-1, -1), 1), # Espacio Arriba ('BOTTOMPADDING', (0, 0), (-1, -1), 3), # Espacio Abajo ('LEFTPADDING', (0, 0), (-1, -1), 3), # Espacio a la Izquierda ('RIGHTPADDING', (0, 0), (-1, -1), 3), # Espacio a la Derecha ]) story.append(tabla) story.append(Spacer(0, 20)) # Obtener Datos de las Notas de Crédito lista_nota_cred = [] parrafo = Par("<u>Notas de Crédito</u>", cabecera) story.append(parrafo) story.append(Spacer(0, 20)) try: cursor = consultar( conexion, "NroNotaCredito, FechaHora, Total", "notacreditoventas_s", " WHERE NroApertura = " + numero + " AND NroEstablecimiento = " + estab + " AND NroCaja = " + caja + " AND Anulado <> 1") except: pass else: cant = cursor.rowcount if cant > 0: datos = cursor.fetchall() for i in range(0, cant): lista_nota_cred.append([ Par( cad(estab, 3) + "-" + cad(caja, 3) + "-" + cad(datos[i][0], 7), cel_centro), Par(mysql_fecha_hora(datos[i][1]), cel_centro), Par(str(datos[i][2]), cel_monto) ]) lista_nota_cred.append([ "", Par("<b>Total:</b>", cel_total), Par(str(total_nota_cred), cel_total) ]) tabla = Table(lista_nota_cred, [100, 175, 100]) tabla.setStyle([ ('BACKGROUND', (0, -1), (-1, -1), colors.black), # Color de Fondo del Total ('TEXTCOLOR', (0, -1), (-1, -1), colors.white), # Color del Texto del Total ('ALIGN', (0, 0), (0, -1), 'RIGHT'), # Alineación de la Primera Columna ('ALIGN', (1, 1), (-1, -1), 'LEFT'), # Alineación de Otras Columnas ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), # Alineación Vertical de la Tabla ('BOX', (0, 0), (-1, -1), 0.25, colors.black), # Borde Exterior de la Tabla ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black), # Grilla Interior de la Tabla ('TOPPADDING', (0, 0), (-1, -1), 1), # Espacio Arriba ('BOTTOMPADDING', (0, 0), (-1, -1), 3), # Espacio Abajo ('LEFTPADDING', (0, 0), (-1, -1), 3), # Espacio a la Izquierda ('RIGHTPADDING', (0, 0), (-1, -1), 3), # Espacio a la Derecha ]) story.append(tabla) story.append(Spacer(0, 20)) # Obtener Datos de las Notas de Débito lista_nota_deb = [] parrafo = Par("<u>Notas de Débito</u>", cabecera) story.append(parrafo) story.append(Spacer(0, 20)) try: cursor = consultar( conexion, "NroNotaDebito, FechaHora, Total", "notadebitoventas_s", " WHERE NroApertura = " + numero + " AND NroEstablecimiento = " + estab + " AND NroCaja = " + caja + " AND Anulado <> 1") except: pass else: cant = cursor.rowcount if cant > 0: datos = cursor.fetchall() for i in range(0, cant): lista_nota_deb.append([ Par( cad(estab, 3) + "-" + cad(caja, 3) + "-" + cad(datos[i][0], 7), cel_centro), Par(mysql_fecha_hora(datos[i][1]), cel_centro), Par(str(datos[i][2]), cel_monto) ]) lista_nota_deb.append([ "", Par("<b>Total:</b>", cel_total), Par(str(total_nota_deb), cel_total) ]) tabla = Table(lista_nota_deb, [100, 175, 100]) tabla.setStyle([ ('BACKGROUND', (0, -1), (-1, -1), colors.black), # Color de Fondo del Total ('TEXTCOLOR', (0, -1), (-1, -1), colors.white), # Color del Texto del Total ('ALIGN', (0, 0), (0, -1), 'RIGHT'), # Alineación de la Primera Columna ('ALIGN', (1, 1), (-1, -1), 'LEFT'), # Alineación de Otras Columnas ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), # Alineación Vertical de la Tabla ('BOX', (0, 0), (-1, -1), 0.25, colors.black), # Borde Exterior de la Tabla ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black), # Grilla Interior de la Tabla ('TOPPADDING', (0, 0), (-1, -1), 1), # Espacio Arriba ('BOTTOMPADDING', (0, 0), (-1, -1), 3), # Espacio Abajo ('LEFTPADDING', (0, 0), (-1, -1), 3), # Espacio a la Izquierda ('RIGHTPADDING', (0, 0), (-1, -1), 3), # Espacio a la Derecha ]) story.append(tabla) story.append(Spacer(0, 20)) # Obtener Datos de los Recibos lista_recibo = [] parrafo = Par("<u>Recibos</u>", cabecera) story.append(parrafo) story.append(Spacer(0, 20)) try: cursor = consultar( conexion, "NroRecibo, FechaHora, Total", "recibos_s", " WHERE NroApertura = " + numero + " AND NroEstablecimiento = " + estab + " AND NroCaja = " + caja + " AND Anulado <> 1") except: pass else: cant = cursor.rowcount if cant > 0: datos = cursor.fetchall() for i in range(0, cant): lista_recibo.append([ Par(str(datos[i][0]), cel_centro), Par(mysql_fecha_hora(datos[i][1]), cel_centro), Par(str(datos[i][2]), cel_monto) ]) lista_recibo.append([ "", Par("<b>Total:</b>", cel_total), Par(str(total_recibo), cel_total) ]) tabla = Table(lista_recibo, [100, 175, 100]) tabla.setStyle([ ('BACKGROUND', (0, -1), (-1, -1), colors.black), # Color de Fondo del Total ('TEXTCOLOR', (0, -1), (-1, -1), colors.white), # Color del Texto del Total ('ALIGN', (0, 0), (0, -1), 'RIGHT'), # Alineación de la Primera Columna ('ALIGN', (1, 1), (-1, -1), 'LEFT'), # Alineación de Otras Columnas ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'), # Alineación Vertical de la Tabla ('BOX', (0, 0), (-1, -1), 0.25, colors.black), # Borde Exterior de la Tabla ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black), # Grilla Interior de la Tabla ('TOPPADDING', (0, 0), (-1, -1), 1), # Espacio Arriba ('BOTTOMPADDING', (0, 0), (-1, -1), 3), # Espacio Abajo ('LEFTPADDING', (0, 0), (-1, -1), 3), # Espacio a la Izquierda ('RIGHTPADDING', (0, 0), (-1, -1), 3), # Espacio a la Derecha ]) story.append(tabla) story.append(Spacer(0, 20)) # Datos del Documento doc = SimpleDocTemplate( ubicacion_archivo, pagesize=A4, # Tamaño de Página leftMargin=3 * cm, # Margen Izquierdo rightMargin=3 * cm, # Margen Derecho topMargin=2.5 * cm, # Margen Superior bottomMargin=2.5 * cm, # Margen Inferior allowSplitting=1, title="Movimiento de Caja (" + fecha_hoy() + ")", author="Sistema Farmacia") doc.build(story) operacion_correcta()
def listar_grilla(self): from clases import listado from reportlab.platypus import Paragraph as Par from reportlab.lib.pagesizes import A4, landscape datos = self.obj("grilla").get_model() cant = len(datos) head = listado.tabla_celda_titulo() body_ce = listado.tabla_celda_centrado() body_iz = listado.tabla_celda_just_izquierdo() body_de = listado.tabla_celda_just_derecho() lista = [[ Par("Nro. Timbrado", head), Par("Nro. Establecimiento", head), Par("Nro. Caja", head), Par("Fecha de Emisión", head), Par("Fecha de Vencimiento", head), Par("Desde", head), Par("Hasta", head), Par("Estado", head) ]] for i in range(0, cant): lista.append([ Par(str(datos[i][0]), body_ce), Par(Op.cadenanumeros(datos[i][9], 3), body_ce), Par(Op.cadenanumeros(datos[i][7], 3), body_ce), Par(datos[i][1], body_iz), Par(datos[i][2], body_iz), Par(str(datos[i][3]), body_de), Par(str(datos[i][4]), body_de), Par(datos[i][20], body_ce) ]) listado.listado(self.titulo, lista, [100, 100, 100, 125, 125, 50, 50, 50], landscape(A4))
def preparar_pdf(self, grilla): head = tabla_celda_titulo() body_ce = tabla_celda_centrado(9) body_iz = tabla_celda_just_izquierdo(9) datos = grilla.get_model() cant = len(datos) if self.obj("chk_empleado").get_active(): # De un empleado específico encabezado = [self.obj("txt_01_1").get_text(), self.obj("txt_01_2").get_text(), self.obj("txt_02").get_text(), self.obj("txt_02_1").get_text()] lista = [[Par("Fecha", head), Par("Hora", head), Par("", head), Par("Observaciones", head), Par("Usuario", head)]] for i in range(0, cant): lista.append([Par(datos[i][6], body_iz), Par(datos[i][7], body_ce), Par(datos[i][8], body_ce), Par(datos[i][10], body_iz), Par(datos[i][11], body_iz)]) genera_asistencia_empleado(encabezado, lista) else: lista = [[Par("Nro. Contrato", head), Par("Nro. C.I.", head), Par("Empleado", head), Par("Cargo", head), Par("Fecha", head), Par("Hora", head), Par("", head), Par("Observaciones", head), Par("Usuario", head)]] for i in range(0, cant): lista.append([Par(datos[i][0], body_ce), Par(datos[i][3], body_ce), Par(datos[i][4], body_iz), Par(datos[i][5], body_iz), Par(datos[i][6], body_iz), Par(datos[i][7], body_ce), Par(datos[i][8], body_ce), Par(datos[i][10], body_iz), Par(datos[i][11], body_iz)]) listado("Asistencias", lista, [70, 70, 145, 70, 100, 70, 50, 120, 70], landscape(A4))