public void Insert(Int32 PeriodID, Int32 AccountID)
        {

            /* step 1 is to create our row in BillingPeriodAccounts table */

            BillingAccount billingAccount = new BillingAccountController().FetchByID(AccountID)[0];

            Insert(PeriodID, AccountID, billingAccount.Defaultperdiemrate, false, null, null, null, null, billingAccount.Defaultmileagerate);

            BillingPeriodAccount current = new BillingPeriodAccountCollection().Where(BillingPeriodAccount.Columns.Periodid, PeriodID).Where(BillingPeriodAccount.Columns.Accountid, AccountID).Load()[0];

            int periodaccountid = current.Id;

            /* step 2 is for each rate group, pull out the default value from DefaultBillingRates and Insert into BillingRates for this BillingPeriodAccount*/

            BillingRateController billingRateController = new BillingRateController();
            foreach (RateGroup rategroup in new RateGroupController().FetchAll())
            {
                double defaultrate = new DefaultBillingRateController().FetchRate(AccountID, rategroup.Id);

                billingRateController.Insert(periodaccountid, rategroup.Id, defaultrate, false, null, null, null, null);
            }

            /* step 3 is for each City Per Diem rate record, pull out the default value from  BillingDefaultCityRates and Insert into BillingCityRates for this BillingPeriodAccount*/
            var billingCityRateController = new BillingCityRateController();

            foreach (var cityRateGroup in new BillingDefaultCityRateController().FetchAllActiveByAccountId(AccountID))
            {
                billingCityRateController.Insert(cityRateGroup.Id, periodaccountid, cityRateGroup.DefaultPerDiemRate);
            }
        }
 public BillingPeriodAccountCollection FetchAll()
 {
     BillingPeriodAccountCollection coll = new BillingPeriodAccountCollection();
     Query qry = new Query(BillingPeriodAccount.Schema);
     coll.LoadAndCloseReader(qry.ExecuteReader());
     return coll;
 }
 public BillingPeriodAccountCollection FetchByQuery(Query qry)
 {
     BillingPeriodAccountCollection coll = new BillingPeriodAccountCollection();
     coll.LoadAndCloseReader(qry.ExecuteReader()); 
     return coll;
 }
 public BillingPeriodAccountCollection FetchByID(object Id)
 {
     BillingPeriodAccountCollection coll = new BillingPeriodAccountCollection().Where("id", Id).Load();
     return coll;
 }
        public int GetIdByPeriodIdAndAccountId(int periodId, int accountId)
        {
            var record = new BillingPeriodAccountCollection().Where(BillingPeriodAccount.Columns.Periodid, periodId).Where(BillingPeriodAccount.Columns.Accountid, accountId).Load()[0];

            return record.Id;
        }