Exemplo n.º 1
0
def calc_profit(request):
    user = get_user(request)
    if not user.is_superuser:
        return redirect('/fobiddn/')

    if request.method == 'POST':
        form = CalcProfitForm(request.POST)
        if form.is_valid():
            start_date = form.cleaned_data.get('start_date')
            end_date = form.cleaned_data.get('end_date')
            startup_unfinished = form.cleaned_data.get('startup_unfinished')
            last_unfinished = form.cleaned_data.get('last_unfinished')
            startup_finished = form.cleaned_data.get('startup_finished')
            last_finished = form.cleaned_data.get('last_finished')
            desc = form.cleaned_data.get('desc')
            remarks = form.cleaned_data.get('remarks')

            calculate_profit(start_date, end_date, startup_unfinished,
                             last_unfinished, startup_finished, last_finished,
                             desc, remarks)
        return redirect('/finance-manager/profit/')
    else:
        form = CalcProfitForm()
        context = {'formname': 'Calculate Profit', 'form': form}
        return render(request, 'finance_manager/profit/form_template.html',
                      context)
def withdrawals(request):
    user = get_user(request)
    if not user.is_staff:
        return redirect('/fobiddn/')

    if request.method == 'POST':
        start_date = request.POST['start_date']
        end_date = request.POST['end_date']

        recodes = None

        if start_date == '' or end_date == '':
            recodes = Withdraw.objects.all().order_by('-id')
        else:
            recodes = Withdraw.objects.filter(
                date__range=[start_date, end_date]).order_by('-id')

        total = calc_total(recodes)
        context = {'recodes': recodes, 'total': total}
        return render(request, 'finance_manager/bank/withdrawals.html',
                      context)
    else:
        recodes = Withdraw.objects.all().order_by('-id')
        total = calc_total(recodes)
        context = {'recodes': recodes, 'total': total}
        return render(request, 'finance_manager/bank/withdrawals.html',
                      context)
def checks(request):
    user = get_user(request)
    if not user.is_staff:
        return redirect('/fobiddn/')

    recodes = Check.objects.all().order_by('-id')
    context = {'recodes': recodes}
    return render(request, 'finance_manager/bank/checks.html', context)
def delete_payment(request, id=0):
    user = get_user(request)
    if not user.is_superuser:
        return redirect('/fobiddn/')

    if request.method == 'POST':
        delete_accepted = False
        payment = BuyPayment.objects.get(pk=id)
        receive = payment.buy

        if payment.payment_method.name.lower() == 'credit':
            delete_accepted = True
        elif payment.payment_method.name.lower() == 'cash':
            delete_accepted = True
            desc = f'Receive Payment Revert: {payment.buy.supplire}'
            cash_in = CashIn(desc=desc,
                             date=payment.date,
                             amount=payment.amount)
            cashflow.make_cash_in(cash_in)
        elif payment.payment_method.name.lower() == 'check':
            #add deposti
            if payment.account == None:
                delete_accepted = False
            else:
                delete_accepted = True
                desc = f'Receive Check Returnd: {payment.ref_num}'
                deposit = Deposit(account=payment.account,
                                  desc=desc,
                                  date=payment.date,
                                  amount=payment.amount,
                                  payment_method=payment.payment_method,
                                  ref_num=payment.ref_num)
                bank.make_deposit(deposit)
        else:
            #add deposti
            if payment.account == None:
                delete_accepted = False
            else:
                delete_accepted = True
                desc = f'Receive Payment Revert: {payment.ref_num}'
                deposit = Deposit(account=payment.account,
                                  desc=desc,
                                  date=payment.date,
                                  amount=payment.amount,
                                  payment_method=payment.payment_method,
                                  ref_num=payment.ref_num)
                bank.make_deposit(deposit)

        if delete_accepted:
            receive.paid = False
            receive.save()
            payment.delete()
        else:
            messages.add_message(request, messages.WARNING,
                                 'Somthing went wrong!')

        url = f'/inventory-manager/receives/'
        return redirect(url)
