예제 #1
0
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}))
예제 #2
0
 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()
예제 #3
0
 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()
예제 #4
0
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))
예제 #5
0
    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)
예제 #6
0
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
        })
예제 #7
0
 def __create_transactions():
     user_k = User.objects.get(username="******")
     transaction1 = Transaction(owner=user_k, amount="300", currency="D")
     transaction1.save()
예제 #8
0
# 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)