public virtual IEnumerable ReverseAdjustment(PXAdapter adapter)
        {
            TaxAdjustment taxAdjToReverse = Document.Current;

            if (taxAdjToReverse?.Released != true || !AskUserApprovalIfReversingDocumentAlreadyExists(taxAdjToReverse))
            {
                return(adapter.Get());
            }

            Save.Press();

            try
            {
                IsReversingInProgress = true;
                Clear(PXClearOption.PreserveTimeStamp);

                var           reverseAdjustmentWithCuryInfo = CreateReversingTaxAdjustmentWithCuryInfo(taxAdjToReverse);
                TaxAdjustment reverseAdjustment             = Document.Insert(reverseAdjustmentWithCuryInfo.Item1);

                UpdateCurrencyInfoForReversedTaxAdjustment(reverseAdjustmentWithCuryInfo.Item2);
                AddReversedTaxTransactionsToReversedTaxAdjustment(taxAdjToReverse, reverseAdjustment);

                Document.Cache.RaiseExceptionHandling <TaxAdjustment.finPeriodID>(Document.Current, Document.Current.FinPeriodID, null);
                PXTrace.WriteVerbose("Reverse Tax Adjustment for Tax Adjustment \"{0}\" was created", taxAdjToReverse.RefNbr);
                return(new List <TaxAdjustment> {
                    Document.Current
                });
            }
            catch (PXException e)
            {
                PXTrace.WriteError(e);
                Clear(PXClearOption.PreserveTimeStamp);
                Document.Current = taxAdjToReverse;
                throw;
            }
            finally
            {
                IsReversingInProgress = false;
            }
        }