def get(self, request, *args, **kwargs): context = {} if 'invoice' in request.GET: invoice = Invoice.objects.get(pk=request.GET['invoice']) # Update to the latest invoice updated_invoice = invoice_user(invoice.user, invoice.first_day, invoice.last_day) if updated_invoice: invoice = updated_invoice connections = invoice.connections() form = InvoiceForm(instance=invoice) context = { 'form': form, 'invoice': invoice, 'connections': connections } if 'title' in request.GET: invoices = Invoice.objects.filter(title=request.GET['title']) income, commissions = calc_split(invoices) context.update(title=request.GET['title'], income=income, commissions=commissions, total=income - commissions, split=.25 * (income - commissions), invoices=invoices) return self.render_to_response(context)
def invoice_form(): invoice_details = InvoiceDetails.query.one_or_none() positions_form = PositionsForm(prefix='positions') invoice_form = InvoiceForm(prefix='invoice', obj=invoice_details) if request.method == 'POST': if positions_form.validate_on_submit(): unit = positions_form.unit.data amount = positions_form.amount.data price = positions_form.price.data description = positions_form.description.data total = amount * price new_position = Positions(unit=unit, amount=amount, price=price, description=description, total=total) new_position.insert() flash('Position succesfully added!', 'success') elif invoice_form.validate_on_submit(): form_invoice_details = invoice_form.data form_invoice_details.pop('csrf_token', None) if invoice_details is None: invoice_details = InvoiceDetails(**form_invoice_details) invoice_details.insert() else: invoice_details.update(**form_invoice_details) positions = Positions.query.all() total = 0 for position in positions: total += position.total created = datetime.date.today() payment_due = created + datetime.timedelta(days=14) return render_template('/invoice_details.html', title='Invoice Details', invoice_details=invoice_details, positions=positions, created=created, payment_due=payment_due, total=total) else: flash('Please check your form input!', 'error') positions = Positions.query.all() return render_template('/invoice_form.html', title='Invoice Form', active_page='form', positions_form=positions_form, invoice_form=invoice_form, positions=positions)
def main(): print("Загружаю главную страницу") form1 = InvoiceForm() if form1.validate_on_submit(): print("Обнаружены данные из формы") controller.add_item(form1) items_data = db.get_all_items() items = [(item.id, item.name, item.size_x, item.size_y, item.size_z, item.weight, item.stowage_id) for item in items_data] stowages_data = db.get_all_stowages() stowages = [(stowage.id, stowage.row, stowage.level, stowage.size_x, stowage.size_y, stowage.size_z, stowage.json, stowage.empty) for stowage in stowages_data] print("Загрузка главной страницы") return render_template('main.html', items=items, stowages=stowages, form1=form1)
def check(): form = InvoiceForm() if form.validate_on_submit(): invoice = Invoice( form.data['amount'], form.data['currency'], form.data['description'] ) db.session.add(invoice) db.session.commit() app.logger.info(u"invoice created: {}".format(invoice)) # hack for passing signature check amount = int(invoice.amount) if ( int(invoice.amount) == float(invoice.amount)) else invoice.amount payload = { "shop_id": SHOP_ID, "amount": amount, "currency": invoice.currency, 'shop_invoice_id': invoice.id, "description": invoice.description } if invoice.currency == '980': payload["payway"] = 'w1_uah' sign = _get_sign(payload, INVOICE_KEYS) payload['sign'] = sign resp = requests.post(UAH_INVOICE_URL, json=payload) data = json.loads(resp.content)['data'] app.logger.info("data: {}".format(data)) if not data: return jsonify(json.loads(resp.content)) url = data['source'] data = data['data'] elif invoice.currency == '643': sign = _get_sign(payload, TIP_KEYS) payload['sign'] = sign data = payload url = TIP_URL else: return jsonify({'result': 'error', 'message': 'Wrong currency'}) app.logger.info("data sent: {}".format(data)) return jsonify({'result': 'ok', 'data': data, 'url': url}) return jsonify({'result': 'error', 'message': 'Form validation error'})
def invoice(): form = InvoiceForm() if form.validate_on_submit(): return redirect(url_for('pdf_template')) return render_template('invoice_form2.html', title='SF online', form=form)
def index(): form = InvoiceForm() return render_template("index.html", form=form)
def invoice_add(request): if request.method == 'POST': invoice_items = [] errors = [] form = InvoiceForm(request.POST) client = "" # validate submitted items and prepare invoice draft in user's session for k, v in request.POST.iteritems(): if k.startswith('item_id_'): try: iid = k.replace('item_id_', '') pkey = int(v) bit = ItemsBucket.objects.get(pk=pkey) t = InvoiceItem() t.ordinal = iid t.id = str(pkey) t.count = str(int(request.POST.get('item_amount_' + iid))) t.name = bit.item.name t.sell_price = str(bit.sell_price) t.tax = str(bit.item.tax_rate) invoice_items.append(t) except DoesNotExist: errors.append('Incorrect item id ' + pkey) invoice_items.sort(key=lambda InvoiceItem: InvoiceItem.ordinal, reverse=False) for item in invoice_items: db_item = ItemsBucket.objects.get(pk=item.id) if int(item.count) > int(db_item.count): errors.append('To many items of ' + db_item.item.name) if "client_id" in request.POST and request.POST["client_id"]: try: client = Client.objects.get(pk=request.POST.get('client_id')) except DoesNotExist: errors.append('Incorrect client id') if "invoice_number" in request.POST and request.POST["invoice_number"]: ex = InvoiceDocument.objects.filter( number=request.POST.get('invoice_number') + '/2012') if ex.count() > 0: errors.append('Invoice with number ' + request.POST.get('invoice_number') + '/2012 already exists') if not errors and form.is_valid(): # no errors, save invoice and push changes doc = InvoiceDocument() doc.number = form.cleaned_data['invoice_number'] + '/2012' doc.date = datetime.now() doc.client = client doc.save() for item in invoice_items: db_item = ItemsBucket.objects.get(pk=item.id) t = InvoiceDocumentEntry() t.item = db_item.item t.count = item.count price = db_item.sell_price tax = db_item.item.tax_rate.percentage net_price = float(price - (price / 100) * tax) t.net_price = net_price t.gross_price = item.sell_price t.tax = tax db_item.count -= int(item.count) db_item.save() t.document = doc t.save() return redirect('/documents/invoice') else: # errors occured, redisplay the form with errors items = ItemsBucket.objects.filter(count__gt=0) clients = Client.objects.order_by('name') currencies = Currency.objects.all() return render_to_response('storage/invoice_add.html', { 'invoice_active': 'active', 'clients': clients, 'client': client, 'items': items, 'form': form, 'invoice_items': invoice_items, 'currency': currencies[0] }, context_instance=RequestContext(request)) else: clients = Client.objects.order_by('name') items = ItemsBucket.objects.filter(count__gt=0) form = InvoiceForm(initial={'invoice_number': '', 'client_id': ''}) currencies = Currency.objects.all() return render_to_response('storage/invoice_add.html', { 'invoice_active': 'active', 'clients': clients, 'items': items, 'form': form, 'currency': currencies[0] }, context_instance=RequestContext(request))