From aa5238917e69ef0a14f4690f80c098ced219e8a9 Mon Sep 17 00:00:00 2001 From: RunasSudo Date: Tue, 27 May 2025 17:28:22 +1000 Subject: [PATCH] Fix UpdateBalancesBetween using incorrect period --- src/reporting/builders.rs | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/reporting/builders.rs b/src/reporting/builders.rs index 1f1e860..1fa5012 100644 --- a/src/reporting/builders.rs +++ b/src/reporting/builders.rs @@ -694,6 +694,29 @@ impl ReportingStep for UpdateBalancesBetween { args: parent_step.id().args, }, ); + + // Look up the BalancesBetween step + let dependencies_for_step = dependencies.dependencies_for_step(&parent_step.id()); + let balances_between_product = &dependencies_for_step[0].product; // Existence and uniqueness checked in can_build + + if *balances_between_product + .args + .downcast_ref::() + .unwrap() == self.args + { + // Directly depends on BalanceBetween -> Transaction with appropriate date + // Do not need to add extra dependencies + } else { + // Depends on BalanceBetween with appropriate date + dependencies.add_dependency( + self.id(), + ReportingProductId { + name: balances_between_product.name, + kind: ReportingProductKind::BalancesBetween, + args: Box::new(self.args.clone()), + }, + ); + } } async fn execute( @@ -733,7 +756,11 @@ impl ReportingStep for UpdateBalancesBetween { // Get opening balances let opening_balances = &products - .get_or_err(balances_between_product)? + .get_or_err(&ReportingProductId { + name: balances_between_product.name, + kind: ReportingProductKind::BalancesBetween, + args: Box::new(self.args.clone()), + })? .downcast_ref::() .unwrap() .balances;