Esempio n. 1
0
def create_traffic_invoice(request):
    user = request.user
    if request.method == 'GET':
        sid = request.GET.get('t')
        if request.user.is_staff or request.user.is_superuser:
            uid = request.GET.get('u')
        else:
            uid = user.pk
        if not validate_integer(sid):
            return redirect('/user/nav/?uid=%s' % uid)
        if not validate_user(uid, request.RSL_ID):
            return redirect('/user/nav/?uid=%s' % uid)
        try:
            x = InvoiceGen(Traffic.objects.get(pk=sid), 2, uid=uid)
            x.calculate()
            if not x.get_is_done():
                fire_event(10231, User.objects.get(pk=uid))
                return redirect('/')
            extra_data = x.get_extra_data()
            return render(
                request, 'finance/TrafficInvoice.html', {
                    's': x.get_service(),
                    'tax': extra_data.get('tax'),
                    'price': x.get_final_price(),
                    'u': uid,
                    'discounted_price': extra_data.get('discount_price'),
                    'extra_amount': extra_data.get('extra_package'),
                    'base_service_price': x.get_base_price(),
                    'debit': extra_data.get('debit')
                })
        except Exception as e:
            print e.message
            return render(request, 'errors/ServerError.html')
    elif request.method == 'POST':
        uid = request.POST.get('uid', 'INVALID')
        sid = request.POST.get('sid', 'INVALID')
        if not validate_user(uid, request.RSL_ID) or not validate_integer(sid):
            return redirect('/user/nav/?uid=%s' % uid)
        if not user.is_staff:
            uid = user.pk
        try:
            x = InvoiceGen(Traffic.objects.get(pk=sid), 2, uid=uid)
            x.calculate()
            if not x.get_is_done():
                fire_event(10231, User.objects.get(pk=uid))
                return redirect('/')
            f = x.get_invoice()
            f.save()
            # PackageInvoiceCreatedNotify().send(user_id=uid, invoice_id=f.pk, create_time=f.create_time)
            if request.user.is_staff:
                return redirect(reverse(show_all_invoices) + '?u=%s' % uid)
            else:
                return redirect(reverse(e_pay_invoice) + '?f=' + str(f.pk))
        except Exception as e:
            print e.args[0]
            return render(request, 'errors/ServerError.html')

    else:
        return render(request, 'errors/AccessDenied.html')
Esempio n. 2
0
def update_reseller_profit_data(request):
    name = get_string(request.POST.get('name'))
    pk = get_integer(request.POST.get('pk'))
    value = get_string(request.POST.get('value'))
    if not name:
        return send_error(request, _('invalid name'))
    if not pk:
        return send_error(request, _('invalid item'))
    if not value:
        return send_error(request, _('invalid value'))
    user = validate_user(pk)
    if not user:
        return send_error(request, _('invalid user'))
    if not ResellerProfitOption.objects.filter(
            reseller__user=user.pk).exists():
        return send_error(request, _('invalid user'))
    op = ResellerProfitOption.objects.get(reseller__user=user.pk)
    if name == 'srv':
        op.service_profit = float(value)
    elif name == 'pck':
        print value
        op.package_profit = float(value)
    elif name == 'ngv':
        op.max_neg_credit = int(value)
    else:
        return send_error(request, _('invalid option'))
    op.save()
    return HttpResponse('200')
Esempio n. 3
0
def get_user_debit_json(request):
    if request.method == 'GET':
        uid = request.GET.get('u')
        user = validate_user(uid)
        if not user:
            return send_error(request, _('invalid user'))
        res = {
            'username': user.username,
            'name': user.first_name,
            'debit': 0,
            'last_debit': 0,
            'comment': '',
            'subject': '',
            'pk': uid
        }
        if UserDebit.objects.for_reseller(
                request.RSL_ID).filter(user_id=uid).exists():
            d = UserDebit.objects.get(user_id=uid)
        else:
            return HttpResponse(json.dumps(res))
        res['username'] = user.username
        res['debit'] = d.amount
        res['last_debit'] = d.last_amount
        res['comment'] = d.description
        res['subject'] = d.subject.name
        return HttpResponse(json.dumps(res))
    return send_error(request, _('invalid method'))
Esempio n. 4
0
def add_partner_to_job(request):
    dash = validate_dashboard(request.POST.get('d'), request.user)
    tu = validate_user(request.POST.get('t'))
    cmd = get_integer(request.POST.get('c'))
    max_users = int(read_config('dashboard_max_partner', 5))
    if not dash:
        return send_error(request, _('invalid dashboard'))
    if not tu:
        return send_error(request, _('invalid user'))
    if not cmd:
        return send_error(request, _('invalid item'))
    if cmd == 1:
        if TicketTeam.objects.filter(dashboard=dash.pk, user=tu.pk).exists():
            return send_error(request, _('this user has been selected before'))
        if TicketTeam.objects.filter(dashboard=dash.pk).count() >= max_users:
            return send_error(request, _('max users selected'))
        tt = TicketTeam()
        tt.user = tu
        tt.dashboard = dash
        tt.save()
        msg = '%s : %s' % (_('user added to job'), tu.first_name)
        add_work_history_outbox(dash, request.user, msg)
    elif cmd == 2:
        if not TicketTeam.objects.filter(dashboard=dash.pk,
                                         user=tu.pk).exists():
            return HttpResponse('200')
        TicketTeam.objects.get(dashboard=dash.pk, user=tu.pk).delete()
        msg = '%s : %s' % (_('user removed from job'), tu.first_name)
        add_work_history_outbox(dash, request.user, msg)
    return HttpResponse('200')
