fix the uploaded
This commit is contained in:
parent
3f85df0124
commit
f49c63da95
@ -97,7 +97,7 @@ class InjectDealerMiddleware:
|
||||
request.is_staff = False
|
||||
if hasattr(request.user, "dealer"):
|
||||
request.is_dealer = True
|
||||
if hasattr(request.user, "staffmember"):
|
||||
elif hasattr(request.user, "staffmember"):
|
||||
request.is_staff = True
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
@ -31,6 +31,8 @@ from django_ledger.models import (
|
||||
InvoiceModel,
|
||||
AccountModel,
|
||||
EntityManagementModel,
|
||||
PurchaseOrderModel,
|
||||
ItemTransactionModel,
|
||||
)
|
||||
from django.contrib.contenttypes.fields import GenericForeignKey
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
@ -722,7 +724,7 @@ class Car(Base):
|
||||
self.save()
|
||||
@property
|
||||
def logo(self):
|
||||
return self.id_car_make.logo.url if self.id_car_make.logo else None
|
||||
return self.id_car_make.logo.url if self.id_car_make.logo else None
|
||||
|
||||
class CarTransfer(models.Model):
|
||||
car = models.ForeignKey(
|
||||
@ -2835,3 +2837,18 @@ class PaymentHistory(models.Model):
|
||||
######################################################################################################
|
||||
######################################################################################################
|
||||
######################################################################################################
|
||||
class PoItemsUploaded(models.Model):
|
||||
dealer = models.ForeignKey(Dealer, on_delete=models.CASCADE, null=True, blank=True)
|
||||
po = models.ForeignKey(
|
||||
PurchaseOrderModel, on_delete=models.CASCADE, null=True, blank=True, related_name="items"
|
||||
)
|
||||
item = models.ForeignKey(
|
||||
ItemTransactionModel,
|
||||
on_delete=models.CASCADE,
|
||||
null=True,
|
||||
blank=True,
|
||||
related_name="po_items",
|
||||
)
|
||||
status = models.CharField(max_length=100, null=True, blank=True)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
updated_at = models.DateTimeField(auto_now=True)
|
||||
@ -2916,21 +2916,22 @@ class UserCreateView(
|
||||
return self.form_invalid(form)
|
||||
|
||||
email = form.cleaned_data["email"]
|
||||
password = "Tenhal@123"
|
||||
try:
|
||||
user = User.objects.create_user(
|
||||
username=email, email=email, password=password
|
||||
)
|
||||
user.is_staff = True
|
||||
user.save()
|
||||
except IntegrityError as e:
|
||||
if User.objects.filter(email=email).exists():
|
||||
messages.error(
|
||||
self.request,
|
||||
_(
|
||||
"A user with this email already exists. Please use a different email."
|
||||
),
|
||||
)
|
||||
return redirect("user_create")
|
||||
return redirect("user_create", dealer_slug=dealer.slug)
|
||||
password = "Tenhal@123"
|
||||
|
||||
user = User.objects.create_user(
|
||||
username=email, email=email, password=password
|
||||
)
|
||||
user.is_staff = True
|
||||
user.save()
|
||||
|
||||
staff_member = StaffMember.objects.create(user=user)
|
||||
for service in form.cleaned_data["service_offered"]:
|
||||
staff_member.services_offered.add(service)
|
||||
@ -9522,6 +9523,11 @@ class PurchaseOrderMarkAsApprovedView(BasePurchaseOrderActionActionView):
|
||||
class PurchaseOrderMarkAsFulfilledView(BasePurchaseOrderActionActionView):
|
||||
action_name = "mark_as_fulfilled"
|
||||
|
||||
def get(self, request, dealer_slug, entity_slug, po_pk, *args, **kwargs):
|
||||
po = get_object_or_404(PurchaseOrderModel, pk=po_pk)
|
||||
for item in po.get_itemtxs_data()[0]:
|
||||
models.PoItemsUploaded.objects.create(po=po, item=item, status="fulfilled")
|
||||
return super().get(request, dealer_slug, entity_slug, po_pk, *args, **kwargs)
|
||||
|
||||
class PurchaseOrderMarkAsCanceledView(BasePurchaseOrderActionActionView):
|
||||
action_name = "mark_as_canceled"
|
||||
@ -9589,36 +9595,23 @@ class BillModelActionForceMigrateView(BaseBillActionView):
|
||||
|
||||
|
||||
def view_items_inventory(request, dealer_slug, entity_slug, po_pk):
|
||||
dealer = get_object_or_404(models.Dealer, slug=dealer_slug)
|
||||
get_object_or_404(models.Dealer, slug=dealer_slug)
|
||||
po = PurchaseOrderModel.objects.get(pk=po_pk)
|
||||
items = po.get_itemtxs_data()[0]
|
||||
items_per_page = 30
|
||||
paginator = Paginator(items, items_per_page)
|
||||
items = po.items.all()
|
||||
|
||||
page_number = request.GET.get("page")
|
||||
try:
|
||||
page_obj = paginator.get_page(page_number)
|
||||
except PageNotAnInteger:
|
||||
# If page is not an integer, deliver first page.
|
||||
page_obj = paginator.get_page(1)
|
||||
except EmptyPage:
|
||||
# If page is out of range (e.g. 9999), deliver last page of results.
|
||||
page_obj = paginator.get_page(paginator.num_pages)
|
||||
return render(
|
||||
request,
|
||||
"purchase_orders/po_upload_cars.html",
|
||||
{"po": po, "items": items, "page_obj": page_obj},
|
||||
)
|
||||
return render(request,"purchase_orders/po_upload_cars.html",{"po": po, "items": items})
|
||||
|
||||
|
||||
def upload_cars(request, dealer_slug, pk=None):
|
||||
item = None
|
||||
po_item = None
|
||||
dealer = get_object_or_404(models.Dealer, slug=dealer_slug)
|
||||
response = redirect("upload_cars", dealer_slug=dealer_slug)
|
||||
if pk:
|
||||
item = get_object_or_404(ItemTransactionModel, pk=pk)
|
||||
po_item = models.PoItemsUploaded.objects.get(dealer=dealer, item=item)
|
||||
response = redirect("upload_cars", dealer_slug=dealer_slug, pk=pk)
|
||||
if item.item_model.additional_info.get("uploaded"):
|
||||
if po_item.status == "uploaded":
|
||||
messages.add_message(request, messages.ERROR, "Item already uploaded.")
|
||||
return redirect(
|
||||
"view_items_inventory",
|
||||
@ -9632,7 +9625,6 @@ def upload_cars(request, dealer_slug, pk=None):
|
||||
|
||||
try:
|
||||
if item:
|
||||
item = ItemTransactionModel.objects.get(pk=pk)
|
||||
data = [x.strip() for x in item.item_model.name.split("||")]
|
||||
make = models.CarMake.objects.filter(is_sa_import=True).get(
|
||||
name=data[0]
|
||||
@ -9712,9 +9704,9 @@ def upload_cars(request, dealer_slug, pk=None):
|
||||
)
|
||||
car.add_colors(exterior=exterior, interior=interior)
|
||||
cars_created += 1
|
||||
if item:
|
||||
item.item_model.additional_info["uploaded"] = True
|
||||
item.item_model.save()
|
||||
if po_item:
|
||||
po_item.status = "uploaded"
|
||||
po_item.save()
|
||||
|
||||
messages.success(request, f"Successfully imported {cars_created} cars")
|
||||
return response
|
||||
|
||||
@ -66,7 +66,11 @@
|
||||
<button class="btn btn-sm dropdown-toggle dropdown-caret-none transition-none btn-reveal fs-10" type="button" data-bs-toggle="dropdown" data-boundary="window" aria-haspopup="true" aria-expanded="false" data-bs-reference="parent"><span class="fas fa-ellipsis-h fs-10"></span></button>
|
||||
<div class="dropdown-menu dropdown-menu-end py-2">
|
||||
<a href="{% url 'purchase_order_detail' request.dealer.slug po.pk %}" class="dropdown-item text-success-dark">{% trans 'Detail' %}</a>
|
||||
<a href="{% url 'view_items_inventory' dealer_slug=request.dealer.slug entity_slug=entity_slug po_pk=po.pk %}" class="dropdown-item text-success-dark">{% trans 'View Inventory Items' %}</a>
|
||||
{% if po.po_status == 'fulfilled' %}
|
||||
<a href="{% url 'view_items_inventory' dealer_slug=request.dealer.slug entity_slug=entity_slug po_pk=po.pk %}" class="dropdown-item text-success-dark">{% trans 'View Inventory Items' %}</a>
|
||||
{% else %}
|
||||
<button class="dropdown-item text-warning-dark" disabled><span class="fas fa-exclamation-triangle me-1"></span> Fulfill the PO Before Viewing Inventory</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
@ -33,16 +33,16 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for item in items %}
|
||||
{% for i in items %}
|
||||
<tr>
|
||||
<th scope="row">{{ item.item_model }}</th>
|
||||
<th scope="row">{{ item.po_quantity }}</th>
|
||||
<th scope="row">{{ item.po_unit_cost }}</th>
|
||||
<th scope="row">{{ i.item.item_model }}</th>
|
||||
<th scope="row">{{ i.item.po_quantity }}</th>
|
||||
<th scope="row">{{ i.item.po_unit_cost }}</th>
|
||||
<th scope="row">
|
||||
{% if item.item_model.additional_info.uploaded %}
|
||||
{% if i.status == "uploaded" %}
|
||||
<i data-feather="check-circle" class="text-success"></i>
|
||||
{% else %}
|
||||
<a href="{% url 'upload_cars' request.dealer.slug item.pk %}" class="btn btn-sm btn-phoenix-primary">
|
||||
<a href="{% url 'upload_cars' request.dealer.slug i.item.pk %}" class="btn btn-sm btn-phoenix-primary">
|
||||
<i data-feather="upload" class="me-2"></i>Upload Data
|
||||
</a>
|
||||
{% endif %}
|
||||
@ -52,15 +52,5 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% if page_obj.paginator.num_pages > 1 %}
|
||||
|
||||
<div class="d-flex justify-content-end mt-3">
|
||||
|
||||
<div class="d-flex">
|
||||
{% include 'partials/pagination.html'%}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{% endif %}
|
||||
<div>
|
||||
{% endblock content %}
|
||||
Loading…
x
Reference in New Issue
Block a user