Files
SGF/docs/proofs/supplier-invoice-composition-20261103.json
2026-11-04 09:37:20 +02:00

362 lines
16 KiB
JSON

{
"date": "2026-11-03T12:43:53.674Z",
"increment": "SGF-SUPPLIER-INVOICE-MATCHING-QA-v1",
"passed": true,
"functional_code": true,
"checks": 77,
"tests": {
"integration": {
"file": "private/receipt-composition-da77bb730751/invoice-result.json",
"sha256": "cecb1bec6cdb15a49fd651109a9b79286278d62fb31e37055e1fc87f0e22135c",
"checks": 45,
"result": {
"passed": true,
"checks": [
"main fixture begins before order receipt or invoice",
"finance sees no invented source order",
"procurement and warehouse cannot inspect invoice economics",
"actual foreign-tenant order is inaccessible",
"source adjudication issues an actual SGF order",
"issued order reaches invoice workspace without source rebinding",
"supplier invoice workspace served",
"no invoice is registered before accepted receipt",
"warehouse accepts actual order once through original writer",
"document total mismatch is refused",
"foreign source line cannot be substituted",
"price divergence from frozen order is refused",
"quantity beyond accepted source is refused",
"original registration preview normalises document and consumes no budget",
"invoice preview persists no invoice audit budget entry or consumption",
"tampered invoice preview refused",
"failure recording SGF origin aborts registration",
"invoice lines and native audit roll back with failed command receipt",
"independent sessions recover same registered invoice once",
"pending invoice is unique and consumes no commitment",
"same operation key with another number refused",
"normalised supplier document number cannot be registered twice",
"preparer with validation right cannot approve own invoice",
"another pending documentary invoice is retained without consuming budget",
"new invoice after preview requires renewed review",
"overlapping pending invoice has original matching before other validation",
"validation impact shows original40MZN commitment consumption",
"failed validation receipt rolls back status native audit and consumption",
"validation permission is rechecked after preview",
"distinct eligible reviewers commit once and refuse stale concurrent decision",
"one original40MZN consumption is recorded",
"validated command replay does not consume twice",
"validation of another invoice invalidates old matching preview",
"overlapping document remains pending when cumulative accepted quantity is exceeded",
"remaining0.6UN is registered with the original cumulative matching",
"distinct finance validates remaining60MZN",
"two partial invoices consume exactly100MZN in the same budget",
"single order commitment is consumed without another reservation or commitment",
"original documents and incompatible pending document are preserved",
"invoice registration and matching create no additional physical movement",
"invoice history contains only invoice events with server pagination",
"unmapped unit cannot reuse an invoice source",
"fully invoiced receipt cannot be invoiced again",
"matching does not recognise a payable automatically",
"matching creates no payment"
],
"registration_statuses": [
200,
201
],
"validation_statuses": [
201,
409
],
"validated_invoices": 2,
"pending_invoices": 1,
"consumed_minor": 10000,
"receipt_movements_unchanged": true,
"physical_fingerprint": "8fc992e83559200f691b253fd72e22986a972eb58f77b50bdf32d4d18d5f5dd4",
"payable_table_present": true,
"payable_auto_recognised": false,
"payment_created": false,
"visual_review": false,
"deployment_capacity_validated": false
}
},
"boundaries": {
"file": "private/receipt-composition-da77bb730751/invoice-boundaries.json",
"sha256": "3b018bacff8ccc00a94d022bb17ca0af8c46ecf4672f7b34bbe635c114726797",
"checks": 4,
"result": {
"passed": true,
"checks": [
"new session context generation invalidates invoice preview",
"supplier source version change requires new matching preview",
"changed source binding invalidates invoice preview",
"boundary probes persist no revalidation audit consumption or invoice change"
],
"before": "b8c13494b744356af9bdcac3f28f4847ea87b54a6e4bfbe51a0fdf50151c2c5d",
"after": "b8c13494b744356af9bdcac3f28f4847ea87b54a6e4bfbe51a0fdf50151c2c5d",
"valid45_checks_not_repeated": true,
"probe": "rollback-only original idempotent validation preview and rejected confirmations"
}
},
"guards": {
"file": "private/receipt-composition-da77bb730751/invoice-guards.json",
"sha256": "bb1140c8bd0f0b2f0240679590e738438483160a5b8f96c0d435f878f6f2db8b",
"checks": 6,
"result": {
"passed": true,
"checks": [
"disabled invoice runtime refuses before SQL",
"disabled invoice preview refuses before validation and SQL",
"production refuses synthetic invoice workflow",
"invoice route remains in purchasing: purchasing/invoices",
"invoice route remains in purchasing: api/purchasing-invoices",
"invoice route remains in purchasing: api/purchasing-invoices/orders/1/confirm"
],
"database_queries": 0
}
},
"demonstration": {
"file": "private/receipt-composition-197109b57c62/invoice-demo-smoke.json",
"sha256": "4558766316b1cdeaf5201e6ab8f10a374ba1bf71a1ad2f0b92a15a3ab7e956ee",
"checks": 13,
"result": {
"passed": true,
"checks": [
"main demo starts before order receipt invoice or consumption",
"invoice access and empty order list match issuer",
"invoice workspace is live",
"session exposes explicit invoice composition capability",
"foreign order stays hidden in live demo",
"invoice access and empty order list match reviewer",
"invoice access and empty order list match auditor",
"invoice access and empty order list match actor",
"buyer starts with one approved award and no issued main order",
"invoice access and empty order list match validator",
"warehouse waits for actual main order",
"served invoice script matches delivery",
"demo smoke leaves business and budget evidence unchanged"
],
"before": "0c56650460998a89f46afde359b06556171a8561940b33397837cdbc42df50ee",
"after": "0c56650460998a89f46afde359b06556171a8561940b33397837cdbc42df50ee",
"main_orders": 0,
"invoices": 0,
"consumptions": 0,
"visual_review": false
}
},
"assets": {
"file": "private/receipt-composition-197109b57c62/invoice-demo-assets.json",
"sha256": "d8aba4e3083b80d903fb39144035f2b3942dda324d01328a5728da60832e401f",
"checks": 3,
"result": {
"passed": true,
"checks": [
"private frontend build succeeds",
"served built assets match private build",
"invoice module is served through private static whitelist"
],
"assets": [
"assets/app-KvXs64E7.js",
"assets/app-BLSNCrO7.css"
],
"visual_review": false
}
},
"navigation": {
"file": "docs/proofs/invoice-home-20261103.json",
"sha256": "b0a904a2dee08e6b97ea428d880c8899e79b9c6d5f414475ca17907d777df8aa",
"checks": 6,
"result": {
"passed": true,
"checks": 6,
"names": [
"invoice view and capability expose link",
"missing right hides link",
"another unit right cannot expose link",
"disabled composition hides link",
"unit selection required",
"existing order and receipt navigation remains available"
],
"source": "resources/js/PurchasingHome.jsx",
"sha256": "f34bf1060bf987bd1b22e999e6ca05d76a3004607b8f670f580de37ddd847bd0",
"visual_review": false
}
}
},
"sources": [
{
"file": "app/Modules/Purchasing/InvoiceController.php",
"sha256": "0d729bd0485cc6a3222a445c00149a2b1511b90f5652c9985e63b38b767804aa"
},
{
"file": "app/Modules/Purchasing/ReceiptRuntime.php",
"sha256": "980e5d67b5c1ac74fa958ca54af8151f58364ba97f20bb680af2dd20cc7116fe"
},
{
"file": "config/receipt_qa.php",
"sha256": "dbca506ec4f99390d85d861c89faa0b4584d1661fef49b859741ad51b8b09e3a"
},
{
"file": "routes/web.php",
"sha256": "64db854bc3188672f059a16a44dd64f0ccd24f04c939ad335b542a34ee500df0"
},
{
"file": "app/Shared/Context/ModuleNavigation.php",
"sha256": "518b7c8e70114e7438073f2d3a80f2173c8e5dfad3c5de45db3d4f8fc5b847a7"
},
{
"file": "app/Modules/Identity/Services/IdentityWorkflow.php",
"sha256": "4ca66687bde3d9683186d32668e5b8c5336a735f9ed34edefdb79f0d3a381443"
},
{
"file": "resources/js/PurchasingHome.jsx",
"sha256": "f34bf1060bf987bd1b22e999e6ca05d76a3004607b8f670f580de37ddd847bd0"
},
{
"file": "resources/views/supplier-invoice-workspace.blade.php",
"sha256": "c1c284a45836731d07a00b8023d423853bf94fa6bd7ded1f13ee7de1ab57bb53"
},
{
"file": "public/supplier-invoice-workspace.mjs",
"sha256": "68671400153a97387f77ad0cddbc0f7f6367caeaebef8fc219d84fc8cf118eb3"
},
{
"file": "scripts/order-native-setup.php",
"sha256": "0700db002a37a52423d095adb7cf322ef6f55aee23bed592fcd12b71977e0e15"
},
{
"file": "scripts/invoice-native-negative.php",
"sha256": "4db198b0bd3f4e087823f44c5db438dd6b32877c2f8d3b4a67fbaaa72e2f83b9"
},
{
"file": "scripts/invoice-host-setup.php",
"sha256": "1b2a20044b82bc8e9841ad7e9777996a467e531b9d6813d8bf31dc6b5be86be3"
},
{
"file": "scripts/invoice-composition-proof.php",
"sha256": "239ef481fec70454d6a715d7a1b143a5f7b1674ce11ba1401ff326f43817c039"
},
{
"file": "scripts/invoice-proof-body.php",
"sha256": "6783b24ab6c4a50bea5ddb9ce3ed1f006a0f8a7f6f325442e3f2ed70f2e65c8f"
},
{
"file": "scripts/invoice-boundary-proof.php",
"sha256": "396f2fe73e458a73f5d6d5c46f1c002a6a927fc437cf74b32fd2bda45f0bc593"
},
{
"file": "scripts/invoice-boundary-body.php",
"sha256": "99de5e1ac2a520f4886e469a95afa0b53ed2caf504a14aa151e7e38117ee4e2d"
},
{
"file": "scripts/invoice-guard-proof.php",
"sha256": "257bbd70e73f7bf930a48af74eb97aa9fc191ed093abca2b00b0565559d9fb44"
},
{
"file": "scripts/invoice-demo-smoke.php",
"sha256": "dc71195cf0ba3d0392862a3f2556b94595814197d0dbda0b6b1d427cf22f2399"
},
{
"file": "scripts/invoice-demo-assets.mjs",
"sha256": "b0912dd788f5c236056d6023b5c28aca2ec17c8d1232103ce62215927de0bfbb"
},
{
"file": "scripts/receipt-composition-run.mjs",
"sha256": "b5f8b7b5abde64995fa9f689e5f51d99faf2221cc81fc5044221d0ff66cac396"
},
{
"file": "scripts/receipt-composition-http.php",
"sha256": "d99f782d70e7d5be9bf86c86a2902f2efbb3daa529bb3d8ac3cce0eeb76b2422"
},
{
"file": "scripts/receipt-composition-extra.mjs",
"sha256": "9da4aed2f4b4d7963692034ebb224cd8abd9968c61c2ddc549f15743d8928db1"
},
{
"file": "scripts/stock-ledger-entry.php",
"sha256": "3841d3be7c941b8ceb978a2bd7656a463dc68cabd64bee50b4e2d7f4e2599124"
}
],
"pinned_native_manifests": {
"bundle": "7709a3d447d54c17d2fb4be4f9a0f70455c4a38c34e4bb8c643f6b5169071556",
"economic": "8b2d3aa61054e0edc54fcd818467eb2bacb5e1178f903b12ab44119e0f2e8d2e",
"internal": "2343af71f72259dd705f4cc3a3b163c90edf331a5b6ebe173531aeb341649e1b"
},
"original_source_hashes": {
"app/Services/InvoiceWorkflow.php": "f1e8530315e33d3c8eb23752699b3bbcba0af5248af478e861f3b3e75a462c11",
"app/Http/Controllers/InvoiceController.php": "2bcb3ed8a2e1d8e69831650bf3e228133ee105094784b3fd1f3e1fc825d96aa3",
"app/Services/CommonBudget.php": "185b1e5d6e4c572dc1d033ea8ed2e00fec96448c8ad0e470f51c0bf2b7c97296"
},
"financial_effects": {
"single_order_commitment_minor": 10000,
"validated_invoice_minor": [
4000,
6000
],
"original_budget_consumptions": 2,
"total_consumed_minor": 10000,
"additional_physical_movements": 0,
"payable_auto_recognised": false,
"payments_created": 0,
"ledger_posted": false
},
"qa_rights": [
"purchasing_invoices.view",
"purchasing_invoices.prepare",
"purchasing_invoices.validate"
],
"demo": {
"buyer_url": "http://127.0.0.1:8070/qa/enter/actor?open=1",
"warehouse_url": "http://127.0.0.1:8070/qa/enter/validator?open=1",
"preparer_url": "http://127.0.0.1:8070/qa/enter/issuer?open=1",
"reviewer_url": "http://127.0.0.1:8070/qa/enter/reviewer?open=1",
"second_reviewer_url": "http://127.0.0.1:8070/qa/enter/auditor?open=1",
"initial_main_orders": 0,
"initial_main_receipts": 0,
"initial_invoices": 0,
"initial_consumptions": 0,
"approved_award_prepared": true,
"foreign_order_is_negative_fixture": true
},
"prior_proofs_preserved": [
{
"file": "docs/proofs/geography-composition-20261103.json",
"sha256": "2f181320e2cc01095266d64f660b1e28697cb1e44529b89357fbfb21ab436a9e"
},
{
"file": "docs/proofs/request-to-receipt-composition-20261103.json",
"sha256": "1713f42e3352ef13718a7394260b97c0c5ada40a9a3bbc87ab852313f6ab32ce"
},
{
"file": "docs/proofs/order-composition-20261103.json",
"sha256": "3334bf6f45ca629f1c1a0ea907f7b0804f0e90752d1ade0e9fb07599b4d310e3"
},
{
"file": "docs/proofs/module-association-consolidation-summary-20261102.json",
"sha256": "8f693f39763ee21a22ebd3929d95ba1480f339eca18742fa53055c69eb5219ef"
}
],
"preservation": {
"installed_purchasing_sha256": "81899e531e9eec449717e694d8bdc106a9e220a828f5491ce918c1d2dc612787",
"target_database_connected": false,
"protected_six_records_changed": false,
"blocked_cache_cleared": false,
"previous_demo_data_written": false,
"concurrent_compras_sources_written": false,
"public_rights_changed": false,
"purchasing_activated_at_destination": false,
"publication": false,
"checkpoint": false
},
"limitations": [
"Technical supplier-document matching only, using the original frozen workflow. No fiscal issuance or statement of real documentary validity.",
"Budget consumption is the original authorised native effect. Payable recognition, payment and ledger remain separate; the earlier common-payable11,600MZN proof is not declared joined to these100MZN invoices.",
"The incompatible pending70MZN document is preserved; invoice correction/rejection/credit notes and binary document attachments are outside this increment.",
"Date/currency/tolerance rules are those of the pinned native workflow, including current-year MZN and exact matching.",
"Order list pages25 and invoice-history pages15; show/revision materialises the invoices and dependencies of the selected order. Very large per-order invoice histories are not load-validated.",
"The boundary probes use rollback-only previews of original idempotent validation and rejected confirmations; they repeat no posted decision.",
"Native/economic bundles and common writer source pins are recorded; current concurrent Compras changes and existing demos were not upgraded.",
"Visual review, sustained load, general destination installation and owner/runtime privilege separation remain pending."
],
"visual_review_pending": true,
"deployment_capacity_validated": false
}