Exemplo n.º 5
0
def delete_payment(request,id=0):
	user = get_user(request)
	if not user.is_superuser:
		return redirect('/fobiddn/')
		
	if request.method == 'POST':
		delete_accepted = False
		payment = SellPayment.objects.get(pk=id)
		sale = payment.sale
		
		if payment.payment_method.name.lower() == 'credit':
			delete_accepted = True
		elif payment.payment_method.name.lower() == 'cash':
			delete_accepted = True
			#add cash out
			desc = f'Sale Payment Revert: {payment.sale.customer}'
			cash_out = CashOut(desc=desc,date=payment.date,amount=payment.amount)
			cashflow.make_cash_out(cash_out)
		elif payment.payment_method.name.lower() == 'check':
			if payment.account == None:
				delete_accepted = False
			else:
				delete_accepted = True
				#add withdraw
				desc = f'Sale Check Returnd: {payment.ref_num}'
				withdraw = Withdraw(account=payment.account, 
									desc=desc, 
									date=payment.date, 
									amount=payment.amount, 
									payment_method=payment.payment_method, 
									ref_num=payment.ref_num)
				bank.make_withdraw(withdraw)

		else:
			#add withdraw
			if payment.account == None:
				delete_accepted = False
			else:
				delete_accepted = True
				desc = f'Sale Payment Revert: {payment.sale.customer}'
				withdraw = Withdraw(account=payment.account, 
									desc=desc, 
									date=payment.date, 
									amount=payment.amount, 
									payment_method=payment.payment_method, 
									ref_num=payment.ref_num)
				bank.make_withdraw(withdraw)

		if delete_accepted:
			sale.paid = False
			sale.save()
			payment.delete()
		else:
			messages.add_message(request,messages.WARNING, 'Somthing went wrong!')
		url = f'/inventory-manager/sales/'
		return redirect(url)
def add_receive(request, id=0):
    if request.method == 'POST':

        currentuser = get_user(request)
        updated = False

        if id == 0:
            form = AddReceiveForm(request.POST)
        else:
            updated = True
            instance = Buy.objects.get(pk=id)
            form = AddReceiveForm(request.POST, instance=instance)

        if form.is_valid():

            receive = form.save(commit=False)

            total_amount = 0
            dispatch_note_num = receive.dispatch_note_num

            dispatchs = BuyDispatch.objects.filter(
                dispatch_note_num=dispatch_note_num)  #get all dipatch notes

            for dispatch in dispatchs:
                total_amount += dispatch.amount

                stock = MaterialStock(material=dispatch.material,
                                      batch_num=dispatch.batch_num,
                                      unit_price=dispatch.unit_price,
                                      qty=dispatch.qty)

                stock.save()

            if not updated:
                receive.created_user = currentuser
            else:
                update_note = BuyUpdate(buy=receive, user=currentuser)
                update_note.save()

            receive.amount = total_amount
            receive.save()
        else:
            print('form not valid')

        return redirect('/inventory-manager/receives/')

    else:
        if id == 0:
            form = AddReceiveForm()
        else:
            instance = Buy.objects.get(pk=id)
            form = AddReceiveForm(instance=instance)
        context = {'formname': 'Add receive', 'form': form}
        return render(request, 'inventory_manager/material/form_template.html',
                      context)
