예제 #1
0
파일: api.py 프로젝트: Ishayahu/MJCC-tasks
def asset_save_edited(request,asset_id):
    # raise NotImplementedError("Должно быть выпадающее меню для модели, если хотят её изменить")
    asset = Asset.objects.get(id=asset_id)
    # Меняем значения на новые
    asset.model = request.POST.get(asset_id+'_model')
    asset.price = float(request.POST.get('price_'+asset_id).replace(',','.'))
    ttt = request.POST
    tt = 'status_'+asset_id
    t = request.POST.get('status_'+asset_id)
    t2 = request.POST.get(asset_id+'_model')
    t3 = request.POST.get('price_'+asset_id)
    asset.status = Status.objects.get(id=request.POST.get('status_'+asset_id))
    asset.garanty = Garanty.objects.get(id=request.POST.get('garanty_'+asset_id))
    # А вот с местом надо по другому!
    # Надо найти предыдущее (точно есть!), поставить туда дату снятия и после этого уже вносить новое место
    # И вообще, asset.place нет такого, см assets.views.bill_cashless_add как надо работать с местами
    # raise NotImplementedError("Так ли оно?") ---------- ВРОДЕ ТАК
    new_place = Place.objects.get(id=request.POST.get('place_'+asset_id))
    # raise NotImplementedError("Надо реализовать правильное изменение места. см комментарий в коде")
    # raise NotImplementedError("Надо брать последнее место") ---------- ВРОДЕ РАБОТАЕТ
    last_place_asset = asset.place_asset_set.latest('installation_date')
    last_place_asset.drawdown_date = datetime.datetime.now()
    # raise NotImplementedError("Надо запрашивать причину изменения") ---------- ВРОДЕ РАБОТАЕТ
    # то есть, при изменении места надо вызывать обработчик, который сохраняет первое значение (если изменение на него - то отмена), и добавляет к форме поле причины, где-то внизу, чтобы его тоже можно было редактировать
    last_place_asset.reason_of_drawdown = request.POST.get('reason_of_drawdown_'+asset_id)
    last_place_asset.save()
    new_place_asset = Place_Asset(installation_date = datetime.datetime.now(),
                                    asset = asset,
                                    place = new_place,
                                )
    new_place_asset.save()
    asset.save()
    asset.place = asset.place_asset_set.latest('installation_date').place.place
    return (True,('edited_asset.html',{},{'item':asset,},request,app))
