Esempio n. 1
0
def getPackageCount(request, action):

    packageCount = []
    if not action == "revoked":
        try:
            mm = marketing_member(request)
            subscriber = mm.subscriber
            imprt = ShippingPackage.objects.filter(
                (Q(shipping_chain__subscriber=subscriber)
                 | Q(origin_warehouse__offered_by=subscriber)
                 | Q(destination_warehouse__offered_by=subscriber)),
                Q(ordered=True), Q(is_estimate=False), Q(deleted=False))
        except:
            subscriber = request_subscriber(request)
            imprt = ShippingPackage.objects.filter(
                (Q(shipping_chain__subscriber=subscriber)
                 | Q(origin_warehouse__offered_by=subscriber)
                 | Q(destination_warehouse__offered_by=subscriber)),
                Q(ordered=True), Q(is_estimate=False), Q(deleted=False))
        # Sub_WHM = subscriber.get_warehouses()
        # if Sub_WHM:
        # 	imprt  = ShippingPackage.objects.filter((Q(origin_warehouse__offered_by = subscriber) | Q(destination_warehouse__offered_by = subscriber)), Q(ordered = True), Q(is_estimate=False), Q(deleted=False))
        # else:
        # 	imprt = ShippingPackage.objects.filter(Q(shipping_chain__subscriber=subscriber), Q(ordered = True), Q(is_estimate=False), Q(deleted=False))

        # export = ExportPackage.objects.filter(Q(user__useraccount__marketer = mm), Q(ordered = True), Q(is_estimate=False))
        # export_packages = export.filter(status=action).count()
        packageCount = imprt.filter(status=action).count()

    else:
        try:
            mm = marketing_member(request)
            subscriber = mm.subscriber
            imprt = ShippingPackage.objects.filter(
                (Q(shipping_chain__subscriber=subscriber)
                 | Q(origin_warehouse__offered_by=subscriber)
                 | Q(destination_warehouse__offered_by=subscriber)),
                Q(ordered=True), Q(is_estimate=False), Q(deleted=True))
        except:
            subscriber = request_subscriber(request)
            imprt = ShippingPackage.objects.filter(
                (Q(shipping_chain__subscriber=subscriber)
                 | Q(origin_warehouse__offered_by=subscriber)
                 | Q(destination_warehouse__offered_by=subscriber)),
                Q(ordered=True), Q(is_estimate=False), Q(deleted=True))

        packageCount = imprt.count()
    # packageCount = export_packages + import_packages
    return packageCount
Esempio n. 2
0
def emailtemplate(request):
	try:
		mm = marketing_member(request)
	except:
		mm = request.user.useraccount.marketer
	emailtext = mm.email_text
	return render(request, 'general_client/emaildemo.html', {'emailtext': emailtext})
Esempio n. 3
0
def admin_access(request, user_obj):
    # groups = Group.objects.all()
    # groups.delete()
    # useraccount = UserAccount.objects.filter(user__is_staff = True, marketer = mm)
    # return render(request, 'sokohaliAdmin_snippet/access_table.html', {'useraccount': useraccount})

    #print "rP: ",request.POST
    user_action = request.POST.get('user_action')
    user_action_stripped = str(request.POST.get('user_action')).replace(
        '_', ' ')
    content_type = ContentType.objects.get_for_model(User)
    mm = marketing_member(request)
    useraccount = UserAccount.objects.filter(user__is_staff=True, marketer=mm)
    permission, created = Permission.objects.get_or_create(
        codename=user_action,
        name=user_action_stripped,
        content_type=content_type)

    user_obj = User.objects.get(id=user_obj)

    if request.POST.get('action') == 'add':
        group, created = Group.objects.get_or_create(name=user_action_stripped)
        group.permissions.add(permission)
        user_obj.groups.add(group)
    else:
        group = Group.objects.get(name=user_action_stripped)
        user_obj.groups.remove(group)

    #print "my groups: ", user_obj.groups.all()
    return render(request, 'sokohaliadmin_snippet/access_table.html',
                  {'useraccount': useraccount})
Esempio n. 4
0
def add_funds_volk_card(request):

    template_name = 'volkmann/vei_wallet_card.html'
    mm = marketing_member(request)

    #print form.errors
    return render(request, template_name, {'mm':mm})
Esempio n. 5
0
def pay_with_paypal(request, obj, user, amount_to_pay_D):
    useraccount = UserAccount.objects.get(user=user)
    dollar_exchange_rate = obj.costcalc_instance.dollar_exchange_rate
    amount_to_pay_N = amount_to_pay_D * float(dollar_exchange_rate)
    obj.balance_D -= amount_to_pay_D
    obj.balance_N -= amount_to_pay_N
    obj.balance_paid_D += amount_to_pay_D
    obj.balance_paid_N += amount_to_pay_N
    if useraccount.country == "United States":
        amount_N = amount_to_pay_D
    else:
        amount_N = amount_to_pay_N

    ref_no = creditpurchase_ref(obj.id)

    paypal_obj = MarketerPayment.objects.create(
        user=request.user.useraccount,
        payment_channel="PayPal",
        created_at=datetime.now(),
        message='Payment for package -  %s' % (obj.tracking_number),
        amount=amount_to_pay_D,
        package=obj,
        marketer=marketing_member(request),
        status="Successful")

    # paypal_obj = SokoPay.objects.create(user = user, amount = amount_to_pay_D, purchase_type_1 = 'PayPal',
    #                        purchase_type_2 = 'Add', ref_no = ref_no, bank = 'PayPal', teller_no = obj.tracking_number,
    #                        status = 'Successful', message = 'Applied to %s' %(obj.tracking_number))

    paypal_obj.save()
    obj.save()
    return obj