Esempio n. 5
0
 def update(self, force_add=False):
     post = self.store
     x = self.get_single_ext()
     px = self.__process_params__()
     # print px
     total_price = 0
     service_list = []
     for ix in px.keys():
         s = DedicatedInvoiceService()
         p = get_integer(px.get(ix).get('mx')) * get_integer(
             px.get(ix).get('px'))
         if p < 1:
             self.error(_('please enter price'), True)
         total_price += p
         s.period = px.get(ix).get('mx')
         s.price = px.get(ix).get('px')
         sm = DedicateServiceManager(self.req, store=self.store)
         sm.pk_name = 'sx' + ix
         s.service = sm.get_single_ext(True)
         service_list.append(s)
     description = get_string(post.get('d'))
     user = validate_user(get_integer(post.get('u')))
     discount = get_integer(self.store.get('dp'))
     total_price = total_price - discount
     if total_price - discount < 1:
         self.error(_('please correct the discount price'), True)
     if not description:
         description = '-'
     if not user:
         raise RequestProcessException(_('invalid user'))
     if not x:
         x = DedicatedInvoice()
     type_m = DedicatedInvoiceTypeManager(self.req,
                                          target=DedicatedInvoiceType,
                                          store=self.store)
     type_m.pk_name = 'ity'
     invoice_type_ = type_m.get_single_ext(True)
     x.user = user
     x.send_type = None
     x.description = description
     x.price = total_price
     x.tax = total_price * float(read_config('invoice_tax', 0.09))
     x.discount = discount
     x.send_date = None
     x.invoice_type = invoice_type_
     x.creator_id = self.requester.pk
     x.save()
     for s in service_list:
         s.invoice = x
     DedicatedInvoiceService.objects.bulk_create(service_list)
     return x
Esempio n. 6
0
def deliver_equipment_order(request):
    order = get_equipment_order_main_ext(request.POST.get('pk'))
    user = validate_user(request.POST.get('u'))
    if not order:
        return send_error(request, _('invalid item'))
    if not user:
        return send_error(request, _('please select a user'))
    if order.receiver_id is not None:
        return send_error(request, _('this order is closed'))
    if not user.is_staff and not user.is_active:
        return send_error(request, _('invalid user selected'))
    order.receiver = user
    order.receive_date = now()
    order.save()
    return HttpResponse(order.ext)
Esempio n. 7
0
def add_equipment_order(request):
    groups = request.POST.getlist('ho')
    used_groups = request.POST.getlist('seh')
    order_type = get_integer(request.POST.get('rt'))
    if groups is None:
        return send_error(request, _('order list is empty'))
    if len(groups) < 1:
        return send_error(request, _('order list is empty'))
    if not order_type:
        return send_error(request, _('please select order type'))
    groups_list = []
    used_list = []
    for g in groups:
        tmp = get_temp_order_ext(g)
        if not tmp:
            continue
        gx = get_equipment_group(tmp.group.ext)
        groups_list.append(gx)
    for x in used_groups:
        tmp = get_temp_order_ext(x)
        if not tmp:
            continue
        gy = get_equipment_group(tmp.group.ext)
        used_list.append(gy)
    if order_type == 1:
        obi = request.POST.get('t')
        target = get_tower_pk(obi)
        target_text = target.name
    elif order_type == 2:
        obi = request.POST.get('u')
        target = validate_user(obi)
        target_text = target.first_name
    elif order_type == 3:
        obi = request.POST.get('ps')
        target = get_pop_site_pk(obi)
        target_text = target.name
    else:
        return send_error(request, _('invalid target type'))
    if not target:
        return send_error(request, _('no target selected'))
    ot = EquipmentOrderType()
    ot.content_object = target
    ot.object_id = obi
    ot.save()
    eo = EquipmentOrder()
    eo.item_text = target_text
    eo.order_type = ot
    eo.personnel = request.user
    eo.request_date = now()
    if request.POST.get('cB') == '1':
        eo.is_borrow = True
    eo.save()
    EquipmentOrderAddedEventHandler().fire(eo, None, request.user.pk)
    for g in groups_list:
        order_group = EquipmentOrderItem()
        order_group.equipment = g
        order_group.order = eo
        order_group.change_date = now()
        order_group.save()
    for x2 in used_list:
        order2 = EquipmentOrderItem()
        order2.equipment = x2
        order2.order = eo
        order2.change_date = now()
        order2.is_used = True
        order2.save()
    return HttpResponse(eo.ext)