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")
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")