示例#1
0
    def render_to_response(self, context, **response_kwargs):
        if 'excel' in self.request.GET.get('excel', ''):
            lista_datos = []
            datos = self.get_queryset()
            total_total = 0
            total_pagado = 0
            total_saldo = 0
            for dato in datos:
                lista_datos.append([
                    dato.get_numero_de_factura(),
                    dato.proveedor.razon_social,
                    dato.fecha.strftime("%d/%m/%Y"),
                    dato.fecha_de_vencimiento.strftime("%d/%m/%Y"),
                    separador_de_miles(dato.total),

                ])
                total_total += dato.total
                total_pagado += dato.pagado
                total_saldo += dato.saldo

            lista_datos.append(['', '', '', 'Total',
                                separador_de_miles(total_total)])

            titulos = ['Nro. Factura', 'Proveedor', 'Fecha Emision', 'Fecha Vencimiento', 'Total']

            return listview_to_excel(lista_datos, 'compras', titulos)

        return super(CompraListView, self).render_to_response(context, **response_kwargs)
示例#2
0
def get_posprensaotroserviciocosto(request):
    posprensaotroserviciocosto_id = (request.GET['id']).replace(" ", "")
    print "ajax posprensaotroserviciocosto_id (%s)" % posprensaotroserviciocosto_id

    result_set = []

    if posprensaotroserviciocosto_id == "":
        return HttpResponse(json.dumps(result_set),
                            content_type='application/json')

    posprensaotroserviciocosto = PosprensaOtroServicioCosto.objects.get(
        pk=posprensaotroserviciocosto_id)

    result_set.append({
        'cantidad':
        separador_de_miles(posprensaotroserviciocosto.cantidad -
                           posprensaotroserviciocosto.cantidad_en_oc),
        'precio':
        separador_de_miles(posprensaotroserviciocosto.precio_unitario),
        'subtotal':
        separador_de_miles(posprensaotroserviciocosto.get_subtotal())
    })

    return HttpResponse(json.dumps(result_set),
                        content_type='application/json')
示例#3
0
    def render_to_response(self, context, **response_kwargs):
        if 'excel' in self.request.GET.get('excel', ''):
            lista_pagos = []
            pagos = self.get_queryset()
            total_pagos = 0

            for pago in pagos:
                compras = DetalleDePago.objects.filter(pago=pago)
                facturas_de_compra = ''
                for compra in compras:
                    facturas_de_compra += compra.compra.get_numero_de_factura(
                    ) + ' - '

                lista_pagos.append([
                    pago.id,
                    pago.fecha.strftime("%d/%m/%Y"),
                    pago.proveedor.razon_social,
                    facturas_de_compra,
                    separador_de_miles(pago.monto),
                ])
                total_pagos += pago.monto
            lista_pagos.append(
                ['', '', '', 'TOTAL PAGADO:',
                 separador_de_miles(total_pagos)])
            titulos = [
                'ID', 'Fecha', 'Proveedor', 'Facturas de compra', 'Monto'
            ]
            return listview_to_excel(lista_pagos, 'pagos_a_proveedores',
                                     titulos)
        return super(PagoListView,
                     self).render_to_response(context, **response_kwargs)
示例#4
0
def get_detalle2_de_remision(request):
    id_remisiones = request.GET.get('id_remisiones')
    response = []
    remisiones = id_remisiones.split(',')
    if id_remisiones == "":
        return HttpResponse(json.dumps(response),
                            content_type='application/json')

    for remision in remisiones:
        detalles = DetalleDeRemision2.objects.filter(remision_id=remision)

        for detalle in detalles:
            response.append({
                'id':
                str(detalle.detalle_orden_de_trabajo_id),
                'dot':
                str(detalle.detalle_orden_de_trabajo),
                'descripcion':
                str(detalle.detalle_orden_de_trabajo.descripcion),
                #'iva': "IVA 10%",
                'cantidad':
                separador_de_miles(detalle.cantidad),
                'precio_unitario':
                separador_de_miles(
                    detalle.detalle_orden_de_trabajo.get_precio_unitario()),
                'subtotal':
                separador_de_miles(
                    detalle.detalle_orden_de_trabajo.get_subtotal()),
                'orden_de_compra':
                str(detalle.detalle_orden_de_trabajo.orden_de_trabajo.
                    orden_de_compra_del_cliente)
            })

    return HttpResponse(json.dumps(response), content_type='application/json')
示例#5
0
def get_detalleordendetrabajo(request):
    detalle_orden_de_trabajo_id = (request.GET['dotid']).replace(" ", "")

    result_set = []

    if detalle_orden_de_trabajo_id == "":
        return HttpResponse(json.dumps(result_set),
                            content_type='application/json')

    detalle_orden_de_trabajo = DetalleOrdenDeTrabajo.objects.get(
        pk=detalle_orden_de_trabajo_id)

    result_set.append({
        #cabecera
        'ot':
        detalle_orden_de_trabajo.orden_de_trabajo.id,
        'cantidad':
        separador_de_miles(detalle_orden_de_trabajo.orden_de_trabajo.cantidad),
        'presupuesto':
        detalle_orden_de_trabajo.orden_de_trabajo.presupuesto_numero,
        'cliente':
        detalle_orden_de_trabajo.orden_de_trabajo.cliente.razon_social,
        'vendedor':
        str(detalle_orden_de_trabajo.orden_de_trabajo.cliente.vendedor_id) if
        detalle_orden_de_trabajo.orden_de_trabajo.cliente.vendedor_id != None
        else '',
        'fecha':
        detalle_orden_de_trabajo.orden_de_trabajo.fecha_de_ingreso.strftime(
            "%d/%m/%Y"),
        'precio':
        separador_de_miles(
            detalle_orden_de_trabajo.orden_de_trabajo.precio_unitario),
        'orden_de_compra':
        detalle_orden_de_trabajo.orden_de_trabajo.orden_de_compra_del_cliente,
        #detalle papel
        'detallecantidad':
        separador_de_miles(detalle_orden_de_trabajo.cantidad),
        'descripcion':
        detalle_orden_de_trabajo.material.descripcion,
        'gramaje':
        detalle_orden_de_trabajo.material.gramaje.descripcion
        if detalle_orden_de_trabajo.material.gramaje != None else '',
        'resma':
        detalle_orden_de_trabajo.material.resma.descripcion
        if detalle_orden_de_trabajo.material.resma != None else '',
        # 'precio': separador_de_miles(detalle_orden_de_trabajo.material.costo_actual),
        #detalle del item
        'nombre':
        detalle_orden_de_trabajo.descripcion,
        'detalleentregado':
        separador_de_miles(detalle_orden_de_trabajo.entregado),
        'detallerestante':
        separador_de_miles(detalle_orden_de_trabajo.restante),
    })

    return HttpResponse(json.dumps(result_set),
                        content_type='application/json')
