예제 #1
0
파일: forms.py 프로젝트: dimashiro/sfacts
    def validate(self, curuser):
        result = True
        if not Form.validate(self):
            return False
        sum = (self.sum_nds18.data + self.sum_no_nds18.data +
              self.sum_nds10.data + self.sum_no_nds10.data)
        if not sum == self.sum_snds.data:
            self.sum_snds.errors.append(u"Неверно указана сумма с НДС. Расчетная сумма "+str(sum))
            result = False
        sum18 = round(self.sum_no_nds18.data*decimal.Decimal(str(0.18)),2)
        fault = math.fabs(sum18-(float(self.sum_nds18.data)))
        if fault>0.05:
            self.sum_nds18.errors.append(u"Неверно указана сумма НДС 18%. Расчетная сумма "+str(sum18))
            result = False
        sum10 = round(self.sum_no_nds10.data*decimal.Decimal(str(0.10)),2)
        fault = math.fabs(sum10-(float(self.sum_nds10.data)))
        if fault>0.05:
            self.sum_nds10.errors.append(u"Неверно указана сумма НДС 10%. Расчетная сумма "+str(sum10))
            result = False

        if self.ninvoice is not None:
            invoice = Invoice.query.filter(Invoice.ninvoice==self.ninvoice.data, Invoice.agent_uid==self.agent_uid.data,
                                       Invoice.org_uid==self.org_uid.data, Invoice.uid!=self.uid.data).first()
            if invoice is not None:
                self.ninvoice.errors.append(u"Счет фактура с указанным номером уже добавлена")
                result = False

        if not curuser.allow_edit:
            if self.dinvoice.data>Settings.dend().date() or self.dinvoice.data<Settings.dbegin().date():
                self.dinvoice.errors.append(u"Закрытый период. Ввод и изменение данных запрещены!")
                result = False

        return result
예제 #2
0
파일: views.py 프로젝트: dimashiro/sfacts
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)