Exemplo n.º 7
0
def delete_expense(request, id=0):
    user = get_user(request)
    if not user.is_superuser:
        return redirect('/fobiddn/')

    if request.method == 'POST':
        expense = Expense.objects.get(pk=id)
        delete_accepted = False

        if expense.payment_method.name.lower() == 'credit':
            delete_accepted = True
        elif expense.payment_method.name.lower() == 'cash':
            delete_accepted = True
            # add cash out
            desc = f'Expense Revert: {expense.name}'
            cash_in = CashIn(desc=desc,
                             date=expense.date,
                             amount=expense.amount)
            cashflow.make_cash_in(cash_in)
        elif expense.payment_method.name.lower() == 'check':
            if expense.account == None:
                delete_accepted = False
            else:
                delete_accepted = True
                # add deposit
                desc = f'Returned Check: {expense.ref_num}'
                deposit = Deposit(account=expense.account,
                                  desc=desc,
                                  date=expense.date,
                                  amount=expense.amount,
                                  payment_method=expense.payment_method,
                                  ref_num=expense.ref_num)
                bank.make_withdraw(deposit)
        else:
            if expense.account == None:
                delete_accepted = False
            else:
                delete_accepted = True
                # add deposit
                desc = f'Expense Revert: {expense.ref_num}'
                deposit = Deposit(account=expense.account,
                                  desc=desc,
                                  date=expense.date,
                                  amount=expense.amount,
                                  payment_method=expense.payment_method,
                                  ref_num=expense.ref_num)
                bank.make_withdraw(deposit)

        if delete_accepted:
            expense.delete()
        else:
            messages.add_message(request, messages.WARNING,
                                 'Somthing went wrong!')
        return redirect('/inventory-manager/expenses/')
Exemplo n.º 8
0
def delete_otherincome(request, id=0):
    user = get_user(request)
    if not user.is_superuser:
        return redirect('/fobiddn/')

    if request.method == 'POST':
        other_income = OtherIncome.objects.get(pk=id)
        delete_accepted = False

        if other_income.payment_method.name.lower() == 'credit':
            delete_accepted = True
        elif other_income.payment_method.name.lower() == 'credit':
            delete_accepted = True
        elif other_income.payment_method.name.lower() == 'cash':
            delete_accepted = True
            # add cash out
            desc = f'Other Income Revert: {other_income.name}'
            cash_out = CashOut(desc=desc,
                               date=other_income.date,
                               amount=other_income.amount)
            cashflow.make_cash_out(cash_out)
        elif other_income.payment_method.name.lower() == 'check':
            if other_income.account == None:
                delete_accepted = False
            else:
                delete_accepted = True
                # add withdraw
                desc = f'Returned Check: {other_income.ref_num}'
                withdraw = Withdraw(account=other_income.account,
                                    desc=desc,
                                    date=other_income.date,
                                    amount=other_income.amount,
                                    payment_method=other_income.payment_method,
                                    ref_num=other_income.ref_num)
                bank.make_withdraw(withdraw)
        else:
            if other_income.account == None:
                delete_accepted = False
            else:
                delete_accepted = True
                # add withdraw
                desc = f'Other Income Revert: {other_income.ref_num}'
                withdraw = Withdraw(account=other_income.account,
                                    desc=desc,
                                    date=other_income.date,
                                    amount=other_income.amount,
                                    payment_method=other_income.payment_method,
                                    ref_num=other_income.ref_num)
                bank.make_withdraw(withdraw)

        if delete_accepted:
            other_income.delete()
        messages.add_message(request, messages.WARNING, 'Somthing went wrong!')
        return redirect('/inventory-manager/other-incomes/')