示例#6
0
    def render_to_response(self, context, **response_kwargs):
        if 'excel' in self.request.GET.get('excel', ''):
            lista_datos = []
            datos = self.get_queryset()
            total_total = 0
            detalle_de_orden = ''
            for dato in datos:
                papeles = PapelOrdenDeCompra.objects.filter(orden_de_compra_id=dato.id)
                for papel in papeles:
                    detalle_de_orden += str(papel.descripcion)

                preprensas = PreprensaOrdenDeCompra.objects.filter(orden_de_compra_id=dato.id)
                for preprensa in preprensas:
                    detalle_de_orden += str(preprensa.descripcion)

                troqueles = TroquelOrdenDeCompra.objects.filter(orden_de_compra_id=dato.id)
                for troquel in troqueles:
                    detalle_de_orden += str(troquel.descripcion)

                posprensas_materiales = PosprensaMaterialOrdenDeCompra.objects.filter(orden_de_compra_id=dato.id)
                for posprensa_materiales in posprensas_materiales:
                    detalle_de_orden += str(posprensa_materiales.descripcion)

                posprensas_servicios = PosprensaServicioOrdenDeCompra.objects.filter(orden_de_compra_id=dato.id)
                for posprensa_servicios in posprensas_servicios:
                    detalle_de_orden += str(posprensa_servicios.descripcion)

                datos_de_bolsas = DatosDeBolsaOrdenDeCompra.objects.filter(orden_de_compra_id=dato.id)
                for dato_de_bolsa in datos_de_bolsas:
                    detalle_de_orden += str(dato_de_bolsa.descripcion)

                revistas = RevistaOrdenDeCompra.objects.filter(orden_de_compra_id=dato.id)
                compuestos = CompuestoOrdenDeCompra.objects.filter(orden_de_compra_id=dato.id)
                plastificados = PlastificadoOrdenDeCompra.objects.filter(orden_de_compra_id=dato.id)
                otros_gastos = OtroGastoOrdenDeCompra.objects.filter(orden_de_compra_id=dato.id)
                insumos = InsumoOrdenDeCompra.objects.filter(orden_de_compra_id=dato.id)

                lista_datos.append([
                    dato.fecha.strftime("%d/%m/%Y"),
                    dato.proveedor.razon_social,
                    separador_de_miles(dato.get_total()),
                    detalle_de_orden,
                ])
                total_total += dato.get_total()

            lista_datos.append(['Total', separador_de_miles(total_total)])

            titulos = ['Fecha', 'Proveedor', 'Total', 'Detalle']

            return listview_to_excel(lista_datos, 'ordenes_de_compras', titulos)

        return super(OrdenDeCompraListView, self).render_to_response(context, **response_kwargs)
示例#7
0
def get_stock_material_deposito(request):
    material_id = request.GET.get('material_id', '')
    deposito_id = request.GET.get('deposito_id', '')
    datos = {
        'saldo':
        separador_de_miles(
            get_stock(material_id=material_id, deposito_id=deposito_id))
    }

    return JsonResponse(datos)
示例#8
0
def get_compra(request):
    compra_id = (request.GET['compraid']).replace(" ", "")

    result_set = []

    if compra_id == "":
        return HttpResponse(json.dumps(result_set),
                            content_type='application/json')

    compra = Compra.objects.get(pk=compra_id)

    result_set.append({
        'total': separador_de_miles(compra.total),
        'pagado': separador_de_miles(compra.pagado),
        'saldo': separador_de_miles(compra.saldo)
    })

    return HttpResponse(json.dumps(result_set),
                        content_type='application/json')
示例#9
0
def get_troquelcosto(request):
    troquelcosto_id = (request.GET['id']).replace(" ", "")
    print "ajax troquelcosto_id (%s)" % troquelcosto_id

    result_set = []

    if troquelcosto_id == "":
        return HttpResponse(json.dumps(result_set),
                            content_type='application/json')

    troquelcosto = TroquelCosto.objects.get(pk=troquelcosto_id)

    result_set.append({
        'cantidad': separador_de_miles(1),
        'precio': separador_de_miles(troquelcosto.precio),
        'subtotal': separador_de_miles(troquelcosto.precio)
    })

    return HttpResponse(json.dumps(result_set),
                        content_type='application/json')
示例#10
0
def marcar_presupuesto_enviado(request, presupuesto_id):
    context = RequestContext(request)
    presupuesto = Presupuesto.objects.get(pk=presupuesto_id)
    if request.method == 'POST':
        presupuesto.estado = EstadoPresupuestos.ENVIADO
        presupuesto.save()
        return redirect('/admin/comercial/presupuesto/')

    mensaje = "Desea marcar como enviado el presupuesto " + separador_de_miles(
        presupuesto.id)
    return render_to_response('admin/confirm.html', {'mensaje': mensaje},
                              context)
示例#11
0
    def render_to_response(self, context, **response_kwargs):
        if 'excel' in self.request.GET.get('excel', ''):
            lista_datos = []
            datos = self.get_queryset()
            for dato in datos:
                if dato.saldo != 0:
                    lista_datos.append([
                        dato.get_numero_de_factura(),
                        dato.proveedor.razon_social,
                        dato.fecha.strftime("%d/%m/%Y"),
                        dato.fecha_de_vencimiento.strftime("%d/%m/%Y"),
                        separador_de_miles(dato.total),
                        separador_de_miles(dato.saldo),
                    ])

            titulos = [
                'Factura', 'Proveedor', 'Emision', 'Vencimiento', 'Monto',
                'Saldo'
            ]
            return listview_to_excel(lista_datos, 'Compras', titulos)
        return super(PagosPendientesListView,
                     self).render_to_response(context, **response_kwargs)
