Beispiel #1
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)
Beispiel #2
0
def export(invoice_type, dbegin, dend):
    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
    rpt_filter = [Invoice.inv_type==inv_type]
    if dbegin is not None:
        datebegin = datetime.strptime(dbegin, '%d.%m.%Y')
        rpt_filter.append(Invoice.dinvoice>=datetime.combine(datebegin, datetime.min.time()))
    if dend is not None:
        dateend = datetime.strptime(dend, '%d.%m.%Y')
        rpt_filter.append(Invoice.dinvoice<=datetime.combine(dateend, datetime.max.time()))
    invs=current_user.available_invoices(inv_type=inv_type, rpt_filter=rpt_filter)

    dump=invoice_schema.dump(invs)
    return jsonify(result=dump)
Beispiel #3
0
def report():
    form = ReportForm()
    if current_user.is_admin:
        form.user.choices = [(g.uid, g.login) for g in User.query.order_by('name')]
    else:
        form.user.choices = [(g.uid, g.login) for g in current_user.subusers]
        form.user.choices.append((current_user.uid, current_user.login))
    form.user.choices.insert(0,(-1, u"Все пользователи"))
    if request.method == "POST":
        if form.validate():
            title = CONST.INVOICE_NAME[form.inv_type.data]
            rpt_filter = [Invoice.inv_type==form.inv_type.data]
            filter_text = u''
            if form.org_uid.data != u'':
                filter_text = filter_text + u'Организация: ' + form.org.data + ' '
                rpt_filter.append(Invoice.org_uid==form.org_uid.data)
            if form.agent_uid.data !=u'':
                filter_text = filter_text + u'Контрагент: ' + form.agent.data + ' '
                rpt_filter.append(Invoice.agent_uid==form.agent_uid.data)
            if form.user.data !=-1:
                filter_text = filter_text + u"Пользователь: " + User.query.get(form.user.data).login + ' '
                rpt_filter.append(Invoice.user_uid==form.user.data)
            if form.dbegin.data is not None:
                filter_text = filter_text + u'с ' + datetime.strftime(form.dbegin.data, '%d.%m.%Y') + ' '
                rpt_filter.append(Invoice.dinvoice>=datetime.combine(form.dbegin.data, datetime.min.time()))
            if form.dend.data is not None:
                filter_text = filter_text + u'по ' + datetime.strftime(form.dend.data, '%d.%m.%Y') + ' '
                rpt_filter.append(Invoice.dinvoice<=datetime.combine(form.dend.data, datetime.max.time()))
            invoices = current_user.available_invoices(inv_type=form.inv_type.data, rpt_filter=rpt_filter)
            if form.agent_inn.data != u'':
                filer_text = filer_text + u'ИНН Контрагента: ' + form.agent_inn.data + ' '
                invoices.join(Agent).filter(Agent.inn.contains(form.agent_inn.data))
            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()
            if request.form['submit']==u'excel':
                return export_xls(title, filter_text, invoices)
            else:
                return render_template("report.html", invoices=invoices.all(),
                                        dbegin=Settings.dbegin(),
                                        dend=Settings.dend(),
                                        sums=sums, title=title, filter_text=filter_text)
    return render_template("frmReport.html", form=form)