def diagnose_cashier_permission(request): ret = '<pre>Diagnosing cashier permission.\n' ret += 'Logged in as: %s\n' % request.user ret += 'User is authenticated: %s\n' % request.user.is_authenticated() ret += 'User is staff: %s\n' % request.user.is_staff ret += 'Remote Address: %s\n' % request.META['REMOTE_ADDR'] ret += 'Mariposa IP: %s\n' % settings.MARIPOSA_IP ret += 'Remote Address is Mariposa IP: %s\n' % (request.META['REMOTE_ADDR'] == settings.MARIPOSA_IP) ret += 'User: %s\n' % request.user ret += 'User is cashier today: %s\n' % request.user.get_profile().is_cashier_today ret += 'User is cashier recently: %s\n' % request.user.get_profile().is_cashier_recently ret += 'Cashier permission function: %s\n' % cashier_permission(request) ret += 'Cashier permission: %s\n' % bool(cashier_permission(request)) ret += '</pre>' return HttpResponse(ret)
def close_out(request, date=None): '''Page to double-check payment amounts''' if not cashier_permission(request): return HttpResponse('Sorry, you do not have cashier permission. %s' % request.META['REMOTE_ADDR']) if date: try: date = datetime.date(*time.strptime(date, "%Y-%m-%d")[0:3]) except ValueError: raise Http404 else: date = datetime.date.today() trans = models.Transaction.objects.filter( timestamp__range=(date, date+datetime.timedelta(1))) columns = [{'type': 'Credit / Debit', 'total': 0, 'transactions': trans.filter(payment_type__in=('C','D'))}, {'type': 'Check / Money Order', 'total': 0, 'transactions': trans.filter(payment_type__in=('K','M'))}, {'type': 'EBT', 'total': 0, 'transactions': trans.filter(payment_type='E')}] for column in columns: if 'order_by' in request.GET: order_by = request.GET['order_by'] column['transactions'] = column['transactions'].order_by(order_by) for trans in column['transactions']: if not trans.fixes_target(): column['total'] += trans.fixed_payment_amount() return render_to_response('accounting/close_out.html', locals(), context_instance=RequestContext(request))
def cashsheet_input(request): if not cashier_permission(request): return HttpResponse('Sorry, you do not have cashier permission. %s' % request.META['REMOTE_ADDR']) today = datetime.date.today() if 'getcashierinfo' in request.GET: account_id = request.GET['account'] account = m_models.Account.objects.get(id=account_id) if request.GET['getcashierinfo'] == 'balance': return HttpResponse(account.balance) elif request.GET['getcashierinfo'] == 'max_allowed_to_owe': return HttpResponse(str(int(account.max_allowed_to_owe()))) elif request.GET['getcashierinfo'] == 'hours_balance': return HttpResponse(account.hours_balance) elif request.GET['getcashierinfo'] == 'transactions': context = RequestContext(request) context['transactions'] = account.transaction_set.order_by('-timestamp')[:25] template = get_template('accounting/snippets/transactions.html') return HttpResponse(template.render(context)) else: # request.GET['getcashierinfo'] == 'acct_flags': template_file = 'accounting/snippets/acct_flags.html' show_acct_link = True return render_to_response(template_file, locals()) if request.method == 'POST': if request.POST.get('action') == 'Reverse': reverseform = forms.ReverseForm(request.POST) if not reverseform.is_valid(): return HttpResponse(repr(reverseform.errors)) rev = reverseform.save(entered_by=request.user) form = forms.CashsheetForm(tofix=rev) show_advanced_fields = True else: form = forms.CashsheetForm(request.POST) if form.is_valid(): form.save(entered_by=request.user) return HttpResponseRedirect(reverse('cashsheet_input')) show_advanced_fields = True else: form = forms.CashsheetForm() transactions = models.Transaction.objects.filter( timestamp__range=(today,today+datetime.timedelta(1))).exclude( purchase_type='U').exclude(purchase_type='O') can_reverse = True if request.user.is_staff: show_advanced_fields = True return render_to_response('accounting/cashsheet_input.html', locals(), context_instance=RequestContext(request))
def after_hours(request): if not cashier_permission(request): return HttpResponse('Sorry, you do not have cashier permission. %s' % request.META['REMOTE_ADDR']) context = RequestContext(request) today = datetime.date.today() if 'getcashierinfo' in request.GET: account_id = request.GET['account'] account = m_models.Account.objects.get(id=account_id) context['account'] = account if request.GET['getcashierinfo'] == 'members': template = get_template('accounting/snippets/members.html') elif request.GET['getcashierinfo'] == 'transactions': context['transactions'] = models.Transaction.objects.filter( timestamp__range=(today,today+datetime.timedelta(1)), purchase_type='A') template = get_template('accounting/snippets/transactions.html') elif request.GET['getcashierinfo'] == 'acctinfo': template = get_template('accounting/snippets/acctinfo.html') return HttpResponse(template.render(context)) if request.method == 'POST': form = forms.AfterHoursForm(request.POST) if form.is_valid(): a = form.cleaned_data['account'] p = form.cleaned_data['purchases'] p_tot = form.cleaned_data['purchase_total'] ah_trans = models.Transaction(account=a, entered_by=request.user, purchase_type='A', purchase_amount=p_tot, note=p) ah_trans.save() return HttpResponseRedirect(reverse('after_hours')) else: form = forms.AfterHoursForm() context['form'] = form # change line below to just be after-hours transactions?? transactions = models.Transaction.objects.filter( timestamp__range=(today,today+datetime.timedelta(1)), purchase_type='A') context['transactions'] = transactions context['can_reverse'] = True template = get_template('accounting/after_hours.html') return HttpResponse(template.render(context))
def transaction(request): if not cashier_permission(request): return HttpResponse('Sorry, you do not have cashier permission. %s' % request.META['REMOTE_ADDR']) context = RequestContext(request) if 'getcashierinfo' in request.GET: account_id = request.GET['account'] account = m_models.Account.objects.get(id=account_id) context['account'] = account if request.GET['getcashierinfo'] == 'members': template = get_template('accounting/snippets/members.html') elif request.GET['getcashierinfo'] == 'transactions': context['transactions'] = account.transaction_set.all() template = get_template('accounting/snippets/transactions.html') elif request.GET['getcashierinfo'] == 'acctinfo': template = get_template('accounting/snippets/acctinfo.html') return HttpResponse(template.render(context)) if request.method == 'POST': form = forms.TransactionForm(request.POST) if form.is_valid(): transaction = form.save(commit=False) # get info from form transaction.entered_by = request.user # add entered_by transaction.save() # save to database return HttpResponseRedirect(reverse('transaction')) else: form = forms.TransactionForm() today = datetime.date.today() transactions = models.Transaction.objects.filter( timestamp__range=(today,today+datetime.timedelta(1))) context = { 'transactions':transactions, 'form':form, 'can_reverse':True, } return render_to_response('accounting/transaction.html', context, context_instance=RequestContext(request))
def EBT(request): if not cashier_permission(request): return HttpResponse('Sorry, you do not have cashier permission. %s' % request.META['REMOTE_ADDR']) context = RequestContext(request) today = datetime.date.today() if 'getcashierinfo' in request.GET: account_id = request.GET['account'] account = m_models.Account.objects.get(id=account_id) context['account'] = account if request.GET['getcashierinfo'] == 'members': template = get_template('accounting/snippets/members.html') elif request.GET['getcashierinfo'] == 'transactions': context['transactions'] = models.Transaction.objects.filter( timestamp__range=(today, today + datetime.timedelta(1)), payment_type='E') template = get_template('accounting/snippets/transactions.html') elif request.GET['getcashierinfo'] == 'acctinfo': template = get_template('accounting/snippets/acctinfo.html') elif request.GET['getcashierinfo'] == 'ebtbulkorders': template = get_template('accounting/snippets/ebtbulkorders.js') return HttpResponse(template.render(context)) if request.method == 'POST': form = forms.EBTForm(request.POST) if form.is_valid(): form.save(entered_by=request.user) return HttpResponseRedirect(reverse('EBT')) else: form = forms.EBTForm() context['form'] = form transactions = models.Transaction.objects.filter( timestamp__range=(today,today+datetime.timedelta(1)), payment_type='E') context['transactions'] = transactions context['can_reverse'] = True template = get_template('accounting/EBT.html') return HttpResponse(template.render(context))