private void SetDocDateByPeriods(PXCache cache, TaxAdjustment document)
        {
            if (document.TaxPeriod == null)
            {
                return;
            }

            var taxPeriod = ReportTaxProcess.FindTaxPeriodByKey(this, document.VendorID, document.TaxPeriod);

            if (taxPeriod == null)
            {
                return;
            }

            DateTime?docDate;

            if (vendor.Current.TaxReportFinPeriod == true)
            {
                var finPeriod = FinPeriodIDAttribute.FindMaxFinPeriodWithEndDataBelongToInterval(this, taxPeriod.StartDate,
                                                                                                 taxPeriod.EndDate);

                docDate = finPeriod != null
                                        ? finPeriod.FinDate
                                        : Accessinfo.BusinessDate;
            }
            else
            {
                docDate = taxPeriod.EndDateUI;
            }

            cache.SetValueExt <TaxAdjustment.docDate>(document, docDate);
        }
        private void ValidateDocDate(PXCache cache, TaxAdjustment doc)
        {
            if (doc.DocDate == null || doc.TaxPeriod == null)
            {
                return;
            }

            var taxPeriod = ReportTaxProcess.FindTaxPeriodByKey(this, doc.VendorID, doc.TaxPeriod);

            if (taxPeriod == null)
            {
                return;
            }

            string errorMessage = null;

            if (vendor.Current.TaxReportFinPeriod == true)
            {
                var finPeriod = FinPeriodIDAttribute.GetFinPeriodByID(this, doc.FinPeriodID);

                if (finPeriod.FinDate >= taxPeriod.EndDate)
                {
                    errorMessage = Messages.SelectedDateBelongsToTheTaxPeriodThatIsGreaterThanTheSpecifiedOne;
                }
            }
            else if (doc.DocDate >= taxPeriod.EndDate)
            {
                errorMessage = Messages.SelectedDateBelongsToTheTaxPeriodThatIsGreaterThanTheSpecifiedOne;
            }

            var ex = errorMessage != null
                                ? new PXSetPropertyException(errorMessage, PXErrorLevel.Warning)
                                : null;

            cache.RaiseExceptionHandling <TaxAdjustment.docDate>(doc, doc.DocDate, ex);
        }