示例#12
0
    def contenido(canvas, rendicion):
        from reportlab.lib.colors import darkblue, black
        canvas.setFillColor(darkblue)
        canvas.setFillColor(black)
        canvas.setStrokeColor(black)
        canvas.setFont("Helvetica-Bold", 13)

        # DATOS DE LA RENDICION
        canvas.setFont("Helvetica", 14)
        canvas.drawString(30, 820, "Rendicion Nro. : %s" % force_text(rendicion.id or ''))
        canvas.drawString(220, 820, "Fecha: %s" % force_text(rendicion.fecha.strftime('%d/%m/%Y') or ''))
        canvas.drawString(30, 800, "Cobrador : %s" % force_text(rendicion.cobrador or ''))

        # DETALLES
        canvas.line(30, 785, 350, 785)
        canvas.line(30, 765, 350, 765)

        canvas.drawString(30, 770, "Recibo")
        canvas.drawString(90, 770, u"Cliente")
        canvas.drawString(290, 770, "Subtotal")

        row = 765
        canvas.setFont("Helvetica", 11)
        detalles = DetallePresentacion.objects.filter(presentacion=rendicion)
        total_rendicion = 0
        for d in detalles:
            row -= 15
            canvas.drawString(40, row, force_text(d.cobro.numero))
            canvas.drawString(90, row, force_text(Truncator(d.cobro.cliente).chars(30)))
            canvas.drawString(280, row, force_text(separador_de_miles(d.subtotal)).rjust(13, ' '))
            total_rendicion += d.subtotal

        row -= 10
        canvas.line(30, row, 350, row)

        canvas.setFont("Helvetica-Bold", 13)

        row -= 14
        canvas.drawString(230, row, "Total: %s Gs." % separador_de_miles(total_rendicion))
示例#13
0
def get_ordendetrabajo(request):
    orden_de_trabajo_id = (request.GET['otid']).replace(" ", "")

    result_set = []

    if orden_de_trabajo_id == "":
        return HttpResponse(json.dumps(result_set),
                            content_type='application/json')

    orden_de_trabajo = OrdenDeTrabajo.objects.get(pk=orden_de_trabajo_id)

    result_set.append({
        'ot':
        orden_de_trabajo.id,
        'nombre':
        orden_de_trabajo.nombre,
        'cantidad':
        separador_de_miles(orden_de_trabajo.cantidad),
        'cantidad_no_facturada':
        separador_de_miles(orden_de_trabajo.cantidad_no_facturada),
        'presupuesto':
        orden_de_trabajo.presupuesto_numero,
        'cliente':
        orden_de_trabajo.cliente.nombre,
        'fecha':
        orden_de_trabajo.fecha_de_ingreso.strftime("%d/%m/%Y"),
        'precio':
        separador_de_miles(orden_de_trabajo.precio_unitario),
        'orden_de_compra':
        orden_de_trabajo.orden_de_compra_del_cliente,
        'entregado':
        separador_de_miles(orden_de_trabajo.entregado),
        'restante':
        separador_de_miles(orden_de_trabajo.restante),
    })

    return HttpResponse(json.dumps(result_set),
                        content_type='application/json')
示例#14
0
def get_otrogastocosto(request):
    otrogastocosto_id = (request.GET['id']).replace(" ", "")
    print "ajax otrogastocosto_id (%s)" % otrogastocosto_id

    result_set = []

    if otrogastocosto_id == "":
        return HttpResponse(json.dumps(result_set),
                            content_type='application/json')

    otrogastocosto = OtroGastoCosto.objects.get(pk=otrogastocosto_id)

    result_set.append({
        'cantidad':
        separador_de_miles(otrogastocosto.cantidad -
                           otrogastocosto.cantidad_en_oc),
        'precio':
        separador_de_miles(otrogastocosto.precio_unitario),
        'subtotal':
        separador_de_miles(otrogastocosto.get_subtotal())
    })

    return HttpResponse(json.dumps(result_set),
                        content_type='application/json')
示例#15
0
def get_datosdebolsacosto(request):
    datosdebolsacosto_id = (request.GET['id']).replace(" ", "")
    print "ajax datosdebolsacosto_id (%s)" % datosdebolsacosto_id

    result_set = []

    if datosdebolsacosto_id == "":
        return HttpResponse(json.dumps(result_set),
                            content_type='application/json')

    datosdebolsacosto = DatosDeBolsaCosto.objects.get(pk=datosdebolsacosto_id)

    result_set.append({
        'cantidad':
        separador_de_miles(datosdebolsacosto.cantidad -
                           datosdebolsacosto.cantidad_en_oc),
        'precio':
        separador_de_miles(datosdebolsacosto.precio_unitario),
        'subtotal':
        separador_de_miles(datosdebolsacosto.get_subtotal())
    })

    return HttpResponse(json.dumps(result_set),
                        content_type='application/json')
示例#16
0
    def render_to_response(self, context, **response_kwargs):
        if 'excel' in self.request.GET.get('excel', ''):
            lista_datos = []
            datos = self.get_queryset().exclude(estado=ANULADO)
            for dato in datos:
                ots = DetalleDeVenta.objects.filter(venta=dato)
                otsConCambios = DetalleDeVenta2.objects.filter(venta=dato)
                ordenes = ' '
                for ot in ots:
                    ordenes += '[' + str(
                        ot.orden_de_trabajo_id) + '] ' + ot.descripcion + ', '

                for otConCambio in otsConCambios:
                    ordenes += '[' + str(
                        otConCambio.detalle_orden_de_trabajo.
                        orden_de_trabajo_id
                    ) + '] ' + otConCambio.descripcion + '; '

                if dato.estado != 'A':
                    lista_datos.append([
                        dato.get_numero_de_factura(),
                        dato.cliente.razon_social,
                        dato.fecha_de_emision.strftime("%d/%m/%Y"),
                        dato.fecha_de_vencimiento.strftime("%d/%m/%Y"),
                        separador_de_miles(dato.total),
                        separador_de_miles(dato.saldo), dato.estado, ordenes
                    ])

            titulos = [
                'Factura', 'Cliente', 'Emision', 'Vencimiento', 'Monto',
                'Saldo', 'Estado', 'Ordenes de trabajo'
            ]
            return listview_to_excel(lista_datos, 'Ventas', titulos)

        return super(VentaListView,
                     self).render_to_response(context, **response_kwargs)