예제 #2
0
def bill_cashless_add(request):
    # def what_to_people_friendly(a):
    #     b=list(set(a.split(';')))
    #     c = ''
    #     for word in b:
    #         count=a.split(';').count(word)
    #         c = c + word + ' - ' + str(count) + u' шт; '
    #     return c
    lang,user,fio,method = get_info(request)
    # Получаем настройки из файла:
    import ConfigParser
    config=ConfigParser.RawConfigParser()
    config.read(config_file)
    # stages = ";".join([a[1] for a in config.items("cashless_stages")])
    from user_settings.functions import get_stages
    stages = get_stages(";")

    if request.method == 'POST':
        # Порядок действия таков:
        # 1) Создаём Cashless c этапами из файла настройки
        # 2) Создаём Payment с этим Cash
        # 3) Создаём Garanty - если её ещё нет. Если есть - добавляем к имеющейся
        # 4) Итерируем по элементам в форме от 1 до макс добавляя активы в список активов
        # 5) Если всё прошло хорошо - активы из списка сохраняем
        bill_date = request.POST.get('date','')
        if bill_date:
            a=[int(a) for a in bill_date.split(bill_date[2])]
            a.reverse()
            bill_date=datetime.datetime(*a)
        else:
            bill_date = datetime.datetime.now()
        cashless = Cashless(date_of_invoice = bill_date,
                stages=stages,
                # нужно для более простой обработки в дальнейшем
                dates = ';'.join(map(lambda x: '',range(len(stages.split(';'))))),
                contractor = Contractor.objects.get(id=request.POST.get('contractor_id')),
                bill_number = request.POST.get('bill_number'),
                )
        cashless.save()
        payment = Payment(cashless = cashless,
                )
        payment.save()
        try:
            garanty = Garanty.objects.get(number = request.POST.get('garanty'))
        except Garanty.DoesNotExist:
            garanty = Garanty(number = request.POST.get('garanty'))
            garanty.save()
        # Для записки сопровождения счёта
        places = ''
        what = ''
        price = 0
        for item_number in range(1,int(request.POST.get('max_asset_form_number'))+1):
            sitem_number = str(item_number)
            if sitem_number+'_model' in request.POST:
                for count in range(0,int(request.POST.get('count_of_asset'+sitem_number))):
                    a=Asset(asset_type = Asset_type.objects.get(id=request.POST.get(sitem_number+'_asset_type')),
                        payment = payment,
                        garanty = garanty,
                        model = request.POST.get(sitem_number+'_model'),
                        status = Status.objects.get(id=request.POST.get(sitem_number+'_status')),
                        guarantee_period = request.POST.get(sitem_number+'_guarantee_period'),
                        note = request.POST.get(sitem_number+'_note'),
                        price = request.POST.get(sitem_number+'_price'),
                        )
                    a.save()
                    cur_place=Place_Asset(installation_date = bill_date,
                        asset = a,
                        place = Place.objects.get(id=request.POST.get(sitem_number+'_current_place')),
                        )
                    cur_place.save()
                    # a_TMP = cur_place.place.place
                    if cur_place.place.place + u';' not in places:
                        places = places+ cur_place.place.place + u';'
                    # if a.model + u';' not in what:    
                        # what = what + a.model + u';'
                    what = what + a.model + u';'
                    price += float(a.price)
        places = places[:-1]
        # Приводим к человеческому виду "кот - 5шт"
        what = what_to_people_friendly(what[:-1])
        # Теперь надо выдать штуку для распечатки сопровождения счёта
        text = config.get('cashless','text')
        text=text.decode('utf8').format({'number':cashless.bill_number,'where':places,'date':str(cashless.date_of_invoice),'price':price,'what':what,'who':fio.fio,'phones':fio.tel,'date2':str(datetime.datetime.now()).split('.')[0]}).replace('\n','<p>')
        # window.open("http://mylink.net", "windowName");
        # window.localStorage.setItem('text',text)
        # document.body.innerHTML=window.localStorage.getItem('text')        
        # return (False,HttpResponseRedirect('/all_bills/'))
        # Открывается окно с сопровождающей запиской, из него уже открывается окно списка счетов
        show_cashless_maintain = config.get('cashless','show_text')
        if show_cashless_maintain=='True':
            return (True,('cashless_redirect.html', {},{'text':text,'cashless':cashless},request,app))
        return (False,HttpResponseRedirect('/all_bills/'))
    # Создаём новый счёт, значит теперь надо номер новой гарантии
    try:
        garanty_number = int(Garanty.objects.all().order_by('-number')[0].number)+1
    except IndexError:
        # значит, гарантий ещё в базе нет
        garanty_number = 0

    contractors_list = assets.api.get_contractors_list(request,internal=True)
    asset_types_list = assets.api.get_asset_type_list(request,internal=True)
    return (True,
            ('new_bill.html',
             {'NewCashBillForm':{'garanty':garanty_number}},
             {'stages':stages,'contractors_list':contractors_list,
              'asset_types_list':asset_types_list,
              'method':method},
             request,
             app))