Esempio n. 6
0
def profile_volk(request, username):
    try:
        shipping_item = ShippingItem.objects.filter(user=request.user)
        count_items = shipping_item.filter(ordered=False).count()
    except:
        count_items = 0

    bvn_no = None
    if request.user.is_staff:
        username = username
    else:
        username = request.user
    mm = marketing_member(request)
    profile = get_object_or_404(UserAccount, user__username=username, marketer=mm)
    if profile.bvn_no != "":
        if profile.bvn_no[-1] == "=":
            bvn_no = value_decryption(profile.bvn_no)
        else:
            bvn_no = None

    # if profile.address_activation_completed:
    # address_string = OperatingCountry.objects.get(country = "uk").delivery_address
    # uk_shipping_address =  address_string %(" Suite No %s, " %profile.suite_no)
    #
    # address_string = OperatingCountry.objects.get(country = "us").delivery_address
    # us_shipping_address =  address_string %("%s" %profile.suite_no)
    #
    # #delivery_addresses = [uk_shipping_address]
    #
    # delivery_addresses = [us_shipping_address, uk_shipping_address]

    mm.storefront_name == "volkmannexpress"
    return render(request, 'volkmann/profile_view.html', {'profile': profile, 'decrypt_bvn_no': bvn_no,
                                                              'count_items': count_items})  # 'delivery_addresses': delivery_addresses},
def custom_password_reset(
        request,
        template_name=None,
        email_template_name='registration/password_reset_email.html',
        subject_template_name='registration/password_reset_subject.txt',
        password_reset_form=CustomPasswordResetForm,
        token_generator=default_token_generator,
        post_reset_redirect=None,
        from_email=None,
        extra_context=None,
        html_email_template_name=None,
        extra_email_context=None):
    # warnings.warn("The password_reset() view is superseded by the "
    #               "class-based PasswordResetView().",
    #               RemovedInDjango21Warning, stacklevel=2)
    marketer = marketing_member(request)
    if post_reset_redirect is None:
        post_reset_redirect = reverse('password_reset_done')
    else:
        post_reset_redirect = resolve_url(post_reset_redirect)
    if request.method == "POST":
        if marketer.storefront_name == "volkmannexpress":
            template_name = 'registration/password_reset_form_volk.html'
        else:
            template_name = 'registration/password_reset_form.html'
        kwargs = {
            'marketer': marketer,
            'subdomain_name': marketer.subdomain_name,
            'storefront_name': marketer.storefront_name
        }
        form = password_reset_form(request.POST, **kwargs)
        if form.is_valid():
            opts = {
                'use_https': request.is_secure(),
                'token_generator': token_generator,
                'from_email': from_email,
                'email_template_name': email_template_name,
                'subject_template_name': subject_template_name,
                'request': request,
                'html_email_template_name': html_email_template_name,
                #'extra_email_context': extra_email_context,
            }
            form.save(**opts)
            return HttpResponseRedirect(post_reset_redirect)
    else:
        form = password_reset_form()
    context = {
        'form': form,
        'title': _('Password reset'),
    }
    if extra_context is not None:
        context.update(extra_context)

    if marketer.storefront_name == "volkmannexpress":
        template_name = 'registration/password_reset_form_volk.html'
    else:
        template_name = 'registration/password_reset_form.html'

    return TemplateResponse(request, template_name, context)
Esempio n. 8
0
def staff_check(request):
    if request.user.is_staff:
        try:
            return marketing_member(
                request) == request.user.useraccount.marketer
        except:
            return True
    return False
Esempio n. 9
0
def getBatchCount(request, status):
    try:
        marketer = marketing_member(request)
        subscriber = marketer.subscriber
    except:
        subscriber = request_subscriber(request)
    return Batch.objects.filter(deleted=False,
                                subscriber=subscriber,
                                status=status).count()
Esempio n. 10
0
def select_payment_option(request):
    try:
        local_pkg = request.session['local_pkg']
        tracking_number = local_pkg.tracking_number
    except:
        tracking_number = request.GET.get('tracking_number')
    mm = marketing_member(request)
    print "mm:", mm
    #print 'tracking_number: ',tracking_number
    return render(request, "soko_pay/select_payment_option.html", {'tracking_number': tracking_number, 'mm': mm})
Esempio n. 11
0
def pay_for_shipments(request):
    context = {}
    try:
        mm = marketing_member(request)
        context['mm'] = mm
    except:
        count_items = 0
    shipments = ShippingPackage.objects.filter(user = request.user, deleted=False)
    context['shipments'] = shipments
    return render(request,'volkmann/payforshipments.html',context)
Esempio n. 12
0
def getMessages(request, status):
    mm = marketing_member(request)
    messageObject = MessageCenter.objects.filter(
        user__useraccount__marketer=mm)
    if status == "New":
        message_count = messageObject.filter(new=True)
    elif status == "replied":
        message_count = messageObject.filter(replied=True)
    else:
        message_count = messageObject.filter(archive=True)
    return message_count.count()
Esempio n. 13
0
def get_unprocessed_packages(request):
    mm = marketing_member(request)
    try:
        mm = marketing_member(request)
        subscriber = mm.subscriber
        unprocessed_packages_count = ShippingPackage.objects.filter(
            (Q(shipping_chain__subscriber=subscriber)
             | Q(origin_warehouse__offered_by=subscriber)
             | Q(destination_warehouse__offered_by=subscriber)),
            Q(ordered=True), Q(is_estimate=False),
            Q(prepared_for_shipping=False)).count()
    except:
        subscriber = request_subscriber(request)
        unprocessed_packages_count = ShippingPackage.objects.filter(
            (Q(shipping_chain__subscriber=subscriber)
             | Q(origin_warehouse__offered_by=subscriber)
             | Q(destination_warehouse__offered_by=subscriber)),
            Q(ordered=True), Q(is_estimate=False),
            Q(prepared_for_shipping=False)).count()
    return unprocessed_packages_count
