Ver.09
This commit is contained in:
parent
a564c597f3
commit
9e85e053cc
Binary file not shown.
Binary file not shown.
23
core/migrations/0006_fleetunit_contract_number_and_more.py
Normal file
23
core/migrations/0006_fleetunit_contract_number_and_more.py
Normal file
@ -0,0 +1,23 @@
|
||||
# Generated by Django 5.2.7 on 2026-01-27 20:41
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('core', '0005_supplier_fleetunit_insurance_policy_number_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='fleetunit',
|
||||
name='contract_number',
|
||||
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='Номер договора'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='supplier',
|
||||
name='contract_number',
|
||||
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='Номер договора (общий)'),
|
||||
),
|
||||
]
|
||||
Binary file not shown.
@ -21,7 +21,7 @@ class Supplier(models.Model):
|
||||
representative_name = models.CharField(max_length=255, blank=True, null=True, verbose_name="ФИО представителя/менеджера")
|
||||
phone = models.CharField(max_length=50, blank=True, null=True, verbose_name="Телефон")
|
||||
email = models.EmailField(blank=True, null=True, verbose_name="Электронная почта")
|
||||
contract_number = models.CharField(max_length=100, blank=True, null=True, verbose_name="Номер договора")
|
||||
contract_number = models.CharField(max_length=100, blank=True, null=True, verbose_name="Номер договора (общий)")
|
||||
|
||||
class Meta:
|
||||
verbose_name = "Поставщик / Контрагент"
|
||||
@ -59,6 +59,7 @@ class FleetUnit(models.Model):
|
||||
|
||||
# Supplier
|
||||
supplier = models.ForeignKey(Supplier, on_delete=models.SET_NULL, null=True, blank=True, verbose_name="Поставщик / Контрагент")
|
||||
contract_number = models.CharField(max_length=100, blank=True, null=True, verbose_name="Номер договора")
|
||||
supplier_name = models.CharField(max_length=255, blank=True, null=True, verbose_name="Поставщик (старое)")
|
||||
supplier_contacts = models.TextField(blank=True, null=True, verbose_name="Контакты поставщика (старое)")
|
||||
vehicle_documents = models.FileField(upload_to="fleet_docs/", blank=True, null=True, verbose_name="Документы на авто")
|
||||
|
||||
@ -218,10 +218,14 @@
|
||||
<h6 class="fw-bold mb-3">Данные по снабжению и поставщику</h6>
|
||||
<div class="row g-4">
|
||||
<div class="col-md-6">
|
||||
<div class="mb-3">
|
||||
<p class="text-muted small mb-1">Номер договора (техника)</p>
|
||||
<p class="fw-bold mb-0">{{ unit.contract_number|default:"-" }}</p>
|
||||
</div>
|
||||
|
||||
{% if unit.supplier %}
|
||||
<p class="text-muted small mb-1">Поставщик / Контрагент</p>
|
||||
<p class="fw-bold mb-1">{{ unit.supplier.name }}</p>
|
||||
<p class="small text-muted mb-3">Договор №{{ unit.supplier.contract_number|default:"-" }}</p>
|
||||
|
||||
<p class="text-muted small mb-1">Представитель</p>
|
||||
<p class="small mb-1">{{ unit.supplier.representative_name|default:"-" }}</p>
|
||||
@ -292,4 +296,4 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
|
||||
@ -76,9 +76,19 @@
|
||||
<h5 class="mb-3 text-primary border-bottom pb-2">Снабжение</h5>
|
||||
<div class="row g-3 mb-4">
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">Поставщик / Контрагент</label>
|
||||
<label class="form-label d-flex justify-content-between">
|
||||
Поставщик / Контрагент
|
||||
<a href="{% url 'supplier_create' %}" target="_blank" class="small text-decoration-none">
|
||||
<i class="bi bi-plus-circle"></i> Создать нового
|
||||
</a>
|
||||
</label>
|
||||
{{ form.supplier }}
|
||||
<div class="form-text">Выберите поставщика из списка. Создать нового можно в разделе "Снабжение".</div>
|
||||
<div class="form-text">Выберите поставщика из списка или создайте нового (откроется в новой вкладке).</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">Номер договора</label>
|
||||
{{ form.contract_number }}
|
||||
<div class="form-text">Номер договора по данной единице техники.</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">Документы на авто (PDF/Image)</label>
|
||||
@ -109,4 +119,4 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% endblock %}
|
||||
@ -26,7 +26,7 @@ class FleetUnitForm(forms.ModelForm):
|
||||
'name', 'category', 'model_name', 'vin', 'plate_number', 'year', 'photo', 'status',
|
||||
'commissioning_date', 'notes',
|
||||
'insurance_company', 'insurance_policy_number', 'insurance_start_date', 'insurance_end_date',
|
||||
'supplier', 'vehicle_documents'
|
||||
'supplier', 'contract_number', 'vehicle_documents'
|
||||
]
|
||||
widgets = {
|
||||
'name': forms.TextInput(attrs={'class': 'form-control'}),
|
||||
@ -44,6 +44,7 @@ class FleetUnitForm(forms.ModelForm):
|
||||
'insurance_start_date': forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
|
||||
'insurance_end_date': forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
|
||||
'supplier': forms.Select(attrs={'class': 'form-select'}),
|
||||
'contract_number': forms.TextInput(attrs={'class': 'form-control'}),
|
||||
'vehicle_documents': forms.FileInput(attrs={'class': 'form-control'}),
|
||||
}
|
||||
|
||||
@ -372,4 +373,4 @@ class SupplierUpdateView(UpdateView):
|
||||
|
||||
class SupplierDeleteView(LoginRequiredMixin, StaffRequiredMixin, DeleteView):
|
||||
model = Supplier
|
||||
success_url = reverse_lazy('supply_list')
|
||||
success_url = reverse_lazy('supply_list')
|
||||
Loading…
x
Reference in New Issue
Block a user