fix: fixed shifts time tracking
This commit is contained in:
@@ -59,54 +59,64 @@ class TimeTrackingService(BaseService):
|
||||
records.append(record)
|
||||
return GetTimeTrackingRecordsResponse(records=records)
|
||||
|
||||
async def update_work_record(
|
||||
self,
|
||||
user: User,
|
||||
request: UpdateTimeTrackingRecordRequest,
|
||||
commit: bool = True,
|
||||
) -> tuple[bool, str]:
|
||||
record_user = await UserService(self.session).get_by_id(user_id=request.user_id)
|
||||
if not record_user:
|
||||
return False, "Указанный пользователь не найден!"
|
||||
if not record_user.pay_rate:
|
||||
return False, "У пользователя не указана схема оплаты!"
|
||||
existing_record_stmt = (
|
||||
select(
|
||||
PaymentRecord
|
||||
)
|
||||
.where(
|
||||
PaymentRecord.user_id == request.user_id,
|
||||
PaymentRecord.start_date == request.date,
|
||||
PaymentRecord.end_date == request.date,
|
||||
)
|
||||
)
|
||||
amount = (
|
||||
PayrollService(
|
||||
self.session
|
||||
)
|
||||
.get_amount(
|
||||
user=record_user,
|
||||
work_units=request.hours
|
||||
)
|
||||
)
|
||||
existing_record = await self.session.scalar(existing_record_stmt)
|
||||
if existing_record:
|
||||
existing_record: PaymentRecord
|
||||
existing_record.work_units = request.hours
|
||||
existing_record.amount = amount
|
||||
else:
|
||||
new_record = PaymentRecord(
|
||||
user_id=request.user_id,
|
||||
created_by_user_id=user.id,
|
||||
start_date=request.date,
|
||||
end_date=request.date,
|
||||
created_at=datetime.datetime.now(),
|
||||
payroll_scheme_key=record_user.pay_rate.payroll_scheme_key,
|
||||
amount=amount,
|
||||
work_units=request.hours
|
||||
)
|
||||
self.session.add(new_record)
|
||||
if commit:
|
||||
await self.session.commit()
|
||||
return True, "Запись успешно добавлена"
|
||||
|
||||
async def update_record(
|
||||
self,
|
||||
user: User,
|
||||
request: UpdateTimeTrackingRecordRequest
|
||||
) -> UpdateTimeTrackingRecordResponse:
|
||||
try:
|
||||
record_user = await UserService(self.session).get_by_id(user_id=request.user_id)
|
||||
if not record_user:
|
||||
return UpdateTimeTrackingRecordResponse(ok=False, message="Указанный пользователь не найден!")
|
||||
if not record_user.pay_rate:
|
||||
return UpdateTimeTrackingRecordResponse(ok=False, message="У пользователя не указана схема оплаты!")
|
||||
existing_record_stmt = (
|
||||
select(
|
||||
PaymentRecord
|
||||
)
|
||||
.where(
|
||||
PaymentRecord.user_id == request.user_id,
|
||||
PaymentRecord.start_date == request.date,
|
||||
PaymentRecord.end_date == request.date,
|
||||
)
|
||||
)
|
||||
amount = (
|
||||
PayrollService(
|
||||
self.session
|
||||
)
|
||||
.get_amount(
|
||||
user=record_user,
|
||||
work_units=request.hours
|
||||
)
|
||||
)
|
||||
existing_record = await self.session.scalar(existing_record_stmt)
|
||||
if existing_record:
|
||||
existing_record: PaymentRecord
|
||||
existing_record.work_units = request.hours
|
||||
existing_record.amount = amount
|
||||
else:
|
||||
new_record = PaymentRecord(
|
||||
user_id=request.user_id,
|
||||
created_by_user_id=user.id,
|
||||
start_date=request.date,
|
||||
end_date=request.date,
|
||||
created_at=datetime.datetime.now(),
|
||||
payroll_scheme_key=record_user.pay_rate.payroll_scheme_key,
|
||||
amount=amount,
|
||||
work_units=request.hours
|
||||
)
|
||||
self.session.add(new_record)
|
||||
await self.session.commit()
|
||||
return UpdateTimeTrackingRecordResponse(ok=True, message="Запись успешно обновлена")
|
||||
ok, message = await self.update_work_record(user, request)
|
||||
return UpdateTimeTrackingRecordResponse(ok=ok, message=message)
|
||||
except Exception as e:
|
||||
return UpdateTimeTrackingRecordResponse(ok=False, message=str(e))
|
||||
|
||||
Reference in New Issue
Block a user