{"abstract":"Tax on exact half-cent amounts is rounded down.","category":"Double-entry ledger accounting","checks":7,"contract":"x = {'mode': 'inclusive'|'exclusive', 'rounding': 'line'|'invoice', 'lines': [[amount, rate_bp, account]]}. Exclusive: tax = amount*bp/10000. Inclusive: tax = amount*bp/(10000+bp). Rounding is half-up to the cent, per line ('line', summed per rate) or once per rate on the summed amounts ('invoice'). Tax is keyed by str(rate_bp). Inclusive: receivable = sum amounts, net = receivable - total tax. Exclusive: net = sum amounts, receivable = net + total tax. Return {'receivable', 'net', 'tax'}.","evaluation_group":"w2-double-entry-ledger-accounting-vat-invoice-journal","failed_approach":"Rounding any remainder up overcharges tax on non-tie amounts.","family":"w2-double-entry-ledger-accounting-vat-invoice-journal-half-cent-tie","id":"FA-58181","implementations":{"attempt":{"sha256":"81551676eb4de552ca94ddc63fec1390cb50bdbfc842d1ddf3e275def14e843a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    def rnd(n, d):\n        q, r = divmod(n, d)\n        return q + (1 if r > 0 else 0)\n    incl = x['mode'] == 'inclusive'\n    groups = {}\n    tax = {}\n    for amount, bp, acct in x['lines']:\n        denom = 10000 + bp if incl else 10000\n        key = str(bp)\n        if x['rounding'] == 'line':\n            tax[key] = tax.get(key, 0) + rnd(amount * bp, denom)\n        groups[key] = groups.get(key, 0) + amount\n    if x['rounding'] == 'invoice':\n        for key, total in groups.items():\n            bp = int(key)\n            tax[key] = rnd(total * bp, 10000 + bp if incl else 10000)\n    gross_in = sum(groups.values())\n    total_tax = sum(tax.values())\n    if incl:\n        receivable = gross_in\n        net = gross_in - total_tax\n    else:\n        receivable = gross_in + total_tax\n        net = gross_in\n    return {'receivable': receivable, 'net': net, 'tax': tax}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: half-cent tie', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[15, 1900, 'services'], [15, 2000, 'services'], [15, 0, 'sales'], [1000, 2100, 'services'], [15, 500, 'sales']]}, {'receivable': 1060, 'net': 880, 'tax': {'1900': 2, '2000': 3, '0': 0, '2100': 174, '500': 1}}], ['control 1', {'mode': 'exclusive', 'rounding': 'line', 'lines': [[2500, 1900, 'sales'], [15, 700, 'sales']]}, {'receivable': 2991, 'net': 2515, 'tax': {'1900': 475, '700': 1}}], ['control 2', {'mode': 'exclusive', 'rounding': 'line', 'lines': [[105, 700, 'services'], [5, 700, 'sales'], [5, 500, 'services'], [105, 1900, 'services'], [15, 500, 'services']]}, {'receivable': 263, 'net': 235, 'tax': {'700': 7, '500': 1, '1900': 20}}], ['control 3', {'mode': 'exclusive', 'rounding': 'line', 'lines': [[1999, 700, 'services'], [999, 0, 'sales']]}, {'receivable': 3138, 'net': 2998, 'tax': {'700': 140, '0': 0}}], ['control 4', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[1999, 2100, 'services'], [12345, 2100, 'sales'], [2500, 500, 'services'], [105, 2100, 'services']]}, {'receivable': 16949, 'net': 14322, 'tax': {'2100': 2508, '500': 119}}], ['control 5', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[1000, 2100, 'services'], [999, 2000, 'sales'], [999, 0, 'sales'], [1999, 2100, 'services'], [1000, 2000, 'services']]}, {'receivable': 7027, 'net': 5997, 'tax': {'2100': 630, '2000': 400, '0': 0}}], ['control 6', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[999, 2100, 'sales'], [105, 500, 'services'], [999, 0, 'services']]}, {'receivable': 2103, 'net': 1925, 'tax': {'2100': 173, '500': 5, '0': 0}}]], [['regression: half-cent tie', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[15, 2100, 'services'], [5, 2000, 'sales'], [12345, 2000, 'sales']]}, {'receivable': 12365, 'net': 10303, 'tax': {'2100': 3, '2000': 2059}}], ['regression: half-cent tie, partial-repair probe', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[2500, 500, 'services'], [105, 500, 'sales']]}, {'receivable': 2605, 'net': 2481, 'tax': {'500': 124}}], ['control 1', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[999, 500, 'services'], [15, 700, 'sales']]}, {'receivable': 1014, 'net': 965, 'tax': {'500': 48, '700': 1}}], ['control 2', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[15, 1900, 'services']]}, {'receivable': 18, 'net': 15, 'tax': {'1900': 3}}], ['control 3', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[12345, 700, 'sales'], [15, 2100, 'sales'], [1000, 700, 'sales'], [2500, 0, 'services']]}, {'receivable': 16797, 'net': 15860, 'tax': {'700': 934, '2100': 3, '0': 0}}], ['control 4', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[1999, 0, 'sales']]}, {'receivable': 1999, 'net': 1999, 'tax': {'0': 0}}], ['control 5', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[15, 700, 'services'], [12345, 700, 'services'], [999, 1900, 'sales'], [1999, 2000, 'sales']]}, {'receivable': 15358, 'net': 14056, 'tax': {'700': 809, '1900': 160, '2000': 333}}]], [['regression: half-cent tie', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[1999, 2100, 'sales'], [105, 2000, 'sales'], [2500, 0, 'services']]}, {'receivable': 4604, 'net': 4239, 'tax': {'2100': 347, '2000': 18, '0': 0}}], ['regression: half-cent tie, partial-repair probe', {'mode': 'exclusive', 'rounding': 'line', 'lines': [[1999, 2100, 'sales'], [5, 2100, 'sales'], [12345, 0, 'services'], [2500, 2000, 'sales']]}, {'receivable': 17770, 'net': 16849, 'tax': {'2100': 421, '0': 0, '2000': 500}}], ['control 1', {'mode': 'exclusive', 'rounding': 'line', 'lines': [[5, 700, 'sales'], [1000, 1900, 'sales'], [15, 2000, 'services'], [1999, 700, 'services'], [15, 0, 'services']]}, {'receivable': 3367, 'net': 3034, 'tax': {'700': 140, '1900': 190, '2000': 3, '0': 0}}], ['control 2', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[1999, 2000, 'sales'], [1999, 1900, 'sales']]}, {'receivable': 4778, 'net': 3998, 'tax': {'2000': 400, '1900': 380}}], ['control 3', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[999, 0, 'sales']]}, {'receivable': 999, 'net': 999, 'tax': {'0': 0}}], ['control 4', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[12345, 700, 'sales'], [105, 700, 'sales']]}, {'receivable': 12450, 'net': 11636, 'tax': {'700': 814}}], ['control 5', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[12345, 2100, 'sales'], [1000, 2100, 'services']]}, {'receivable': 16147, 'net': 13345, 'tax': {'2100': 2802}}]], [['regression: half-cent tie', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[105, 2100, 'sales'], [999, 2000, 'sales'], [105, 2000, 'sales']]}, {'receivable': 1209, 'net': 1006, 'tax': {'2100': 18, '2000': 185}}], ['control 1', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[15, 1900, 'sales'], [2500, 1900, 'services'], [15, 700, 'sales']]}, {'receivable': 3009, 'net': 2530, 'tax': {'1900': 478, '700': 1}}], ['control 2', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[15, 2100, 'sales'], [15, 2100, 'sales'], [105, 0, 'sales'], [1999, 1900, 'sales']]}, {'receivable': 2134, 'net': 1810, 'tax': {'2100': 5, '0': 0, '1900': 319}}], ['control 3', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[5, 0, 'services'], [105, 500, 'sales'], [1000, 700, 'sales'], [5, 2100, 'services'], [5, 0, 'services']]}, {'receivable': 1120, 'net': 1049, 'tax': {'0': 0, '500': 5, '700': 65, '2100': 1}}], ['control 4', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[1999, 700, 'sales']]}, {'receivable': 1999, 'net': 1868, 'tax': {'700': 131}}], ['control 5', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[105, 700, 'services'], [1000, 700, 'sales'], [5, 2100, 'services'], [105, 700, 'services'], [105, 2000, 'services']]}, {'receivable': 1427, 'net': 1320, 'tax': {'700': 85, '2100': 1, '2000': 21}}], ['control 6', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[105, 700, 'services'], [15, 0, 'services'], [1999, 0, 'sales'], [1999, 700, 'services'], [15, 1900, 'sales']]}, {'receivable': 4283, 'net': 4133, 'tax': {'700': 147, '0': 0, '1900': 3}}]], [['regression: half-cent tie', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[105, 2100, 'sales'], [1000, 2000, 'sales'], [1999, 500, 'sales'], [12345, 2000, 'services'], [1000, 500, 'sales']]}, {'receivable': 16449, 'net': 14063, 'tax': {'2100': 18, '2000': 2225, '500': 143}}], ['control 1', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[15, 0, 'sales'], [1999, 0, 'services'], [999, 700, 'services'], [15, 500, 'sales'], [999, 2100, 'sales']]}, {'receivable': 4027, 'net': 3788, 'tax': {'0': 0, '700': 65, '500': 1, '2100': 173}}], ['control 2', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[5, 700, 'services'], [2500, 1900, 'sales'], [1999, 1900, 'services'], [5, 500, 'sales'], [999, 2100, 'sales']]}, {'receivable': 5508, 'net': 4617, 'tax': {'700': 0, '1900': 718, '500': 0, '2100': 173}}], ['control 3', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[1999, 2100, 'services'], [15, 500, 'sales'], [1999, 700, 'sales'], [2500, 2100, 'sales'], [12345, 700, 'services']]}, {'receivable': 18858, 'net': 17138, 'tax': {'2100': 781, '500': 1, '700': 938}}], ['control 4', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[15, 500, 'sales']]}, {'receivable': 16, 'net': 15, 'tax': {'500': 1}}], ['control 5', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[999, 700, 'services']]}, {'receivable': 1069, 'net': 999, 'tax': {'700': 70}}], ['control 6', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[105, 1900, 'sales'], [12345, 500, 'sales'], [1000, 2000, 'sales'], [999, 700, 'services']]}, {'receivable': 15356, 'net': 14449, 'tax': {'1900': 20, '500': 617, '2000': 200, '700': 70}}]]]\nfor label, args, expected in fixtures[N-1]:\n    try:\n        actual = solve(args)\n    except Exception as exc:\n        actual = 'raised ' + type(exc).__name__\n    check(label, actual, expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"be3facde0034c13c1369f2e6549b3cefb3c4bc921f7168a671a8d1354f5ee446","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    def rnd(n, d):\n        q, r = divmod(n, d)\n        return q + (1 if 2 * r > d else 0)\n    incl = x['mode'] == 'inclusive'\n    groups = {}\n    tax = {}\n    for amount, bp, acct in x['lines']:\n        denom = 10000 + bp if incl else 10000\n        key = str(bp)\n        if x['rounding'] == 'line':\n            tax[key] = tax.get(key, 0) + rnd(amount * bp, denom)\n        groups[key] = groups.get(key, 0) + amount\n    if x['rounding'] == 'invoice':\n        for key, total in groups.items():\n            bp = int(key)\n            tax[key] = rnd(total * bp, 10000 + bp if incl else 10000)\n    gross_in = sum(groups.values())\n    total_tax = sum(tax.values())\n    if incl:\n        receivable = gross_in\n        net = gross_in - total_tax\n    else:\n        receivable = gross_in + total_tax\n        net = gross_in\n    return {'receivable': receivable, 'net': net, 'tax': tax}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: half-cent tie', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[15, 1900, 'services'], [15, 2000, 'services'], [15, 0, 'sales'], [1000, 2100, 'services'], [15, 500, 'sales']]}, {'receivable': 1060, 'net': 880, 'tax': {'1900': 2, '2000': 3, '0': 0, '2100': 174, '500': 1}}], ['control 1', {'mode': 'exclusive', 'rounding': 'line', 'lines': [[2500, 1900, 'sales'], [15, 700, 'sales']]}, {'receivable': 2991, 'net': 2515, 'tax': {'1900': 475, '700': 1}}], ['control 2', {'mode': 'exclusive', 'rounding': 'line', 'lines': [[105, 700, 'services'], [5, 700, 'sales'], [5, 500, 'services'], [105, 1900, 'services'], [15, 500, 'services']]}, {'receivable': 263, 'net': 235, 'tax': {'700': 7, '500': 1, '1900': 20}}], ['control 3', {'mode': 'exclusive', 'rounding': 'line', 'lines': [[1999, 700, 'services'], [999, 0, 'sales']]}, {'receivable': 3138, 'net': 2998, 'tax': {'700': 140, '0': 0}}], ['control 4', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[1999, 2100, 'services'], [12345, 2100, 'sales'], [2500, 500, 'services'], [105, 2100, 'services']]}, {'receivable': 16949, 'net': 14322, 'tax': {'2100': 2508, '500': 119}}], ['control 5', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[1000, 2100, 'services'], [999, 2000, 'sales'], [999, 0, 'sales'], [1999, 2100, 'services'], [1000, 2000, 'services']]}, {'receivable': 7027, 'net': 5997, 'tax': {'2100': 630, '2000': 400, '0': 0}}], ['control 6', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[999, 2100, 'sales'], [105, 500, 'services'], [999, 0, 'services']]}, {'receivable': 2103, 'net': 1925, 'tax': {'2100': 173, '500': 5, '0': 0}}]], [['regression: half-cent tie', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[15, 2100, 'services'], [5, 2000, 'sales'], [12345, 2000, 'sales']]}, {'receivable': 12365, 'net': 10303, 'tax': {'2100': 3, '2000': 2059}}], ['regression: half-cent tie, partial-repair probe', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[2500, 500, 'services'], [105, 500, 'sales']]}, {'receivable': 2605, 'net': 2481, 'tax': {'500': 124}}], ['control 1', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[999, 500, 'services'], [15, 700, 'sales']]}, {'receivable': 1014, 'net': 965, 'tax': {'500': 48, '700': 1}}], ['control 2', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[15, 1900, 'services']]}, {'receivable': 18, 'net': 15, 'tax': {'1900': 3}}], ['control 3', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[12345, 700, 'sales'], [15, 2100, 'sales'], [1000, 700, 'sales'], [2500, 0, 'services']]}, {'receivable': 16797, 'net': 15860, 'tax': {'700': 934, '2100': 3, '0': 0}}], ['control 4', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[1999, 0, 'sales']]}, {'receivable': 1999, 'net': 1999, 'tax': {'0': 0}}], ['control 5', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[15, 700, 'services'], [12345, 700, 'services'], [999, 1900, 'sales'], [1999, 2000, 'sales']]}, {'receivable': 15358, 'net': 14056, 'tax': {'700': 809, '1900': 160, '2000': 333}}]], [['regression: half-cent tie', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[1999, 2100, 'sales'], [105, 2000, 'sales'], [2500, 0, 'services']]}, {'receivable': 4604, 'net': 4239, 'tax': {'2100': 347, '2000': 18, '0': 0}}], ['regression: half-cent tie, partial-repair probe', {'mode': 'exclusive', 'rounding': 'line', 'lines': [[1999, 2100, 'sales'], [5, 2100, 'sales'], [12345, 0, 'services'], [2500, 2000, 'sales']]}, {'receivable': 17770, 'net': 16849, 'tax': {'2100': 421, '0': 0, '2000': 500}}], ['control 1', {'mode': 'exclusive', 'rounding': 'line', 'lines': [[5, 700, 'sales'], [1000, 1900, 'sales'], [15, 2000, 'services'], [1999, 700, 'services'], [15, 0, 'services']]}, {'receivable': 3367, 'net': 3034, 'tax': {'700': 140, '1900': 190, '2000': 3, '0': 0}}], ['control 2', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[1999, 2000, 'sales'], [1999, 1900, 'sales']]}, {'receivable': 4778, 'net': 3998, 'tax': {'2000': 400, '1900': 380}}], ['control 3', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[999, 0, 'sales']]}, {'receivable': 999, 'net': 999, 'tax': {'0': 0}}], ['control 4', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[12345, 700, 'sales'], [105, 700, 'sales']]}, {'receivable': 12450, 'net': 11636, 'tax': {'700': 814}}], ['control 5', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[12345, 2100, 'sales'], [1000, 2100, 'services']]}, {'receivable': 16147, 'net': 13345, 'tax': {'2100': 2802}}]], [['regression: half-cent tie', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[105, 2100, 'sales'], [999, 2000, 'sales'], [105, 2000, 'sales']]}, {'receivable': 1209, 'net': 1006, 'tax': {'2100': 18, '2000': 185}}], ['control 1', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[15, 1900, 'sales'], [2500, 1900, 'services'], [15, 700, 'sales']]}, {'receivable': 3009, 'net': 2530, 'tax': {'1900': 478, '700': 1}}], ['control 2', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[15, 2100, 'sales'], [15, 2100, 'sales'], [105, 0, 'sales'], [1999, 1900, 'sales']]}, {'receivable': 2134, 'net': 1810, 'tax': {'2100': 5, '0': 0, '1900': 319}}], ['control 3', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[5, 0, 'services'], [105, 500, 'sales'], [1000, 700, 'sales'], [5, 2100, 'services'], [5, 0, 'services']]}, {'receivable': 1120, 'net': 1049, 'tax': {'0': 0, '500': 5, '700': 65, '2100': 1}}], ['control 4', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[1999, 700, 'sales']]}, {'receivable': 1999, 'net': 1868, 'tax': {'700': 131}}], ['control 5', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[105, 700, 'services'], [1000, 700, 'sales'], [5, 2100, 'services'], [105, 700, 'services'], [105, 2000, 'services']]}, {'receivable': 1427, 'net': 1320, 'tax': {'700': 85, '2100': 1, '2000': 21}}], ['control 6', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[105, 700, 'services'], [15, 0, 'services'], [1999, 0, 'sales'], [1999, 700, 'services'], [15, 1900, 'sales']]}, {'receivable': 4283, 'net': 4133, 'tax': {'700': 147, '0': 0, '1900': 3}}]], [['regression: half-cent tie', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[105, 2100, 'sales'], [1000, 2000, 'sales'], [1999, 500, 'sales'], [12345, 2000, 'services'], [1000, 500, 'sales']]}, {'receivable': 16449, 'net': 14063, 'tax': {'2100': 18, '2000': 2225, '500': 143}}], ['control 1', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[15, 0, 'sales'], [1999, 0, 'services'], [999, 700, 'services'], [15, 500, 'sales'], [999, 2100, 'sales']]}, {'receivable': 4027, 'net': 3788, 'tax': {'0': 0, '700': 65, '500': 1, '2100': 173}}], ['control 2', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[5, 700, 'services'], [2500, 1900, 'sales'], [1999, 1900, 'services'], [5, 500, 'sales'], [999, 2100, 'sales']]}, {'receivable': 5508, 'net': 4617, 'tax': {'700': 0, '1900': 718, '500': 0, '2100': 173}}], ['control 3', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[1999, 2100, 'services'], [15, 500, 'sales'], [1999, 700, 'sales'], [2500, 2100, 'sales'], [12345, 700, 'services']]}, {'receivable': 18858, 'net': 17138, 'tax': {'2100': 781, '500': 1, '700': 938}}], ['control 4', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[15, 500, 'sales']]}, {'receivable': 16, 'net': 15, 'tax': {'500': 1}}], ['control 5', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[999, 700, 'services']]}, {'receivable': 1069, 'net': 999, 'tax': {'700': 70}}], ['control 6', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[105, 1900, 'sales'], [12345, 500, 'sales'], [1000, 2000, 'sales'], [999, 700, 'services']]}, {'receivable': 15356, 'net': 14449, 'tax': {'1900': 20, '500': 617, '2000': 200, '700': 70}}]]]\nfor label, args, expected in fixtures[N-1]:\n    try:\n        actual = solve(args)\n    except Exception as exc:\n        actual = 'raised ' + type(exc).__name__\n    check(label, actual, expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"a135f790652e40506c279e0ebef6c2d4c86e17bc43af1e0beee3c0f0959c3e30","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    def rnd(n, d):\n        q, r = divmod(n, d)\n        return q + (1 if 2 * r >= d else 0)\n    incl = x['mode'] == 'inclusive'\n    groups = {}\n    tax = {}\n    for amount, bp, acct in x['lines']:\n        denom = 10000 + bp if incl else 10000\n        key = str(bp)\n        if x['rounding'] == 'line':\n            tax[key] = tax.get(key, 0) + rnd(amount * bp, denom)\n        groups[key] = groups.get(key, 0) + amount\n    if x['rounding'] == 'invoice':\n        for key, total in groups.items():\n            bp = int(key)\n            tax[key] = rnd(total * bp, 10000 + bp if incl else 10000)\n    gross_in = sum(groups.values())\n    total_tax = sum(tax.values())\n    if incl:\n        receivable = gross_in\n        net = gross_in - total_tax\n    else:\n        receivable = gross_in + total_tax\n        net = gross_in\n    return {'receivable': receivable, 'net': net, 'tax': tax}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: half-cent tie', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[15, 1900, 'services'], [15, 2000, 'services'], [15, 0, 'sales'], [1000, 2100, 'services'], [15, 500, 'sales']]}, {'receivable': 1060, 'net': 880, 'tax': {'1900': 2, '2000': 3, '0': 0, '2100': 174, '500': 1}}], ['control 1', {'mode': 'exclusive', 'rounding': 'line', 'lines': [[2500, 1900, 'sales'], [15, 700, 'sales']]}, {'receivable': 2991, 'net': 2515, 'tax': {'1900': 475, '700': 1}}], ['control 2', {'mode': 'exclusive', 'rounding': 'line', 'lines': [[105, 700, 'services'], [5, 700, 'sales'], [5, 500, 'services'], [105, 1900, 'services'], [15, 500, 'services']]}, {'receivable': 263, 'net': 235, 'tax': {'700': 7, '500': 1, '1900': 20}}], ['control 3', {'mode': 'exclusive', 'rounding': 'line', 'lines': [[1999, 700, 'services'], [999, 0, 'sales']]}, {'receivable': 3138, 'net': 2998, 'tax': {'700': 140, '0': 0}}], ['control 4', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[1999, 2100, 'services'], [12345, 2100, 'sales'], [2500, 500, 'services'], [105, 2100, 'services']]}, {'receivable': 16949, 'net': 14322, 'tax': {'2100': 2508, '500': 119}}], ['control 5', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[1000, 2100, 'services'], [999, 2000, 'sales'], [999, 0, 'sales'], [1999, 2100, 'services'], [1000, 2000, 'services']]}, {'receivable': 7027, 'net': 5997, 'tax': {'2100': 630, '2000': 400, '0': 0}}], ['control 6', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[999, 2100, 'sales'], [105, 500, 'services'], [999, 0, 'services']]}, {'receivable': 2103, 'net': 1925, 'tax': {'2100': 173, '500': 5, '0': 0}}]], [['regression: half-cent tie', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[15, 2100, 'services'], [5, 2000, 'sales'], [12345, 2000, 'sales']]}, {'receivable': 12365, 'net': 10303, 'tax': {'2100': 3, '2000': 2059}}], ['regression: half-cent tie, partial-repair probe', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[2500, 500, 'services'], [105, 500, 'sales']]}, {'receivable': 2605, 'net': 2481, 'tax': {'500': 124}}], ['control 1', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[999, 500, 'services'], [15, 700, 'sales']]}, {'receivable': 1014, 'net': 965, 'tax': {'500': 48, '700': 1}}], ['control 2', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[15, 1900, 'services']]}, {'receivable': 18, 'net': 15, 'tax': {'1900': 3}}], ['control 3', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[12345, 700, 'sales'], [15, 2100, 'sales'], [1000, 700, 'sales'], [2500, 0, 'services']]}, {'receivable': 16797, 'net': 15860, 'tax': {'700': 934, '2100': 3, '0': 0}}], ['control 4', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[1999, 0, 'sales']]}, {'receivable': 1999, 'net': 1999, 'tax': {'0': 0}}], ['control 5', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[15, 700, 'services'], [12345, 700, 'services'], [999, 1900, 'sales'], [1999, 2000, 'sales']]}, {'receivable': 15358, 'net': 14056, 'tax': {'700': 809, '1900': 160, '2000': 333}}]], [['regression: half-cent tie', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[1999, 2100, 'sales'], [105, 2000, 'sales'], [2500, 0, 'services']]}, {'receivable': 4604, 'net': 4239, 'tax': {'2100': 347, '2000': 18, '0': 0}}], ['regression: half-cent tie, partial-repair probe', {'mode': 'exclusive', 'rounding': 'line', 'lines': [[1999, 2100, 'sales'], [5, 2100, 'sales'], [12345, 0, 'services'], [2500, 2000, 'sales']]}, {'receivable': 17770, 'net': 16849, 'tax': {'2100': 421, '0': 0, '2000': 500}}], ['control 1', {'mode': 'exclusive', 'rounding': 'line', 'lines': [[5, 700, 'sales'], [1000, 1900, 'sales'], [15, 2000, 'services'], [1999, 700, 'services'], [15, 0, 'services']]}, {'receivable': 3367, 'net': 3034, 'tax': {'700': 140, '1900': 190, '2000': 3, '0': 0}}], ['control 2', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[1999, 2000, 'sales'], [1999, 1900, 'sales']]}, {'receivable': 4778, 'net': 3998, 'tax': {'2000': 400, '1900': 380}}], ['control 3', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[999, 0, 'sales']]}, {'receivable': 999, 'net': 999, 'tax': {'0': 0}}], ['control 4', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[12345, 700, 'sales'], [105, 700, 'sales']]}, {'receivable': 12450, 'net': 11636, 'tax': {'700': 814}}], ['control 5', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[12345, 2100, 'sales'], [1000, 2100, 'services']]}, {'receivable': 16147, 'net': 13345, 'tax': {'2100': 2802}}]], [['regression: half-cent tie', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[105, 2100, 'sales'], [999, 2000, 'sales'], [105, 2000, 'sales']]}, {'receivable': 1209, 'net': 1006, 'tax': {'2100': 18, '2000': 185}}], ['control 1', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[15, 1900, 'sales'], [2500, 1900, 'services'], [15, 700, 'sales']]}, {'receivable': 3009, 'net': 2530, 'tax': {'1900': 478, '700': 1}}], ['control 2', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[15, 2100, 'sales'], [15, 2100, 'sales'], [105, 0, 'sales'], [1999, 1900, 'sales']]}, {'receivable': 2134, 'net': 1810, 'tax': {'2100': 5, '0': 0, '1900': 319}}], ['control 3', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[5, 0, 'services'], [105, 500, 'sales'], [1000, 700, 'sales'], [5, 2100, 'services'], [5, 0, 'services']]}, {'receivable': 1120, 'net': 1049, 'tax': {'0': 0, '500': 5, '700': 65, '2100': 1}}], ['control 4', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[1999, 700, 'sales']]}, {'receivable': 1999, 'net': 1868, 'tax': {'700': 131}}], ['control 5', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[105, 700, 'services'], [1000, 700, 'sales'], [5, 2100, 'services'], [105, 700, 'services'], [105, 2000, 'services']]}, {'receivable': 1427, 'net': 1320, 'tax': {'700': 85, '2100': 1, '2000': 21}}], ['control 6', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[105, 700, 'services'], [15, 0, 'services'], [1999, 0, 'sales'], [1999, 700, 'services'], [15, 1900, 'sales']]}, {'receivable': 4283, 'net': 4133, 'tax': {'700': 147, '0': 0, '1900': 3}}]], [['regression: half-cent tie', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[105, 2100, 'sales'], [1000, 2000, 'sales'], [1999, 500, 'sales'], [12345, 2000, 'services'], [1000, 500, 'sales']]}, {'receivable': 16449, 'net': 14063, 'tax': {'2100': 18, '2000': 2225, '500': 143}}], ['control 1', {'mode': 'inclusive', 'rounding': 'line', 'lines': [[15, 0, 'sales'], [1999, 0, 'services'], [999, 700, 'services'], [15, 500, 'sales'], [999, 2100, 'sales']]}, {'receivable': 4027, 'net': 3788, 'tax': {'0': 0, '700': 65, '500': 1, '2100': 173}}], ['control 2', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[5, 700, 'services'], [2500, 1900, 'sales'], [1999, 1900, 'services'], [5, 500, 'sales'], [999, 2100, 'sales']]}, {'receivable': 5508, 'net': 4617, 'tax': {'700': 0, '1900': 718, '500': 0, '2100': 173}}], ['control 3', {'mode': 'inclusive', 'rounding': 'invoice', 'lines': [[1999, 2100, 'services'], [15, 500, 'sales'], [1999, 700, 'sales'], [2500, 2100, 'sales'], [12345, 700, 'services']]}, {'receivable': 18858, 'net': 17138, 'tax': {'2100': 781, '500': 1, '700': 938}}], ['control 4', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[15, 500, 'sales']]}, {'receivable': 16, 'net': 15, 'tax': {'500': 1}}], ['control 5', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[999, 700, 'services']]}, {'receivable': 1069, 'net': 999, 'tax': {'700': 70}}], ['control 6', {'mode': 'exclusive', 'rounding': 'invoice', 'lines': [[105, 1900, 'sales'], [12345, 500, 'sales'], [1000, 2000, 'sales'], [999, 700, 'services']]}, {'receivable': 15356, 'net': 14449, 'tax': {'1900': 20, '500': 617, '2000': 200, '700': 70}}]]]\nfor label, args, expected in fixtures[N-1]:\n    try:\n        actual = solve(args)\n    except Exception as exc:\n        actual = 'raised ' + type(exc).__name__\n    check(label, actual, expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"A deterministic bounded teaching model with stipulated toy bookkeeping rules stated in the contract; amounts are integer cents; it makes no claim of conformance to any accounting standard or product. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-double-entry-ledger-accounting-vat-invoice-journal-half-cent-tie","generated_at":"2026-09-29T14:46:24.197458+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Ledger software must keep debits equal to credits and apply normal-balance, period and cutoff rules exactly; small sign or boundary slips silently misstate financial statements.","repair":"Round ties half-up.","root_cause":"The rounding helper sends ties down.","sha256":"9a548c01c1b8e1ed71a7fc9dfb4b719e90415287944a1ee49d9622538341d260","title":"VAT invoice journal: half-cent tie · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.279,"exit_code":1,"observations":[{"actual":{"net":879,"receivable":1060,"tax":{"0":0,"1900":3,"2000":3,"2100":174,"500":1}},"check":"regression: half-cent tie","expected":{"net":880,"receivable":1060,"tax":{"0":0,"1900":2,"2000":3,"2100":174,"500":1}},"passed":false},{"actual":{"net":2515,"receivable":2992,"tax":{"1900":475,"700":2}},"check":"control 1","expected":{"net":2515,"receivable":2991,"tax":{"1900":475,"700":1}},"passed":false},{"actual":{"net":235,"receivable":266,"tax":{"1900":20,"500":2,"700":9}},"check":"control 2","expected":{"net":235,"receivable":263,"tax":{"1900":20,"500":1,"700":7}},"passed":false},{"actual":{"net":2998,"receivable":3138,"tax":{"0":0,"700":140}},"check":"control 3","expected":{"net":2998,"receivable":3138,"tax":{"0":0,"700":140}},"passed":true},{"actual":{"net":14321,"receivable":16949,"tax":{"2100":2508,"500":120}},"check":"control 4","expected":{"net":14322,"receivable":16949,"tax":{"2100":2508,"500":119}},"passed":false},{"actual":{"net":5997,"receivable":7027,"tax":{"0":0,"2000":400,"2100":630}},"check":"control 5","expected":{"net":5997,"receivable":7027,"tax":{"0":0,"2000":400,"2100":630}},"passed":true},{"actual":{"net":1924,"receivable":2103,"tax":{"0":0,"2100":174,"500":5}},"check":"control 6","expected":{"net":1925,"receivable":2103,"tax":{"0":0,"2100":173,"500":5}},"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: half-cent tie\", \"actual\": {\"receivable\": 1060, \"net\": 879, \"tax\": {\"1900\": 3, \"2000\": 3, \"0\": 0, \"2100\": 174, \"500\": 1}}, \"expected\": {\"receivable\": 1060, \"net\": 880, \"tax\": {\"1900\": 2, \"2000\": 3, \"0\": 0, \"2100\": 174, \"500\": 1}}, \"passed\": false}, {\"check\": \"control 1\", \"actual\": {\"receivable\": 2992, \"net\": 2515, \"tax\": {\"1900\": 475, \"700\": 2}}, \"expected\": {\"receivable\": 2991, \"net\": 2515, \"tax\": {\"1900\": 475, \"700\": 1}}, \"passed\": false}, {\"check\": \"control 2\", \"actual\": {\"receivable\": 266, \"net\": 235, \"tax\": {\"700\": 9, \"500\": 2, \"1900\": 20}}, \"expected\": {\"receivable\": 263, \"net\": 235, \"tax\": {\"700\": 7, \"500\": 1, \"1900\": 20}}, \"passed\": false}, {\"check\": \"control 3\", \"actual\": {\"receivable\": 3138, \"net\": 2998, \"tax\": {\"700\": 140, \"0\": 0}}, \"expected\": {\"receivable\": 3138, \"net\": 2998, \"tax\": {\"700\": 140, \"0\": 0}}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"receivable\": 16949, \"net\": 14321, \"tax\": {\"2100\": 2508, \"500\": 120}}, \"expected\": {\"receivable\": 16949, \"net\": 14322, \"tax\": {\"2100\": 2508, \"500\": 119}}, \"passed\": false}, {\"check\": \"control 5\", \"actual\": {\"receivable\": 7027, \"net\": 5997, \"tax\": {\"2100\": 630, \"2000\": 400, \"0\": 0}}, \"expected\": {\"receivable\": 7027, \"net\": 5997, \"tax\": {\"2100\": 630, \"2000\": 400, \"0\": 0}}, \"passed\": true}, {\"check\": \"control 6\", \"actual\": {\"receivable\": 2103, \"net\": 1924, \"tax\": {\"2100\": 174, \"500\": 5, \"0\": 0}}, \"expected\": {\"receivable\": 2103, \"net\": 1925, \"tax\": {\"2100\": 173, \"500\": 5, \"0\": 0}}, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.484,"exit_code":1,"observations":[{"actual":{"net":881,"receivable":1060,"tax":{"0":0,"1900":2,"2000":2,"2100":174,"500":1}},"check":"regression: half-cent tie","expected":{"net":880,"receivable":1060,"tax":{"0":0,"1900":2,"2000":3,"2100":174,"500":1}},"passed":false},{"actual":{"net":2515,"receivable":2991,"tax":{"1900":475,"700":1}},"check":"control 1","expected":{"net":2515,"receivable":2991,"tax":{"1900":475,"700":1}},"passed":true},{"actual":{"net":235,"receivable":263,"tax":{"1900":20,"500":1,"700":7}},"check":"control 2","expected":{"net":235,"receivable":263,"tax":{"1900":20,"500":1,"700":7}},"passed":true},{"actual":{"net":2998,"receivable":3138,"tax":{"0":0,"700":140}},"check":"control 3","expected":{"net":2998,"receivable":3138,"tax":{"0":0,"700":140}},"passed":true},{"actual":{"net":14322,"receivable":16949,"tax":{"2100":2508,"500":119}},"check":"control 4","expected":{"net":14322,"receivable":16949,"tax":{"2100":2508,"500":119}},"passed":true},{"actual":{"net":5997,"receivable":7027,"tax":{"0":0,"2000":400,"2100":630}},"check":"control 5","expected":{"net":5997,"receivable":7027,"tax":{"0":0,"2000":400,"2100":630}},"passed":true},{"actual":{"net":1925,"receivable":2103,"tax":{"0":0,"2100":173,"500":5}},"check":"control 6","expected":{"net":1925,"receivable":2103,"tax":{"0":0,"2100":173,"500":5}},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: half-cent tie\", \"actual\": {\"receivable\": 1060, \"net\": 881, \"tax\": {\"1900\": 2, \"2000\": 2, \"0\": 0, \"2100\": 174, \"500\": 1}}, \"expected\": {\"receivable\": 1060, \"net\": 880, \"tax\": {\"1900\": 2, \"2000\": 3, \"0\": 0, \"2100\": 174, \"500\": 1}}, \"passed\": false}, {\"check\": \"control 1\", \"actual\": {\"receivable\": 2991, \"net\": 2515, \"tax\": {\"1900\": 475, \"700\": 1}}, \"expected\": {\"receivable\": 2991, \"net\": 2515, \"tax\": {\"1900\": 475, \"700\": 1}}, \"passed\": true}, {\"check\": \"control 2\", \"actual\": {\"receivable\": 263, \"net\": 235, \"tax\": {\"700\": 7, \"500\": 1, \"1900\": 20}}, \"expected\": {\"receivable\": 263, \"net\": 235, \"tax\": {\"700\": 7, \"500\": 1, \"1900\": 20}}, \"passed\": true}, {\"check\": \"control 3\", \"actual\": {\"receivable\": 3138, \"net\": 2998, \"tax\": {\"700\": 140, \"0\": 0}}, \"expected\": {\"receivable\": 3138, \"net\": 2998, \"tax\": {\"700\": 140, \"0\": 0}}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"receivable\": 16949, \"net\": 14322, \"tax\": {\"2100\": 2508, \"500\": 119}}, \"expected\": {\"receivable\": 16949, \"net\": 14322, \"tax\": {\"2100\": 2508, \"500\": 119}}, \"passed\": true}, {\"check\": \"control 5\", \"actual\": {\"receivable\": 7027, \"net\": 5997, \"tax\": {\"2100\": 630, \"2000\": 400, \"0\": 0}}, \"expected\": {\"receivable\": 7027, \"net\": 5997, \"tax\": {\"2100\": 630, \"2000\": 400, \"0\": 0}}, \"passed\": true}, {\"check\": \"control 6\", \"actual\": {\"receivable\": 2103, \"net\": 1925, \"tax\": {\"2100\": 173, \"500\": 5, \"0\": 0}}, \"expected\": {\"receivable\": 2103, \"net\": 1925, \"tax\": {\"2100\": 173, \"500\": 5, \"0\": 0}}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.317,"exit_code":0,"observations":[{"actual":{"net":880,"receivable":1060,"tax":{"0":0,"1900":2,"2000":3,"2100":174,"500":1}},"check":"regression: half-cent tie","expected":{"net":880,"receivable":1060,"tax":{"0":0,"1900":2,"2000":3,"2100":174,"500":1}},"passed":true},{"actual":{"net":2515,"receivable":2991,"tax":{"1900":475,"700":1}},"check":"control 1","expected":{"net":2515,"receivable":2991,"tax":{"1900":475,"700":1}},"passed":true},{"actual":{"net":235,"receivable":263,"tax":{"1900":20,"500":1,"700":7}},"check":"control 2","expected":{"net":235,"receivable":263,"tax":{"1900":20,"500":1,"700":7}},"passed":true},{"actual":{"net":2998,"receivable":3138,"tax":{"0":0,"700":140}},"check":"control 3","expected":{"net":2998,"receivable":3138,"tax":{"0":0,"700":140}},"passed":true},{"actual":{"net":14322,"receivable":16949,"tax":{"2100":2508,"500":119}},"check":"control 4","expected":{"net":14322,"receivable":16949,"tax":{"2100":2508,"500":119}},"passed":true},{"actual":{"net":5997,"receivable":7027,"tax":{"0":0,"2000":400,"2100":630}},"check":"control 5","expected":{"net":5997,"receivable":7027,"tax":{"0":0,"2000":400,"2100":630}},"passed":true},{"actual":{"net":1925,"receivable":2103,"tax":{"0":0,"2100":173,"500":5}},"check":"control 6","expected":{"net":1925,"receivable":2103,"tax":{"0":0,"2100":173,"500":5}},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: half-cent tie\", \"actual\": {\"receivable\": 1060, \"net\": 880, \"tax\": {\"1900\": 2, \"2000\": 3, \"0\": 0, \"2100\": 174, \"500\": 1}}, \"expected\": {\"receivable\": 1060, \"net\": 880, \"tax\": {\"1900\": 2, \"2000\": 3, \"0\": 0, \"2100\": 174, \"500\": 1}}, \"passed\": true}, {\"check\": \"control 1\", \"actual\": {\"receivable\": 2991, \"net\": 2515, \"tax\": {\"1900\": 475, \"700\": 1}}, \"expected\": {\"receivable\": 2991, \"net\": 2515, \"tax\": {\"1900\": 475, \"700\": 1}}, \"passed\": true}, {\"check\": \"control 2\", \"actual\": {\"receivable\": 263, \"net\": 235, \"tax\": {\"700\": 7, \"500\": 1, \"1900\": 20}}, \"expected\": {\"receivable\": 263, \"net\": 235, \"tax\": {\"700\": 7, \"500\": 1, \"1900\": 20}}, \"passed\": true}, {\"check\": \"control 3\", \"actual\": {\"receivable\": 3138, \"net\": 2998, \"tax\": {\"700\": 140, \"0\": 0}}, \"expected\": {\"receivable\": 3138, \"net\": 2998, \"tax\": {\"700\": 140, \"0\": 0}}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"receivable\": 16949, \"net\": 14322, \"tax\": {\"2100\": 2508, \"500\": 119}}, \"expected\": {\"receivable\": 16949, \"net\": 14322, \"tax\": {\"2100\": 2508, \"500\": 119}}, \"passed\": true}, {\"check\": \"control 5\", \"actual\": {\"receivable\": 7027, \"net\": 5997, \"tax\": {\"2100\": 630, \"2000\": 400, \"0\": 0}}, \"expected\": {\"receivable\": 7027, \"net\": 5997, \"tax\": {\"2100\": 630, \"2000\": 400, \"0\": 0}}, \"passed\": true}, {\"check\": \"control 6\", \"actual\": {\"receivable\": 2103, \"net\": 1925, \"tax\": {\"2100\": 173, \"500\": 5, \"0\": 0}}, \"expected\": {\"receivable\": 2103, \"net\": 1925, \"tax\": {\"2100\": 173, \"500\": 5, \"0\": 0}}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}