Exemplo n.º 9
0
def delete_salery(request, id=0):
    user = get_user(request)
    if not user.is_superuser:
        return redirect('/fobiddn/')

    if request.method == 'POST':
        salery = Salery.objects.get(pk=id)
        delete_accepted = False

        if salery.payment_method.name.lower() == 'credit':
            delete_accepted = True
        elif salery.payment_method.name.lower() == 'cash':
            delete_accepted = True
            # add cash out
            desc = f'Salery Revert: emp_code - {salery.employee.code}'
            cash_in = CashIn(desc=desc, date=salery.date, amount=salery.amount)
            cashflow.make_cash_in(cash_in)
        elif salery.payment_method.name.lower() == 'check':
            if salery.account == None:
                delete_accepted = False
            else:
                delete_accepted = True
                # add deposit
                desc = f'Salery Returnd Check: emp_code - {salery.employee.code}'
                deposit = Deposit(account=salery.account,
                                  desc=desc,
                                  date=salery.date,
                                  amount=salery.amount,
                                  payment_method=salery.payment_method,
                                  ref_num=salery.ref_num)
                bank.make_withdraw(deposit)
        else:
            if salery.account == None:
                delete_accepted = False
            else:
                delete_accepted = True
                # add deposit
                desc = f'Salery Revert: emp_code - {salery.employee.code}'
                deposit = Deposit(account=salery.account,
                                  desc=desc,
                                  date=salery.date,
                                  amount=salery.amount,
                                  payment_method=salery.payment_method,
                                  ref_num=salery.ref_num)
                bank.make_withdraw(deposit)

        if delete_accepted:
            salery.delete()
        else:
            messages.add_message(request, messages.WARNING,
                                 'Somthing went wrong!')
        return redirect('/inventory-manager/salery/')
def add_sale(request, id=0):
    if request.method == 'POST':

        currentuser = get_user(request)
        updated = False

        if id == 0:
            form = AddSaleForm(request.POST)
        else:
            updated = True
            instance = Sell.objects.get(pk=id)
            form = AddSaleForm(request.POST, instance=instance)

        if form.is_valid():

            sale = form.save(commit=False)

            total_amount = 0
            dispatch_note_num = sale.dispatch_note_num

            dispatchs = SellDispatch.objects.filter(
                dispatch_note_num=dispatch_note_num)  #get all dipatch notes

            for dispatch in dispatchs:
                total_amount += dispatch.amount
                stock = dispatch.stock
                stock.qty -= dispatch.qty
                stock.save()

            if not updated:
                sale.created_user = currentuser
            else:
                update_note = SellUpdate(sale=sale, user=currentuser)
                update_note.save()

            sale.amount = total_amount
            sale.save()
        else:
            messages.add_message(request, messages.WARNING,
                                 'Somthing Went Wrong')

        return redirect('/inventory-manager/sales/')

    else:
        if id == 0:
            form = AddSaleForm()
        else:
            instance = Sell.objects.get(pk=id)
            form = AddSaleForm(instance=instance)
        context = {'formname': 'Add Sale', 'form': form}
        return render(request, 'inventory_manager/product/form_template.html',
                      context)
Exemplo n.º 11
0
def add_account(request):

    user = get_user(request)
    if not user.is_staff:
        return redirect('/fobiddn/')

    if request.method == 'POST':
        form = AddAccountForm(request.POST)

        if form.is_valid():
            form.save()

        return redirect('/finance-manager/bank-accounts/')
    else:
        form = AddAccountForm()
        context = {'formname': 'Add Account', 'form': form}
        return render(request, 'finance_manager/bank/form_template.html',
                      context)
Exemplo n.º 12
0
def withdraw(request):
    user = get_user(request)
    if not user.is_staff:
        return redirect('/fobiddn/')

    if request.method == 'POST':
        form = AddWithdrawForm(request.POST)
        if form.is_valid():
            withdraw = form.save(commit=False)
            result = make_withdraw(withdraw)

            if not result:
                messages.add_message(request, messages.WARNING,
                                     'Withdraw unsuccessfull!')
        return redirect('/finance-manager/bank-withdrawals/')

    else:
        form = AddWithdrawForm()
        context = {'formname': 'Withdraw', 'form': form}
        return render(request, 'finance_manager/bank/form_template.html',
                      context)
Exemplo n.º 13
0
def profit(request):
    user = get_user(request)
    if not user.is_superuser:
        return redirect('/fobiddn/')

    if request.method == 'POST':
        start_date = request.POST['start_date']
        end_date = request.POST['end_date']
        recodes = None
        if start_date == '' or end_date == '':
            recodes = Profit.objects.all().order_by('-id')
        else:
            recodes = Profit.objects.filter(
                date__range=[start_date, end_date]).order_by('-id')

        return render(request, 'finance_manager/profit/profit.html',
                      {'recodes': recodes})
    else:
        recodes = Profit.objects.all().order_by('-id')
        return render(request, 'finance_manager/profit/profit.html',
                      {'recodes': recodes})