Esempio n. 14
0
def notificationCount(request, action):
    mm = marketing_member(request)
    counter = 0
    # useraccounts = get_marketing_member_users(request)
    if action == "All":
        counter = ShippingItem.objects.filter(~Q(tag="Shopping"),
                                              user__useraccount__marketer=mm)
    elif action == "Received":
        counter = ShippingItem.objects.filter(~Q(tag="Shopping"),
                                              user__useraccount__marketer=mm,
                                              status="Received")
    return counter.count()
Esempio n. 15
0
def get_active_batches(request):
    try:
        marketer = marketing_member(request)
        subscriber = marketer.subscriber
    except:
        subscriber = request_subscriber(request)
    # print "the subscriber: ",subscriber
    # print "marketer: ",marketer
    new_batch_count = Batch.objects.filter(deleted=False,
                                           subscriber=subscriber,
                                           status="New")
    return new_batch_count.count()
Esempio n. 16
0
def edit_profile_volk(request, username=None):
    # try:
    #    user = User.objects.get(username = username)
    # except User.DoesNotExist:
    #    raise Http404
    try:
        shipping_item = ShippingItem.objects.filter(user=request.user)
        count_items = shipping_item.filter(ordered=False).count()
    except:
        count_items = 0

    mm = marketing_member(request)

    if request.user.is_authenticated():

        if username == "None":
            mm.storefront_name == "volkmannexpress"
            return redirect("/volk/login/?next=" + reverse("general:edit_profile_volk", args=[None]))
        username = request.user
        # user = get_object_or_404(User, username = username)
        user = get_marketing_member_user(request, username)

        if request.method == "POST":
            form = EditProfileForm()
            form = EditProfileForm(request.POST, request.FILES, instance=user.useraccount)
            if form.is_valid():
                # address_book = AddressBook.objects.filter(user = request.user)
                # for a in address_book:
                #    b = AddressBook(title = form.cleaned_data['title'],telephone   = form.cleaned_data['telephone'],\
                #                               address = form.cleaned_data['address'],city = form.cleaned_data['city'], postal_code = form.cleaned_data['postal_code'], state = form.cleaned_data['state'],\
                #                               country     = form.cleaned_data['country'])
                #    b.save()
                form.save()

                # update first and last name of the user
                user.first_name = form.cleaned_data['first_name']
                user.last_name = form.cleaned_data['last_name']
                user.save()

                # if form.cleaned_data['country']:
                #    address = AddressBook.objects.filter(user = request.user)[:0]
                return redirect(reverse("general:profile", args=[username]))
            # print form.errors
        else:
            form = EditProfileForm(instance=user.useraccount)
        mm.storefront_name == "volkmannexpress"
        return render(request, 'volkmann/profile.html',
                          {'form': form, 'user_details': user, 'count_items': count_items})
            # return render(request, 'user_profile/edit_profile.html', {'form': form, 'user_details': user},
    else:
        mm.storefront_name == "volkmannexpress"
        return redirect("/volk/login/?next=" + reverse("general:edit_profile_volk", args=[None]))
Esempio n. 17
0
def edit_emailtemplate(request):
	try:
		mm = marketing_member(request)
	except:
		mm = request.user.useraccount.marketer
	if request.user.is_authenticated():
		if request.method == "POST":
			form = EmailTextForm(request.POST, instance = mm)
			if form.is_valid():
				form.save()
				return redirect(reverse('service_provider:emailtemplate_setup'))
			else:
				print form.errors
		else:
			form = EmailTextForm(instance=mm)
		return render (request, 'sokohaliAdmin/emailform.html', {'form':form})
Esempio n. 18
0
def editFAQ(request):
	try:
		mm = marketing_member(request)
	except:
		mm = request.user.useraccount.marketer
	if request.user.is_authenticated():
		if request.method == "POST":
			form = FAQForm(request.POST, instance = mm)
			if form.is_valid():
				form.save()
				return redirect(reverse('general:faq'))
			else:
				print form.errors
		else:
			form = FAQForm(instance=mm)
		return render (request, 'sokohaliAdmin/faqform.html', {'form':form})
Esempio n. 19
0
def calculate_last_mile_charges(request, pkg, origin, destination, direction):
    mm = marketing_member(request)

    print 'origin -- destination:', origin, destination
    if origin == 'United States':
        lb_country = destination
    elif request.session.has_key('lb_country'):
        lb_country = request.session.get('lb_country')
    else:
        lb_country = origin

    costcalc = marketingmember_costcalc(request, lb_country)
    WHaddress = request.session.get('WHaddress')
    print "wha2:", WHaddress
    Location = WarehouseLocation.objects.get(id=WHaddress)
    print "la:", Location
    distributor = mm.get_route_shipping_distributor(origin, destination,
                                                    direction)
    print 'calculate_last_mile_charges | distributor: ', distributor
    if distributor == None:
        pick_up_charge_D = pick_up_charge_N = 0.0
        return pick_up_charge_D, pick_up_charge_N
    elif distributor.has_api:
        print "its here"
        destZipCode = Location.zip_code
        print "DZC:", destZipCode
        pick_up_charge_D = get_pickup_charge(request, pkg, "usps", destZipCode)
        print "pick_up_charge_D: ", pick_up_charge_D
        print type(pick_up_charge_D)
        if type(pick_up_charge_D) != str or type(pick_up_charge_D) != int:
            pick_up_charge_D = 0.0
        else:
            pass
        pick_up_charge_N = float(pick_up_charge_D) * float(
            costcalc.dollar_exchange_rate)
        # del request.session['WHaddress']
        return pick_up_charge_D, pick_up_charge_N
    else:
        #return get_local_freight_from_state(request, pkg.box_weight_higher(), distributor.id)
        # print "pkg: ",pkg
        # print "got here"
        print "state of origin:", pkg.delivery_address.state
        # print "weight:",pkg.box_weight_higher()
        return get_local_freight_from_state_hd(request,
                                               pkg.box_weight_higher(),
                                               pkg.delivery_address.state,
                                               destination)
