246 lines
11 KiB
JSON
246 lines
11 KiB
JSON
{
|
|
"date": "2026-11-03T19:01:41.018Z",
|
|
"increment": "SGF-INVOICE-MATCHING-PROGRESS-QA-v1",
|
|
"passed": true,
|
|
"functional_code": true,
|
|
"checks": 47,
|
|
"tests": {
|
|
"available": {
|
|
"file": "private/invoice-progress-read-e286efd6035f/invoice-progress-read-result.json",
|
|
"sha256": "617a558ebdb78d15631fc5b482af3c609ee6c949840fbb9cd667d785eba3cc6a",
|
|
"checks": 14,
|
|
"result": {
|
|
"passed": true,
|
|
"checks": [
|
|
"authorised order exposes one matching projection per original line",
|
|
"native source order and accepted physical quantity are preserved",
|
|
"accepted unbilled1UN is available without inventing invoice or reservation",
|
|
"procurement and warehouse cannot read economic matching projection",
|
|
"foreign or unknown order remains outside authorised origin",
|
|
"unmapped unit cannot reuse matching projection",
|
|
"obsolete context header cannot read matching projection",
|
|
"single observed state yields same original source revision before UI capability decoration",
|
|
"disabled projection preserves original revision and invoice display",
|
|
"pending70 does not reserve or consume remaining60 after validated40",
|
|
"remaining quantity cannot exceed frozen order even with extra accepted input",
|
|
"existing return and reversal facts reduce accepted matching capacity",
|
|
"read deficit is explicit and remaining quantity is not negative",
|
|
"all reused source tables and sequences unchanged by read projection"
|
|
],
|
|
"variant": "available",
|
|
"order_id": 1,
|
|
"quantities": {
|
|
"line_id": 1,
|
|
"description": "Material recepcao QA",
|
|
"unit": "UN",
|
|
"ordered_milli": 1000,
|
|
"accepted_milli": 1000,
|
|
"returned_milli": 0,
|
|
"reversed_milli": 0,
|
|
"accepted_net_milli": 1000,
|
|
"validated_milli": 0,
|
|
"pending_milli": 0,
|
|
"remaining_milli": 1000,
|
|
"deficit_milli": 0
|
|
},
|
|
"financial_commands_repeated": 0,
|
|
"before_sha256": "a1e492f62b0dabc990a39c512bbff1be3a235c52b1301eeef81ef15d2979a1d7",
|
|
"after_sha256": "a1e492f62b0dabc990a39c512bbff1be3a235c52b1301eeef81ef15d2979a1d7",
|
|
"tables_checked": 142,
|
|
"new_right_names": [],
|
|
"visual_review": false,
|
|
"deployment_capacity_validated": false
|
|
}
|
|
},
|
|
"partial": {
|
|
"file": "private/invoice-progress-read-34534a38acd7/invoice-progress-read-result.json",
|
|
"sha256": "c8a53a904bd88f0e081f8955f3d3591566f33dbc43b043c5b1d0b81340ffcc72",
|
|
"checks": 16,
|
|
"result": {
|
|
"passed": true,
|
|
"checks": [
|
|
"authorised order exposes one matching projection per original line",
|
|
"native source order and accepted physical quantity are preserved",
|
|
"validated40+60 exhaust1UN while incompatible pending70 remains separately visible",
|
|
"original pending document is neither hidden rewritten nor deducted as a reservation",
|
|
"read discrepancy does not replace original independent-review permission decision",
|
|
"procurement and warehouse cannot read economic matching projection",
|
|
"foreign or unknown order remains outside authorised origin",
|
|
"unmapped unit cannot reuse matching projection",
|
|
"obsolete context header cannot read matching projection",
|
|
"single observed state yields same original source revision before UI capability decoration",
|
|
"disabled projection preserves original revision and invoice display",
|
|
"pending70 does not reserve or consume remaining60 after validated40",
|
|
"remaining quantity cannot exceed frozen order even with extra accepted input",
|
|
"existing return and reversal facts reduce accepted matching capacity",
|
|
"read deficit is explicit and remaining quantity is not negative",
|
|
"all reused source tables and sequences unchanged by read projection"
|
|
],
|
|
"variant": "partial",
|
|
"order_id": 2,
|
|
"quantities": {
|
|
"line_id": 2,
|
|
"description": "Material QA MAIN",
|
|
"unit": "UN",
|
|
"ordered_milli": 1000,
|
|
"accepted_milli": 1000,
|
|
"returned_milli": 0,
|
|
"reversed_milli": 0,
|
|
"accepted_net_milli": 1000,
|
|
"validated_milli": 1000,
|
|
"pending_milli": 700,
|
|
"remaining_milli": 0,
|
|
"deficit_milli": 0
|
|
},
|
|
"financial_commands_repeated": 0,
|
|
"before_sha256": "507ce4a1388db703972b546aa74bbe563ad3e7e484546f5296f71d513471abc9",
|
|
"after_sha256": "507ce4a1388db703972b546aa74bbe563ad3e7e484546f5296f71d513471abc9",
|
|
"tables_checked": 127,
|
|
"new_right_names": [],
|
|
"visual_review": false,
|
|
"deployment_capacity_validated": false
|
|
}
|
|
},
|
|
"ui": {
|
|
"file": "private/invoice-progress-read-34534a38acd7/invoice-progress-ui.json",
|
|
"sha256": "03a349940a85b771617fefcd0f63bce4a6473b111d7cef56d11788cc6e9ffa5b",
|
|
"checks": 11,
|
|
"result": {
|
|
"passed": true,
|
|
"checks": [
|
|
"milli quantities render exact three decimals without floating rounding",
|
|
"unsafe or fractional milli quantities are refused in display",
|
|
"pending overlap warning compares original quantity with actual remaining quantity",
|
|
"validated invoice is not warned as a new pending claim",
|
|
"other pending documents do not reserve remaining quantity in UI",
|
|
"quantity deficit remains explicit without negative available value",
|
|
"real invoice module wires matching capacity next to explicit line choice",
|
|
"real invoice module shows overlap note without changing document state",
|
|
"remaining capacity does not prefill or choose invoice quantity",
|
|
"opening matching projection never registers validates or recognises a document",
|
|
"late invoice history response cannot overwrite latest requested page"
|
|
],
|
|
"dom_simulation": true,
|
|
"business_commands": 0,
|
|
"visual_review": false
|
|
}
|
|
},
|
|
"demo": {
|
|
"file": "private/receipt-composition-9ec0a8e493ea/invoice-progress-demo.json",
|
|
"sha256": "9171093f9b0b7815af155989f43331074018373f55d773443d9299009938197f",
|
|
"checks": 6,
|
|
"result": {
|
|
"passed": true,
|
|
"checks": [
|
|
"new demo contains no main requests or invoices",
|
|
"native-authorised finance workspace remains available",
|
|
"empty invoice workspace invents no matching source",
|
|
"served matching module matches supplier-invoice-workspace.mjs",
|
|
"served matching module matches invoice-matching.mjs",
|
|
"demo probes preserve request invoice audit and permission data"
|
|
],
|
|
"before": "253435d4c1d4231b4334eb3f66e200f15c93b7e85d0c61e74b882e552adae94c",
|
|
"after": "253435d4c1d4231b4334eb3f66e200f15c93b7e85d0c61e74b882e552adae94c",
|
|
"visual_review": false
|
|
}
|
|
}
|
|
},
|
|
"sources": [
|
|
{
|
|
"file": "app/Modules/Purchasing/InvoiceMatchingProgress.php",
|
|
"sha256": "111f279dae49475d2959327155fd6b8d12ba75c42b3a20d6f18ddc3004505c8e"
|
|
},
|
|
{
|
|
"file": "app/Modules/Purchasing/InvoiceController.php",
|
|
"sha256": "85eb46ca7e65c60bed190e592a134eb48db5762c0a90b8cd4c9d6fbd81198ba4"
|
|
},
|
|
{
|
|
"file": "config/receipt_qa.php",
|
|
"sha256": "37bbd9055f1fd289e69e7ab328b8be2b2f1d0a553678301788d4d8181464fbcc"
|
|
},
|
|
{
|
|
"file": "public/invoice-matching.mjs",
|
|
"sha256": "e575a82b6c8b5cf531cff0a4d9dfe6e05234e73573bd025811c4bdf85baaed7c"
|
|
},
|
|
{
|
|
"file": "public/supplier-invoice-workspace.mjs",
|
|
"sha256": "a05b4f56151b8bc9735a0ba2ce47b475e22623aabb8be99a98290860efd6ae9e"
|
|
}
|
|
],
|
|
"pinned_native_manifests": {
|
|
"bundle": "7709a3d447d54c17d2fb4be4f9a0f70455c4a38c34e4bb8c643f6b5169071556",
|
|
"economic": "8b2d3aa61054e0edc54fcd818467eb2bacb5e1178f903b12ab44119e0f2e8d2e",
|
|
"internal": "2343af71f72259dd705f4cc3a3b163c90edf331a5b6ebe173531aeb341649e1b"
|
|
},
|
|
"authority": {
|
|
"new_right_names": [],
|
|
"new_writers": 0,
|
|
"native_validation_unchanged": true,
|
|
"state_definition_and_preview_confirmation_unchanged": true,
|
|
"source_revision_equivalent": true,
|
|
"pending_quantities_reserved": false,
|
|
"automatic_quantity_selection": false,
|
|
"original_pending_document_preserved": true
|
|
},
|
|
"read_projection": {
|
|
"two_aggregate_queries_for_quantity_facts": true,
|
|
"physical_corrections_reused_from_original_state": true,
|
|
"display_state_observed_once": true,
|
|
"full_dependency_revision_still_materialises_source_state": true,
|
|
"invoice_history_latest_response_wins": true
|
|
},
|
|
"regression": {
|
|
"completed_books_reused": true,
|
|
"financial_commands_repeated": 0,
|
|
"available_milli": 1000,
|
|
"after_validated40_60_remaining_milli": 0,
|
|
"pending70_milli": 700,
|
|
"all_source_tables_and_sequences_unchanged": true
|
|
},
|
|
"demo": {
|
|
"port": 8081,
|
|
"entry": "http://127.0.0.1:8081/qa/enter/issuer?open=1",
|
|
"initial_main_requests": 0,
|
|
"initial_invoices": 0
|
|
},
|
|
"prior_proofs_preserved": [
|
|
{
|
|
"file": "docs/proofs/request-history-composition-20261103.json",
|
|
"sha256": "564e0fdbc6a7a1142e72dbf835a96dadf0363d3dc963fc4cdc0a40bd05b8c26e"
|
|
},
|
|
{
|
|
"file": "docs/proofs/supplier-invoice-composition-20261103.json",
|
|
"sha256": "70faa647b0dac43f6d1b0111124b5451851dfd730148b10864e7f432914eecec"
|
|
},
|
|
{
|
|
"file": "docs/proofs/purchasing-continuity-composition-20261103.json",
|
|
"sha256": "6135df7c6dca784297b3a5f70a571585dc6d6a0d401a491c1d17ab91b780ce35"
|
|
},
|
|
{
|
|
"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,
|
|
"public_rights_changed": false,
|
|
"publication": false,
|
|
"checkpoint": false
|
|
},
|
|
"limitations": [
|
|
"The quantity projection is read-only. A review permission or warning is not a promise that native validation will succeed.",
|
|
"Pending document quantities are shown separately and do not reserve matching capacity. No rejection correction or credit note is introduced.",
|
|
"The full order dependency state remains materialised for its original revision. Removing a duplicate observation is not a load benchmark or complete pagination/memory optimisation.",
|
|
"Source books contain one order line and existing invoice cases. Larger order histories, query/time/memory benchmarks and indexes are not validated by this trial.",
|
|
"Return/reversal boundary arithmetic is checked without repeating physical correction commands; complete physical correction suites remain their own proof.",
|
|
"DOM tests are not browser rendering visual or accessibility review. The React/Vite build is unchanged; served static module hashes and syntax are checked.",
|
|
"Operational policy, deployment compatibility, sustained load and capacity remain pending."
|
|
],
|
|
"visual_review_pending": true,
|
|
"deployment_capacity_validated": false
|
|
}
|