@diy-accounting-uk/diya-gl 1.2.6 → 1.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/data/releases.json +26 -0
- package/dist/app/data/render-unrepresentable/se.json +25 -6
- package/dist/app/data/roundtrip-unrepresentable.json +0 -10
- package/dist/app/lib/diya-gl-loader.js +4 -0
- package/dist/app/lib/provenance-data.js +3 -3
- package/dist/app/lib/scenario-extractor.js +6 -1
- package/dist/app/lib/spreadsheet-runner.js +380 -86
- package/dist/app/lib/xlsx-exporter.js +67 -0
- package/dist/web/spreadsheets.diyaccounting.co.uk/public/schema/diya-gl-book-v2.schema.json +544 -185
- package/package.json +1 -1
|
@@ -389,6 +389,32 @@
|
|
|
389
389
|
"scorecard": "101279 passed, 0 warnings, 0 failed"
|
|
390
390
|
}
|
|
391
391
|
}
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
"tag": "diya-gl-v1.2.6",
|
|
395
|
+
"date": "2026-09-12",
|
|
396
|
+
"formatVersion": "diya-gl/1",
|
|
397
|
+
"engineVersion": "1.2.6+8f36b1c6",
|
|
398
|
+
"taxDataHash": "84585062cad8",
|
|
399
|
+
"reconciledCommit": "1839cf9537c130410e2a180626e7729aca82ffc9",
|
|
400
|
+
"templates": {
|
|
401
|
+
"bst": {
|
|
402
|
+
"hash": "0d003e10e00c",
|
|
403
|
+
"scorecard": "812 passed, 0 warnings, 0 failed"
|
|
404
|
+
},
|
|
405
|
+
"taxi": {
|
|
406
|
+
"hash": "1ff69654d64d",
|
|
407
|
+
"scorecard": "686 passed, 0 warnings, 0 failed"
|
|
408
|
+
},
|
|
409
|
+
"se": {
|
|
410
|
+
"hash": "185e5ad6b61d",
|
|
411
|
+
"scorecard": "7692 passed, 0 warnings, 0 failed"
|
|
412
|
+
},
|
|
413
|
+
"ltd": {
|
|
414
|
+
"hash": "81ffdc956e5a",
|
|
415
|
+
"scorecard": "101537 passed, 0 warnings, 0 failed"
|
|
416
|
+
}
|
|
417
|
+
}
|
|
392
418
|
}
|
|
393
419
|
]
|
|
394
420
|
}
|
|
@@ -353,11 +353,11 @@
|
|
|
353
353
|
"section/fixed-asset-schedule/net-book-value-at-the-year-end-schedule-k1": "The report's own Fixed Asset Schedule note. Its rows are the note's arithmetic -- cost carried forward with the disposals removed, the net book value of the assets sold -- not cells, and the Schedule totals they read are already on the Fixed assets view under their own cell keys.",
|
|
354
354
|
"section/fixed-asset-schedule/net-book-value-of-the-assets-sold-at-the-date-of-sale": "The report's own Fixed Asset Schedule note. Its rows are the note's arithmetic -- cost carried forward with the disposals removed, the net book value of the assets sold -- not cells, and the Schedule totals they read are already on the Fixed assets view under their own cell keys.",
|
|
355
355
|
"section/fixed-asset-schedule/sale-proceeds-of-the-assets-sold-net-of-vat-schedule-v1": "The report's own Fixed Asset Schedule note. Its rows are the note's arithmetic -- cost carried forward with the disposals removed, the net book value of the assets sold -- not cells, and the Schedule totals they read are already on the Fixed assets view under their own cell keys.",
|
|
356
|
-
"section/journal-category-vat-netting/advertising-promotion-purchases-a/downstream": "The journal-category-vat-netting report is a reconciliation table (categoryNettingLines, products/se.js) explaining how a gross journal figure nets into a statement cell; no page view is this table.",
|
|
357
|
-
"section/journal-category-vat-netting/advertising-promotion-purchases-a/gross": "The journal-category-vat-netting report is a reconciliation table (categoryNettingLines, products/se.js) explaining how a gross journal figure nets into a statement cell; no page view is this table.",
|
|
358
|
-
"section/journal-category-vat-netting/advertising-promotion-purchases-a/net": "The journal-category-vat-netting report is a reconciliation table (categoryNettingLines, products/se.js) explaining how a gross journal figure nets into a statement cell; no page view is this table.",
|
|
359
|
-
"section/journal-category-vat-netting/advertising-promotion-purchases-a/residue": "The journal-category-vat-netting report is a reconciliation table (categoryNettingLines, products/se.js) explaining how a gross journal figure nets into a statement cell; no page view is this table.",
|
|
360
|
-
"section/journal-category-vat-netting/advertising-promotion-purchases-a/vat": "The journal-category-vat-netting report is a reconciliation table (categoryNettingLines, products/se.js) explaining how a gross journal figure nets into a statement cell; no page view is this table.",
|
|
356
|
+
"section/journal-category-vat-netting/advertising-promotion-entertainment-purchases-a/downstream": "The journal-category-vat-netting report is a reconciliation table (categoryNettingLines, products/se.js) explaining how a gross journal figure nets into a statement cell; no page view is this table.",
|
|
357
|
+
"section/journal-category-vat-netting/advertising-promotion-entertainment-purchases-a/gross": "The journal-category-vat-netting report is a reconciliation table (categoryNettingLines, products/se.js) explaining how a gross journal figure nets into a statement cell; no page view is this table.",
|
|
358
|
+
"section/journal-category-vat-netting/advertising-promotion-entertainment-purchases-a/net": "The journal-category-vat-netting report is a reconciliation table (categoryNettingLines, products/se.js) explaining how a gross journal figure nets into a statement cell; no page view is this table.",
|
|
359
|
+
"section/journal-category-vat-netting/advertising-promotion-entertainment-purchases-a/residue": "The journal-category-vat-netting report is a reconciliation table (categoryNettingLines, products/se.js) explaining how a gross journal figure nets into a statement cell; no page view is this table.",
|
|
360
|
+
"section/journal-category-vat-netting/advertising-promotion-entertainment-purchases-a/vat": "The journal-category-vat-netting report is a reconciliation table (categoryNettingLines, products/se.js) explaining how a gross journal figure nets into a statement cell; no page view is this table.",
|
|
361
361
|
"section/journal-category-vat-netting/bad-debts-written-off-sales-o/downstream": "The journal-category-vat-netting report is a reconciliation table (categoryNettingLines, products/se.js) explaining how a gross journal figure nets into a statement cell; no page view is this table.",
|
|
362
362
|
"section/journal-category-vat-netting/bad-debts-written-off-sales-o/gross": "The journal-category-vat-netting report is a reconciliation table (categoryNettingLines, products/se.js) explaining how a gross journal figure nets into a statement cell; no page view is this table.",
|
|
363
363
|
"section/journal-category-vat-netting/bad-debts-written-off-sales-o/net": "The journal-category-vat-netting report is a reconciliation table (categoryNettingLines, products/se.js) explaining how a gross journal figure nets into a statement cell; no page view is this table.",
|
|
@@ -451,5 +451,24 @@
|
|
|
451
451
|
"section/journal-category-vat-netting/travel-hotel-subsistence-purchases-h/vat": "The journal-category-vat-netting report is a reconciliation table (categoryNettingLines, products/se.js) explaining how a gross journal figure nets into a statement cell; no page view is this table.",
|
|
452
452
|
"section/self-assessment-sa103s/accounting-date": "SE Short's own accounting-date caption (Q2 and V2, echoing Admin!B4 and B17); the form header prints it, the box table does not.",
|
|
453
453
|
"section/self-assessment-sa103s/business-name": "SE Short's own business-name caption (C8); the Book details view names the business from the book itself, so no box on the SA103S view carries this row.",
|
|
454
|
-
"section/self-assessment-sa103s/turnover-note": "SE Short's turnover-note caption (A33), which changes wording at the VAT threshold; a caption, not a numbered box."
|
|
454
|
+
"section/self-assessment-sa103s/turnover-note": "SE Short's turnover-note caption (A33), which changes wording at the VAT threshold; a caption, not a numbered box.",
|
|
455
|
+
"section/journal-category-vat-netting/business-entertainment-memo-purchases-e/downstream": "The journal-category-vat-netting report is a reconciliation table (categoryNettingLines, products/se.js) explaining how a gross journal figure nets into a statement cell; no page view is this table.",
|
|
456
|
+
"section/journal-category-vat-netting/business-entertainment-memo-purchases-e/gross": "The journal-category-vat-netting report is a reconciliation table (categoryNettingLines, products/se.js) explaining how a gross journal figure nets into a statement cell; no page view is this table.",
|
|
457
|
+
"section/journal-category-vat-netting/business-entertainment-memo-purchases-e/net": "The journal-category-vat-netting report is a reconciliation table (categoryNettingLines, products/se.js) explaining how a gross journal figure nets into a statement cell; no page view is this table.",
|
|
458
|
+
"section/journal-category-vat-netting/business-entertainment-memo-purchases-e/residue": "The journal-category-vat-netting report is a reconciliation table (categoryNettingLines, products/se.js) explaining how a gross journal figure nets into a statement cell; no page view is this table.",
|
|
459
|
+
"section/journal-category-vat-netting/business-entertainment-memo-purchases-e/vat": "The journal-category-vat-netting report is a reconciliation table (categoryNettingLines, products/se.js) explaining how a gross journal figure nets into a statement cell; no page view is this table.",
|
|
460
|
+
"section/accounting-profit-to-tax-profit-bridge/add-disallowable-expenses-added-back-box-46": "The page has no profit-bridge view; the bridge from accounting profit to tax profit is not printed anywhere on the books page.",
|
|
461
|
+
"cell/Financialaccounts.xlsx!Profit & Loss Account!B49": "The Profit & Loss view renders the statement itself, B5 to B39. Row 49 sits below it as the memo the sheet keeps for disallowable entertainment, so the add-back has a figure to read; it is not a statement line and no page view prints it.",
|
|
462
|
+
"cell/Financialaccounts.xlsx!Profit & Loss Account!C49": "The Profit & Loss view renders the statement itself, B5 to B39. Row 49 sits below it as the memo the sheet keeps for disallowable entertainment, so the add-back has a figure to read; it is not a statement line and no page view prints it.",
|
|
463
|
+
"cell/Financialaccounts.xlsx!Profit & Loss Account!D49": "The Profit & Loss view renders the statement itself, B5 to B39. Row 49 sits below it as the memo the sheet keeps for disallowable entertainment, so the add-back has a figure to read; it is not a statement line and no page view prints it.",
|
|
464
|
+
"cell/Financialaccounts.xlsx!Profit & Loss Account!E49": "The Profit & Loss view renders the statement itself, B5 to B39. Row 49 sits below it as the memo the sheet keeps for disallowable entertainment, so the add-back has a figure to read; it is not a statement line and no page view prints it.",
|
|
465
|
+
"cell/Financialaccounts.xlsx!Profit & Loss Account!F49": "The Profit & Loss view renders the statement itself, B5 to B39. Row 49 sits below it as the memo the sheet keeps for disallowable entertainment, so the add-back has a figure to read; it is not a statement line and no page view prints it.",
|
|
466
|
+
"cell/Financialaccounts.xlsx!Profit & Loss Account!G49": "The Profit & Loss view renders the statement itself, B5 to B39. Row 49 sits below it as the memo the sheet keeps for disallowable entertainment, so the add-back has a figure to read; it is not a statement line and no page view prints it.",
|
|
467
|
+
"cell/Financialaccounts.xlsx!Profit & Loss Account!H49": "The Profit & Loss view renders the statement itself, B5 to B39. Row 49 sits below it as the memo the sheet keeps for disallowable entertainment, so the add-back has a figure to read; it is not a statement line and no page view prints it.",
|
|
468
|
+
"cell/Financialaccounts.xlsx!Profit & Loss Account!I49": "The Profit & Loss view renders the statement itself, B5 to B39. Row 49 sits below it as the memo the sheet keeps for disallowable entertainment, so the add-back has a figure to read; it is not a statement line and no page view prints it.",
|
|
469
|
+
"cell/Financialaccounts.xlsx!Profit & Loss Account!J49": "The Profit & Loss view renders the statement itself, B5 to B39. Row 49 sits below it as the memo the sheet keeps for disallowable entertainment, so the add-back has a figure to read; it is not a statement line and no page view prints it.",
|
|
470
|
+
"cell/Financialaccounts.xlsx!Profit & Loss Account!K49": "The Profit & Loss view renders the statement itself, B5 to B39. Row 49 sits below it as the memo the sheet keeps for disallowable entertainment, so the add-back has a figure to read; it is not a statement line and no page view prints it.",
|
|
471
|
+
"cell/Financialaccounts.xlsx!Profit & Loss Account!L49": "The Profit & Loss view renders the statement itself, B5 to B39. Row 49 sits below it as the memo the sheet keeps for disallowable entertainment, so the add-back has a figure to read; it is not a statement line and no page view prints it.",
|
|
472
|
+
"cell/Financialaccounts.xlsx!Profit & Loss Account!M49": "The Profit & Loss view renders the statement itself, B5 to B39. Row 49 sits below it as the memo the sheet keeps for disallowable entertainment, so the add-back has a figure to read; it is not a statement line and no page view prints it.",
|
|
473
|
+
"cell/Financialaccounts.xlsx!Profit & Loss Account!N49": "The Profit & Loss view renders the statement itself, B5 to B39. Row 49 sits below it as the memo the sheet keeps for disallowable entertainment, so the add-back has a figure to read; it is not a statement line and no page view prints it."
|
|
455
474
|
}
|
|
@@ -282,16 +282,6 @@
|
|
|
282
282
|
"products": ["bst", "taxi", "se"],
|
|
283
283
|
"reason": "The self-employment year files declare one writing_down_allowance rate. The special rate pool is a Company distinction their capital allowance block does not draw."
|
|
284
284
|
},
|
|
285
|
-
{
|
|
286
|
-
"path": "tax.corporationTax.associatedCompanies",
|
|
287
|
-
"products": ["ltd"],
|
|
288
|
-
"reason": "No app/data year file carries a count of associated companies: it is a fact about the group a company sits in, not a rate the generator applied."
|
|
289
|
-
},
|
|
290
|
-
{
|
|
291
|
-
"path": "tax.corporationTax.frankedInvestmentIncome",
|
|
292
|
-
"products": ["ltd"],
|
|
293
|
-
"reason": "No app/data year file carries the exempt distributions a company received: it is a figure from the company's own year, not a rate the generator applied."
|
|
294
|
-
},
|
|
295
285
|
{
|
|
296
286
|
"path": "tax.incomeTax.additionalRate",
|
|
297
287
|
"products": ["ltd"],
|
|
@@ -448,6 +448,10 @@ export function diyaGlToScenario(book, lines, product) {
|
|
|
448
448
|
scenario.stock = { opening: book.stock.openingValue, closing: book.stock.closingValue };
|
|
449
449
|
if (book.stock.materialsPercent !== undefined) scenario.stock.materials_percent = book.stock.materialsPercent;
|
|
450
450
|
}
|
|
451
|
+
// The disallowable proportions the SA103F boxes are computed from. Without
|
|
452
|
+
// them the calculator adds back only the wholly disallowable pair and
|
|
453
|
+
// charges tax on a larger profit than the package's own sheet does.
|
|
454
|
+
if (book.tax?.selfEmployment) scenario.disallowable = { ...book.tax.selfEmployment };
|
|
451
455
|
if (book.debtors) {
|
|
452
456
|
scenario.opening_debtors = ledgerListing(book.debtors, "opening", "customer");
|
|
453
457
|
scenario.closing_debtors = ledgerListing(book.debtors, "closing", "customer");
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
|
|
13
13
|
export const PROVENANCE_DATA = {
|
|
14
14
|
formatVersion: "diya-gl/1",
|
|
15
|
-
engineVersion: "1.2.
|
|
15
|
+
engineVersion: "1.2.7+2c047a2a",
|
|
16
16
|
taxDataHash: "84585062cad8",
|
|
17
|
-
reconciledCommit: "
|
|
17
|
+
reconciledCommit: "1839cf9537c130410e2a180626e7729aca82ffc9",
|
|
18
18
|
templates: {
|
|
19
19
|
bst: {
|
|
20
20
|
hash: "0d003e10e00c",
|
|
@@ -30,7 +30,7 @@ export const PROVENANCE_DATA = {
|
|
|
30
30
|
},
|
|
31
31
|
ltd: {
|
|
32
32
|
hash: "81ffdc956e5a",
|
|
33
|
-
scorecard: "
|
|
33
|
+
scorecard: "101565 passed, 0 warnings, 0 failed",
|
|
34
34
|
},
|
|
35
35
|
},
|
|
36
36
|
};
|
|
@@ -1392,7 +1392,12 @@ export function buildSubsetBook(
|
|
|
1392
1392
|
entityInformation: entity,
|
|
1393
1393
|
accounts: accountFilter(book.accounts),
|
|
1394
1394
|
tax: Object.fromEntries(
|
|
1395
|
-
|
|
1395
|
+
// A section the master book has none of still belongs to the subset when
|
|
1396
|
+
// the override carries the whole of it: the trader's own disallowable
|
|
1397
|
+
// proportions are a fact about the subset, not a rate the master states.
|
|
1398
|
+
taxSections
|
|
1399
|
+
.filter((section) => book.tax[section] || taxOverrides[section])
|
|
1400
|
+
.map((section) => [section, { ...book.tax[section], ...taxOverrides[section] }]),
|
|
1396
1401
|
),
|
|
1397
1402
|
};
|
|
1398
1403
|
if (directors) subsetBook.directors = directors;
|