exchangealgebra-0.6.0.0: test/compat-clients/MixedPath.hs
module MixedPath where
import qualified OldPath as Old
import qualified ExchangeAlgebra.Simulate.Network as OldNetwork
import qualified ExchangeAlgebra.Simulation.Network as Network
import qualified ExchangeAlgebra.Simulate as OldSimulate
import qualified ExchangeAlgebra.Simulation.Analysis as Analysis
import qualified ExchangeAlgebra.Optimize as OldOptimize
import qualified ExchangeAlgebra.Simulation.Optimize as Optimize
import qualified ExchangeAlgebra.Render.Simulation as OldSimulationOutput
import qualified ExchangeAlgebra.Simulation.Output as SimulationOutput
import ExchangeAlgebra.Algebra.Base (HatBase)
import ExchangeAlgebra.Accounting.Account (AccountTitles(Cash))
import qualified ExchangeAlgebra.Accounting.Account as Account
import qualified ExchangeAlgebra.Accounting.Exchange as Exchange
import qualified ExchangeAlgebra.Algebra.Element as Element
import qualified ExchangeAlgebra.Algebra.Value as Value
import qualified ExchangeAlgebra.Algebra.Core as Core
import qualified ExchangeAlgebra.Algebra.Posting as Posting
import qualified ExchangeAlgebra.Algebra.Transfer.Rule as Rule
import qualified ExchangeAlgebra.Accounting.Closing as Closing
import qualified ExchangeAlgebra.Journal.Core as JournalCore
import qualified ExchangeAlgebra.Value as OldValue
import qualified ExchangeAlgebra.TrialBalance.Balance as OldTrialBalance
import qualified ExchangeAlgebra.Consolidation.Worksheet as OldConsolidation
import qualified ExchangeAlgebra.Accounting.TrialBalance as TrialBalance
import qualified ExchangeAlgebra.Accounting.Consolidation as Consolidation
import qualified ExchangeAlgebra.Accounting.Statements as Statements
import qualified ExchangeAlgebra.IO.Input as Input
import qualified ExchangeAlgebra.IO.Output.Statements as OutputStatements
import qualified ExchangeAlgebra.IO.Input.Admission as Admission
import qualified ExchangeAlgebra.Accounting.Transaction as Transaction
mixedPathPlaceholder :: Bool
mixedPathPlaceholder = Old.oldConstructor Old.oldExpression
mixedCore :: Double
mixedCore = Core.norm Old.oldExpression
mixedExchange :: Bool
mixedExchange = Exchange.balance Old.oldExpression
mixedJournal :: JournalCore.Journal String Double (HatBase Account.AccountTitles)
mixedJournal = Old.journalClient
mixedJournalExchange :: Bool
mixedJournalExchange = Exchange.balance mixedJournal
mixedPosting :: Either Posting.PostedError Double
mixedPosting = Posting.unPosted <$> Old.postingClient
mixedAccount :: Account.AccountDivision
mixedAccount = Account.classifyAccountDivision Cash
mixedElement :: Bool
mixedElement = Element.matchesQuery Cash Cash
mixedValue :: Value.MoneyDecimal -> Value.MoneyDecimal
mixedValue = id
mixedOldValue :: OldValue.MoneyDecimal -> Value.MoneyDecimal
mixedOldValue = id
-- | Apply the new closing entry point to an algebra built through the old path.
mixedClosing :: Either (Rule.TransferApplyError Double (HatBase Account.AccountTitles))
(Core.Alg Double (HatBase Account.AccountTitles))
mixedClosing = Closing.closingEntries Old.oldExpression
-- | Pass a balance made through the old path to the new account readout.
mixedTrialBalance :: TrialBalance.AccountBalance Double
mixedTrialBalance = TrialBalance.combineBalances oldBalance oldBalance
where
oldBalance = OldTrialBalance.balanceFor Cash
(OldTrialBalance.accountBalances Old.oldExpression)
mixedStatements :: Maybe Statements.DerivedMetric
mixedStatements = Statements.metricForLegacyTitle Cash
mixedConsolidation
:: OldConsolidation.WorksheetInput String String Double
-> Consolidation.WorksheetInput String String Double
mixedConsolidation = id
mixedInput :: Core.Alg Double (HatBase Account.AccountTitles)
mixedInput = Input.postingFromSide Account.Debit Cash 1
mixedOutput = OutputStatements.accountLedgerRowsJournal [Cash] Old.journalClient
mixedNetwork :: [Int]
mixedNetwork = Network.nodes (OldNetwork.completeNetwork [1, 2])
mixedAnalysis matrix = do
inverse <- OldSimulate.leontiefInverse matrix
Analysis.rippleEffect 1 inverse
mixedOptimize :: OldOptimize.Direction -> Optimize.Direction
mixedOptimize = id
mixedSimulationOutput :: OldSimulationOutput.Header -> SimulationOutput.Header
mixedSimulationOutput = id
-- | Feed an identifier from the retained admission entry point to its new owner.
mixedTransaction :: Bool
mixedTransaction = Transaction.isBlankKey
(Admission.TxKey (Admission.EntityId mempty)
(Admission.PeriodId mempty) (Admission.TxId mempty))
-- | Observe a journal through admission while old and new paths coexist.
mixedEquivalence :: Admission.Admitted String (HatBase Account.AccountTitles) -> Bool
mixedEquivalence accepted = JournalCore.toMap (Admission.admittedJournal accepted)
== JournalCore.toMap (Admission.admittedJournal accepted)