fix the additional_finances issue

This commit is contained in:
ismail 2025-07-24 12:16:58 +03:00
parent 14680585b9
commit 8d82a954e8
6 changed files with 49 additions and 19 deletions

View File

@ -440,14 +440,14 @@ class CarFinanceForm(forms.ModelForm):
model = CarFinance model = CarFinance
fields = ["cost_price","marked_price"] fields = ["cost_price","marked_price"]
def save(self, commit=True): # def save(self, commit=True):
instance = super().save() # instance = super().save()
try: # try:
instance.additional_services.set(self.cleaned_data["additional_finances"]) # instance.additional_services.set(self.cleaned_data["additional_finances"])
except KeyError: # except KeyError:
pass # pass
instance.save() # instance.save()
return instance # return instance
class CarLocationForm(forms.ModelForm): class CarLocationForm(forms.ModelForm):

View File

@ -370,8 +370,8 @@ def update_item_model_cost(sender, instance, created, **kwargs):
) )
instance.car.item_model.default_amount = instance.marked_price instance.car.item_model.default_amount = instance.marked_price
if not isinstance(instance.car.item_model.additional_info, dict): # if not isinstance(instance.car.item_model.additional_info, dict):
instance.car.item_model.additional_info = {} # instance.car.item_model.additional_info = {}
# instance.car.item_model.additional_info.update({"car_finance": instance.to_dict()}) # instance.car.item_model.additional_info.update({"car_finance": instance.to_dict()})
# instance.car.item_model.additional_info.update( # instance.car.item_model.additional_info.update(
# { # {

View File

@ -6989,8 +6989,12 @@ class OpportunityListView(LoginRequiredMixin, PermissionRequiredMixin, ListView)
def get_queryset(self): def get_queryset(self):
dealer = get_user_type(self.request) dealer = get_user_type(self.request)
staff = getattr(self.request.user.staffmember, "staff", None)
queryset = models.Opportunity.objects.filter(dealer=dealer, lead__staff=staff) if self.request.is_dealer:
queryset = models.Opportunity.objects.filter(dealer=dealer)
elif self.request.is_staff:
staff = self.request.staff
queryset = models.Opportunity.objects.filter(dealer=dealer, lead__staff=staff)
# Search filter # Search filter
search = self.request.GET.get("q") search = self.request.GET.get("q")

View File

@ -23,8 +23,9 @@
</div> </div>
<div class="modal-body"> <div class="modal-body">
<form action="{% url 'add_task' request.dealer.slug content_type slug %}" <form action="{% url 'add_task' request.dealer.slug content_type slug %}"
hx-select=".taskTable" hx-boost="true"
hx-target=".taskTable" hx-select-oob=".taskTable:outerHTML,#toast-container:outerHTML"
hx-swap="none"
hx-on::after-request="{ hx-on::after-request="{
resetSubmitButton(document.querySelector('.add_task_form button[type=submit]')); resetSubmitButton(document.querySelector('.add_task_form button[type=submit]'));
$('#taskModal').modal('hide'); $('#taskModal').modal('hide');

View File

@ -838,9 +838,9 @@
{% include "components/note_modal.html" with content_type="lead" slug=lead.slug %} {% include "components/note_modal.html" with content_type="lead" slug=lead.slug %}
<!-- schedule Modal --> <!-- schedule Modal -->
{% include "components/schedule_modal.html" with content_type="lead" slug=lead.slug %} {% include "components/schedule_modal.html" with content_type="lead" slug=lead.slug %}
{% endblock content %} {% endblock content %}
{% block customJS %} {% block customJS %}
<script> <script>
function reset_form() { function reset_form() {
document.querySelector('#id_note').value = "" document.querySelector('#id_note').value = ""
let form = document.querySelector('.add_note_form') let form = document.querySelector('.add_note_form')

View File

@ -578,7 +578,7 @@
style="min-width:165px">Completed</th> style="min-width:165px">Completed</th>
</tr> </tr>
</thead> </thead>
<tbody class="list" id="all-tasks-table-body"> <tbody class="list taskTable" id="all-tasks-table-body">
{% for task in schedules %} {% for task in schedules %}
{% include "partials/task.html" %} {% include "partials/task.html" %}
{% endfor %} {% endfor %}
@ -639,7 +639,7 @@
<th class="align-middle pe-0 text-end" scope="col" style="width:10%;"></th> <th class="align-middle pe-0 text-end" scope="col" style="width:10%;"></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody id="notesTable">
{% for note in opportunity.get_notes %} {% for note in opportunity.get_notes %}
<tr class="hover-actions-trigger btn-reveal-trigger position-static"> <tr class="hover-actions-trigger btn-reveal-trigger position-static">
<td class="align-middle text-start fw-bold text-body-tertiary ps-1">{{ note.note }}</td> <td class="align-middle text-start fw-bold text-body-tertiary ps-1">{{ note.note }}</td>
@ -1100,3 +1100,28 @@
<!-- schedule Modal --> <!-- schedule Modal -->
{% include "components/schedule_modal.html" with content_type="opportunity" slug=opportunity.slug %} {% include "components/schedule_modal.html" with content_type="opportunity" slug=opportunity.slug %}
{% endblock %} {% endblock %}
{% block customJS %}
<script>
document.body.addEventListener('htmx:afterSwap', function(evt) {
if (evt.detail.target.id === 'main_content') {
var modal = bootstrap.Modal.getInstance(document.getElementById('exampleModal'));
if (modal) {
modal.hide();
}
}
});
// Cleanup modal backdrop if needed
document.body.addEventListener('htmx:beforeSwap', function(evt) {
if (evt.detail.target.id === 'main_content') {
var backdrops = document.querySelectorAll('.modal-backdrop');
backdrops.forEach(function(backdrop) {
backdrop.remove();
});
}
});
</script>
{% endblock customJS %}