public async Task <bool> UpdateBilling(UpdateBillingCommand cmd) { bool isTemp = cmd.StartDate == DateTime.Now.FirstOfMonth(); using (var bc = new BillingClient()) { LNF.Models.Billing.Process.BillingProcessResult toolDataCleanResult = null; LNF.Models.Billing.Process.BillingProcessResult toolDataResult = null; LNF.Models.Billing.Process.BillingProcessResult toolStep1Result = null; LNF.Models.Billing.Process.BillingProcessResult roomDataCleanResult = null; LNF.Models.Billing.Process.BillingProcessResult roomDataResult = null; LNF.Models.Billing.Process.BillingProcessResult roomStep1Result = null; LNF.Models.Billing.Process.BillingProcessResult subsidyResult = null; // Tool toolDataCleanResult = await bc.BillingProcessDataClean(LNF.Models.Billing.BillingCategory.Tool, cmd.StartDate, cmd.EndDate, cmd.ClientID, 0); toolDataResult = await bc.BillingProcessData(LNF.Models.Billing.BillingCategory.Tool, cmd.StartDate, cmd.EndDate, cmd.ClientID, 0); toolStep1Result = await bc.BillingProcessStep1(LNF.Models.Billing.BillingCategory.Tool, cmd.StartDate, cmd.EndDate, cmd.ClientID, 0, isTemp, true); // Room roomDataCleanResult = await bc.BillingProcessDataClean(LNF.Models.Billing.BillingCategory.Room, cmd.StartDate, cmd.EndDate, cmd.ClientID, 0); roomDataResult = await bc.BillingProcessData(LNF.Models.Billing.BillingCategory.Room, cmd.StartDate, cmd.EndDate, cmd.ClientID, 0); roomStep1Result = await bc.BillingProcessStep1(LNF.Models.Billing.BillingCategory.Room, cmd.StartDate, cmd.EndDate, cmd.ClientID, 0, isTemp, true); // Subsidy if (!isTemp) { subsidyResult = await bc.BillingProcessStep4("subsidy", cmd.StartDate, cmd.ClientID); } UpdateBillingResult updateResult = new UpdateBillingResult(toolDataCleanResult, toolDataResult, toolStep1Result, roomDataCleanResult, roomDataResult, roomStep1Result, subsidyResult); if (updateResult.HasError()) { throw new Exception(updateResult.GetErrorMessage()); } return(true); } }