示例#17
0
def get_precioventa(request):
    precioventa_id = (request.GET['precioventa_id']).replace(" ","")
    print "ajax precioventa_id (%s)" % precioventa_id

    result_set = []

    if precioventa_id == "":
        return HttpResponse(json.dumps(result_set), 
                            #mimetype='application/json', 
                            content_type='application/json')

    precioventa_id = int(precioventa_id)

    precioventa = PrecioVentaProducto.objects.get(pk = precioventa_id)

    result_set.append({ 'precio': separador_de_miles(precioventa.precio_venta) })

    return HttpResponse(json.dumps(result_set), 
                        content_type='application/json')
示例#18
0
def get_maquina(request):
    maquina_id = (request.GET['maquinaid']).replace(" ", "")

    result_set = []

    if maquina_id == "":
        return HttpResponse(json.dumps(result_set),
                            content_type='application/json')

    maquina = Maquina.objects.get(pk=maquina_id)

    result_set.append({
        'descripcion': maquina.descripcion,
        'precio': separador_de_miles(maquina.precio),
        'codigo': maquina.id
    })

    return HttpResponse(json.dumps(result_set),
                        content_type='application/json')
示例#19
0
def get_precioventa(request):
    precioventa_id = (request.GET['precioventa_id']).replace(" ", "")
    print "ajax precioventa_id (%s)" % precioventa_id

    result_set = []

    if precioventa_id == "":
        return HttpResponse(
            json.dumps(result_set),
            #mimetype='application/json',
            content_type='application/json')

    precioventa_id = int(precioventa_id)

    precioventa = PrecioVentaProducto.objects.get(pk=precioventa_id)

    result_set.append({'precio': separador_de_miles(precioventa.precio_venta)})

    return HttpResponse(json.dumps(result_set),
                        content_type='application/json')
示例#20
0
    def render_to_response(self, context, **response_kwargs):
        if 'excel' in self.request.GET.get('excel', ''):
            lista_datos = []
            datos = self.get_queryset()
            total_total = 0
            total_pagado = 0
            total_saldo = 0
            for dato in datos:
                lista_datos.append([
                    dato.get_numero_de_factura(),
                    dato.fecha_de_emision.strftime("%d/%m/%Y"),
                    dato.fecha_de_vencimiento.strftime("%d/%m/%Y"),
                    separador_de_miles(dato.total),
                    separador_de_miles(dato.pagado),
                    separador_de_miles(dato.saldo),
                ])
                total_total += dato.total
                total_pagado += dato.pagado
                total_saldo += dato.saldo

            lista_datos.append([
                'Totales', '', '',
                separador_de_miles(total_total),
                separador_de_miles(total_pagado),
                separador_de_miles(total_saldo)
            ])

            titulos = [
                'Nro. Factura', 'Fecha Emision', 'Fecha Vencimiento', 'Total',
                'Pagado', 'Saldo'
            ]

            filename = "cobros_%s" % dato.cliente.nombre
            return listview_to_excel(lista_datos, filename, titulos)

        return super(EstadoDeCuentaListView,
                     self).render_to_response(context, **response_kwargs)
示例#21
0
 def get_salario(self, obj):
     return separador_de_miles(obj.salario)
示例#22
0
 def get_total(self, obj):
     return separador_de_miles(obj.total)
示例#23
0
def reporte_retiro(request, retiro_id):
    response = HttpResponse(content_type='application/pdf')
    pdf_name = "Retiro_" + datetime.now().strftime(
        '%Y-%m-%d|%H:%M:%S') + '.pdf'

    response[
        'Content-Disposition'] = 'attachment; filename=%s' % pdf_name.replace(
            " ", "_")
    buff = BytesIO()
    doc = SimpleDocTemplate(
        buff,
        pagesize=(A4),
        rightMargin=40,
        leftMargin=40,
        topMargin=60,
        bottomMargin=18,
    )
    reporte = []
    styles = getSampleStyleSheet()
    header = Paragraph("Retiro", styles['Title'])
    reporte.append(header)

    retiro = Retiro.objects.get(pk=retiro_id)

    numero = Paragraph("Numero: %s" % separador_de_miles(retiro_id),
                       styles['Normal'])
    reporte.append(numero)

    fecha = Paragraph("Fecha: %s" % retiro.fecha.strftime("%d/%m/%Y"),
                      styles['Normal'])
    reporte.append(fecha)

    cliente = Paragraph("Funcionario: %s" % retiro.funcionario.get_full_name(),
                        styles['Normal'])
    reporte.append(cliente)

    header = Paragraph("detalle", styles['Title'])
    reporte.append(header)

    detalles = DetalleRetiro.objects.filter(retiro_id=retiro_id)
    datos = [("OT", "Deposito", "Material", "Cantidad")]

    for detalle in detalles:
        datos = datos + [(
            Paragraph(
                (separador_de_miles(detalle.orden_de_trabajo.id) if
                 detalle.orden_de_trabajo != None else ''), styles['Normal']),
            Paragraph(detalle.deposito.nombre, styles['Normal']),
            Paragraph(detalle.material.__unicode__(), styles['Normal']),
            Paragraph(separador_de_miles(detalle.cantidad), styles['Normal']),
        )]

    t = Table(datos, colWidths=(30 * mm, 30 * mm, 105 * mm, 30 * mm))
    t.setStyle(
        TableStyle([
            ('BACKGROUND', (0, 0), (-1, 0), colors.grey),
            ('GRID', (0, 0), (-1, -1), 1, colors.black),
            #('ALIGN',(1,1),(1,-1),'RIGHT'),
            #('ALIGN',(3,1),(3,-1),'RIGHT'),
            #('ALIGN',(4,1),(4,-1),'RIGHT'),
        ]))
    reporte.append(t)

    doc.build(reporte)
    response.write(buff.getvalue())
    buff.close()
    return response
示例#24
0
 def get_precio_unitario(self, obj):
     return separador_de_miles(obj.precio_unitario)
示例#25
0
 def get_existencia(self, obj):
     return separador_de_miles(obj.existencia)
