def upload_driver_docs(request): token = get_or_none(Token, key=request.POST.get('Authorization')) if not isinstance(token, Token): return HttpResponseRedirect('/login/') try: driver_id = int_or_none(request.POST.get('driver', None)) document_category = request.POST.get('document_category', None) if not driver_id: return json_error_response('driver_id id not provided', status=400) if not document_category: return json_error_response('document category id not provided', status=400) driver = get_or_none(Driver, id=driver_id) if not driver: return json_error_response('Driver with id=%s not found' % driver, status=404) if not request.FILES: return json_error_response('no file to upload', status=400) upload_file = request.FILES.get('file') driver_files = create_driver_file(driver, document_category, upload_file, token.user) return upload_json_response(request, data={'files': [serialize(driver_files)]}) except UnreadablePostError: return HttpResponseRedirect('/upload/upload-driver-document-page/')
def update_supplier_vehicle_data(): for supplier in Supplier.objects.filter(id__gte=2754): broker = get_or_none(Broker, name=supplier.user) owner = get_or_none(Owner, name=supplier.user) if isinstance(owner, Owner): supplier.pan = owner.pan supplier.save() for ov in owner.vehicle_owner.all(): s_vehicle = get_or_none(s_Vehicle, vehicle_number=ov.vehicle_number) if isinstance(s_vehicle, s_Vehicle): SupplierVehicle.objects.create( supplier=supplier, ownership='O', vehicle=s_vehicle, created_by=User.objects.get(username='******'), changed_by=User.objects.get(username='******') ) if isinstance(broker, Broker): for bv in broker.broker_vehicle.all(): vehicle_number = compare_format(bv.vehicle.vehicle_number) s_vehicle = get_or_none(s_Vehicle, vehicle_number=vehicle_number) if isinstance(s_vehicle, s_Vehicle) and not SupplierVehicle.objects.filter(supplier=supplier, vehicle=s_vehicle, ownership='B').exists(): SupplierVehicle.objects.create(supplier=supplier, vehicle=s_vehicle, ownership='B')
def save_sme_address(sme, address_data): line1 = address_data.get('line1', None) line2 = address_data.get('line2', None) line3 = address_data.get('line3', None) pin = address_data.get('pin', None) landmark = address_data.get('landmark', None) city_data = address_data.get('city', None) city_id = None if not city_data else city_data.get('id', None) city = None if not city_id else get_or_none(City, id=city_id) if not line1 or not city: return req_address_id = address_data.get('id', None) try: req_address_id = int(req_address_id) except ValueError: req_address_id = None address_id = req_address_id or sme.address_id address = None if not address_id else (get_or_none(Address, id=address_id) or Address()) address.line1 = line1 address.line2 = line2 address.line3 = line3 address.pin = pin address.landmark = landmark address.city_id = city.id address.save() sme.address = address sme.save()
def save_commission_only(request): booking = ManualBooking() booking.booking_id = get_commission_only_booking_id() try: sme = Sme.objects.get(id=request.POST.get('customer')) booking.company = sme booking.company_code = sme.company_code except Sme.DoesNotExist: sme = None company_code = request.POST.get('company_code') if not is_blank(company_code): booking.company_code = company_code booking.source_office = AahoOffice.objects.get( id=request.POST.get('source_office')) booking.destination_office = AahoOffice.objects.get( id=request.POST.get('destination_office')) booking.supplier = get_or_none(Broker, id=request.POST.get('supplier_id')) booking.owner = get_or_none(Owner, id=request.POST.get('truck_owner_id')) booking.driver = get_or_none(Driver, id=request.POST.get('truck_driver_id')) save_consignment_details(request, booking) save_rate_details(request, booking) save_vendor_deduction(request, booking) save_additional_charges(request, booking) save_status_details(request, booking) booking.created_by = User.objects.get(username=request.user.username) booking.save() save_vehicle_details( vehicle_number=request.POST.get('lorry_number'), vehicle_category_id=request.POST.get('vehicle_category_id'), supplier=request.POST.get('supplier_id'), owner=request.POST.get('truck_owner_id'), driver=request.POST.get('truck_driver_id')) save_vendor_details(booking) return booking
def check_multiple_owner_vehicle(): ManualBooking.objects.filter( Q(truck_owner_name=None) | Q(truck_owner_name='')).exclude( booking_status='cancelled').update(truck_owner_name=None) ManualBooking.objects.filter( Q(truck_owner_phone=None) | Q(truck_owner_phone='')).exclude( booking_status='cancelled').update(truck_owner_phone=None) for vehicle in o_vehicle.objects.all(): if vehicle.manualbooking_set.filter( shipment_date__gte='2017-12-01').exclude( booking_status='cancelled').count() > 0: booking_owner_name = set( vehicle.manualbooking_set.exclude( truck_owner_name=None).exclude( booking_status='cancelled').values_list( 'truck_owner_name', flat=True)) booking_owner_phone = set( vehicle.manualbooking_set.exclude( truck_owner_phone=None).exclude( booking_status='cancelled').values_list( 'truck_owner_phone', flat=True)) lorry_number = set( vehicle.manualbooking_set.exclude( lorry_number=None).values_list('lorry_number', flat=True)) if len(booking_owner_phone) == 1 and not vehicle.owner: booking_owner_phone = list(booking_owner_phone)[0] user = get_or_none(User, username=booking_owner_phone) owner = Owner.objects.filter( Q(name__profile__phone=booking_owner_phone)) print(booking_owner_name, booking_owner_phone, lorry_number, vehicle.owner, get_or_none(User, username=booking_owner_phone), owner)
def create_beneficiary_account(request): account_number = request.POST.get('account_number') bank = get_or_none(Bank, account_number=account_number) if bank: return render(request=request, template_name='team/registrations/beneficiary_exists.html', context={'bank': bank}) try: account_document = request.FILES['account_document'] except MultiValueDictKeyError: account_document = None bank = Bank.objects.create( bank=request.POST.get('bank_name'), user=get_or_none(User, id=request.POST.get('registered_user')), account_holder_name=request.POST.get('account_holder_name'), beneficiary_code=request.POST.get('beneficiary_code'), account_number=account_number, transaction_type=request.POST.get('transaction_type'), account_type=request.POST.get('account_type'), ifsc=request.POST.get('ifsc'), address=request.POST.get('address'), city=request.POST.get('city'), ) email_add_new_beneficiary(bank=bank) if account_document: filename = '%s.%s' % (account_number, get_ext(account_document.name)) s3util.save_to_s3_uploads_bank_doc(filename, account_document) return HttpResponseRedirect('/team/beneficiary-list/')
def vehicle_booking_summary_data(user_id=None, vehicle_id=None): data = { 'pending_pod': { 'balance': 0, 'amount_paid': 0, 'total_amount': 0, 'number_of_booking': 0 }, 'delivered_pod': { 'balance': 0, 'amount_paid': 0, 'total_amount': 0, 'number_of_booking': 0 }, 'completed_booking': { 'total_amount': 0, 'number_of_booking': 0 } } supplier = get_or_none(Supplier, user_id=user_id) vehicle = get_or_none(Vehicle, id=vehicle_id) if not isinstance(supplier, Supplier) and not isinstance(vehicle, Vehicle): return data if isinstance(vehicle, Vehicle): bookings = ManualBooking.objects.filter( booking_supplier=supplier, supplier_vehicle=vehicle, shipment_date__gte='2017-12-01').exclude( Q(booking_status='cancelled') | Q(deleted=True)) else: bookings = ManualBooking.objects.none() return booking_summary_data(bookings)
def create_broker_vehicle(): for supplier in Supplier.objects.all(): broker = get_or_none(Broker, name=supplier.user) if isinstance(broker, Broker): for bv in broker.broker_vehicle.all(): vehicle_number = compare_format(bv.vehicle.vehicle_number) s_vehicle = get_or_none(s_Vehicle, vehicle_number=vehicle_number) if isinstance(s_vehicle, s_Vehicle) and not SupplierVehicle.objects.filter(supplier=supplier, vehicle=s_vehicle, ownership='B').exists(): SupplierVehicle.objects.create(supplier=supplier, vehicle=s_vehicle, ownership='B')
def merge_owner_data(): oo = Owner.objects.get(id=2305) do = Owner.objects.get(id=2243) supplier = get_or_none(Supplier, user=oo.name) for vehicle in do.vehicle_owner.all(): s_vehicle = get_or_none(s_Vehicle, vehicle_number=compare_format(vehicle.vehicle_number)) if isinstance(s_vehicle, s_Vehicle): if not SupplierVehicle.objects.filter(vehicle=s_vehicle, ownership='O').exists(): SupplierVehicle.objects.create(vehicle=s_vehicle, supplier=supplier, ownership='O', created_by=User.objects.get(username='******'), changed_by=User.objects.get(username='******'))
def merge_owner_in_web(): oo = Owner.objects.get(id=2305) do = Owner.objects.get(id=2243) supplier = get_or_none(Supplier, user=oo.name) db = get_or_none(Broker, name=do.name) if isinstance(db, Broker): ManualBooking.objects.filter(supplier=db).update(booking_supplier=supplier, accounting_supplier=supplier) CreditNoteSupplier.objects.filter(broker=db).update(accounting_supplier=supplier) DebitNoteSupplier.objects.filter(broker=db).update(accounting_supplier=supplier) CreditNoteCustomerDirectAdvance.objects.filter(broker=db).update(accounting_supplier=supplier) ManualBooking.objects.filter(owner=do).update(owner_supplier=supplier) OwnerFile.objects.filter(owner=do).update(supplier=supplier)
def invoice_form_data(request): customer = get_or_none(Sme, id=request.POST.get('to_be_billed_to')) return { 'billing_address': request.POST.get('billing_address'), 'invoice_city': request.POST.get('invoice_city'), 'pin_code': request.POST.get('invoice_pin'), 'to_be_billed_to': customer.id if isinstance(customer, Sme) else '', 'party_invoice_date': request.POST.get('billing_invoice_date'), 'gst_liability': request.POST.get('gst_liability'), 'advance_from_company': request.POST.get('advance_from_company'), 'created_by': get_or_none(User, username=request.user.username) }
def update_supplier(request): supplier = get_or_none(Broker, id=int_or_none(request.POST.get('supplier_id'))) phone_status, msg = verify_profile_phone( username=supplier.name.username, phone=request.POST.get('contact_person_number'), alt_phone=request.POST.get('alternate_number')) if phone_status: return json_error_response(msg=msg, status=409) email_status, msg = verify_profile_email(username=supplier.name.username, email=request.POST.get('email'), alt_email=None) if email_status: return json_error_response(msg=msg, status=409) if request.POST.get('pan') and Broker.objects.exclude( name=supplier.name).filter(pan=request.POST.get('pan')).exists(): return json_error_response("PAN Already exists", status=409) profile = Profile.objects.get(user=supplier.name) profile.name = request.POST.get('supplier_name') profile.contact_person_name = request.POST.get('contact_person_name') profile.phone = request.POST.get('phone') profile.alternate_phone = request.POST.get('alt_phone') profile.email = request.POST.get('email') profile.comment = request.POST.get('remarks') profile.save() create_update_profile( user=supplier.name, name=request.POST.get('supplier_name'), contact_person=request.POST.get('contact_person_name'), contact_person_phone=request.POST.get('contact_person_number'), phone=request.POST.get('contact_person_number'), alternate_phone=request.POST.get('alternate_number'), email=request.POST.get('email'), remarks=request.POST.get('remarks')) supplier.pan = request.POST.get('pan') supplier.route = request.POST.get('route') supplier.city = get_or_none(City, id=int_or_none( request.POST.get('supplier_city'))) supplier.aaho_office = get_or_none(AahoOffice, id=request.POST.get('aaho_office')) supplier.destination_state.clear() dest_states = request.POST.getlist('destination_states[]') if dest_states: if 'select_all' in dest_states: dest_states = State.objects.values_list('id', flat=True) for dest_state in dest_states: supplier.destination_state.add(dest_state) supplier.save() return json_success_response("success")
def update_manualbooking_supplier_data(): for booking in ManualBooking.objects.order_by('-id'): if isinstance(booking.supplier, Broker): booking_supplier = get_or_none(Supplier, user=booking.supplier.name) else: booking_supplier = None if isinstance(booking.owner, Owner): owner_supplier = get_or_none(Supplier, user=booking.owner.name) else: owner_supplier = None ManualBooking.objects.filter(id=booking.id).update(booking_supplier=booking_supplier, accounting_supplier=booking_supplier, owner_supplier=owner_supplier)
def register_owner(request): username = "".join(re.split("[^a-zA-Z]*", request.POST.get('owner_name')))[:12] owner_name = request.POST.get('owner_name') pan = request.POST.get('pan') if User.objects.filter(username__iexact=username).exists(): username = random.randrange(999999999999, 99999999999999) # if owner_name in Owner.objects.values_list('name__profile__name', flat=True): # return json_error_response(msg='Owner {} already exists'.format(request.POST.get('owner_name')), status=409) # if request.POST.get('pan') in Owner.objects.values_list('pan', flat=True): # return json_error_response(msg='Pan {} already exists for {}'.format(owner_name, ''.join( # Owner.objects.filter(pan=pan).values_list('name__profile__name', flat=True))), status=409) # # if Vehicle.objects.filter(id__in=request.POST.getlist('vehicle_id[]')).exclude(owner=None): # print (Vehicle.objects.filter(id__in=request.POST.getlist('vehicle_id[]')).exclude(owner=None)) user = User.objects.create_user(username=str(username).lower(), password='******') Profile.objects.create( user=user, name=request.POST.get('owner_name'), phone=request.POST.get('owner_phone', None), contact_person_name=request.POST.get('contact_person_name'), contact_person_phone=request.POST.get('contact_person_phone'), alternate_phone=request.POST.get('alternate_number'), email=request.POST.get('email'), comment=request.POST.get('remarks')) owner = Owner.objects.create( name=user, address=Address.objects.create( line1=request.POST.get('owner_address'), city=get_or_none(City, id=int_or_none(request.POST.get('city'))), pin=request.POST.get('pin', None)), route_temp=request.POST.get('route'), pan=request.POST.get('pan')) Broker.objects.create(name=user, address=Address.objects.create( line1=request.POST.get('owner_address'), city=get_or_none(City, id=int_or_none( request.POST.get('city'))), pin=request.POST.get('pin', None)), route=request.POST.get('route'), pan=request.POST.get('pan')) try: for vehicle in Vehicle.objects.filter( id__in=request.POST.getlist('vehicle_id[]')): vehicle.owner = owner vehicle.save() except ValueError: pass return json_success_response(msg="success")
def register_customer(request): if request.POST.get('email_id') and Profile.objects.filter( email__iexact=request.POST.get('email_id')).exists(): return json_error_response('Email ID Already Exists', status=409) elif Profile.objects.filter( name__iexact=request.POST.get('company_name')).exists(): return json_error_response('Company Already Registered', status=409) # elif Profile.objects.filter(phone__iexact=request.POST.get('contact_person_number')).exists(): # return json_error_response('Phone Already Exists', status=409) elif Sme.objects.filter( company_code__iexact=request.POST.get('company_code')).exists(): return json_error_response('Company Code Already Exists', status=409) else: username = "".join( re.split("[^a-zA-Z]*", request.POST.get('company_name')))[:12] if User.objects.filter(username__iexact=username).exists(): username = random.randrange(999999999999, 99999999999999) user = User.objects.create_user(username=str(username).lower(), password='******') create_update_profile( user=user, name=request.POST.get('company_name'), contact_person=request.POST.get('contact_person_name'), contact_person_phone=request.POST.get('contact_person_number'), phone=request.POST.get('contact_person_number'), alternate_phone=request.POST.get('alternate_number'), email=request.POST.get('email_id'), remarks=request.POST.get('remarks')) Sme.objects.create( name=user, company_code=request.POST.get('company_code'), aaho_office=get_or_none(AahoOffice, id=request.POST.get('aaho_office')), gstin=request.POST.get('gstin', None), aaho_poc=get_or_none(Employee, id=int_or_none(request.POST.get('aaho_poc'))), credit_period=request.POST.get('credit_period', None), address=create_update_address( line1=request.POST.get('company_address'), city=get_or_none(City, id=int_or_none(request.POST.get('city'))), pin=request.POST.get('pin')), is_gst_applicable='no' if request.POST.get('is_gst_applicable') == 'n' else 'yes', customer_address=request.POST.get('company_address'), city=get_or_none(City, id=int_or_none(request.POST.get('city'))), pin=request.POST.get('pin'), created_by=request.user) return json_success_response('SME Successfully Registered')
def register_vehicle(request): if Vehicle.objects.filter(vehicle_number=compare_format( request.POST.get('vehicle_number'))).exists(): return json_error_response(msg="Vehicle Already Exists", status=409) owner = get_or_none(Owner, id=int_or_none(request.POST.get('owner_id', None))) vehicle = Vehicle.objects.create( owner=owner, vehicle_number=compare_format(request.POST.get('vehicle_number')), rc_number=request.POST.get('rc_number'), permit=request.POST.get('permit_number'), permit_validity=django_date_format( request.POST.get('permit_validity')), permit_type=request.POST.get('permit_type'), vehicle_type=get_or_none(VehicleCategory, id=int_or_none( request.POST.get('vehicle_category'))), vehicle_capacity=to_int(request.POST.get('exact_vehicle_capacity')), body_type=request.POST.get('vehicle_body_type'), vehicle_model=request.POST.get('vehicle_model'), chassis_number=request.POST.get('chassis_number'), engine_number=request.POST.get('engine_number'), insurer=request.POST.get('insurer'), insurance_number=request.POST.get('insurance_number'), insurance_validity=django_date_format( request.POST.get('insurance_validity')), registration_year=None if not request.POST.get('registration_year') else django_date_format('01-Jan-' + request.POST.get('registration_year').strip()), registration_validity=django_date_format( request.POST.get('registration_validity')), fitness_certificate_number=request.POST.get( 'fitness_certificate_number'), fitness_certificate_issued_on=django_date_format( request.POST.get('fitness_certificate_issued_on')), fitness_certificate_validity_date=django_date_format( request.POST.get('fitness_certificate_validity')), puc_certificate_number=request.POST.get('puc_certificate_number'), puc_certificate_issued_on=django_date_format( request.POST.get('puc_certificate_issued_on')), puc_certificate_validity_date=django_date_format( request.POST.get('puc_certificate_validity')), gps_enabled=False if request.POST.get('gps_enable') == 'no' else True, changed_by=request.user) if owner: create_broker_owner(owner=owner) broker = Broker.objects.get(name=owner.name) update_broker_vehicle(broker=broker, vehicle=vehicle) return json_success_response(msg="Success")
def get_type_of_vehicle(self, obj): type_of_vehicle = get_or_none(VehicleCategory, id=int_or_none(obj.type_of_vehicle_id)) if not type_of_vehicle: vehicle_name = '' else: vehicle_name = type_of_vehicle.name() return vehicle_name
def update_credit_note_customer_direct_advance(request, pk): data = json.loads(request.body.decode('utf-8')) data["changed_by"] = request.user.username credit_note_customer_direct_advance = get_or_none( CreditNoteCustomerDirectAdvance, id=pk) if not isinstance(credit_note_customer_direct_advance, CreditNoteCustomerDirectAdvance): return json_400_incorrect_use() if data['status'] == 'approved' and credit_note_customer_direct_advance.bookings.count( ) == 1: data[ 'adjusted_amount'] = credit_note_customer_direct_advance.credit_amount data['status'] = 'adjusted' data['adjusted_by'] = request.user.username data['adjusted_on'] = datetime.now() if Invoice.objects.filter( bookings__in=credit_note_customer_direct_advance.bookings.all( )).exists(): data['invoice'] = Invoice.objects.filter( bookings__in=credit_note_customer_direct_advance.bookings.all( )).last().id credit_note_customer_direct_advance_serializer = CreditNoteCustomerDirectAdvanceSerializer( instance=credit_note_customer_direct_advance, data=data, partial=True) if credit_note_customer_direct_advance_serializer.is_valid(): credit_note_customer_direct_advance_serializer.save() return json_success_response(msg='success') return json_400_incorrect_use()
def email_commission_booking(booking): from_city = booking.from_city to_city = booking.to_city vehicle_number = booking.lorry_number driver_name = booking.driver_name driver_phone = booking.driver_phone driver_dl = booking.driver_dl_number supplier_name = booking.truck_broker_owner_name supplier_phone = booking.truck_broker_owner_phone weight = str(booking.charged_weight) supplier_rate = str(booking.supplier_rate) party_rate = str(booking.party_rate) try: sme = booking.company if sme: profile = get_or_none(Profile, user=sme.name) company = ('' if not profile else profile.name) or '' else: company = '' except Sme.DoesNotExist: company = '' subject = 'Comm. only booking from ' + from_city + ' to ' + to_city + ' Date: ' + booking.shipment_date.strftime( '%d-%b-%Y') + ' for ' + company body = ' Company Name: ' + company + '\n From City: ' + from_city + '\n To City: ' + to_city + '\n Vehicle Number: ' + vehicle_number + '\n Driver Name: ' + driver_name + '\n Driver Phone: ' + driver_phone + '\n Driver DL No.: ' + driver_dl + '\n Supplier Name: ' + supplier_name + '\n Supplier Phone: ' + supplier_phone + '\n Weight: ' + weight + '\n Supplier Rate: ' + supplier_rate + '\n Party Rate: ' + party_rate to_email_list = get_email_list(booking, task_id=3) email = EmailMessage(subject, body, 'AAHO LR', to=to_email_list) if settings.ENABLE_MAIL and not settings.TESTING: email.send()
def update_vehicle(broker_vehicle_id, vehicle_number, supplier, vehicle_owner, driver, vehicle_type): broker_vehicle = get_or_none(BrokerVehicle, id=broker_vehicle_id) if broker_vehicle: broker_vehicle.broker = get_or_none(Broker, id=supplier) broker_vehicle.save() vehicle = get_or_none(Vehicle, vehicle_number=compare_format(vehicle_number)) if vehicle: driver = None if not driver else get_or_none(Driver, id=driver) Vehicle.objects.filter(driver=driver).update(driver=None) vehicle.driver = driver vehicle.owner = None if not vehicle_owner else get_or_none( Owner, id=vehicle_owner) # vehicle.vehicle_category = None if not vehicle_type else get_or_none(VehicleCategory, id=vehicle_type) vehicle.save()
def register(request): data = request.data device_id = data.get('device_id', None) if not device_id: return json_response( { 'status': 'error', 'msg': 'cannot register without device id' }, status=400) driver_name = data.get('driver_name', None) driver_number = data.get('driver_number', None) vehicle_number = data.get('vehicle_number', None) vehicle_type = data.get('vehicle_type', None) driver_number = None if not driver_number else driver_number.strip() created = False try: driver_app_user = DriverAppUser.objects.get(device_id=device_id) except DriverAppUser.DoesNotExist: driver_app_user = DriverAppUser(device_id=device_id) created = True if driver_number and driver_number != driver_app_user.driver_number: driver_app_user.number_verified = False driver = get_or_none(Driver, phone=driver_number) driver_app_user.driver_name = driver_name driver_app_user.driver_number = driver_number driver_app_user.vehicle_number = vehicle_number driver_app_user.vehicle_type = vehicle_type driver_app_user.driver = driver driver_app_user.save() vehicle = set_vehicle_driverapp_user(driver_app_user) data = { 'imei': data.get('device_id', None), 'device_id': data.get('device_id', None), 'driver_name': driver_name, 'driver_number': driver_number, 'vehicle_number': vehicle_number, 'vehicle': vehicle.id if isinstance(vehicle, Vehicle) else None, 'driver': driver.id if isinstance(driver, Driver) else None, 'vehicle_type': vehicle_type, 'device_provider': 7 } gps_device_serializer = GPSDeviceSerializer(data=data) if gps_device_serializer.is_valid(): gps_device_serializer.save() print(gps_device_serializer.errors) data = merge( { 'status': 'success', 'msg': 'registered' if created else 'registration updated', 'auth_token': driver_app_user.auth_token, }, driver_app_data(driver_app_user)) return json_response(data)
def get_company_name(company): if not company: return '' sme = get_or_none(Sme, id=company) if not sme: return '' return sme.get_name()
def add_supplier_owner(): owner = Owner.objects.get(id=2424) supplier = get_or_none(Supplier, user=owner.name) if not isinstance(supplier, Supplier): supplier = Supplier.objects.create(user=owner.name, pan=owner.pan, city=owner.city, changed_by=owner.changed_by, created_by=owner.created_by) ManualBooking.objects.filter(owner=owner).update(owner_supplier=supplier) for o_vehicle in owner.vehicle_owner.all(): s_vehicle = get_or_none(s_Vehicle, vehicle_number=o_vehicle.vehicle_number) if isinstance(s_vehicle, s_Vehicle) and not SupplierVehicle.objects.filter(supplier=supplier, vehicle=s_vehicle, ownership='O'): SupplierVehicle.objects.create(supplier=supplier, vehicle=s_vehicle, ownership='O', changed_by=owner.changed_by, created_by=owner.created_by) if isinstance(s_vehicle, s_Vehicle): VehicleFile.objects.filter(vehicle=o_vehicle).update(supplier_vehicle=s_vehicle)
def create_update_address(line1, line2=None, line3=None, city=None, pin=None, address_id=None, latitude=None, longitude=None, landmark=None): if address_id: address = get_or_none(Address, id=int_or_none(address_id)) Address.objects.filter(id=int_or_none(address_id)).update( line1=line1, line2=line2, line3=line3, city=city, pin=pin, latitude=latitude, longitude=longitude, landmark=landmark) else: address = Address.objects.create(line1=line1, line2=line2, line3=line3, city=city, pin=pin, latitude=latitude, longitude=longitude, landmark=landmark) return address
def send_customer_welcome_email(sme_id): sme = get_or_none(Sme, id=sme_id) if not isinstance(sme, Sme): return client = get_client() s3_obj1 = client.get_object(Bucket='aahodocuments', Key='company_docs/PAN Card.jpg') s3_obj2 = client.get_object( Bucket='aahodocuments', Key='company_docs/Trans IQ TDS Declaration FY18-19.pdf') s3_obj3 = client.get_object( Bucket='aahodocuments', Key='company_docs/Udyog Aadhaar Acknowledgement.xps') subject = 'Welcome to Aaho Trucking!' body = get_template( 'team/emails/customer_welcome_email_template.html').render( context={'customer_cp': to_int(sme.credit_period)}) email = EmailMessage(subject, body, to=[sme.sme_email]) email.content_subtype = 'html' email.attach('PAN Card.jpg', s3_obj1['Body'].read(), "application/jpeg") email.attach('Trans IQ TDS Declaration FY18-19.pdf', s3_obj2['Body'].read(), "application/pdf") email.attach('Udyog Aadhaar Acknowledgement.xps', s3_obj3['Body'].read(), "application/oxps") if settings.ENABLE_MAIL and not settings.TESTING: email.send()
def add_gps_device_to_broker(vehicle_number, username='******'): broker = Broker.objects.get(name__username=username) vehicle = get_or_none(Vehicle, vehicle_number=vehicle_number) if vehicle: if not BrokerVehicle.objects.filter(broker=broker, vehicle=vehicle).exists(): BrokerVehicle.objects.create(broker=broker, vehicle=vehicle) logging.info(msg="Vehicle Attached")
def update_cns(): for cns in CreditNoteSupplier.objects.all(): supplier = get_or_none(Supplier, user=cns.broker.name) if cns.broker else None if isinstance(supplier, Supplier) and not CreditNoteSupplier.objects.filter( accounting_supplier=supplier).exists(): print(cns) cns.accounting_supplier = supplier cns.save()
def register_supplier(request): if request.POST.get('email_id') and Profile.objects.filter( email__iexact=request.POST.get('email_id')).exists(): return json_error_response('Email ID Already Exists', status=409) elif Profile.objects.filter( name__iexact=request.POST.get('supplier_name')).exists(): return json_error_response('Supplier Already Registered', status=409) elif Profile.objects.filter( phone=request.POST.get('contact_person_number')).exists(): return json_error_response('Phone Already Exists', status=409) elif request.POST.get('pan') and TaxationID.objects.filter( pan__iexact=request.POST.get('pan')).exists(): return json_error_response('PAN Already Exists', status=409) else: username = "".join( re.split("[^a-zA-Z]*", request.POST.get('supplier_name')))[:12] if User.objects.filter(username__iexact=username).exists(): username = random.randrange(999999999999, 99999999999999) user = User.objects.create_user(username=str(username).lower(), password='******') create_update_profile( user=user, name=request.POST.get('supplier_name'), contact_person=request.POST.get('contact_person_name'), contact_person_phone=request.POST.get('contact_person_number'), phone=request.POST.get('contact_person_number'), alternate_phone=request.POST.get('alternate_number'), email=request.POST.get('email_id'), remarks=request.POST.get('remarks')) instance = Broker.objects.create( name=user, city=get_or_none(City, id=int_or_none( request.POST.get('supplier_city'))), route=request.POST.get('route'), taxation_details=None if not request.POST.get('pan') else TaxationID.objects.create(pan=request.POST.get('pan')), aaho_office=get_or_none(AahoOffice, id=request.POST.get('aaho_office'))) dest_states = request.POST.getlist('destination_states[]') if dest_states: if 'select_all' in dest_states: dest_states = State.objects.values_list('id', flat=True) for dest_state in dest_states: instance.destination_state.add(dest_state) return json_success_response('Supplier Successfully Registered')
def full_booking_invoice_page(request): customer = get_or_none(Sme, id=request.GET.get('customer_to_be_billed')) bookings = ManualBooking.objects.filter(customer_to_be_billed_to=customer.id).exclude(party_rate=0). \ exclude(charged_weight=0).exclude(booking_status='cancelled').exclude(deleted=True).order_by('shipment_date') user_group = EMP_GROUP1 if EMP_GROUP2 == user_group or EMP_GROUP3 == user_group: bookings = bookings.exclude(billing_type='contract') message = None message_next_page_dict = {} list_of_ids = [] for booking in bookings: if not check_invoice_status(booking): list_of_ids.append(booking.id) bookings = ManualBooking.objects.filter( id__in=list_of_ids).order_by('shipment_date') if bookings: if 0 in bookings.values_list('total_amount_to_company', flat=True): booking_id_with_zero_amount = bookings.filter( total_amount_to_company=0).values_list('booking_id', flat=True) inward_msg = [] for bking in booking_id_with_zero_amount: inward_msg.append(bking) message_next_page = '*Inward Amount is not update for {}'.format( bking) message_next_page_dict.update({bking: message_next_page}) gst_liability = bookings.last().gst_liability booking_ids = ','.join(map(str, bookings.values_list('id', flat=True))) invoice_data = get_invoice_data(bookings, 'full') comment_list = get_comment_list(bookings, invoice_data) invoice_amount_data = get_amount_data(bookings=bookings, booking_type='full') else: message = '*No bookings found for Customer {} who will make payment'.format( customer.get_name()) gst_liability = '' booking_ids = '' invoice_data = '' comment_list = '' invoice_amount_data = '' # if message: # messages.error(request, # message=message) # return render(request=request, template_name='team/invoices/fetch_full_booking_invoice_data.html', # context=full_booking_invoice_fetch_data()) return render( request, 'team/invoices/full_booking_invoices.html', { 'booking_data': invoice_data, 'customer': customer, 'gst_liability': gst_liability, 'booking_ids': booking_ids, 'comment_list': comment_list, 'invoice_amount_data': invoice_amount_data, 'message_next_page_dict': message_next_page_dict, 'error_message': message })
def update_vehicle(request): vehicle = Vehicle.objects.get( id=int_or_none(request.POST.get('vehicle_id'))) vehicle.owner = get_or_none(Owner, id=int_or_none( request.POST.get('owner_id', None))) vehicle.vehicle_number = compare_format(request.POST.get('vehicle_number')) vehicle.rc_number = request.POST.get('rc_number') vehicle.permit = request.POST.get('permit_number') vehicle.permit_validity = django_date_format( request.POST.get('permit_validity')) vehicle.permit_type = request.POST.get('permit_type') vehicle.vehicle_type = get_or_none( VehicleCategory, id=int_or_none(request.POST.get('vehicle_category'))) vehicle.vehicle_capacity = to_int( request.POST.get('exact_vehicle_capacity')) vehicle.body_type = request.POST.get('vehicle_body_type') vehicle.vehicle_model = request.POST.get('vehicle_model') vehicle.chassis_number = request.POST.get('chassis_number') vehicle.engine_number = request.POST.get('engine_number') vehicle.insurer = request.POST.get('insurer') vehicle.insurance_number = request.POST.get('insurance_number') vehicle.insurance_validity = django_date_format( request.POST.get('insurance_validity')) vehicle.registration_year = None if not request.POST.get( 'registration_year') else django_date_format( '01-Jan-' + request.POST.get('registration_year').strip()) vehicle.registration_validity = django_date_format( request.POST.get('registration_validity')) vehicle.fitness_certificate_number = request.POST.get( 'fitness_certificate_number') vehicle.fitness_certificate_issued_on = django_date_format( request.POST.get('fitness_certificate_issued_on')) vehicle.fitness_certificate_validity_date = django_date_format( request.POST.get('fitness_certificate_validity')) vehicle.puc_certificate_number = request.POST.get('puc_certificate_number') vehicle.puc_certificate_issued_on = django_date_format( request.POST.get('puc_certificate_issued_on')) vehicle.puc_certificate_validity_date = django_date_format( request.POST.get('puc_certificate_validity')) vehicle.gps_enabled = False if request.POST.get( 'gps_enable') == 'no' else True vehicle.changed_by = request.user vehicle.save() return json_success_response("success")