def find(pos, user):
'''
Get a valid CashDiary for today from the given POS, it will return:
- None: if no CashDiary is available today and older one was already closed
- New CashDiary: if no CashDiary is available today but there is an older one which it was opened
- Existing CashDiary: if a CashDiary is available today (open or close)
'''
# Get checkpoint
ck = dateparse.parse_time(getattr(settings, "CASHDIARY_CLOSES_AT", '03:00'))
year = timezone.now().year
month = timezone.now().month
day = timezone.now().day
hour = ck.hour
minute = ck.minute
second = ck.second
checkpoint = timezone.datetime(year, month, day, hour, minute, second)
# Get
cashdiary = CashDiary.objects.filter(pos=pos, opened_date__gte=checkpoint).order_by("-opened_date").first()
if not cashdiary:
# No cashdiary found for today, check older one
oldercashdiary = CashDiary.objects.filter(pos=pos, opened_date__lt=checkpoint).order_by("-opened_date").first()
if oldercashdiary:
if oldercashdiary.closed_user:
cashdiary = None
else:
# Older cashdiary is not closed, we have to close it and open a new one
amount_cash = oldercashdiary.amount_cash()
amount_cards = oldercashdiary.amount_cards()
# The older cashdiary is still opened, we have to close it and create a new one
oldercashdiary.closed_cash = amount_cash
oldercashdiary.closed_cards = amount_cards
oldercashdiary.closed_user = user
oldercashdiary.closed_date = timezone.now()
oldercashdiary.save()
# Open new cashdiary
cashdiary = CashDiary()
cashdiary.pos = pos
cashdiary.opened_cash = amount_cash
cashdiary.opened_cards = amount_cards
cashdiary.opened_user = user
cashdiary.opened_date = timezone.now()
cashdiary.save()
# Return the found CashDiary
return cashdiary
models_cash.py 文件源码
python
阅读 20
收藏 0
点赞 0
评论 0
评论列表
文章目录