示例#26
0
    def render_to_response(self, context, **response_kwargs):
        if 'excel' in self.request.GET.get('excel', ''):
            lista_recibos = []
            recibos = self.get_queryset()
            total_anticipos = 0
            total_retenciones = 0
            total_efectivo = 0
            total_cheques = 0
            total_transferencias = 0
            total_giros = 0
            total_notas_de_credito = 0
            total_tarjetas_de_credito = 0
            total_tarjetas_de_debito = 0
            total_otros = 0
            total_del_dia = 0

            for recibo in recibos:
                facturas_del_recibo = DetalleDeRecibo.objects.filter(
                    recibo=recibo)
                facturas = ' '
                for factura in facturas_del_recibo:
                    facturas += factura.factura.get_numero_de_factura() + ' - '

                pagos_del_recibo = DetalleDeRecibo2.objects.filter(
                    recibo=recibo)
                anticipo = 0
                retencion = 0
                efectivo = 0
                cheque = 0
                transferencia = 0
                giro = 0
                tarjeta_de_credito = 0
                tarjeta_de_debito = 0
                otro = 0
                nota_de_credito = 0
                banco = ' '
                cheque_nro = ''
                for pago in pagos_del_recibo:
                    if pago.medio_de_pago == 8:
                        anticipo = pago.monto
                    if pago.medio_de_pago == 5:
                        retencion = pago.monto
                    if pago.medio_de_pago == 0:
                        efectivo = pago.monto
                    if pago.medio_de_pago == 1:
                        transferencia = pago.monto
                    if pago.medio_de_pago == 2:
                        giro = pago.monto
                    if pago.medio_de_pago == 7:
                        tarjeta_de_credito = pago.monto
                    if pago.medio_de_pago == 6:
                        tarjeta_de_debito = pago.monto
                    if pago.medio_de_pago == 9:
                        otro = pago.monto
                    if pago.medio_de_pago == 4:
                        nota_de_credito = pago.monto
                    if pago.medio_de_pago == 3:
                        cheque = pago.monto
                        if pago.cheque:
                            banco = pago.cheque.banco.nombre
                            cheque_nro = pago.cheque.numero

                if recibo.estado != 'A':
                    lista_recibos.append([
                        recibo.numero,
                        recibo.fecha.strftime("%d/%m/%Y"),
                        recibo.cliente.nombre,
                        facturas,
                        separador_de_miles(anticipo),
                        separador_de_miles(retencion),
                        separador_de_miles(efectivo),
                        separador_de_miles(transferencia),
                        separador_de_miles(giro),
                        separador_de_miles(tarjeta_de_credito),
                        separador_de_miles(tarjeta_de_debito),
                        separador_de_miles(otro),
                        separador_de_miles(nota_de_credito),
                        separador_de_miles(cheque),
                        banco,
                        cheque_nro,
                    ])
                    total_anticipos += anticipo
                    total_retenciones += retencion
                    total_efectivo += efectivo
                    total_transferencias += transferencia
                    total_giros += giro
                    total_notas_de_credito += nota_de_credito
                    total_tarjetas_de_credito += tarjeta_de_credito
                    total_tarjetas_de_debito += tarjeta_de_debito
                    total_otros += otro
                    total_cheques += cheque
            total_del_dia = total_anticipos + total_retenciones + total_efectivo + total_cheques + \
                            total_transferencias + total_giros + total_notas_de_credito + \
                            total_tarjetas_de_credito + total_tarjetas_de_debito + total_otros

            lista_recibos.append([])
            lista_recibos.append([
                '', '', '', 'TOTALES:',
                separador_de_miles(total_anticipos),
                separador_de_miles(total_retenciones),
                separador_de_miles(total_efectivo),
                separador_de_miles(total_transferencias),
                separador_de_miles(total_giros),
                separador_de_miles(total_tarjetas_de_credito),
                separador_de_miles(total_tarjetas_de_debito),
                separador_de_miles(total_otros),
                separador_de_miles(total_notas_de_credito),
                separador_de_miles(total_cheques)
            ])
            lista_recibos.append(
                ['', '', 'TOTAL DEL DIA:',
                 separador_de_miles(total_del_dia)])
            titulos = [
                'Nro de Recibo', 'Fecha', 'Cliente', 'Facturas', 'Anticipo',
                'Retencion', 'Efectivo', 'Transferencias', 'Giros',
                'Tarjetas de credito', 'Tarjetas de debito', 'Otros',
                'Notas de credito', 'Cheque', 'Banco', 'Nro de cheque'
            ]
            return listview_to_excel(lista_recibos, 'recibos_emitidos',
                                     titulos)

        return super(ReciboListView,
                     self).render_to_response(context, **response_kwargs)
示例#27
0
def separador_de_miles(numero):
    return separador_de_miles(numero)
