示例#1
0
        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;
        }
示例#4
0
 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"));
 }
示例#5
0
 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"));
 }
示例#6
0
 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"));
 }