Esempio n. 20
0
def add_funds_volk(request):

    template_name = 'volkmann/vei_wallet.html'
    mm = marketing_member(request)
    
    ref_no      = creditpurchase_ref(request)
    todaysdate  = datetime.now()
    form        = MarketerPaymentForm()
    print request.POST
    if request.method == 'POST':
        form    = MarketerPaymentForm(request.POST)
        if form.is_valid():
            marketer_form = form.save(commit=False)
            marketer_form.purchase_type_3 = "veiwallet"
            marketer_form.user = request.user.useraccount
            marketer_form.message = "Funding veiwallet"
            marketer_form.marketer = mm
            marketer_form.save()
            # print form
            print "here"
            # success = buy_jejepay_credit_deposit_general(form)
            # if (success):
            username = request.user.username # UserAccount.objects.get(user = request.user).username
            # return redirect (reverse ('userAccount.views.user_jeje_pay_info', args=[username]))
            messages.info(request, "Your vei wallet add credit was successful. Our Finance department will approve it shortly after confirmation. Thank you.")
            return redirect (reverse ('soko_pay:user_transactions'))
            # return redirect (reverse ('userAccount:user_jeje_pay_info', args=[username]))
            # print form.errors
            # else:
            #     error_alert = 'Amount Entered must be greater than 0.'
            #     return render(request, "soko_pay/add_funds.html",
            #                               {'error_alert': error_alert, 'form': form, 'ref_no': ref_no,
            #                                'todaysdate': todaysdate, 'user': request.user})

        else:
            print form.errors
            print form
            error_alert = 'Please correct the highlighted field(s).'
            return render(request, template_name,
                                      {'error_alert': error_alert, 'form': form, 'ref_no': ref_no,
                                       'todaysdate': todaysdate, 'user': request.user,'mm':mm})
        #print form.errors
    return render(request, template_name,
                              {'form': form, 'ref_no': ref_no, 'todaysdate': todaysdate, 'user': request.user,'mm':mm})
Esempio n. 21
0
def editTermsConditions(request):
	try:
		mm = marketing_member(request)
	except:
		mm = request.user.useraccount.marketer
	print "i reach o"
	form = EditMarketingMemberForm(instance=mm)
	if request.user.is_authenticated():
		if request.method == "POST":
			print request.POST
			#form = EditMarketingMemberForm()
			form = EditMarketingMemberForm(request.POST, instance=mm)
			if form.is_valid():
				form.save()
				print "i reach 2 o"
				return redirect(reverse('general:legal'))
			else:
				print form.errors
	else:
		form = EditMarketingMemberForm(instance=mm)
	return render (request, 'sokohaliAdmin/legalform.html', {'form': form})
Esempio n. 22
0
def custom_password_reset_done(request,
                               template_name=None,
                               current_app=None,
                               extra_context=None):
    context = {
        'title': _('Password reset sent'),
    }

    marketer = marketing_member(request)

    if marketer.storefront_name == "volkmannexpress":
        template_name = 'registration/password_reset_done_volk.html'
    else:
        template_name = 'registration/password_reset_done.html'

    if extra_context is not None:
        context.update(extra_context)

    if current_app is not None:
        request.current_app = current_app

    return TemplateResponse(request, template_name, context)
Esempio n. 23
0
def update_payment_record_for_packages(request, packages, jejepay_ref=None):
    print 'applying payment'
    if jejepay_ref == None:
        jejepay_ref = request.GET.get('jejepay_ref')

    print 'jejepay_ref: ', jejepay_ref
    #jejepay   = SokoPay.objects.get(ref_no = jejepay_ref)
    #status    = (jejepay.status).lower()
    #jejepay   = MarketerPayment.objects.get(ref_no = jejepay_ref)
    #status    = (jejepay.status).lower()
    mm = marketing_member(request)
    status = request.session['status'].lower()
    #tranx_id = request.session['tranx_id']
    tranx_id = jejepay_ref
    print 'status: ', status
    if 'approved' in status or 'success' in status:
        #import_shipment.save()
        print 'packages 2nd: ', packages

        for pkg in packages:
            print 'pkg.admin_total_payable_D: ', pkg.admin_total_payable_D
            pkg.balance_paid_D = pkg.user_total_payable_D
            pkg.balance_paid_N = pkg.user_total_payable_N
            pkg.user_total_payable_D = pkg.admin_total_payable_D = pkg.balance_D = 0
            pkg.user_total_payable_N = pkg.admin_total_payable_N = pkg.balance_N = 0
            #apply_shipping_credit(request, pkg)
            pkg.save()
            payment = MarketerPayment.objects.create(
                user=request.user.useraccount,
                payment_channel='Card Payment',
                created_at=datetime.now(),
                ref_no=jejepay_ref,
                amount=pkg.balance_paid_D,
                package=pkg,
                marketer=mm,
                status="Successful",
                payment_gateway_tranx_id=tranx_id)
            payment.save()
