def add_transaction(request, mid): if request.method == "POST": post_data = request.POST form = AddTransaction(post_data) month = Month.objects.get(pk=mid) if form.is_valid(): data = form.cleaned_data score_source = Score.objects.get( pk=post_data.get('score_source', '')) data['score_source'] = score_source data['month'] = month score_goal_id = post_data.get('score_goal', '') if score_goal_id: score_goal = Score.objects.get(pk=score_goal_id) data['score_goal'] = str(score_goal.id) data['score_goal_name'] = score_goal.account.name transaction = Transaction(**data) transaction.save() score_source.remainder -= data['amount'] score_source.save() score_goal.remainder += data['amount'] score_goal.save() messages.success(request, u"Переказ успішно доданий!") elif post_data.get('planned_expense', ''): planned_expense = PlannedExpense.objects.get( pk=post_data.get('planned_expense', '')) data['planned_expense'] = planned_expense transaction = Transaction(**data) transaction.save() change_accounts(transaction, planned_expense, month, score_source, True) messages.success(request, u"Витрата успішно додана!") return HttpResponseRedirect(reverse("show_balance", kwargs={'mid': mid}))
def __create_transactions(): user = User.objects.get(username="******") transaction1 = Transaction(owner=user, amount="300", currency="D") transaction1.save() transaction2 = Transaction(owner=user, amount="30", currency="E") transaction2.save() transaction3 = Transaction(owner=user, amount="30000", currency="R") transaction3.save()
def __create_transactions(): user_k = User.objects.get(username="******") user_s = User.objects.get(username="******") transaction1 = Transaction(owner=user_k, amount="300", currency="D") transaction1.save() transaction2 = Transaction(owner=user_k, amount="30", currency="E") transaction2.save() transaction3 = Transaction(owner=user_k, amount="30000", currency="R") transaction3.save() transaction4 = Transaction(owner=user_s, amount="40000", currency="R") transaction4.save()
def update_salary(): total = 0 valid_clerk = Clerk.objects.filter(is_employee=True) for clerk in valid_clerk: total = total + clerk.salary company = get_dollarial_company() company_credit = company.get_credit("R") sum_all = 0 salary_objects = [] for clerk in valid_clerk: salary_object = Transaction(owner=clerk.user, amount=clerk.salary, currency='R', wage=0, status='A') payment_object = Transaction(owner=get_dollarial_user(), amount=-clerk.salary, currency='R', wage=0, status='A') salary_objects.append([salary_object, payment_object]) sum_all += clerk.salary if sum_all > company_credit: send_email_to_user( "Low Credit", "*****@*****.**", ADMIN_EMAIL, "Your Credit is not enough to pay the salaries. Your Credit is " + str(company_credit) + " and total salaries is " + str(total)) raise Exception("Not enough credit to create salaries") else: for x, y in salary_objects: x.save() y.save() send_email_to_user( "Salary paid", "*****@*****.**", ADMIN_EMAIL, " Clerks Salary Paid. Current credit: " + str(company_credit - sum_all))
def create_transaction(self, account, date): num_transactions = random.randint(3, 5) for i in range(num_transactions): dt = self.get_datetime(date) t = Transaction(account=account) t.guid = uuid.uuid4().hex t.uid = uuid.uuid4().hex t.date = date t.created_at = timezone.make_aware(dt) t.updated_at = timezone.make_aware(dt) t.transacted_at = timezone.make_aware(dt) t.posted_at = timezone.make_aware(dt) t.amount = self.generate_amount() t.is_expense = True t.category = self.get_category() t.description = self.get_description() t.save() dt_str = dt.strftime('%Y-%m-%d %H:%M:%S') with freeze_time(dt_str): self.make_transfers(dt)
def saving_transfer(request, sid, action): saving = Saving.objects.get(pk=sid) if request.method == "POST": amount = request.POST.get('amount', '') transaction_data = {} if action == 'add': saving.amount += int(amount) transaction_data['amount'] = int(amount) transaction_data[ 'detail'] = u"Зарахування коштів на збереження {} по рахунку {}".format( saving.saving_total.title, saving.account.name) elif action == 'remove': saving.amount -= int(amount) transaction_data['amount'] = -int(amount) transaction_data[ 'detail'] = u"Зняття коштів зі збереження {} по рахунку {}".format( saving.saving_total.title, saving.account.name) saving.save() transaction_data['model'] = saving.__class__.__name__ transaction_data['model_id'] = saving.id transaction = Transaction(**transaction_data) transaction.save() if action == 'add': messages.success( request, u"Кошти на {} на рахунок {} успішно зараховано".format( saving.saving_total.title, saving.account.name)) if action == 'remove': messages.error( request, u"Кошти зі збереження {} на рахунку {} успішно знято".format( saving.saving_total.title, saving.account.name)) return HttpResponseRedirect(reverse("savings_list")) elif request.method == "GET": return render(request, 'finance/saving_change.html', { 'action': action, 'saving': saving })
def __create_transactions(): user_k = User.objects.get(username="******") transaction1 = Transaction(owner=user_k, amount="300", currency="D") transaction1.save()
# test database query with dummy data from finance.models import Transaction import random from decimal import Decimal from finance.models import Currency, Category data_list: list = [] currencies = list(Currency.objects.all()) categories = list(Category.objects.all()) for i in range(1, 100000): data_tx = Transaction(amount=random.randrange(Decimal(i), Decimal(100000)), currency=random.choice(currencies), description="", category=random.choice(categories)) data_list.append(data_tx) # append data Transaction.bulk_create(data_list)