示例#28
0
def reporte_orden_de_trabajo(request, orden_de_trabajo_id):
    response = HttpResponse(content_type='application/pdf')
    pdf_name = "orden_de_trabajo_" + time.strftime(
        '%Y-%m-%d|%H:%M:%S') + '.pdf'

    response[
        'Content-Disposition'] = 'attachment; filename=%s' % pdf_name.replace(
            " ", "_")
    buff = BytesIO()
    doc = SimpleDocTemplate(
        buff,
        pagesize=(A4),
        rightMargin=40,
        leftMargin=40,
        topMargin=60,
        bottomMargin=18,
    )

    orden_de_trabajo = OrdenDeTrabajo.objects.get(pk=orden_de_trabajo_id)

    reporte = []
    styles = getSampleStyleSheet()

    #tabla cabecera con numero y fechas de la OT
    datos = []
    elementos = []

    # Tabla con datos de la cabecera Nro. OT y Nro. Presupuesto
    nro_ot = Paragraph(
        "Nro. de OT: %s" % separador_de_miles(orden_de_trabajo.id),
        styles['Heading2'])
    nro_presupuesto = Paragraph(
        "Nro. de presupuesto: %s" % orden_de_trabajo.presupuesto_numero,
        styles['Heading2'])
    elementos.append(nro_presupuesto)
    elementos.append(nro_ot)

    t_header = Table([elementos], colWidths=(125 * mm, 70 * mm))
    reporte.append(t_header)

    #Tabla con datos de la OT
    datos += [("Nombre: %s" % orden_de_trabajo.nombre, "Fecha de ingreso: %s" %
               orden_de_trabajo.fecha_de_ingreso.strftime("%d/%m/%Y"))]
    #if request.user.has_perm('produccion.view_fecha_solicitada'):
    fecha_solicitada = orden_de_trabajo.fecha_solicitada.strftime(
        "%d/%m/%Y") if (orden_de_trabajo.fecha_solicitada != None) else ''
    datos += [("Cliente: %s" % orden_de_trabajo.cliente.razon_social,
               "Fecha de presentacion: %s" % fecha_solicitada)]
    datos += [("Vendedor: %s" % orden_de_trabajo.vendedor.get_full_name(), "")]
    datos += [("Comentarios: %s" % orden_de_trabajo.comentarios, "")]

    t = Table(datos, colWidths=(125 * mm, 70 * mm))
    reporte.append(t)

    linea = Paragraph("", styles['Title'])
    reporte.append(linea)

    t = Table([("Opciones", )], colWidths=(195 * mm))
    t.setStyle(
        TableStyle([
            ('BACKGROUND', (0, 0), (-1, 0), colors.grey),
            ('GRID', (0, 0), (-1, -1), 1, colors.black),
            #('ALIGN',(3,1),(3,-1),'RIGHT'),
            #('ALIGN',(2,1),(2,-1),'RIGHT'),
            #('ALIGN',(4,1),(4,-1),'RIGHT'),
        ]))

    reporte.append(t)

    datos = [("Prueba de color:",
              ("Si" if orden_de_trabajo.prueba_de_color == True else "No"),
              "Prueba del producto:",
              ("Si" if orden_de_trabajo.prueba_de_producto == True else "No"))]
    datos = datos + [
        ("Muestra de color:",
         ("Si" if orden_de_trabajo.muestra_de_color == True else "No"),
         "Muestra del producto:",
         ("Si" if orden_de_trabajo.muestra_de_producto == True else "No"))
    ]
    datos = datos + [
        ("Repeticion:",
         ("Si" if orden_de_trabajo.repeticion == True else "No"),
         "Buscar sobrante:",
         ("Si" if orden_de_trabajo.buscar_sobrante == True else "No"))
    ]
    t = Table(datos, colWidths=(48 * mm, 48 * mm, 48 * mm, 48 * mm))
    reporte.append(t)

    t = Table([("Detalle", )], colWidths=(195 * mm))
    t.setStyle(
        TableStyle([
            ('BACKGROUND', (0, 0), (-1, 0), colors.grey),
            ('GRID', (0, 0), (-1, -1), 1, colors.black),
            ('ALIGN', (0, 0), (-1, 0), 'CENTER'),
            #('ALIGN',(2,1),(2,-1),'RIGHT'),
            #('ALIGN',(4,1),(4,-1),'RIGHT'),
        ]))

    reporte.append(t)

    datos = [(
        "Categoria:",
        Paragraph((orden_de_trabajo.categoria.nombre
                   if orden_de_trabajo.categoria != None else ''),
                  styles['Normal']),
        "Subcategoria:",
        Paragraph((orden_de_trabajo.subcategoria.nombre
                   if orden_de_trabajo.subcategoria != None else ''),
                  styles['Normal']),
        "Cantidad:",
        separador_de_miles(orden_de_trabajo.cantidad),
    )]

    t = Table(datos,
              colWidths=(25 * mm, 45 * mm, 35 * mm, 45 * mm, 20 * mm, 25 * mm))
    reporte.append(t)

    datos = [
        ("Precio unitario:",
         separador_de_miles(orden_de_trabajo.precio_unitario, gs=True),
         "Total:", separador_de_miles(orden_de_trabajo.get_total(), gs=True))
    ] + [("Cambios:", ("Si" if orden_de_trabajo.cambios == True else "No"),
          "Materiales compuestos",
          ("Si" if orden_de_trabajo.materiales_compuestos == True else "No"))]
    t = Table(datos, colWidths=(25 * mm, 45 * mm, 45 * mm, 80 * mm))
    reporte.append(t)

    contador = 1
    detalles = DetalleOrdenDeTrabajo.objects.filter(
        orden_de_trabajo_id=orden_de_trabajo_id)
    for detalle in detalles:

        datos = [(("#" + str(contador) + " Descripcion:"),
                  Paragraph(detalle.descripcion,
                            styles['Normal']), "Cantidad:",
                  Paragraph(separador_de_miles(detalle.cantidad),
                            styles['Normal']))]
        datos = datos + [("Material:",
                          Paragraph(detalle.material.__unicode__(),
                                    styles['Normal']), "Dimensiones:",
                          Paragraph(detalle.get_dimension(), styles['Normal']))
                         ]

        t = Table(datos, colWidths=(30 * mm, 115 * mm, 25 * mm, 25 * mm))

        t.setStyle(
            TableStyle([
                ("LINEABOVE", (0, 0), (-1, 0), 1, colors.black),

                #('BACKGROUND', (0, 0), (-1, 0), colors.grey),
                #('GRID', (0, 0), (-1, -1), 1, colors.black),
                #('ALIGN',(3,1),(3,-1),'RIGHT'),
                #('ALIGN',(2,1),(2,-1),'RIGHT'),
                #('ALIGN',(4,1),(4,-1),'RIGHT'),
            ]))

        reporte.append(t)

        datos = [("Color", "", "")]
        datos = datos + [("", "Frente", "Dorso")]
        datos = datos + [("Seleccion", detalle.color_seleccion_frente,
                          detalle.color_seleccion_dorso)]
        datos = datos + [("Pantone", detalle.color_pantone_frente,
                          detalle.color_pantone_dorso)]
        t = Table(datos, colWidths=(20 * mm, 45 * mm, 45 * mm))

        t.setStyle(
            TableStyle([
                ('SPAN', (0, 0), (-1, 0)),
                #('BACKGROUND', (0, 0), (-1, 0), colors.grey),
                ('GRID', (0, 0), (-1, -1), 1, colors.black),
                ('ALIGN', (0, 0), (-1, 1), 'CENTER'),
                #('ALIGN',(2,1),(2,-1),'RIGHT'),
                #('ALIGN',(4,1),(4,-1),'RIGHT'),
            ]))

        reporte.append(t)

        datos = [("Observaciones:",
                  Paragraph(detalle.observaciones, styles['Normal']))]
        t = Table(datos, colWidths=(30 * mm, 165 * mm))

        t.setStyle(
            TableStyle([
                #('BACKGROUND', (0, 0), (-1, 0), colors.grey),
                #('GRID', (0, 0), (-1, -1), 1, colors.black),
                #('ALIGN',(3,1),(3,-1),'RIGHT'),
                #('ALIGN',(2,1),(2,-1),'RIGHT'),
                #('ALIGN',(4,1),(4,-1),'RIGHT'),
            ]))

        reporte.append(t)
        linea = Paragraph("", styles['Title'])
        reporte.append(linea)
        contador = contador + 1

    doc.build(reporte)
    response.write(buff.getvalue())
    buff.close()
    return response