Esempio n. 24
0
def pay_balance(request):
    #username = request.user
    user = request.user
    mm = marketing_member(request)
    context_dict = {}

    '''check if POST is not coming from PayStack or PayPal'''
    #if not request.GET.has_key('trxref') or request.GET.has_key("tx"):
        #keep user selected options in memory
        #print 'keeping request.GET for paystack/paypal'
        
    if request.method == "GET" and not request.GET.has_key('resp'):
        request.session['requestGET'] = request.GET


    requestGET = request.session['requestGET']
    tracking_number = requestGET.get('tracking_number')
    pay_method = requestGET.get('pay_method')

    print 'pay_method - tracking_number ',pay_method, tracking_number

    pkg = get_pkg(user, tracking_number)
    
    if request.GET.has_key('resp'):
        print "I got back from flutterwave"
        pay_response = str(request.GET.get('resp'))
        #pay_response =  ast.literal_eval(request.GET.get('resp'))
        jejepay_ref = request.GET.get('jejepay_ref')
        #jejepay_ref = pay_response['merchtransactionreference']
        pay_response_msg = pay_response
        #pay_response_msg = pay_response['responsemessage']
        request.session['status'] = pay_response_msg
        print pay_response_msg
        if pay_response_msg != "success":
        #if pay_response_msg != "Approved": #or pay_response_msg != "Success":
                #messages.error(request, pay_response_msg)
            print "Am going home"
            tranx_id = jejepay_ref
            #tranx_id = pay_response['merchtransactionreference']
            request.session['tranx_id'] = tranx_id
            # for pkg in packages:
            #     print "PKG:",pkg.tracking_number
            payment = MarketerPayment.objects.create(user=request.user.useraccount,payment_channel='Card Payment',created_at=datetime.now(),ref_no=jejepay_ref,
                    amount=pkg.user_total_payable_D,package=pkg,marketer=mm,status=pay_response_msg,payment_gateway_tranx_id =tranx_id)
            payment.save()
            messages.error(request, "Your Payment is "+ pay_response_msg)
        else:
            print "flutter"
            packages = ShippingPackage.objects.filter(tracking_number=tracking_number)
            update_payment_record_for_packages(request, packages, jejepay_ref)
            messages.success(request, "Your Payment is Successful")
        return redirect (reverse('general:my_shipments'))

    if request.method == "POST" or (request.GET.has_key("tx") and request.GET.has_key("st")):
        print 'i am coming from paypal'

        if pay_method == "Card":
            amount_paid_D = pkg.balance_D
            amount_paid_N = pkg.balance_N
            msg_info = "You have successfully paid $%s for package %s" %(str(amount_paid_D), tracking_number)

            dest_namespace_2 = 'soko_pay:pay_balance'
            #dest_namespace_2 = 'soko_pay:pay_balance'
            #return call_initiate_payment(request, amount_paid_N, dest_namespace)
            lb_country = "Nigeria"
            dest_namespace = 'soko_pay:pay_balance'
            kwargs_dict = {'actual_amount_D': amount_paid_D, 'dest_namespace_1': None, 'lb_country':lb_country,
                                       'dest_namespace_2': dest_namespace_2, 'txn_desc': 'Pay for package balance'}
            return payment_helpers.card_payment(request, **kwargs_dict)

            #response_dict = payment_helpers.card_payment(request, **kwargs_dict)
            # print "Respo:", response_dict.content
            # print type(response_dict)
            # #pay_response = response_dict.content
            # try:
            #     pay_response = ast.literal_eval(response_dict.content)
            #     #print 'pay_response: ',pay_response
            #     pay_response_msg = pay_response['response_msg']
            #     if 'success' in pay_response_msg.lower():
            #         payment_helpers.apply_shipping_credit(reuest, pkg)
            #     return response_dict
            # except Exception as e:
            #     print "inner e:", e
            #     return response_dict


        if pay_method == "SokoPay":
            print "see me for sokopay"
            amount_to_pay_D = pkg.balance_D
            # amount_to_pay_N = abs(float(remove_from_string(request.POST.get('amount'), ',')))
            #
            # if amount_to_pay_N > pkg.balance_N:
            #     messages.error(request, "The specified amount is greater than package balance. It should be less.")
            #     return redirect(reverse('general:my_shipments'))

            payment_helpers.apply_shipping_credit(request, pkg, pkg.user, amount_to_pay_D)
            payment_helpers.marketer_payment(request, "SokoPay", "Paid",amount_to_pay_D,pkg,mm,"Approved")
            msg_info = "Payment successfully applied to %s" %pkg.tracking_number
            
            messages.success(request, msg_info)
            return redirect(reverse('general:my_shipments'))


        if pay_method == "PP":
            print "see me for paypal"
            amount_to_pay_D = pkg.balance_D
            # amount_to_pay_N = abs(float(remove_from_string(request.POST.get('amount'), ',')))
            #
            # if amount_to_pay_N > pkg.balance_N:
            #     messages.error(request, "The specified amount is greater than package balance. It should be less.")
            #     return redirect(reverse('general:my_shipments'))

            payment_helpers.pay_with_paypal(request, pkg, pkg.user, amount_to_pay_D)
            
            msg_info = "Payment successfully applied to %s" %pkg.tracking_number

            messages.success(request, msg_info)
            return redirect(reverse('general:my_shipments'))

    else:
        # '''Verify PayStack payment status and apply'''
        # if pay_method == "Card" and request.GET.has_key('trxref') and request.GET.has_key('jejepay_ref'):
        #     pkgs            = [pkg]
        #     update_payment_record_for_packages(request, pkgs)
        #     messages.success(request, msg_info)
        #     return redirect(reverse('general:my_shipments'))
        user_credit_amount_N, user_credit_amount_D = account_standing(request, user)
        obj = get_pkg(user, tracking_number)


        if pay_method == 'PP' and not (request.GET.has_key("tx") and request.GET.has_key("st")):
            print 'i wanna go pay at paypal'
            request.session['tracking_number'] = tracking_number
            request.session['pay_method'] = pay_method
            return_url     = 'http://127.0.0.1:8000/confirm_paypal_payment/'
            receiver_mail  = '*****@*****.**'
            markedup_amount = round(pkg.balance_D * (102.9/100), 2) #amount + 2.9% charge
            kwargs = {'actual_amount': pkg.balance_D, 'markedup_amount': markedup_amount, 'site_redirect_url': return_url, 'receiver_mail': receiver_mail, 'PayPal':'PayPal','pay_balance':'pay_balnace'}
            return initialize_paypal_payment(request, **kwargs)


        elif pay_method == 'Card' and not (request.GET.has_key('resp')):
            template_name = "soko_pay/pay-with-card.html"
            txn_ref = creditpurchase_ref()
            context_dict.update({'txn_ref': txn_ref,
                                'months_list': flutterwave_helpers.months_list(),
                                'years_list': flutterwave_helpers.years_list()})
            
            
        elif pay_method == 'SokoPay':
            #if user_credit_amount_D >= obj.balance_D:

            if user_credit_amount_D >= obj.balance_D:
                template_name = "soko_pay/pay-with-sokopay-credit.html"
                context_dict.update({'user_credit_amount_D': user_credit_amount_D})
            else:
            #     balance_D = obj.balance_D - user_credit_amount_D
                 messages.error(request, "Your SokoPay balance of ${} is insufficient to pay for this package.".format(round(user_credit_amount_D, 2)))
            #     messages.error(request, "You need to top up your wallet with atleast ${} through Buy Credit or use other payment methods.".format(round(balance_D, 2)))
                 return redirect(reverse('general:my_shipments'))

        context_dict.update({'obj': obj, 'pay_method': pay_method})

        return render(request, template_name, context_dict)
