示例#1
0
    def list(self):
        company_name = request.params.get("company_name", "")
        number = request.params.get("number", "")
        is_booked = request.params.get("is_booked", "")
        date_from = request.params.get("invoiceDateFrom", h.today(30))
        date_to = request.params.get("invoiceDateTo", h.today())

        query = Invoice.query.join(Invoice.company).options(eagerload("company"), eagerload("elements"))

        if company_name != "":
            query = query.filter(Company.shortName.like(u"%" + company_name + u"%"))
        if is_booked:
            query = query.filter(Invoice.isBooked == is_booked)

        query = query.filter(Invoice.created_at.between(date_from, date_to))

        query = query.filter(Invoice.number.like(u"%" + number + u"%"))

        records = query.order_by(Invoice.created_at.desc(), Invoice.series_number.desc())

        invoice = Invoice()
        c.actions = invoice.get_action_choices(request)

        if request.method == "POST":
            response = invoice.response_action(request, Invoice.query)
            if response is not None:
                return response

        c.months = h.months_list()
        c.year = str(datetime.datetime.now().year)
        c.paginator = paginate.Page(
            records,
            page=int(request.GET.pop("page", 1)),
            items_per_page=int(request.GET.pop("page_size", 30)),
            **dict(request.GET)
        )

        if "partial" in request.params:
            return render("/invoices/list-partial.xhtml")
        else:
            return render("/invoices/list.xhtml")