translator_directory.models.time_report

Attributes

TimeReportStatus

SurchargeType

Classes

TranslatorTimeReport

Mixin providing created/modified timestamps for all records.

Module Contents

translator_directory.models.time_report.TimeReportStatus[source]
translator_directory.models.time_report.SurchargeType[source]
class translator_directory.models.time_report.TranslatorTimeReport[source]

Bases: onegov.core.orm.Base, onegov.core.orm.mixins.TimestampMixin

Mixin providing created/modified timestamps for all records.

The columns are deferred loaded as this is primarily for logging and future forensics.

__tablename__ = 'translator_time_reports'[source]
id: sqlalchemy.Column[uuid.UUID][source]
translator_id: sqlalchemy.Column[uuid.UUID][source]
translator: sqlalchemy.orm.relationship[translator_directory.models.translator.Translator][source]
created_by_id: sqlalchemy.Column[uuid.UUID | None][source]
created_by: sqlalchemy.orm.relationship[onegov.user.User | None][source]
assignment_type: sqlalchemy.Column[str | None][source]
duration: sqlalchemy.Column[int][source]
break_time: sqlalchemy.Column[int][source]
night_minutes: sqlalchemy.Column[int][source]
weekend_holiday_minutes: sqlalchemy.Column[int][source]
case_number: sqlalchemy.Column[str | None][source]
assignment_date: sqlalchemy.Column[datetime.date][source]
start: sqlalchemy.Column[datetime.datetime | None][source]
end: sqlalchemy.Column[datetime.datetime | None][source]
hourly_rate: sqlalchemy.Column[decimal.Decimal][source]
surcharge_types: sqlalchemy.Column[list[str] | None][source]
travel_compensation: sqlalchemy.Column[decimal.Decimal][source]
total_compensation: sqlalchemy.Column[decimal.Decimal][source]
notes: sqlalchemy.Column[str | None][source]
status: sqlalchemy.Column[TimeReportStatus][source]
SURCHARGE_RATES: dict[str, decimal.Decimal][source]
property duration_hours: decimal.Decimal[source]

Return duration in hours for display.

property break_time_hours: decimal.Decimal[source]

Return break time in hours for display.

property night_hours_decimal: decimal.Decimal[source]

Return night hours in decimal format for calculations.

property weekend_holiday_hours_decimal: decimal.Decimal[source]

Return weekend/holiday hours in decimal format for calculations.

property day_hours_decimal: decimal.Decimal[source]

Return day hours (total - night) in decimal format.

property night_hourly_rate: decimal.Decimal[source]

Return night hourly rate (base rate + 50% surcharge).

calculate_compensation_breakdown() dict[str, decimal.Decimal][source]

Calculate detailed compensation breakdown.

Returns a dictionary with all compensation components: - day_pay: Payment for day hours (base rate) - night_pay: Payment for night hours (base rate + 50% surcharge) - night_surcharge: Just the surcharge portion for night hours - weekend_surcharge: Weekend surcharge (only on non-night hours) - urgent_surcharge: Urgent surcharge (25% on top of everything) - total_surcharges: Sum of all surcharges - subtotal: Total work compensation (before travel/meal) - travel: Travel compensation - meal: Meal allowance - total: Final total compensation

property base_compensation: decimal.Decimal[source]

Calculate compensation without travel and meal (work compensation only).

This uses the centralized breakdown calculation which handles partial night work correctly.

property meal_allowance: decimal.Decimal[source]

Return meal allowance if duration >= 6 hours.

property title: str[source]

Return a readable title for this time report.

get_ticket(session: sqlalchemy.orm.Session) onegov.translator_directory.models.ticket.TimeReportTicket | None[source]

Get the ticket associated with this time report.