def ImprimirVentasCreditos(request, fechaI, fechaF): response = HttpResponse(content_type='application/pdf') finicio = datetime.fromtimestamp(int(fechaI) / 1e3) ffin = datetime.fromtimestamp(int(fechaF) / 1e3) pdf_name = "ventasacredito.pdf" buff = BytesIO() doc = SimpleDocTemplate(buff, pagesize=letter, rightMargin=50, leftMargin=50, topMargin=20, bottomMargin=18, ) doc.pagesize = landscape(A4) ventas = [] totales = Venta.objects.filter(fecha__gte = finicio, fecha__lte = ffin, credito = True , estado = 'ACTIVO').aggregate(precio_total=Sum(F('total'))) ventas.append(Spacer(1, 0.05 * inch)) header = Paragraph("GRUPOEJ - SRL." , getStyleSheet()['Title']) subtitel = Paragraph("Ventas al credito." , getStyleSheet()['Subtitle']) ventas.append(header) ventas.append(Spacer(1, 0.05 * inch)) ventas.append(subtitel) ventas.append(Spacer(1, 0.05 * inch)) ventas.append(Paragraph("<para>Fecha Inicio: "+finicio.strftime('%d/%m/%Y')+" "+" Fecha Fin:"+ffin.strftime('%d/%m/%Y')+"</para>", getStyleSheet()['TopicTitle8'])) ventas.append(Spacer(1, 0.05 * inch)) ventas.append(Paragraph("DETALLE", getStyleSheet()['TopicTitle10'])) ventas.append(Spacer(1, 0.1 * inch)) styles = getSampleStyleSheet() headings = ('DNI/RUC', 'CLIENTE', "RESPONSABLE", 'NRO_VENTA','FECHA' ,'TOTAL') venta = [(str(v.pedido.cliente.nro_documento), str(v.pedido.cliente.nombres)+"/"+str(v.pedido.cliente.apellidos), str(v.pedido.cliente.responsable), str(v.numero_correlativo)+"-"+str(v.numero_documento), str(v.fecha), str(v.total)) for v in Venta.objects.filter(fecha__gte = finicio, fecha__lte = ffin, credito = True , estado = 'ACTIVO')] data = ([headings] + venta) data2 = [[Paragraph(cell, getStyleSheet()['TopicItemq0']) for cell in row] for row in data] t=Table(data2) style = TableStyle( [ ('BACKGROUND', (0, 0), (-1, 0), colors.gray), ('LINEABOVE', (0,0), (-1,0), 2, colors.green), ('LINEABOVE', (0,1), (-1,-1), 0.25, colors.black), ('LINEBELOW', (0,-1), (-1,-1), 2, colors.green), ('ALIGN', (1,1), (-1,-1), 'CENTER'), ] ) t.setStyle(style) t._argW[0]=0.8*inch t._argW[1]=2.8*inch t._argW[2]=2.8*inch t._argW[3]=0.9*inch t._argW[4]=0.9*inch t._argW[5]=0.9*inch ventas.append(t) ventas.append(Paragraph("Total: S/ "+str(totales['precio_total']), getStyleSheet()['TopicTitle8Right'])) # ventas.append(Paragraph("IGV:___"+str(venta.igv)+" S/", getStyleSheet()['TopicTitle8Right'])) # ventas.append(Paragraph("Total:__ "+str(venta.total)+" S/", getStyleSheet()['TopicTitle8Right'])) doc.build(ventas) response.write(buff.getvalue()) buff.close() return response
def ImprimirAllProductoListar(request, fechaI, fechaF): response = HttpResponse(content_type='application/pdf') finicio = datetime.fromtimestamp(int(fechaI) / 1e3) ffin = datetime.fromtimestamp(int(fechaF) / 1e3) pdf_name = "reporte_producto.pdf" buff = BytesIO() doc = SimpleDocTemplate(buff, pagesize=letter, rightMargin=50, leftMargin=50, topMargin=20, bottomMargin=18, ) doc.pagesize = landscape(A4) # doc.pagesize = portrait(A4) productos = [] # producto = Producto.objects.get(id = int(idproducto)) totales = DetalleVenta.objects.filter(venta__fecha__gte = finicio, venta__fecha__lte = ffin, venta__estado = 'ACTIVO', venta__credito = False).aggregate(total = Sum(F('cantidad')*F('precio'), output_field=FloatField()), cantidad= Sum('cantidad', output_field=FloatField())) styles = getSampleStyleSheet() header = Paragraph("GRUPOEJ - SRL." , getStyleSheet()['Title']) # pro = Paragraph(producto.descripcion, getStyleSheet()['TopicTitle8']) productos.append(header) productos.append(Spacer(1, 0.2 * inch)) productos.append(Paragraph("REPORTE TOTAL." , getStyleSheet()['TopicTitle14'])) productos.append(Spacer(1, 0.05 * inch)) # productos.append(pro) productos.append(Paragraph("<para>Fecha Inicio: "+finicio.strftime('%d/%m/%Y')+" "+" Fecha Fin:"+ffin.strftime('%d/%m/%Y')+"</para>", getStyleSheet()['TopicTitle8'])) productos.append(Spacer(1, 0.05 * inch)) productos.append(Paragraph("DETALLE", getStyleSheet()['TopicTitle10'])) productos.append(Spacer(1, 0.1 * inch)) headings = ('CLIENTE', "PRODUCTO","CANTIDAD", 'PRECIO', "SUBTOTAL") detalleventa = [ (str(dv.venta.pedido.cliente.nombres)+" "+str(dv.venta.pedido.cliente.apellidos)+" / "+str(dv.venta.pedido.cliente.area)+ " / "+ str(dv.venta.pedido.cliente.responsable), str(dv.producto.descripcion),str(dv.cantidad), str(dv.precio), str(dv.cantidad * dv.precio)) for dv in DetalleVenta.objects.filter(venta__fecha__gte = finicio, venta__fecha__lte = ffin, venta__estado = 'ACTIVO', venta__credito = False).order_by('producto_id')] data = ([headings] + detalleventa) data2 = [[Paragraph(cell, getStyleSheet()['TopicItemq0']) for cell in row] for row in data] t=Table(data2) style = TableStyle( [ ('BACKGROUND', (0, 0), (-1, 0), colors.gray), ('LINEABOVE', (0,0), (-1,0), 2, colors.green), ('LINEABOVE', (0,1), (-1,-1), 0.25, colors.black), ('LINEBELOW', (0,-1), (-1,-1), 2, colors.green), ('ALIGN', (1,1), (-1,-1), 'CENTER'), ] ) t.setStyle(style) t._argW[0]=3.8*inch t._argW[1]=4.9*inch t._argW[2]=0.75*inch t._argW[3]=0.8*inch productos.append(t) productos.append(Paragraph("CANTIDAD - TOTAL:( "+str(totales['cantidad'])+" ) "+" "+"PRECIO TOTAL: ( "+str(totales['total'])+" S/)", getStyleSheet()['TopicTitle8Right'])) doc.build(productos) response.write(buff.getvalue()) buff.close() return response
def ImprimirVenta(request, idventa): response = HttpResponse(content_type='application/pdf') pdf_name = "ventas.pdf" buff = BytesIO() doc = SimpleDocTemplate(buff, pagesize=letter, rightMargin=50, leftMargin=50, topMargin=20, bottomMargin=18, ) doc.pagesize = landscape(A5) ventas = [] venta = Venta.objects.get(id = idventa) styles = getSampleStyleSheet() header = Paragraph("GRUPOEJ - SRL." , getStyleSheet()['Title']) documento = Paragraph("DOCUMENTO: "+(str(venta.tipo_documento))+" "+(str(venta.numero_correlativo))+"-"+(str(venta.numero_documento)) , getStyleSheet()['TopicItem1']) cliente = Paragraph("CLIENTE / RAZON SOCIAL: "+(str(venta.pedido.cliente.nombres))+" "+(str(venta.pedido.cliente.apellidos))+" - "+(str(venta.pedido.cliente.area)) , getStyleSheet()['TopicItem1']) ventas.append(header) ventas.append(Spacer(1, 0.2 * inch)) ventas.append(documento) ventas.append(Spacer(1, 0.05 * inch)) ventas.append(cliente) ventas.append(Spacer(1, 0.05 * inch)) ventas.append(Paragraph(venta.pedido.cliente.tipo_documento+": "+venta.pedido.cliente.nro_documento+" ",getStyleSheet()['TopicItem1'])) ventas.append(Spacer(1, 0.05 * inch)) ventas.append(Paragraph("DIRECCION: "+venta.pedido.cliente.direccion+" ",getStyleSheet()['TopicItem1'])) ventas.append(Spacer(1, 0.05 * inch)) ventas.append(Paragraph("FECHA DE COMPRA: "+datetime.strftime(venta.fecha, "%d-%m-%Y")+" ",getStyleSheet()['TopicItem1'])) ventas.append(Spacer(1, 0.1 * inch)) ventas.append(Paragraph("DETALLE DE LA COMPRA", getStyleSheet()['TopicTitle10'])) ventas.append(Spacer(1, 0.1 * inch)) headings = ('DESCRIPCION', 'PRECIO', "CANTIDAD", 'SUBTOTAL') detalleventa = [(str(dv.producto.descripcion), str(dv.precio), str(dv.cantidad), str(dv.precio*dv.cantidad)) for dv in DetalleVenta.objects.filter(venta_id=idventa)] data = ([headings] + detalleventa) data2 = [[Paragraph(cell, getStyleSheet()['TopicItemq0']) for cell in row] for row in data] t=Table(data2) style = TableStyle( [ ('BACKGROUND', (0, 0), (-1, 0), colors.gray), ('LINEABOVE', (0,0), (-1,0), 2, colors.green), ('LINEABOVE', (0,1), (-1,-1), 0.25, colors.black), ('LINEBELOW', (0,-1), (-1,-1), 2, colors.green), ('ALIGN', (1,1), (-1,-1), 'CENTER'), ] ) t.setStyle(style) t._argW[0]=4*inch t._argW[1]=0.8*inch t._argW[2]=0.8*inch t._argW[3]=0.8*inch ventas.append(t) ventas.append(Paragraph("Sub total:__ "+str(venta.sub_total)+" S/", getStyleSheet()['TopicTitle8Right'])) ventas.append(Paragraph("IGV:___"+str(venta.igv)+" S/", getStyleSheet()['TopicTitle8Right'])) ventas.append(Paragraph("Total:__ "+str(venta.total)+" S/", getStyleSheet()['TopicTitle8Right'])) doc.build(ventas) response.write(buff.getvalue()) buff.close() return response
def ImprimirReporteEnvacePorProducto(request, idcliente,idproducto): response = HttpResponse(content_type='application/pdf') pdf_name = "reporte_producto.pdf" buff = BytesIO() doc = SimpleDocTemplate(buff, pagesize=letter, rightMargin=50, leftMargin=50, topMargin=20, bottomMargin=18, ) # doc.pagesize = landscape(A4) doc.pagesize = portrait(A4) productos = [] cliente = Cliente.objects.get(id = idcliente) # prod = Prestamo.objects.filter(id = idproducto) # produc = Producto.objects.filter(id = prod[0].producto.id) totales = Prestamo.objects.filter(cliente__id = idcliente, producto__id= idproducto).aggregate( total_entregado=Sum(F('entregado'),output_field=FloatField()), total_devuelto=Sum(F('devuelto'),output_field=FloatField()) ) # aggregate(total = Sum(F('cantidad')*F('precio'), output_field=FloatField()) # extra(select = {'total_entregado': 'SUM(entregado)','total_devuelto': 'SUM(devuelto)'}) styles = getSampleStyleSheet() header = Paragraph("GRUPOEJ - SRL." , getStyleSheet()['Title']) cli = Paragraph(str(cliente.nombres)+" "+str(cliente.apellidos)+" / "+str(cliente.area)+ " / "+ str(cliente.responsable), getStyleSheet()['TopicTitle8']) productos.append(header) productos.append(Spacer(1, 0.2 * inch)) productos.append(Paragraph("REPORTE TOTAL." , getStyleSheet()['TopicTitle14'])) productos.append(Spacer(1, 0.05 * inch)) productos.append(cli) productos.append(Paragraph("DETALLE", getStyleSheet()['TopicTitle10'])) productos.append(Spacer(1, 0.1 * inch)) headings = ("PRODUCTO","FECHA","NRO DOCUMENTO","ENTREGADA ", 'DEVUELTA', 'DEBE') detalleventa = [ (str(dv.producto.descripcion),str(dv.fecha),str(dv.nro_documento) ,str(dv.entregado), str(dv.devuelto), str(dv.entregado - dv.devuelto)) for dv in Prestamo.objects.filter(cliente__id = idcliente, producto__id= idproducto)] data = ([headings] + detalleventa) data2 = [[Paragraph(cell, getStyleSheet()['TopicItemq0']) for cell in row] for row in data] t=Table(data2) style = TableStyle( [ ('BACKGROUND', (0, 0), (-1, 0), colors.gray), ('LINEABOVE', (0,0), (-1,0), 2, colors.green), ('LINEABOVE', (0,1), (-1,-1), 0.25, colors.black), ('LINEBELOW', (0,-1), (-1,-1), 2, colors.green), ('ALIGN', (1,1), (-1,-1), 'CENTER'), ] ) t.setStyle(style) t._argW[0]=2.5*inch t._argW[1]=1.0*inch t._argW[2]=1.2*inch t._argW[3]=0.9*inch t._argW[4]=0.8*inch t._argW[5]=0.7*inch productos.append(t) productos.append( Paragraph("Total Entregado " +str(int(totales['total_entregado'])) +" " +"Total Devuelto " +str(int(totales['total_devuelto'])) +" " +"TOTAL DEBE: " +str(int(totales['total_entregado']) - int(totales['total_devuelto'])), getStyleSheet()['TopicTitle8Right'])) doc.build(productos) response.write(buff.getvalue()) buff.close() return response