Exemplo n.º 14
0
def deposit(request):
    user = get_user(request)
    if not user.is_staff:
        return redirect('/fobiddn/')

    if request.method == 'POST':
        form = AddDepositForm(request.POST)
        if form.is_valid():
            deposit = form.save(commit=False)
            result = make_deposit(deposit)

            if not result:
                messages.add_message(request, messages.WARNING,
                                     'Deposit unsuccessfull!')

        return redirect('/finance-manager/bank-deposits/')

    else:
        form = AddDepositForm()
        context = {'formname': 'Deposit', 'form': form}
        return render(request, 'finance_manager/bank/form_template.html',
                      context)
Exemplo n.º 15
0
def add_other_sale(request, id=0):
	if request.method == 'POST':

		currentuser = get_user(request)
		payment_accepted = False

		if id == 0:
			form = AddOtherSaleForm(request.POST)
		else:
			instance = OtherSell.objects.get(pk=id)
			form = AddOtherSaleForm(request.POST, instance=instance)

		other_sale = None

		if form.is_valid():
			other_sale = form.save(commit=False)

			total_amount = 0
			dispatch_note_num = other_sale.dispatch_note_num

			dispatchs = SellDispatch.objects.filter(dispatch_note_num=dispatch_note_num) #get all dipatch notes
			
			for dispatch in dispatchs:
				total_amount += dispatch.amount
			
			other_sale.created_user = currentuser
			other_sale.amount = total_amount

			payment_method = other_sale.payment_method
			ref_num = other_sale.ref_num
			eff_date = other_sale.eff_date

			if payment_method.name.lower() == 'credit':
				payment_accepted = True
				other_sale.paid = False
			elif payment_method.name.lower() == 'cash':
				payment_accepted = True
				#add cash in
				desc = f'Other Sale Payment: {other_sale.customer}'
				cash_in = CashIn(desc=desc,date=other_sale.date,amount=other_sale.amount)
				cashflow.make_cash_in(cash_in)
				other_sale.paid = True

			elif payment_method.name.lower() == 'check':
				if ref_num == None or eff_date == None:
					payment_accepted = False
				else:
					payment_accepted = True
					#add check to check table
					check = Check(date=other_sale.date,ref_num=ref_num,eff_date=eff_date,amount=other_sale.amount)
					check.save()
					other_sale.paid = True
			else:
				payment_accepted = True
				#add deposit
				desc = f'Other Sale Payment: {other_sale.customer}'
				deposit = Deposit(account=other_sale.account, desc=desc, date=other_sale.date, amount=other_sale.amount, payment_method=other_sale.payment_method)
				bank.make_deposit(deposit)
				other_sale.paid = True


			if payment_accepted:

				for dispatch in dispatchs:
					stock = dispatch.stock
					stock.qty -= dispatch.qty
					stock.save()

				other_sale.save()
				
			else:
				messages.add_message(request,messages.WARNING, 'Invalid Payment Details')
		else:
			messages.add_message(request,messages.WARNING, 'Form is Invalid')

		return redirect('/inventory-manager/other-sales/')

	else:
		if id == 0:
			form = AddOtherSaleForm()
		else:
			instance = OtherSell.objects.get(pk=id)
			form = AddOtherSaleForm(instance=instance)
		context = {'formname':'Add Other Sale', 'form':form}
		return render(request, 'inventory_manager/product/form_template.html', context)
Exemplo n.º 16
0
def bank(request):
    user = get_user(request)
    if not user.is_staff:
        return redirect('/fobiddn/')

    return render(request, 'finance_manager/bank/bank.html')