Пример #1
0
def update_invoice(uid):
    invoice = Invoice.query.get_or_404(uid)
    form = InvoiceForm(request.form, obj=invoice)

    if request.method == "POST":
        if form.validate(current_user):
            save = False
            if invoice.org_uid != form.org_uid.data:
                invoice.org_uid = form.org_uid.data
                save = True
            if invoice.agent_uid != form.agent_uid.data:
                invoice.agent_uid = form.agent_uid.data
                save = True
            if invoice.ninvoice != form.ninvoice.data:
                if int(form.inv_type.data) == CONST.INVOICE_IN:
                    invoice.ninvoice = form.ninvoice.data
                    save = True
                else:
                    flash(u"Запрещено изменение номера счет-факутры книги продаж", "alert-danger")

            if invoice.dinvoice.date() != form.dinvoice.data:
                invoice.dinvoice = form.dinvoice.data
                save = True
            if invoice.sum_snds != form.sum_snds.data:
                invoice.sum_snds = form.sum_snds.data
                save = True
            if invoice.sum_no_nds18 != form.sum_no_nds18.data:
                invoice.sum_no_nds18 = form.sum_no_nds18.data
                save = True
            if invoice.sum_nds18 != form.sum_nds18.data:
                invoice.sum_nds18 = form.sum_nds18.data
                save = True
            if invoice.sum_no_nds10 != form.sum_no_nds10.data:
                invoice.sum_no_nds10 = form.sum_no_nds10.data
                save = True
            if invoice.sum_nds10 != form.sum_nds10.data:
                invoice.sum_nds10 = form.sum_nds10.data
                save = True

            if save:
                invoice.change_date = datetime.now()
                invoice.commission = invoice.get_commission()
                db.session.add(invoice)
                db.session.commit()
                flash(u"Изменения в счет-фактуре сохранены", "alert-success")
                return redirect(url_for("invoices", invoice_type=CONST.INVOICE_TYPE[int(form.inv_type.data)]))
            else:
                flash(u"Данные не менялись. Изменения не сохранены", "alert-info")
                return redirect(url_for("invoices", invoice_type=CONST.INVOICE_TYPE[int(form.inv_type.data)]))

    return render_template('invoice.html', form=form, edit=1)
Пример #2
0
def invoices(invoice_type=CONST.INVOICE_TYPE[CONST.INVOICE_IN]):
    form = InvoiceForm()
    form_elem = ElemForm()

    if invoice_type == CONST.INVOICE_TYPE[CONST.INVOICE_IN]:
        inv_type = CONST.INVOICE_IN
    elif invoice_type == CONST.INVOICE_TYPE[CONST.INVOICE_OUT]:
        inv_type = CONST.INVOICE_OUT
        del form.ninvoice


    if request.method == "POST":
        if form.validate(current_user):
            if inv_type == CONST.INVOICE_OUT:
                ninvoice = Invoice.make_unique_num(form.dinvoice.data, form.org_uid.data)
                flash(u"Счет-фактуре присвоен номер "+ninvoice, "alert-success")
            else:
                ninvoice = form.ninvoice.data
            newinvoice = Invoice(inv_type, form.org_uid.data, form.agent_uid.data,
                                 ninvoice, form.dinvoice.data,
                                 form.sum_snds.data, form.sum_no_nds18.data,
                                 form.sum_nds18.data, form.sum_no_nds10.data,
                                 form.sum_nds10.data, current_user.uid)
            db.session.add(newinvoice)
            db.session.commit()
            flash(u"Добавлена новая счет-фактура", "alert-success")

            # clean fields
            lst_fields = ['dinvoice', 'sum_snds',
                          'sum_no_nds18', 'sum_nds18',
                          'sum_no_nds10', 'sum_nds10']
            if inv_type == CONST.INVOICE_IN:
                lst_fields.append('ninvoice')
            for fld in lst_fields:
                form[fld].raw_data = None
                form[fld].data = None

    invoices = current_user.available_invoices(inv_type=inv_type)
    sums = invoices.with_entities(func.sum(Invoice.sum_snds),
                                  func.sum(Invoice.sum_no_nds18),
                                  func.sum(Invoice.sum_nds18),
                                  func.sum(Invoice.sum_no_nds10),
                                  func.sum(Invoice.sum_nds10),
                                  func.sum(Invoice.commission)).first()

    return render_template('invoices.html', form=form, form_elem=form_elem,
                           invoices=invoices.all(),
                           invoice_type=invoice_type,
                           sums=sums,
                           edit=0)