Esempio n. 25
0
def apply_shipping_credit(request, obj, user=None, amount_to_pay_D=None):
    if user == None:
        shipping_credit_N, shipping_credit_D = account_standing(
            request, request.user)
        user = request.user
    else:
        shipping_credit_N, shipping_credit_D = account_standing(request, user)
    useraccount = UserAccount.objects.get(user=user)
    #convert shipping_credit_D using exchange_rate of obj
    #exchange_rate = country_exchange_rate(obj.country, costcalc_settings())
    #dollar_exchange_rate = marketingmember_costcalc(request).dollar_exchange_rate
    dollar_exchange_rate = obj.costcalc_instance.dollar_exchange_rate
    if not useraccount.country == "United States":
        shipping_credit_D = float(shipping_credit_N) / dollar_exchange_rate
        prev_balance_N = obj.balance_N
    else:
        shipping_credit_N = float(shipping_credit_D) * dollar_exchange_rate
        prev_balance_N = obj.balance_D
    #shipping
    #if hasattr(obj, 'user_total_payable_N'):
    #prev_balance_N = obj.balance_N
    shipping_cost_D = obj.admin_total_payable_D
    shipping_cost_N = obj.admin_total_payable_N

    if amount_to_pay_D == None:

        if shipping_credit_N >= shipping_cost_N:
            obj.balance_D = 0
            obj.balance_N = 0
            obj.balance_paid_D = shipping_cost_D
            obj.balance_paid_N = shipping_cost_N
            #Amount applied
            if useraccount.country == "United States":
                amount_N = shipping_cost_D
            else:
                amount_N = shipping_cost_N
        # else:
        #     if shipping_credit_N > 0:
        #         obj.balance_D          = shipping_cost_D - shipping_credit_D
        #         obj.balance_N          = shipping_cost_N - shipping_credit_N
        #         obj.balance_paid_D = shipping_credit_D
        #         obj.balance_paid_N = shipping_credit_N
        #
        #         #Amount applied
        #         amount_N = shipping_credit_N
    else:
        amount_to_pay_N = amount_to_pay_D * float(dollar_exchange_rate)
        obj.balance_D -= amount_to_pay_D
        obj.balance_N -= amount_to_pay_N
        obj.balance_paid_D += amount_to_pay_D
        obj.balance_paid_N += amount_to_pay_N
        if useraccount.country == "United States":
            amount_N = amount_to_pay_D
        else:
            amount_N = amount_to_pay_N
        #amount_N                = amount_to_pay_N

    #obj.apply_shipping_credit = True
    if useraccount.country == "United States":
        new_balance_N = obj.balance_D
    else:
        new_balance_N = obj.balance_N

    ref_no = creditpurchase_ref(obj.id)
    mm = marketing_member(request)
    use_shipping_credit(request, amount_N, ref_no, prev_balance_N,
                        new_balance_N, obj, user)
    marketer_payment(request, "SokoPay", "Paid", shipping_cost_D, obj, mm,
                     "Approved")
    obj.save()
    return obj
Esempio n. 26
0
def is_bvn_used(request, bvn):
    encrypted_val = value_encryption(bvn)
    mm = marketing_member(request)
    return UserAccount.objects.filter(marketer=mm, bvn_no=encrypted_val).exists()
Esempio n. 27
0
def getReceivedItems(request):
    mm = marketing_member(request)
    return NotifyUser.objects.filter(user__useraccount__marketer=mm).count()
