from django_ledger.models.invoice import InvoiceModel from django_ledger.utils import accruable_net_summary from decimal import Decimal from django_ledger.models import EstimateModel,EntityModel,ItemModel,ItemTransactionModel from rich import print from datetime import date from inventory.models import Car, Dealer, VatRate,Lead,CarMake,CarModel,Schedule from inventory.utils import CarFinanceCalculator from appointment.models import Appointment,AppointmentRequest,Service,StaffMember from django.contrib.auth import get_user_model from django_ledger.io.io_core import get_localdate from datetime import datetime, timedelta from django.utils import timezone import hashlib User = get_user_model() def run(): # print(Service.objects.first().pk) # print(Appointment.objects.first().client) # appointment = Appointment.objects.create( # client_name="John Doe", # client_email="john@example.com", # service="Haircut", # date_time="2023-10-15 10:00:00", # status="pending") # make = CarMake.objects.first() # Lead.objects.create( # first_name="John", # last_name="Doe", # email="john@example.com", # phone_number="123-456-7890", # address="123 Main St", # id_car_make=make, # id_car_model=make.carmodel_set.first(), # year="2022", # source="website", # channel="online", # staff="John Doe", # priority="high", # ) # schedult = Schedule.objects.create( # name="John Doe", # email="john@example.com", # phone_number="123-456-7890", # address="123 Main St", # id_car_make=make, # id_car_model=make.carmodel_set.first(), # year="2022", # source="website", # channel="online", # staff="John Doe", # priority="high", # ) # now = timezone.now() # end_time = now + timedelta(minutes=10) # service = Service.objects.first() # appointment_request = AppointmentRequest.objects.create( # date=now.date(), # start_time=now.time(), # end_time=end_time.time(), # service=service, # staff_member=StaffMember.objects.first(), # ) # appointment = Appointment.objects.create( # client=User.objects.first(), # appointment_request=appointment_request, # phone="123-456-7890", # address="123 Main St", # ) # dealer = Dealer.objects.get(user__email="ismail.mosa.ibrahim@gmail.com") # entity = dealer.entity # car_list = Car.objects.filter(dealer=dealer).all() # context = { # "items": [ # { # "car": x, # "product": entity.get_items_all() # .filter(item_role=ItemModel.ITEM_ROLE_PRODUCT, name=x.vin) # .first(), # } # for x in car_list # ], # } # for i in car_list: # hash_object = hashlib.sha256() # hash_object.update(f"{i.id_car_make.name}{i.id_car_model.name}".encode('utf-8')) # print(hash_object.hexdigest() , i.id_car_make.name, i.id_car_model.name) def get_item(tx:ItemTransactionModel): data = {"data": {}} data["data"]["info"] = tx.item_model.additional_info.get('car_info') data["data"]["finance"] = tx.item_model.additional_info.get('car_finance') if tx.has_estimate(): data["data"]["estimate"] = tx.ce_model data["data"]["has_estimate"] = True data["data"]["customer"] = tx.ce_model.customer if tx.has_invoice(): data["data"]["invoice"] = tx.invoice_model data["data"]["has_invoice"] = True data["data"]["customer"] = tx.invoice_model.customer return data transactions = ItemTransactionModel.objects.all() output = [] for transaction in transactions: output.append(get_item(transaction)) print(output) # info = item.additional_info["car_info"] # finance = item.additional_info["car_finance"] # print({"vin":info["make"],"mode":info["model"],"year":info["year"],"trim":info["trim"],"mileage":info["mileage"],"cost_price":finance["cost_price"],"selling_price":finance["selling_price"]})