admin
2025-01-22 7e31442f0e9b07764e9c6a9680d3d4aeba5fe1de
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Quintiq file version 2.0
#parent: #root
Method Rollback (
  const RealVector kpi_pre,
  const RealVector kpi_post,
  LibOpt_Task task
)
{
  Description:
  [*
    Rollback the current transaction.
    
    This is done by throwing an error that is not logged in the server log by default.
    A config utility setting `libopt.logoptimizerrollbackaserror` when set to `true` will log rollbacks as an error.
  *]
  TextBody:
  [*
    diff_index := LibOpt_RollbackKPI::GetDiffIndex( kpi_post, kpi_pre );
    
    message := '';
    if( diff_index = -1 )
    {
      message := Translations::LibOpt_Rollback();
    }
    else
    {
      message := Translations::LibOpt_Suboptimizer_Rollback( diff_index,
                                                             kpi_pre.Get( diff_index ),
                                                             kpi_post.Get( diff_index ),
                                                             this.RollbackKPI().IsMinimize( diff_index ) );
    }
    
    err := construct( LibOpt_Error );
    err.Code( Transaction::RollbackErrorNr() );
    err.GeneralInformation( message );
    err.DeveloperInformation( Quill::CallStack() );
    task.RollbackCurrentTransaction( message, err, LibOpt_ConfigurationSettings::GetSetting_LogOptimizerRollbacksAsError() );
  *]
}