protected virtual void ARStatementDetailsParameters_StatementCycleId_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)
        {
            ARStatementDetailsParameters row = (ARStatementDetailsParameters)e.Row;

            if (!string.IsNullOrEmpty(row.StatementCycleId))
            {
                ARStatementCycle cycle = PXSelect <ARStatementCycle,
                                                   Where <ARStatementCycle.statementCycleId,
                                                          Equal <Required <ARStatementCycle.statementCycleId> > > > .Select(this, row.StatementCycleId);

                row.StatementDate = cycle.LastStmtDate;
            }
        }
        protected virtual IEnumerable details()
        {
            ARStatementDetailsParameters header = Filter.Current;
            List <DetailsResult>         result = new List <DetailsResult>();

            if (header == null)
            {
                return(result);
            }
            GL.Company company = PXSelect <GL.Company> .Select(this);

            foreach (PXResult <ARStatement, Customer> it in PXSelectJoin <ARStatement,
                                                                          InnerJoin <Customer, On <Customer.bAccountID, Equal <ARStatement.statementCustomerID> > >,
                                                                          Where <ARStatement.statementDate, Equal <Required <ARStatement.statementDate> >,
                                                                                 And <ARStatement.statementCycleId, Equal <Required <ARStatement.statementCycleId> > > >,
                                                                          OrderBy <Asc <ARStatement.statementCustomerID, Asc <ARStatement.curyID> > > >
                     .Select(this, header.StatementDate, header.StatementCycleId))
            {
                DetailsResult res  = new DetailsResult();
                ARStatement   st   = (ARStatement)it;
                Customer      cust = (Customer)it;
                res.Copy(st, cust);
                if (cust.PrintCuryStatements ?? false)
                {
                    DetailsResult last = result.Count > 0 ? result[result.Count - 1] : null;
                    if (last != null && last.CustomerId == res.CustomerId && last.CuryID == res.CuryID)
                    {
                        last.Append(res);
                    }
                    else
                    {
                        result.Add(res);
                    }
                }
                else
                {
                    res.ResetToBaseCury(company.BaseCuryID);
                    DetailsResult last = result.Count > 0 ? result[result.Count - 1] : null;
                    if (last != null && last.CustomerId == res.CustomerId)
                    {
                        last.Append(res);
                    }
                    else
                    {
                        result.Add(res);
                    }
                }
            }
            return(result);
        }
        public virtual IEnumerable NextStatementDate(PXAdapter adapter)
        {
            ARStatementDetailsParameters filter = this.Filter.Current;

            if (filter != null && !string.IsNullOrEmpty(filter.StatementCycleId))
            {
                ARStatement statement = PXSelect <ARStatement, Where <ARStatement.statementCycleId, Equal <Required <ARStatement.statementCycleId> >,
                                                                      And <
                                                                          Where <ARStatement.statementDate, Greater <Required <ARStatement.statementDate> >,
                                                                                 Or <Required <ARStatement.statementDate>, IsNull> > > >,
                                                  OrderBy <Asc <ARStatement.statementDate> > > .Select(this, filter.StatementCycleId, filter.StatementDate, filter.StatementDate);

                if (statement != null)
                {
                    filter.StatementDate = statement.StatementDate;
                }
            }

            return(adapter.Get());
        }
 protected static void Export(Dictionary <string, string> aRes, ARStatementDetailsParameters aSrc)
 {
     aRes[ARStatementReportParams.Parameters.StatementCycleID] = aSrc.StatementCycleId;
     aRes[ARStatementReportParams.Parameters.StatementDate]    = aSrc.StatementDate.Value.ToString("d", CultureInfo.InvariantCulture);
 }