Esempio n. 28
0
def mobile_packages_process(request):
    # print request.POST

    rp = request.POST

    tracking_number = str(rp.get('tracking_number'))
    quantity = 1

    post = get_object_or_404(ShippingPackage, tracking_number=tracking_number)

    try:
        mm = UserAccount.objects.get(
            user__username__iexact=rp.get('email')).marketer
    except:
        mm = UserAccount.objects.get(
            user__email__iexact=rp.get('email')).marketer

    # print "marketer: ", mm

    request.session['package'] = post
    # print model_to_dict(post)
    previous = {
        "height": post.box_height,
        "length": post.box_length,
        "width": post.box_width,
        "weight": post.box_weight,
        "weight_k": post.box_weight_K,
        "insurance": post.insure,
        "Shipping-method": post.shipping_method
    }
    # print "previous:", previous
    costcalc = post.costcalc_instance
    weightFactor = costcalc.dim_weight_factor
    # print "weight_factor: ",weightFactor
    lb_kg_factor = costcalc.lb_kg_factor
    kg_lb_factor = costcalc.kg_lb_factor
    exchange_rate = costcalc.dollar_exchange_rate

    costcalc = post.costcalc_instance

    weightFactor = costcalc.dim_weight_factor
    lb_kg_factor = costcalc.lb_kg_factor
    kg_lb_factor = costcalc.kg_lb_factor
    exchange_rate = costcalc.dollar_exchange_rate

    # for field,value in post._meta.get_all_field_names():
    #     print field

    weight_unit = str(rp.get("unit"))

    # post_values = model_to_dict(post)

    new_tracking_number = post.tracking_number[15:].split('-')

    ship_origin = new_tracking_number[0]
    ship_destination = new_tracking_number[1]

    shipping_origin = country = get_counntry_from_short_code(ship_origin)
    # print 'shipping_origin:',shipping_origin
    shipping_destination = get_counntry_from_short_code(ship_destination)
    # print "shipping_destination:",shipping_destination

    check_exp_sea_or_air_freight = str(post.shipping_method)
    check_home_or_ofice = str(post.delivery_method)
    # print "Exp_Air_Sea - Home_Office: ",check_exp_sea_or_air_freight,check_home_or_ofice

    if check_exp_sea_or_air_freight == "Air Freight" and post.delivery_method == "Home delivery":
        request.session['dvm'] = "AF - HD"
    elif check_exp_sea_or_air_freight == "Air Freight" and post.delivery_method == "Office pickup":
        request.session['dvm'] = "AF - OP"
    elif check_exp_sea_or_air_freight == "Sea Freight" and post.delivery_method == "Office pickup":
        request.session['dvm'] = "SF - OP"
    elif check_exp_sea_or_air_freight == "Sea Freight" and post.delivery_method == "Home delivery":
        request.session['dvm'] = "SF - HD"
    elif check_exp_sea_or_air_freight == "Express" and post.delivery_method == "Home delivery":
        request.session['dvm'] = "EX - HD"
    elif check_exp_sea_or_air_freight == "Express" and post.delivery_method == "Office pickup":
        request.session['dvm'] = "EX - OP"

    request.session['handling_option'] = post.handling_option

    freight_VAT_SC_D = PSDG_D = VAT_D = coverage_amount_D = 0
    pick_up_charge_D = pick_up_charge_N = 0.0

    if request.method == "POST":

        form = ShippingPackageForm(request.POST, request.FILES, instance=post)

        if form.is_valid():
            post = form.save(commit=False)
            post.box_length = float(str(rp.get('lenght')))
            post.box_width = float(str(rp.get('width')))
            post.box_height = float(str(rp.get('height')))
            post.box_weight = float(str(rp.get('weight')))
            # post.pkg_image  =  truncateCharacters(str(rp.get('contact_image_1')))
            imageURL = rp.get('id_file', '')
            # x= imageURL[23:]
            image_data = b64decode(imageURL)
            photo_code = ''
            characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890'
            photo_code_length = 20
            for x in range(photo_code_length):
                photo_code += characters[random.randint(
                    0,
                    len(characters) - 1)]
            photo_name = photo_code + '.jpeg'
            photo = ContentFile(image_data, photo_name)
            post.pkg_image = photo
            # print "photo", photo
            if weight_unit == "lbs":
                post.box_weight_Dim = quantity * (
                    post.box_length * post.box_width *
                    post.box_height) / weightFactor
                post.box_weight_Dim_K = post.box_weight_Dim * lb_kg_factor
                # print "lbs wgt_d - wgt_k: ",post.box_weight_Dim,post.box_weight_Dim_K
                post.box_weight_K = post.box_weight * lb_kg_factor
                post.box_weight_Actual = post.box_weight * quantity
                post.box_weight_Actual_K = post.box_weight * lb_kg_factor * quantity
                post.shipping_method = check_exp_sea_or_air_freight
            else:
                post.box_weight_Dim = quantity * (
                    post.box_length * post.box_width *
                    post.box_height) / weightFactor
                post.box_weight_Dim_K = post.box_weight_Dim * lb_kg_factor
                # print "kgs wgt_d - wgt_k: ",post.box_weight_Dim,post.box_weight_Dim_K
                post.box_weight_K = post.box_weight * lb_kg_factor
                post.box_weight_Actual = post.box_weight * 2.20462 * quantity
                post.box_weight_Actual_K = post.box_weight * lb_kg_factor * quantity

            try:
                user = User.objects.get(username=rp.get('email'))
            except:
                user = User.objects.get(email=rp.get('email'))

            post.updated_by = user.username
            post.updated_on = timezone.now()
            # post.delivery_method = request.POST.get('pkg_delivery_method')
            post.approved = True

            post.prepared_for_shipping = True
            post.status = "Prepared for shipping"

            linked_items = post.item_packages()
            cart_value = linked_items.aggregate(
                value=Sum('total_value'))['value']
            item_count = linked_items.count()

            new_post = []
            new_post.append(post)

            shipping_weight = post.box_weight_higher()

            # region = location.region

            # local_freight_cost_D, local_freight_cost_N = region_local_freight_costs(request,region, shipping_weight)

            local_freight_cost_D = post.local_freight_D

            # print "local_freight_cost_N , local_freight_cost_D:",local_freight_cost_D

            delivery_intl_freight_D, delivery_local_freight_D, delivery_total_freight_D = get_freight_costs(
                request, new_post, shipping_origin[0], shipping_destination[0],
                costcalc)

            total_freight_D = delivery_intl_freight_D + local_freight_cost_D

            # print "total_freight_D = delivery_intl_freight_D + local_freight_cost_D :",delivery_intl_freight_D + local_freight_cost_D
            # print "shipping_weight: ", post.box_weight_higher()

            pkg_info = {
                'pkg_count': post.box_quantity,
                'item_count': item_count,
                'shippingWeight': shipping_weight,
                'cart_value': cart_value,
                'total_freight_D': delivery_total_freight_D
            }

            total_freight_D_val, VAT_D_val, totalServiceCharge_D_val, \
                CON_D_val, PSDG_D_val, SMP_D_val, freight_VAT_SC_D_val, coverage_amount_D_val, exchange_rate = CreateShipmentCostCalc(request, pkg_info, country, post.costcalc_instance)

            freight_VAT_SC_D += freight_VAT_SC_D_val
            PSDG_D += PSDG_D_val
            VAT_D += VAT_D_val
            coverage_amount_D += coverage_amount_D_val

            post.insurance_fee_D = PSDG_D_val
            post.insurance_fee_N = PSDG_D_val * exchange_rate

            post.VAT_charge_D = VAT_D_val
            post.VAT_charge_N = VAT_D_val * exchange_rate

            post.service_charge_D = totalServiceCharge_D_val
            post.service_charge_N = totalServiceCharge_D_val * exchange_rate

            if post.discount_percentage:
                post.admin_total_payable_D = post.user_total_payable_D = local_freight_cost_D + freight_VAT_SC_D_val + PSDG_D_val
                post.admin_total_payable_N = post.user_total_payable_N = (
                    local_freight_cost_D + freight_VAT_SC_D_val +
                    PSDG_D_val) * exchange_rate
                post.discount_D = (post.discount_percentage *
                                   post.admin_total_payable_D) / 100
                post.discount_N = (post.discount_percentage *
                                   post.admin_total_payable_N) / 100
            else:
                post.admin_total_payable_D = post.user_total_payable_D = local_freight_cost_D + freight_VAT_SC_D_val + PSDG_D_val
                post.admin_total_payable_N = post.user_total_payable_N = (
                    local_freight_cost_D + freight_VAT_SC_D_val +
                    PSDG_D_val) * exchange_rate

            post.coverage_amount_D = coverage_amount_D_val
            post.coverage_amount_N = coverage_amount_D_val * exchange_rate

            # post.pick_up_charge_D = pick_up_charge_D
            # post.pick_up_charge_N = pick_up_charge_N

            if not post.balance_paid_D > post.admin_total_payable_D:
                if post.discount_percentage:
                    post.balance_D = (post.user_total_payable_D -
                                      post.balance_paid_D) - post.discount_D
                    post.balance_N = (post.user_total_payable_N -
                                      post.balance_paid_N) - post.discount_N
                else:
                    post.balance_D = (post.user_total_payable_D -
                                      post.balance_paid_D)
                    post.balance_N = (post.user_total_payable_N -
                                      post.balance_paid_N)

            else:
                user = UserAccount.objects.get(user=post.user)
                user_country = user.country
                #print "balance_D", post.balance_D
                #print "balance_paid_D", post.balance_paid_D
                if user_country == "United States" or user_country == "USA":
                    amount = post.balance_paid_D - post.admin_total_payable_D
                else:
                    amount = post.balance_paid_N - post.admin_total_payable_N
                #print "amount", amount
                post.balance_paid_D = post.admin_total_payable_D
                post.balance_paid_N = post.admin_total_payable_N
                post.balance_D = post.balance_N = 0.00
                jejepay_obj = SokoPay.objects.create(
                    user=post.user,
                    purchase_type_1="Refund",
                    purchase_type_2="Add",
                    status="Approved",
                    ref_no=creditpurchase_ref(request),
                    amount=amount,
                    bank="Admin",
                    message="Excess amount added to customer Vei wallet")
                #print "jeje", jejepay_obj
                # post.balance_D = 0.00
                # post.balance_N = 0.00

            post.intl_freight_D = delivery_intl_freight_D
            post.intl_freight_N = delivery_intl_freight_D * exchange_rate

            post.local_freight_D = local_freight_cost_D
            post.local_freight_N = local_freight_cost_D * exchange_rate

            post.save()

            for item in linked_items:
                item.status = "Received"
                item.save()

            edit = {
                "height": post.box_height,
                "length": post.box_length,
                "width": post.box_width,
                "weight": post.box_weight,
                "weight_k": post.box_weight_K,
                "insurance": post.insure,
                "Shipping-method": post.shipping_method
            }
            pkg_model = "ShippingPackage"
            # print "edit:", edit

            status = post.status
            action = "This package was prepared for shipping"
            #pkg_status_list(post.pk,pkg_model,request.user,status)
            shipment_history(user, post.pk, pkg_model, status, action)
            # del request.session['pkg_location_id']

            try:
                del request.session['dvm']
            except:
                pass

            if post.user.useraccount.marketer.storefront_name == "volkmannexpress":
                marketer = marketing_member(request)
                print "the marketer is %s" % (marketer)
                user_client = UserAccount.objects.get(user=post.user)
                payment_channel = 'Bank Deposit'
                message = 'Being Payment for package balance'
                amount = post.admin_total_payable_D
                ref_no = generate_creditpurchase_ref()
                bank = None
                teller_no = None
                local_package = None
                payment = MarketerPayment.objects.create(
                    user=user_client,
                    payment_channel=payment_channel,
                    created_at=datetime.now(),
                    message=message,
                    amount=amount,
                    package=post,
                    ref_no=ref_no,
                    marketer=marketer,
                    bank=bank,
                    teller_no=teller_no,
                    local_package=local_package)
                payment.save()

            del request.session['handling_option']
            del request.session['package']

            try:
                #user = User.objects.get(email=post.user.email)
                user = get_marketing_member_user(request, post.user.username)
                pkg = post
                subject = "%s Package-%s Invoice" % (
                    mm.storefront_name.title(), pkg.tracking_number)
                # sokohali_sendmail(request, user, subject, "email/package_invoice_email_template.html", pkg)
                print 'email was sent to', user
            except Exception as e:
                print "email not sent because:  %s" % (str(e))
                pass
            return JsonResponse({"success": 1, "error": 0})
        else:
            print form.errors
            return JsonResponse({"success": 0, "error": 1})

    else:
        return JsonResponse({"success": 0, "error": 1})

    return JsonResponse({"success": 0, "error": 1})
Esempio n. 29
0
def editTermsConditions(request):
    mm = marketing_member(request)
    form = EditMarketingMemberForm(instance=mm)
    return form
Esempio n. 30
0
def get_new_messages_count(request):
    mm = marketing_member(request)
    message_object = MessageCenter.objects.filter(
        user__useraccount__marketer=mm, new=True).count()
    return message_object