Exemple #1
0
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)
Exemple #2
0
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))
Exemple #3
0
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))
Exemple #4
0
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))
Exemple #5
0
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))
Exemple #6
0
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))