示例#1
0
    def add(self, id):
        order = Order.query.get_or_abort(id)
        c.invoices = Invoice.query.filter_by(idCompany=order.idCompany, isBooked=0).all()

        c.form = NewInvoiceForm(request.POST)
        if request.method == "POST" and c.form.validate():
            invoice = Invoice()
            element = InvoicePosition()

            invoice.series_year = c.form.year.data
            invoice.series_month = c.form.months.data
            invoice.issueDate = h.today()
            invoice.idCompany = order.idCompany
            invoice.tax = order.company.tax

            invoice.save()

            element.order_id = order.id
            element.invoice_id = invoice.id
            element.value = order.freight
            element.currency_id = order.currency.id
            element.tax = order.company.tax
            element.save()

            flash(u"Faktura pomyślnie dodana.")
            return self.redirect(url(controller="invoices", action="edit", id=invoice.id))

        return render("/invoices/add.xhtml")
示例#2
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")