ERPNext rounds each item's tax-exclusive amount, so net_total + taxes
can differ from grand_total by 0.01 (it hides the diff in an unstored
grand_total_diff). Print the base as grand_total - taxes instead of
net_total when inclusive taxes are shown.
ERPNext's taxes template hides charges with included_in_print_rate unless
Accounts Settings > Show Inclusive Tax in Print is on. Set the flag in
the format when such taxes exist, so the tax line and Total (Without
Tax) render regardless of the site setting.
Also stop binding a throwaway Jinja variable to `_`: frappe._dict.update
returns self, so `set _ = df.update(...)` shadowed the translator.
The standard layout prints every non-empty child column (Image, Stock
UOM, Discount Amount, Rate of Stock UOM, ...). Whitelist Item,
Description, Quantity, UOM, Rate and Amount via visible_columns.