Example #1
0
def SearchMissingReceipts(last_receipt_id=-1):
    dhnio.Dprint(8, 'money.SearchMissingReceipts ' + str(last_receipt_id))

    def try2remove(filepath):
        try:
            os.remove(filepath)
        except:
            dhnio.Dprint(4, 'money.SearchMissingReceipts.try2remove WARNING can not remove ' + filepath)
        dhnio.Dprint(6, 'money.SearchMissingReceipts.try2remove %s removed' % filepath)

    existing_receipts = set()
    max_index = -1
    for filename in os.listdir(settings.getReceiptsDir()):
        filepath = os.path.join(settings.getReceiptsDir(), filename)
        if not filename.endswith('.dhnreceipt'):
            try2remove(filepath)
            continue
        receipt_id = filename[:-11]
        if len(receipt_id) != 8:
            try2remove(filepath)
            continue
        try:
            receipt_id = int(receipt_id)
        except:
            try2remove(filepath)
            continue
        if receipt_id < 0:
            try2remove(filepath)
            continue
        if receipt_id > 99999999:
            try2remove(filepath)
            continue
        if receipt_id > max_index:
            max_index = receipt_id
        existing_receipts.add(receipt_id)

    if last_receipt_id > max_index:
        max_index = last_receipt_id

    r = []
    dhnio.Dprint(8, 'money.SearchMissingReceipts existing_receipts=%s  max_index=%s' % (str(len(existing_receipts)), str(max_index)))

    for i in range(max_index + 1):
        if i not in existing_receipts:
            r.append(misc.receiptIDstr(i))
        if len(r) >= 100:
            break

    if max_index not in existing_receipts:
        r.insert(0, misc.receiptIDstr(max_index))

    existing_receipts.clear()
    return r
Example #2
0
def UnpackReceipt2(body):
    sin = StringIO.StringIO(str(body))
    ReceiptID = misc.receiptIDstr(sin.readline().strip())
    DateTime = sin.readline().strip()
    Command = sin.readline().strip()
    FromID = sin.readline().strip()
    ToID = sin.readline().strip()
    try:
        Amount = float(sin.readline().strip())
        Balance = float(sin.readline().strip())
        AmountNT = float(sin.readline().strip())
        BalanceNT = float(sin.readline().strip())
    except:
        Amount = 0.0
        Balance = 0.0
        AmountNT = 0.0
        BalanceNT = 0.0
    PayRate = sin.readline().strip()
    Report = sin.read().strip()
    return (ReceiptID, DateTime, Command, FromID, ToID, Amount, Balance, AmountNT, BalanceNT, PayRate, Report)