- Dodan model MonthlyServicerDayEntry s automatskom popunom prema tipu: office (08:00-16:00, Zagreb ured), vacation i sick_leave (8h bez vremena) - Migracija 0034_monthlyservicerdayentry za novu tablicu s UniqueConstraint - Novi ViewSet + serializer + endpoint fleet/monthly-servicer-day-entries/ (upsert: POST za novi dan ili update za isti dan ako vec postoji) - Backend DOCX report (_build_monthly_servicer_report_rows) sad generira redak za SVAKI dan u mjesecu: taskovi > rucni unos > prazan red - TaskCalendarWidget potpuno prepisan bez mojibake znakova (zamjena UTF-8 specijalnih znakova ASCII ekvivalentima u string literalima) - Tablica izvjestaja servisera: klikom na red bez naloga otvara se overlay s tri opcije (Rad u uredu / Bolovanje / Godisnji) - TaskCalendarPortal: dodan calendarWorkOrders computed (svi statusi) kako bi report imao potpune podatke o radnom vremenu - fetchMonthlyServicerEntries i upsertMonthlyServicerEntry u store-u Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
46 lines
2.6 KiB
Python
46 lines
2.6 KiB
Python
# Generated by Django 5.2.15 on 2026-07-31 12:30
|
|
|
|
import uuid
|
|
from decimal import Decimal
|
|
from django.conf import settings
|
|
from django.db import migrations, models
|
|
import django.db.models.deletion
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
dependencies = [
|
|
('fleet', '0033_emaildispatchlog'),
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name='MonthlyServicerDayEntry',
|
|
fields=[
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, help_text='Unikatni identifikator entiteta (UUID).', primary_key=True, serialize=False)),
|
|
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Vrijeme kreiranja')),
|
|
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Vrijeme zadnje izmjene')),
|
|
('is_active', models.BooleanField(default=True, verbose_name='Aktivan zapis')),
|
|
('entry_date', models.DateField(db_index=True, verbose_name='Datum')),
|
|
('entry_type', models.CharField(choices=[('office', 'Rad u uredu'), ('sick_leave', 'Bolovanje'), ('vacation', 'Godišnji odmor')], max_length=24, verbose_name='Vrsta unosa')),
|
|
('description', models.CharField(blank=True, max_length=255, verbose_name='Opis posla')),
|
|
('location', models.CharField(blank=True, max_length=255, verbose_name='Mjesto rada')),
|
|
('start_time', models.TimeField(blank=True, null=True, verbose_name='Početak rada')),
|
|
('end_time', models.TimeField(blank=True, null=True, verbose_name='Kraj rada')),
|
|
('regular_hours', models.DecimalField(decimal_places=2, default=Decimal('8.00'), max_digits=5, verbose_name='Redovan rad')),
|
|
('overtime_hours', models.DecimalField(decimal_places=2, default=Decimal('0.00'), max_digits=5, verbose_name='Prekovremeni rad')),
|
|
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='monthly_servicer_day_entries', to=settings.AUTH_USER_MODEL, verbose_name='Serviser')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Dnevni unos mjesečnog izvještaja servisera',
|
|
'verbose_name_plural': 'Dnevni unosi mjesečnog izvještaja servisera',
|
|
'ordering': ['entry_date'],
|
|
},
|
|
),
|
|
migrations.AddConstraint(
|
|
model_name='monthlyservicerdayentry',
|
|
constraint=models.UniqueConstraint(fields=('user', 'entry_date', 'is_active'), name='uniq_monthly_servicer_day_entry_user_date_active'),
|
|
),
|
|
]
|