void PrintCalendarYear(int year) { for (int month = 1; month <= Months ; ++month) { // print the name of the month followed by the year PrintMonthName(month); printf(" %d\n", year); // print the days of the week printf(" Su Mo Tu We Th Fr Sa\n"); // determine number of day in a given month int monthDays = MonthDays(month, year); // determine which day of the week is the 1st of the month Days weekday = FirstDayOfMonth(month, year); // set the cursor under the day of the week for which the month starts IndentFirstLine((int) weekday); // print the entire month for (int day = 1; day <= monthDays; ++day) { printf(" %2d",day); if (weekday == Saturday) // go to a new line after saturday { printf("\n"); } weekday = (weekday + 1) % 7; // keep track of the day of the week } if (weekday != Sunday) { printf("\n"); } _getch(); printf("\n"); } }
void PrintCalendarMonth(int month, int year) { int weekday, nDays, day; printf(" %s %d\n", MonthName(month), year); printf(" Su Mo Tu We Th Fr Sa\n"); nDays = MonthDays(month, year); weekday = FirstDayOfMonth(month, year); IndentFirstLine(weekday); for (day = 1; day <= nDays; day++) { printf(" %2d", day); if (weekday == Saturday) printf("\n"); weekday = (weekday + 1) % 7; } if (weekday != Sunday) printf("\n"); }
void ComplexStatsWin::refresh() { Time f; // from Time t; // to switch ( (En_stats_interval)((int)interval.GetData()) ) { case siDay: { Date d = day_date.GetData(); f = ToTime(d); t = Time(d.year, d.month, d.day, 23, 59, 59); break; } case siMonth: { Date from = FirstDayOfMonth(month_date.GetData()); Date to = LastDayOfMonth(month_date.GetData()); f = Time(from.year, from.month, from.day, 0, 0, 0); t = Time(to.year, to.month, to.day, 23, 59, 59); break; } case siDateRange: { Date from = date_from.GetData(); Date to = date_to.GetData(); f = Time(from.year, from.month, from.day, 0, 0, 0); t = Time(to.year, to.month, to.day, 23, 59, 59); } }; //record count SQL & Select(SqlCountRows()).From(RECORD).Where(REC_DATE >= f && REC_DATE <= t); if (SQL.Fetch()) record_count.SetText(~AsString(SQL[0])); //income SQL & Select(SqlSum(ITEM_PRICE)) .From(RECORD_ITEM) .InnerJoin(RECORD).On(RECORD_ID.Of(RECORD_ITEM) == ID.Of(RECORD)) .Where(REC_DATE.Of(RECORD) >= f && REC_DATE.Of(RECORD) <= t) ; if (SQL.Fetch()) { String s = ConvertMoney().Format(SQL[0]); income.SetText(~s); } //income from invoices only SQL & Select(SqlSum(ITEM_PRICE)) .From(RECORD_ITEM) .InnerJoin(RECORD).On(RECORD_ID.Of(RECORD_ITEM) == ID.Of(RECORD)) .Where(REC_DATE.Of(RECORD) >= f && REC_DATE.Of(RECORD) <= t && NotNull(INVOICE_ID.Of(RECORD))) ; if (SQL.Fetch()) { String s = ConvertMoney().Format(SQL[0]); income_inv.SetText(~s); } //income without invoices SQL & Select(SqlSum(ITEM_PRICE)) .From(RECORD_ITEM) .InnerJoin(RECORD).On(RECORD_ID.Of(RECORD_ITEM) == ID.Of(RECORD)) .Where(REC_DATE.Of(RECORD) >= f && REC_DATE.Of(RECORD) <= t && IsNull(INVOICE_ID.Of(RECORD))) ; if (SQL.Fetch()) { String s = ConvertMoney().Format(SQL[0]); income_noinv.SetText(~s); } //products products.Clear(); SQL & Select(NAME.Of(LOV_PRODUCT), Count(LOV_PRODUCT)) .From(RECORD_ITEM) .InnerJoin(LOV_PRODUCT).On(PROD_ID.Of(RECORD_ITEM) == ID.Of(LOV_PRODUCT)) .InnerJoin(RECORD).On(RECORD_ID.Of(RECORD_ITEM) == ID.Of(RECORD)) .Where(REC_DATE.Of(RECORD) >= f && REC_DATE.Of(RECORD) <= t) .GroupBy(NAME.Of(LOV_PRODUCT)) .OrderBy(Descending(Count(LOV_PRODUCT))) ; while(SQL.Fetch()) products.Add(SQL); //clients unsigned c = 0; clients.Clear(); SQL & Select(NAME.Of(LOV_TITLE), FIRST_NAME.Of(CLIENT), LAST_NAME.Of(CLIENT)) .From(RECORD) .InnerJoin(PATIENT).On(PATIENT_ID.Of(RECORD) == ID.Of(PATIENT)) .InnerJoin(CLIENT).On(CLIENT_ID.Of(PATIENT) == ID.Of(CLIENT)) .LeftJoin(LOV_TITLE).On(TITLE_ID.Of(CLIENT) == ID.Of(LOV_TITLE)) .Where(REC_DATE.Of(RECORD) >= f && REC_DATE.Of(RECORD) <= t) .OrderBy(REC_DATE.Of(RECORD)) ; while(SQL.Fetch() && ++c) clients.Add(SQL); client_count.SetText(AsString(c)); }