Functional Weave
Code in TypeScript

manufacturing.variance@1.0.0

vectors.json

12,134 bytes · view raw

[
  {"name": "the textbook case: 2 kg at \u00a33 and 3 h at \u00a310 a unit, 1000 made with 2200 kg for \u00a36160 and 2900 h for \u00a330450", "args": [{"standardPrice": {"minor": 300, "currency": "GBP"}, "standardQuantity": {"numerator": 2, "denominator": 1}, "actualQuantity": {"numerator": 2200, "denominator": 1}, "actualCost": {"minor": 616000, "currency": "GBP"}}, {"standardRate": {"minor": 1000, "currency": "GBP"}, "standardHours": {"numerator": 3, "denominator": 1}, "actualHours": {"numerator": 2900, "denominator": 1}, "actualCost": {"minor": 3045000, "currency": "GBP"}}, 1000, "half-up"], "expect": {"materialPrice": {"amount": {"minor": 44000, "currency": "GBP"}, "effect": "favourable"}, "materialUsage": {"amount": {"minor": 60000, "currency": "GBP"}, "effect": "adverse"}, "labourRate": {"amount": {"minor": 145000, "currency": "GBP"}, "effect": "adverse"}, "labourEfficiency": {"amount": {"minor": 100000, "currency": "GBP"}, "effect": "favourable"}, "total": {"amount": {"minor": 61000, "currency": "GBP"}, "effect": "adverse"}, "standardCost": {"minor": 3600000, "currency": "GBP"}, "actualCost": {"minor": 3661000, "currency": "GBP"}}},
  {"name": "fractional standards: 1/3 kg at \u00a31.25 and 1/4 h at \u00a311.50 a unit, 100 made using 33.5 kg; each flexed cost is rounded once and the variances still add up", "args": [{"standardPrice": {"minor": 125, "currency": "GBP"}, "standardQuantity": {"numerator": 1, "denominator": 3}, "actualQuantity": {"numerator": 67, "denominator": 2}, "actualCost": {"minor": 4200, "currency": "GBP"}}, {"standardRate": {"minor": 1150, "currency": "GBP"}, "standardHours": {"numerator": 1, "denominator": 4}, "actualHours": {"numerator": 26, "denominator": 1}, "actualCost": {"minor": 30000, "currency": "GBP"}}, 100, "half-up"], "expect": {"materialPrice": {"amount": {"minor": 12, "currency": "GBP"}, "effect": "adverse"}, "materialUsage": {"amount": {"minor": 21, "currency": "GBP"}, "effect": "adverse"}, "labourRate": {"amount": {"minor": 100, "currency": "GBP"}, "effect": "adverse"}, "labourEfficiency": {"amount": {"minor": 1150, "currency": "GBP"}, "effect": "adverse"}, "total": {"amount": {"minor": 1283, "currency": "GBP"}, "effect": "adverse"}, "standardCost": {"minor": 32917, "currency": "GBP"}, "actualCost": {"minor": 34200, "currency": "GBP"}}},
  {"name": "the same rounded down: 4187.5p and 4166.67p become 4187p and 4166p", "args": [{"standardPrice": {"minor": 125, "currency": "GBP"}, "standardQuantity": {"numerator": 1, "denominator": 3}, "actualQuantity": {"numerator": 67, "denominator": 2}, "actualCost": {"minor": 4200, "currency": "GBP"}}, {"standardRate": {"minor": 1150, "currency": "GBP"}, "standardHours": {"numerator": 1, "denominator": 4}, "actualHours": {"numerator": 26, "denominator": 1}, "actualCost": {"minor": 30000, "currency": "GBP"}}, 100, "down"], "expect": {"materialPrice": {"amount": {"minor": 13, "currency": "GBP"}, "effect": "adverse"}, "materialUsage": {"amount": {"minor": 21, "currency": "GBP"}, "effect": "adverse"}, "labourRate": {"amount": {"minor": 100, "currency": "GBP"}, "effect": "adverse"}, "labourEfficiency": {"amount": {"minor": 1150, "currency": "GBP"}, "effect": "adverse"}, "total": {"amount": {"minor": 1284, "currency": "GBP"}, "effect": "adverse"}, "standardCost": {"minor": 32916, "currency": "GBP"}, "actualCost": {"minor": 34200, "currency": "GBP"}}},
  {"name": "exactly on standard: every variance is none", "args": [{"standardPrice": {"minor": 500, "currency": "GBP"}, "standardQuantity": {"numerator": 1, "denominator": 1}, "actualQuantity": {"numerator": 10, "denominator": 1}, "actualCost": {"minor": 5000, "currency": "GBP"}}, {"standardRate": {"minor": 2000, "currency": "GBP"}, "standardHours": {"numerator": 1, "denominator": 2}, "actualHours": {"numerator": 5, "denominator": 1}, "actualCost": {"minor": 10000, "currency": "GBP"}}, 10, "half-up"], "expect": {"materialPrice": {"amount": {"minor": 0, "currency": "GBP"}, "effect": "none"}, "materialUsage": {"amount": {"minor": 0, "currency": "GBP"}, "effect": "none"}, "labourRate": {"amount": {"minor": 0, "currency": "GBP"}, "effect": "none"}, "labourEfficiency": {"amount": {"minor": 0, "currency": "GBP"}, "effect": "none"}, "total": {"amount": {"minor": 0, "currency": "GBP"}, "effect": "none"}, "standardCost": {"minor": 15000, "currency": "GBP"}, "actualCost": {"minor": 15000, "currency": "GBP"}}},
  {"name": "nothing made: everything used is usage and efficiency variance", "args": [{"standardPrice": {"minor": 500, "currency": "GBP"}, "standardQuantity": {"numerator": 1, "denominator": 1}, "actualQuantity": {"numerator": 4, "denominator": 1}, "actualCost": {"minor": 2000, "currency": "GBP"}}, {"standardRate": {"minor": 2000, "currency": "GBP"}, "standardHours": {"numerator": 1, "denominator": 2}, "actualHours": {"numerator": 2, "denominator": 1}, "actualCost": {"minor": 4000, "currency": "GBP"}}, 0, "half-up"], "expect": {"materialPrice": {"amount": {"minor": 0, "currency": "GBP"}, "effect": "none"}, "materialUsage": {"amount": {"minor": 2000, "currency": "GBP"}, "effect": "adverse"}, "labourRate": {"amount": {"minor": 0, "currency": "GBP"}, "effect": "none"}, "labourEfficiency": {"amount": {"minor": 4000, "currency": "GBP"}, "effect": "adverse"}, "total": {"amount": {"minor": 6000, "currency": "GBP"}, "effect": "adverse"}, "standardCost": {"minor": 0, "currency": "GBP"}, "actualCost": {"minor": 6000, "currency": "GBP"}}},
  {"name": "dear material used sparingly and cheap labour working fast: favourable overall", "args": [{"standardPrice": {"minor": 300, "currency": "GBP"}, "standardQuantity": {"numerator": 2, "denominator": 1}, "actualQuantity": {"numerator": 1950, "denominator": 1}, "actualCost": {"minor": 604500, "currency": "GBP"}}, {"standardRate": {"minor": 1000, "currency": "GBP"}, "standardHours": {"numerator": 3, "denominator": 1}, "actualHours": {"numerator": 2800, "denominator": 1}, "actualCost": {"minor": 2744000, "currency": "GBP"}}, 1000, "half-up"], "expect": {"materialPrice": {"amount": {"minor": 19500, "currency": "GBP"}, "effect": "adverse"}, "materialUsage": {"amount": {"minor": 15000, "currency": "GBP"}, "effect": "favourable"}, "labourRate": {"amount": {"minor": 56000, "currency": "GBP"}, "effect": "favourable"}, "labourEfficiency": {"amount": {"minor": 200000, "currency": "GBP"}, "effect": "favourable"}, "total": {"amount": {"minor": 251500, "currency": "GBP"}, "effect": "favourable"}, "standardCost": {"minor": 3600000, "currency": "GBP"}, "actualCost": {"minor": 3348500, "currency": "GBP"}}},
  {"name": "hours in minutes as a fraction: 90 minutes is 3/2 hours", "args": [{"standardPrice": {"minor": 1000, "currency": "EUR"}, "standardQuantity": {"numerator": 1, "denominator": 1}, "actualQuantity": {"numerator": 1, "denominator": 1}, "actualCost": {"minor": 1000, "currency": "EUR"}}, {"standardRate": {"minor": 2400, "currency": "EUR"}, "standardHours": {"numerator": 1, "denominator": 1}, "actualHours": {"numerator": 3, "denominator": 2}, "actualCost": {"minor": 3600, "currency": "EUR"}}, 1, "half-up"], "expect": {"materialPrice": {"amount": {"minor": 0, "currency": "EUR"}, "effect": "none"}, "materialUsage": {"amount": {"minor": 0, "currency": "EUR"}, "effect": "none"}, "labourRate": {"amount": {"minor": 0, "currency": "EUR"}, "effect": "none"}, "labourEfficiency": {"amount": {"minor": 1200, "currency": "EUR"}, "effect": "adverse"}, "total": {"amount": {"minor": 1200, "currency": "EUR"}, "effect": "adverse"}, "standardCost": {"minor": 3400, "currency": "EUR"}, "actualCost": {"minor": 4600, "currency": "EUR"}}},
  {"name": "costs in two currencies are an error", "args": [{"standardPrice": {"minor": 300, "currency": "GBP"}, "standardQuantity": {"numerator": 2, "denominator": 1}, "actualQuantity": {"numerator": 2200, "denominator": 1}, "actualCost": {"minor": 616000, "currency": "GBP"}}, {"standardRate": {"minor": 1000, "currency": "EUR"}, "standardHours": {"numerator": 3, "denominator": 1}, "actualHours": {"numerator": 2900, "denominator": 1}, "actualCost": {"minor": 3045000, "currency": "EUR"}}, 1000, "half-up"], "expectError": "currency mismatch"},
  {"name": "negative output is an error", "args": [{"standardPrice": {"minor": 300, "currency": "GBP"}, "standardQuantity": {"numerator": 2, "denominator": 1}, "actualQuantity": {"numerator": 2200, "denominator": 1}, "actualCost": {"minor": 616000, "currency": "GBP"}}, {"standardRate": {"minor": 1000, "currency": "GBP"}, "standardHours": {"numerator": 3, "denominator": 1}, "actualHours": {"numerator": 2900, "denominator": 1}, "actualCost": {"minor": 3045000, "currency": "GBP"}}, -1, "half-up"], "expectError": "actualOutput must be a whole number, not negative"},
  {"name": "fractional output is an error", "args": [{"standardPrice": {"minor": 300, "currency": "GBP"}, "standardQuantity": {"numerator": 2, "denominator": 1}, "actualQuantity": {"numerator": 2200, "denominator": 1}, "actualCost": {"minor": 616000, "currency": "GBP"}}, {"standardRate": {"minor": 1000, "currency": "GBP"}, "standardHours": {"numerator": 3, "denominator": 1}, "actualHours": {"numerator": 2900, "denominator": 1}, "actualCost": {"minor": 3045000, "currency": "GBP"}}, 2.5, "half-up"], "expectError": "actualOutput must be a whole number, not negative"},
  {"name": "a negative actual quantity is an error", "args": [{"standardPrice": {"minor": 300, "currency": "GBP"}, "standardQuantity": {"numerator": 2, "denominator": 1}, "actualQuantity": {"numerator": -5, "denominator": 1}, "actualCost": {"minor": 616000, "currency": "GBP"}}, {"standardRate": {"minor": 1000, "currency": "GBP"}, "standardHours": {"numerator": 3, "denominator": 1}, "actualHours": {"numerator": 2900, "denominator": 1}, "actualCost": {"minor": 3045000, "currency": "GBP"}}, 1000, "half-up"], "expectError": "material actualQuantity must not be negative"},
  {"name": "negative standard hours are an error", "args": [{"standardPrice": {"minor": 300, "currency": "GBP"}, "standardQuantity": {"numerator": 2, "denominator": 1}, "actualQuantity": {"numerator": 2200, "denominator": 1}, "actualCost": {"minor": 616000, "currency": "GBP"}}, {"standardRate": {"minor": 1000, "currency": "GBP"}, "standardHours": {"numerator": 3, "denominator": -1}, "actualHours": {"numerator": 2900, "denominator": 1}, "actualCost": {"minor": 3045000, "currency": "GBP"}}, 1000, "half-up"], "expectError": "labour standardHours must not be negative"},
  {"name": "a negative standard price is an error", "args": [{"standardPrice": {"minor": -300, "currency": "GBP"}, "standardQuantity": {"numerator": 2, "denominator": 1}, "actualQuantity": {"numerator": 2200, "denominator": 1}, "actualCost": {"minor": 616000, "currency": "GBP"}}, {"standardRate": {"minor": 1000, "currency": "GBP"}, "standardHours": {"numerator": 3, "denominator": 1}, "actualHours": {"numerator": 2900, "denominator": 1}, "actualCost": {"minor": 3045000, "currency": "GBP"}}, 1000, "half-up"], "expectError": "material standardPrice must not be negative"},
  {"name": "a negative actual labour cost is an error", "args": [{"standardPrice": {"minor": 300, "currency": "GBP"}, "standardQuantity": {"numerator": 2, "denominator": 1}, "actualQuantity": {"numerator": 2200, "denominator": 1}, "actualCost": {"minor": 616000, "currency": "GBP"}}, {"standardRate": {"minor": 1000, "currency": "GBP"}, "standardHours": {"numerator": 3, "denominator": 1}, "actualHours": {"numerator": 2900, "denominator": 1}, "actualCost": {"minor": -1, "currency": "GBP"}}, 1000, "half-up"], "expectError": "labour actualCost must not be negative"},
  {"name": "a zero denominator is an error", "args": [{"standardPrice": {"minor": 300, "currency": "GBP"}, "standardQuantity": {"numerator": 2, "denominator": 0}, "actualQuantity": {"numerator": 2200, "denominator": 1}, "actualCost": {"minor": 616000, "currency": "GBP"}}, {"standardRate": {"minor": 1000, "currency": "GBP"}, "standardHours": {"numerator": 3, "denominator": 1}, "actualHours": {"numerator": 2900, "denominator": 1}, "actualCost": {"minor": 3045000, "currency": "GBP"}}, 1000, "half-up"], "expectError": "denominator must not be zero"}
]