예제 #3
0
def bill_cash_add(request):
    lang,user,fio,method = get_info(request)
    if request.method == 'POST':
        # Порядок действия таков:
        # 1) Создаём Cash
        # 2) Создаём Payment с этим Cash
        # 3) Создаём Garanty - если её ещё нет. Если есть - добавляем к имеющейся
        # 4) Итерируем по элементам в форме от 1 до макс добавляя активы в список активов
        # 5) Если всё прошло хорошо - активы из списка сохраняем

        bill_date = request.POST.get('date','')
        if bill_date:
            a=[int(a) for a in bill_date.split('.')]
            a.reverse()
            bill_date=datetime.datetime(*a)
        else:
            bill_date = datetime.datetime.now()
        # print bill_date
        # raise ImportError
        cash = Cash(date = bill_date,
               contractor = Contractor.objects.get(id=request.POST.get('contractor_id')),
               bill_number = request.POST.get('bill_number'),
               )
        cash.save()
        payment = Payment(cash = cash,
                )
        payment.save()
        try:
            garanty = Garanty.objects.get(number = request.POST.get('garanty'))
        except Garanty.DoesNotExist:
            garanty = Garanty(number = request.POST.get('garanty'))
            garanty.save()
        for item_number in range(1,int(request.POST.get('max_asset_form_number'))+1):
            sitem_number = str(item_number)
            if sitem_number+'_model' in request.POST:
                for count in range(0,int(request.POST.get('count_of_asset'+sitem_number))):
                    a=Asset(asset_type = Asset_type.objects.get(id=request.POST.get(sitem_number+'_asset_type')),
                        payment = payment,
                        garanty = garanty,
                        model = request.POST.get(sitem_number+'_model'),
                        status = Status.objects.get(id=request.POST.get(sitem_number+'_status')),
                        guarantee_period = request.POST.get(sitem_number+'_guarantee_period'),
                        note = request.POST.get(sitem_number+'_note'),
                        price = request.POST.get(sitem_number+'_price'),
                        )
                    a.save()
                    cur_place=Place_Asset(installation_date = bill_date,
                        asset = a,
                        place = Place.objects.get(id=request.POST.get(sitem_number+'_current_place')),
                        )
                    cur_place.save()
        return (False,HttpResponseRedirect('/all_bills/'))
    # Создаём новый счёт, значит теперь надо номер новой гарантии
    try:
        garanty_number = int(Garanty.objects.all().order_by('-number')[0].number)+1
    except IndexError:
        # значит, гарантий ещё в базе нет
        garanty_number = 0
    contractors_list = assets.api.get_contractors_list(request,internal=True)
    asset_types_list = assets.api.get_asset_type_list(request,internal=True)
    return (True,('new_bill.html', {'NewCashBillForm':{'garanty':garanty_number}},{'contractors_list':contractors_list,'asset_types_list':asset_types_list, 'method':method},request,app))
예제 #4
0
def bill_add(request):
    lang,user,fio,method = get_info(request)
    if request.method == 'POST':
        # Порядок действия таков:
        # 1) Создаём Cash
        # 2) Создаём Payment с этим Cash
        # 3) Создаём Garanty - если её ещё нет. Если есть - добавляем к имеющейся
        # 4) Итерируем по элементам в форме от 1 до макс добавляя активы в список активов
        # 5) Если всё прошло хорошо - активы из списка сохраняем

        bill_date = request.POST.get('date','')
        if bill_date:
            a=[int(a) for a in bill_date.split('.')]
            a.reverse()
            bill_date=datetime.datetime(*a)
        else:
            bill_date = datetime.datetime.now()
        # print bill_date
        # raise ImportError
        cash = Cash(date = bill_date,
               contractor = Contractor.objects.get(id=request.POST.get('contractor_id')),
               bill_number = request.POST.get('bill_number'),
               )
        cash.save()
        payment = Payment(cash = cash,
                )
        payment.save()
        try:
            garanty = Garanty.objects.get(number = request.POST.get('garanty'))
        except Garanty.DoesNotExist:
            garanty = Garanty(number = request.POST.get('garanty'))
            garanty.save()
        for item_number in range(1,int(request.POST.get('max_asset_form_number'))+1):
            sitem_number = str(item_number)
            if sitem_number+'_model' in request.POST:
                for count in range(0,int(request.POST.get('count_of_asset'+sitem_number))):
                    a=Asset(asset_type = Asset_type.objects.get(id=request.POST.get(sitem_number+'_asset_type')),
                        payment = payment,
                        garanty = garanty,
                        model = request.POST.get(sitem_number+'_model'),
                        status = Status.objects.get(id=request.POST.get(sitem_number+'_status')),
                        guarantee_period = request.POST.get(sitem_number+'_guarantee_period'),
                        note = request.POST.get(sitem_number+'_note'),
                        price = request.POST.get(sitem_number+'_price'),
                        )
                    a.save()
                    cur_place=Place_Asset(installation_date = bill_date,
                        asset = a,
                        place = Place.objects.get(id=request.POST.get(sitem_number+'_current_place')),
                        )
                    cur_place.save()
        return (False,HttpResponseRedirect('/tasks/'))
        # else:
            # print "FOrm is not valid??"
    contractors_list = assets.api.get_contractors_list(request,internal=True)
    asset_types_list = assets.api.get_asset_type_list(request,internal=True)
    # Translators: This message appears on the home page only
    message=_('Message')
    print message
    print request.LANGUAGE_CODE
    return (True,('new_bill.html', {'NewCashBillForm':{}},{'contractors_list':contractors_list,'asset_types_list':asset_types_list, 'method':method,'message':message},request,app))