public string FunctionHandler(ILambdaContext context) { var databaseClient = new DatabaseClient <QuickBooksOnlineConnection>(new AmazonDynamoDBClient(), new ConsoleLogger()); var qboClient = new QuickBooksOnlineClient(PrivateAccounting.Constants.LakelandMiPuebloRealmId, databaseClient, new ConsoleLogger()); var taxRate = new Tax().GetTaxRate(qboClient, Constants.QUICKBOOKS_RENTAL_TAX_RATE); var recurringInvoices = new RecurringInvoices(new VendorService(new AmazonDynamoDBClient()), qboClient, taxRate, new ConsoleLogger()); recurringInvoices.CreateInvoicesForFrequency(DateTime.UtcNow.Date, RecurringInvoices.Frequency.Weekly); Console.WriteLine("Scheduled function PropertyRentalManagement.CreateWeeklyInvoices completed"); return("Scheduled function PropertyRentalManagement.CreateWeeklyInvoices completed"); }
public void Run(APIGatewayProxyRequest request, APIGatewayProxyResponse response, FinanceUser user) { var year = int.Parse(request.QueryStringParameters["year"]); var month = int.Parse(request.QueryStringParameters["month"]); var dayOfMonth = int.Parse(request.QueryStringParameters["dayOfMonth"]); var frequency = (RecurringInvoices.Frequency)Enum.Parse(typeof(RecurringInvoices.Frequency), request.QueryStringParameters["frequency"], true); var date = new DateTime(year, month, dayOfMonth, 0, 0, 0, DateTimeKind.Utc); DateRange dateRange = frequency == RecurringInvoices.Frequency.Weekly ? RecurringInvoices.GetWeekDateRange(date) : RecurringInvoices.GetMonthDateRange(date); response.Body = JsonConvert.SerializeObject(dateRange); }
public void Run(APIGatewayProxyRequest request, APIGatewayProxyResponse response, FinanceUser user) { var databaseClient = new DatabaseClient <QuickBooksOnlineConnection>(new AmazonDynamoDBClient(), new ConsoleLogger()); var qboClient = new QuickBooksOnlineClient(PrivateAccounting.Constants.LakelandMiPuebloRealmId, databaseClient, new ConsoleLogger()); var day = JsonConvert.DeserializeObject <CalendarDay>(request.Body); var date = new DateTime(day.Year, day.Month, day.DayOfMonth, 0, 0, 0, DateTimeKind.Utc); Console.WriteLine($"{user.Email} is creating monthly invoices for {date:yyyy-MM-dd}"); var taxRate = new Tax().GetTaxRate(qboClient, PropertyRentalManagement.Constants.QUICKBOOKS_RENTAL_TAX_RATE); var recurringInvoices = new RecurringInvoices(new VendorService(new AmazonDynamoDBClient()), qboClient, taxRate, new ConsoleLogger()); var monthlyInvoices = recurringInvoices.CreateInvoicesForFrequency(date, RecurringInvoices.Frequency.Monthly); var invoiceJson = JsonConvert.SerializeObject(monthlyInvoices); response.Body = invoiceJson; }
public void TestStartOfWeek() { Assert.Equal("2020-07-13", RecurringInvoices.StartOfWeek(new DateTime(2020, 7, 13), DayOfWeek.Monday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-13", RecurringInvoices.StartOfWeek(new DateTime(2020, 7, 14), DayOfWeek.Monday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-13", RecurringInvoices.StartOfWeek(new DateTime(2020, 7, 15), DayOfWeek.Monday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-13", RecurringInvoices.StartOfWeek(new DateTime(2020, 7, 16), DayOfWeek.Monday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-13", RecurringInvoices.StartOfWeek(new DateTime(2020, 7, 17), DayOfWeek.Monday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-13", RecurringInvoices.StartOfWeek(new DateTime(2020, 7, 18), DayOfWeek.Monday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-13", RecurringInvoices.StartOfWeek(new DateTime(2020, 7, 19), DayOfWeek.Monday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-20", RecurringInvoices.StartOfWeek(new DateTime(2020, 7, 20), DayOfWeek.Monday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-20", RecurringInvoices.StartOfWeek(new DateTime(2020, 7, 21), DayOfWeek.Monday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-20", RecurringInvoices.StartOfWeek(new DateTime(2020, 7, 22), DayOfWeek.Monday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-20", RecurringInvoices.StartOfWeek(new DateTime(2020, 7, 23), DayOfWeek.Monday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-20", RecurringInvoices.StartOfWeek(new DateTime(2020, 7, 24), DayOfWeek.Monday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-20", RecurringInvoices.StartOfWeek(new DateTime(2020, 7, 25), DayOfWeek.Monday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-20", RecurringInvoices.StartOfWeek(new DateTime(2020, 7, 26), DayOfWeek.Monday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-27", RecurringInvoices.StartOfWeek(new DateTime(2020, 7, 27), DayOfWeek.Monday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-27", RecurringInvoices.StartOfWeek(new DateTime(2020, 7, 28), DayOfWeek.Monday).ToString("yyyy-MM-dd")); }
public void TestEndOfWeek() { Assert.Equal("2020-07-19", RecurringInvoices.EndOfWeek(new DateTime(2020, 7, 13), DayOfWeek.Sunday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-19", RecurringInvoices.EndOfWeek(new DateTime(2020, 7, 14), DayOfWeek.Sunday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-19", RecurringInvoices.EndOfWeek(new DateTime(2020, 7, 15), DayOfWeek.Sunday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-19", RecurringInvoices.EndOfWeek(new DateTime(2020, 7, 16), DayOfWeek.Sunday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-19", RecurringInvoices.EndOfWeek(new DateTime(2020, 7, 17), DayOfWeek.Sunday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-19", RecurringInvoices.EndOfWeek(new DateTime(2020, 7, 18), DayOfWeek.Sunday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-19", RecurringInvoices.EndOfWeek(new DateTime(2020, 7, 19), DayOfWeek.Sunday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-26", RecurringInvoices.EndOfWeek(new DateTime(2020, 7, 20), DayOfWeek.Sunday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-26", RecurringInvoices.EndOfWeek(new DateTime(2020, 7, 21), DayOfWeek.Sunday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-26", RecurringInvoices.EndOfWeek(new DateTime(2020, 7, 22), DayOfWeek.Sunday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-26", RecurringInvoices.EndOfWeek(new DateTime(2020, 7, 23), DayOfWeek.Sunday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-26", RecurringInvoices.EndOfWeek(new DateTime(2020, 7, 24), DayOfWeek.Sunday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-26", RecurringInvoices.EndOfWeek(new DateTime(2020, 7, 25), DayOfWeek.Sunday).ToString("yyyy-MM-dd")); Assert.Equal("2020-07-26", RecurringInvoices.EndOfWeek(new DateTime(2020, 7, 26), DayOfWeek.Sunday).ToString("yyyy-MM-dd")); Assert.Equal("2020-08-02", RecurringInvoices.EndOfWeek(new DateTime(2020, 7, 27), DayOfWeek.Sunday).ToString("yyyy-MM-dd")); Assert.Equal("2020-08-02", RecurringInvoices.EndOfWeek(new DateTime(2020, 7, 28), DayOfWeek.Sunday).ToString("yyyy-MM-dd")); Assert.Equal("2020-08-02", RecurringInvoices.EndOfWeek(new DateTime(2020, 7, 29), DayOfWeek.Sunday).ToString("yyyy-MM-dd")); Assert.Equal("2020-08-02", RecurringInvoices.EndOfWeek(new DateTime(2020, 7, 30), DayOfWeek.Sunday).ToString("yyyy-MM-dd")); Assert.Equal("2020-08-02", RecurringInvoices.EndOfWeek(new DateTime(2020, 7, 31), DayOfWeek.Sunday).ToString("yyyy-MM-dd")); }
public void StartOfMonth() { Assert.Equal("2020-07-01", RecurringInvoices.StartOfMonth(new DateTime(2020, 7, 13)).ToString("yyyy-MM-dd")); Assert.Equal("2020-08-01", RecurringInvoices.StartOfMonth(new DateTime(2020, 8, 14)).ToString("yyyy-MM-dd")); }