示例#29
0
 def __unicode__(self):
     return unicode("Cheque " + self.numero + " | Gs." +
                    separador_de_miles(self.monto))
示例#30
0
def separador_miles(numero):
    return separador_de_miles(numero)
示例#31
0
def reporte_orden_de_compra(request, orden_de_compra_id):
    response = HttpResponse(content_type='application/pdf')
    pdf_name = "orden_de_compra_" + datetime.now().strftime(
        '%Y-%m-%d|%H:%M:%S') + '.pdf'
    print pdf_name
    response[
        'Content-Disposition'] = 'attachment; filename=%s' % pdf_name.replace(
            " ", "_")
    buff = BytesIO()
    doc = SimpleDocTemplate(
        buff,
        pagesize=(A4),
        rightMargin=40,
        leftMargin=40,
        topMargin=60,
        bottomMargin=18,
    )
    reporte = []
    styles = getSampleStyleSheet()
    orden_de_compra = OrdenDeCompra.objects.get(pk=orden_de_compra_id)

    numero = "Numero: " + str(orden_de_compra.id)
    # reporte.append(numero)
    header = Table([
        [" ", Paragraph("Orden de compra", styles['Title']), numero],
    ],
                   colWidths=(65 * mm, 65 * mm, 65 * mm))
    header.setStyle(TableStyle([('ALIGN', (2, 0), (2, 0), 'RIGHT')]))
    reporte.append(header)

    fecha = Paragraph("Fecha: %s" % orden_de_compra.fecha.strftime("%d/%m/%Y"),
                      styles['Normal'])
    # reporte.append(fecha)

    proveedor = Paragraph(
        "Proveedor: %s" % orden_de_compra.proveedor.razon_social,
        styles['Normal'])
    # reporte.append(proveedor)

    contacto = Paragraph("Contacto: %s" % orden_de_compra.contacto,
                         styles['Normal'])
    # reporte.append(contacto)

    telefono = Paragraph("Telefono: %s" % orden_de_compra.telefono,
                         styles['Normal'])
    # reporte.append(telefono)

    forma_de_pago = Paragraph(
        "Forma de pago: %s" % orden_de_compra.forma_de_pago, styles['Normal'])
    # reporte.append(forma_de_pago)

    condicion = Paragraph("Condicion: %s" % orden_de_compra.condicion,
                          styles['Normal'])
    # reporte.append(condicion)

    cheque_diferido = Paragraph(
        "Cheque diferido: %s" % orden_de_compra.cheque_diferido,
        styles['Normal'])
    # reporte.append(cheque_diferido)

    plazo = Paragraph("Plazo: %s" % orden_de_compra.plazo, styles['Normal'])
    # reporte.append(plazo)

    cabecera = [
        [fecha, forma_de_pago],
        [proveedor, condicion],
        [contacto, cheque_diferido],
        [telefono, plazo],
    ]

    headerbox = Table(cabecera, colWidths=(80 * mm, 115 * mm))
    headerbox.setStyle(
        TableStyle([('BOX', (0, 0), (-1, -1), 1, colors.black),
                    ('LINEBEFORE', (0, 0), (-1, -1), 1, colors.black)]))
    reporte.append(headerbox)

    departamento_solicitante = Paragraph(
        "Departamento solicitante: %s" %
        orden_de_compra.departamento_solicitante, styles['Normal'])
    # reporte.append(departamento_solicitante)

    categoria_de_gastos = Paragraph(
        "Categoria de gastos: %s" % orden_de_compra.categoria_de_gastos,
        styles['Normal'])
    # reporte.append(categoria_de_gastos)

    responsable = Paragraph("Responsable: %s" % orden_de_compra.responsable,
                            styles['Normal'])
    # reporte.append(responsable)

    cabecera2 = [
        [departamento_solicitante],
        [categoria_de_gastos],
        [responsable],
    ]
    headerbox2 = Table(cabecera2, 195 * mm)
    headerbox2.setStyle(
        TableStyle([
            ('GRID', (0, 0), (-1, -1), 1, colors.black),
        ]))
    reporte.append(headerbox2)
    #total = Paragraph("Total: Gs. %s" % separador_de_miles(orden_de_compra.total), styles['Normal'])
    #reporte.append(total)

    datos = [("OT", "Descripcion", "Cantidad", "Precio Unitario", "Subtotal")]

    detalles = PapelOrdenDeCompra.objects.filter(
        orden_de_compra_id=orden_de_compra_id)

    for detalle in detalles:
        datos = datos + [(separador_de_miles(
            detalle.descripcion.costo.detalle_orden_de_trabajo.
            orden_de_trabajo.id), detalle.descripcion.__unicode__(),
                          separador_de_miles(detalle.cantidad),
                          separador_de_miles(detalle.precio_unitario),
                          separador_de_miles(detalle.get_subtotal()))]

    detalles = PreprensaOrdenDeCompra.objects.filter(
        orden_de_compra_id=orden_de_compra_id)

    for detalle in detalles:
        datos = datos + [(separador_de_miles(
            detalle.descripcion.costo.detalle_orden_de_trabajo.
            orden_de_trabajo.id), detalle.descripcion.__unicode__(),
                          separador_de_miles(detalle.cantidad),
                          separador_de_miles(detalle.precio_unitario),
                          separador_de_miles(detalle.get_subtotal()))]

    detalles = TroquelOrdenDeCompra.objects.filter(
        orden_de_compra_id=orden_de_compra_id)

    for detalle in detalles:
        datos = datos + [(separador_de_miles(
            detalle.descripcion.costo.detalle_orden_de_trabajo.
            orden_de_trabajo.id), detalle.descripcion.__unicode__(),
                          separador_de_miles(detalle.cantidad),
                          separador_de_miles(detalle.precio_unitario),
                          separador_de_miles(detalle.get_subtotal()))]

    detalles = PosprensaServicioOrdenDeCompra.objects.filter(
        orden_de_compra_id=orden_de_compra_id)

    for detalle in detalles:
        datos = datos + [(separador_de_miles(
            detalle.descripcion.costo.detalle_orden_de_trabajo.
            orden_de_trabajo.id), detalle.descripcion.__unicode__(),
                          separador_de_miles(detalle.cantidad),
                          separador_de_miles(detalle.precio_unitario),
                          separador_de_miles(detalle.get_subtotal()))]

    detalles = PosprensaMaterialOrdenDeCompra.objects.filter(
        orden_de_compra_id=orden_de_compra_id)

    for detalle in detalles:
        datos = datos + [(separador_de_miles(
            detalle.descripcion.costo.detalle_orden_de_trabajo.
            orden_de_trabajo.id), detalle.descripcion.__unicode__(),
                          separador_de_miles(detalle.cantidad),
                          separador_de_miles(detalle.precio_unitario),
                          separador_de_miles(detalle.get_subtotal()))]

    detalles = PosprensaOtroServicioOrdenDeCompra.objects.filter(
        orden_de_compra_id=orden_de_compra_id)

    for detalle in detalles:
        datos = datos + [(separador_de_miles(
            detalle.descripcion.costo.detalle_orden_de_trabajo.
            orden_de_trabajo.id), detalle.descripcion.__unicode__(),
                          separador_de_miles(detalle.cantidad),
                          separador_de_miles(detalle.precio_unitario),
                          separador_de_miles(detalle.get_subtotal()))]

    detalles = DatosDeBolsaOrdenDeCompra.objects.filter(
        orden_de_compra_id=orden_de_compra_id)

    for detalle in detalles:
        datos = datos + [(separador_de_miles(
            detalle.descripcion.costo.detalle_orden_de_trabajo.
            orden_de_trabajo.id), detalle.descripcion.__unicode__(),
                          separador_de_miles(detalle.cantidad),
                          separador_de_miles(detalle.precio_unitario),
                          separador_de_miles(detalle.get_subtotal()))]

    detalles = RevistaOrdenDeCompra.objects.filter(
        orden_de_compra_id=orden_de_compra_id)

    for detalle in detalles:
        datos = datos + [(separador_de_miles(
            detalle.descripcion.costo.detalle_orden_de_trabajo.
            orden_de_trabajo.id), detalle.descripcion.__unicode__(),
                          separador_de_miles(detalle.cantidad),
                          separador_de_miles(detalle.precio_unitario),
                          separador_de_miles(detalle.get_subtotal()))]

    detalles = CompuestoOrdenDeCompra.objects.filter(
        orden_de_compra_id=orden_de_compra_id)

    for detalle in detalles:
        datos = datos + [(separador_de_miles(
            detalle.descripcion.costo.detalle_orden_de_trabajo.
            orden_de_trabajo.id), detalle.descripcion.__unicode__(),
                          separador_de_miles(detalle.cantidad),
                          separador_de_miles(detalle.precio_unitario),
                          separador_de_miles(detalle.get_subtotal()))]

    detalles = PlastificadoOrdenDeCompra.objects.filter(
        orden_de_compra_id=orden_de_compra_id)

    for detalle in detalles:
        datos = datos + [(separador_de_miles(
            detalle.descripcion.costo.detalle_orden_de_trabajo.
            orden_de_trabajo.id), detalle.descripcion.__unicode__(),
                          separador_de_miles(detalle.cantidad),
                          separador_de_miles(detalle.precio_unitario),
                          separador_de_miles(detalle.get_subtotal()))]

    detalles = OtroGastoOrdenDeCompra.objects.filter(
        orden_de_compra_id=orden_de_compra_id)

    for detalle in detalles:
        datos = datos + [(separador_de_miles(
            detalle.descripcion.costo.detalle_orden_de_trabajo.
            orden_de_trabajo.id), detalle.descripcion.__unicode__(),
                          separador_de_miles(detalle.cantidad),
                          separador_de_miles(detalle.precio_unitario),
                          separador_de_miles(detalle.get_subtotal()))]

    detalles = InsumoOrdenDeCompra.objects.filter(
        orden_de_compra_id=orden_de_compra_id)

    for detalle in detalles:
        datos = datos + [('', detalle.descripcion.__unicode__(),
                          separador_de_miles(detalle.cantidad),
                          separador_de_miles(detalle.precio_unitario),
                          separador_de_miles(detalle.get_subtotal()))]

    t = Table(datos, colWidths=(20 * mm, 100 * mm, 25 * mm, 25 * mm, 25 * mm))
    t.setStyle(
        TableStyle([
            ('BACKGROUND', (0, 0), (-1, 0), colors.grey),
            ('GRID', (0, 0), (-1, -1), 1, colors.black),
            #('ALIGN',(3,1),(3,-1),'RIGHT'),
            #('ALIGN',(2,1),(2,-1),'RIGHT'),
            #('ALIGN',(4,1),(4,-1),'RIGHT'),
        ]))
    reporte.append(t)

    totalapagar = orden_de_compra.get_total()
    valorletras = "Valor en Letras          " + num2words(totalapagar,
                                                          lang='es')

    footer1 = Table([[
        'Total a Pagar',
        separador_de_miles(totalapagar),
    ]],
                    colWidths=(170 * mm, 25 * mm))
    footer1.setStyle(
        TableStyle([('GRID', (0, 0), (-1, 0), 1, colors.black),
                    ('BOX', (0, 1), (-1, 1), 1, colors.black),
                    ('ALIGN', (0, 0), (-1, -1), 'LEFT')]))

    footer2 = Table([
        [
            valorletras,
        ],
    ], 195 * mm)
    footer2.setStyle(
        TableStyle([('BOX', (0, 0), (-1, -1), 1, colors.black),
                    ('ALIGN', (0, 0), (-1, -1), 'LEFT')]))

    reporte.append(footer1)
    reporte.append(footer2)

    doc.build(reporte)
    response.write(buff.getvalue())
    buff.close()
    return response