Beispiel #1
0
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/')
Beispiel #2
0
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')
Beispiel #3
0
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()
Beispiel #4
0
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)
Beispiel #6
0
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/')
Beispiel #7
0
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)
Beispiel #8
0
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')
Beispiel #9
0
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='******'))
Beispiel #10
0
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)
Beispiel #11
0
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)
    }
Beispiel #12
0
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")
Beispiel #13
0
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)
Beispiel #14
0
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")
Beispiel #15
0
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')
Beispiel #16
0
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")
Beispiel #17
0
 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
Beispiel #18
0
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()
Beispiel #19
0
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()
Beispiel #20
0
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()
Beispiel #21
0
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)
Beispiel #22
0
 def get_company_name(company):
     if not company:
         return ''
     sme = get_or_none(Sme, id=company)
     if not sme:
         return ''
     return sme.get_name()
Beispiel #23
0
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)
Beispiel #24
0
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
Beispiel #25
0
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()
Beispiel #26
0
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")
Beispiel #27
0
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()
Beispiel #28
0
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')
Beispiel #29
0
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
        })
Beispiel #30
0
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")