Esempio n. 1
0
def history_budgets(request):
    if not request.user.has_perm("budget.custom_view_budget"):
        not_allowed_msg(request)
        return redirect("home")

    budgets = Budget.objects.filter(is_active=False)

    if not request.user.has_perm('team.custom_view_teams'):
        budgets = budgets.filter(team__in=get_teams(request.user))

    #
    # Filter history_list depending on received GET data
    form = BudgetHistoryFilterForm(user=request.user, data=request.GET)
    if len(request.GET.keys()) > 0 and form.is_valid():
        data = form.cleaned_data
        for key, value in data.items():
            if not value:
                del data[key]

        if 'team' in data:
            data['team'] = data['team'].name

        Q_obj = Q()
        Q_obj.connector = data.pop("connector")
        Q_obj.children = data.items()

        budget_lines = BudgetLine.objects.filter(
            budget_id__in=budgets.values_list("id", flat=True)).filter(Q_obj)
    else:
        budget_lines = BudgetLine.objects.none()

    return render(
        request, 'history/budgets.html', {
            'filter_form': form,
            'budgets': paginate(request, budgets),
            'budget_lines': paginate(request, budget_lines),
            'url_args': request.GET.urlencode()
        })
Esempio n. 2
0
def export_budgetlines(request):
    #
    # Filter budget_lines depending on received GET data
    form = BudgetHistoryFilterForm(user=request.user, data=request.GET)
    if form.is_valid():
        data = form.cleaned_data
        for key, value in data.items():
            if not value:
                del data[key]

        if 'team' in data:
            data['team'] = data['team'].name

        Q_obj = Q()
        Q_obj.connector = data.pop("connector")
        Q_obj.children = data.items()

        budget_lines = BudgetLine.objects.filter(is_active=False).filter(Q_obj)
    else:
        error_msg(request, "Impossible d'exporter cette page.")
        return redirect(reverse("history_budgets"))

    wb = xlwt.Workbook()
    ws = wb.add_sheet("export")

    header = [
        u"EQUIPE", u"BUDGET", u"N°CMDE", u"DATE", u"NATURE", u"TUTELLE",
        u"FOURNISSEUR", u"COMMENTAIRE", u"DESIGNATION", u"CREDIT", u"DEBIT",
        u"QUANTITE", u"TOTAL", u"MONTANT DISPO"
    ]
    for col, title in enumerate(header):
        ws.write(0, col, title)

    prev_budget = None
    row = 1

    for bl in budget_lines.order_by("budget"):
        if prev_budget != bl.budget:
            if prev_budget: row += 1
            prev_budget = bl.budget

        ws.write(row, 0, bl.team)
        ws.write(row, 1, bl.budget)
        ws.write(row, 2, bl.number)
        ws.write(row, 3, bl.date.strftime("%d/%m/%Y"))
        ws.write(row, 4, bl.nature)
        ws.write(row, 5, bl.get_budget_type_display())
        ws.write(row, 6, bl.provider)
        ws.write(row, 7, bl.offer)
        ws.write(row, 8, bl.product)
        ws.write(row, 9, bl.credit)
        ws.write(row, 10, bl.debit)
        ws.write(row, 11, bl.quantity)
        if bl.debit:
            ws.write(row, 12, "%s" % (bl.debit * bl.quantity * -1))
        else:
            ws.write(row, 12, "%s" % (bl.credit * bl.quantity))
        ws.write(row, 13, str(bl.get_amount_left()))
        row += 1

    response = HttpResponse(mimetype="application/ms-excel")
    response[
        'Content-Disposition'] = 'attachment; filename=export_historique_budget.xls'
    response['Content-Type'] = 'application/vnd.ms-excel; charset=utf-8'
    wb.save(response)

    return response