コード例 #1
0
ファイル: views.py プロジェクト: wd5/1-bkz
def batchs(request):
    queryset = Batch.objects.select_related('frost_resistance','width').prefetch_related('parts','parts__rows').all()
    datefilter = YearMonthFilter(request.GET or None,model=Batch)
    factory = PartAddFormSet(request.POST or None,queryset=Part.objects.select_related('brick','brick__width')\
        .prefetch_related('batch','rows','batch__frost_resistance','batch__width').filter(brick__isnull=True))
    if request.method == 'POST' and factory.is_valid():
        factory.save()
        messages.success(request, u'Успешно сохранено!')
        return redirect(reverse_lazy('whs:Add-list'))
    rpp = request.GET.get('rpp',20)
    if datefilter.is_valid():
        data = dict(filter(lambda i:i[1],datefilter.cleaned_data.items()))
        queryset = queryset.filter(**data)
    return render(request, 'whs/batchs.html', dict(object_list=queryset,rpp=rpp,
        datefilter=datefilter,factory=factory))
コード例 #2
0
ファイル: views.py プロジェクト: wd5/1-bkz
def sortings(request):
    def prep1(v):
        if isinstance(v,str): return "'%s'" % v
        else: return v
    def prep2(queryset):
        query,params = queryset.query.sql_with_params()
        return query.replace('SUM(T4."amount")','COALESCE(SUM(T4."amount"),0)') % tuple(map(prep1,params))
    q1 = Sorting.objects.filter(type=0).annotate(Sum('sorted__amount')).exclude(sorted__amount__sum=F('amount'))
    q2 = Sorting.objects.filter(type=0).annotate(Sum('sorted__amount'))
    datefilter = YearMonthFilter(request.GET or None,model=Sorting)
    rpp = request.GET.get('rpp',20)
    if datefilter.is_valid():
        data = dict(filter(lambda i:i[1],datefilter.cleaned_data.items()))
        queryset = q2.filter(**data)
    else:
        date = datetime.date.today()
        data = {'date__year':date.year,'date__month':date.month}
        q2 = q2.filter(**data)
        queryset = Sorting.objects.raw("(%s) UNION (%s) ORDER BY date DESC" % tuple(map(prep2,[q1,q2])))
    return render(request, 'whs/sortings.html', dict(object_list=queryset,rpp=rpp,datefilter=datefilter))
コード例 #3
0
ファイル: views.py プロジェクト: wd5/1-bkz
def bills(request):
    queryset = Bill.objects.prefetch_related('solds', 'pallets', 'solds__brick', 'solds__brick_from', 'seller',
        'agent').select_related()
    billfilter = BillFilter(request.GET or None)
    datefilter = YearMonthFilter(request.GET or None,model=Bill)
    rpp = request.GET.get('rpp',20)
    if billfilter.is_valid():
        data = dict(filter(lambda i:i[1],billfilter.cleaned_data.items()))
        if data.has_key('page'):
            data.pop('page')
        if data.has_key('brick'):
            data['solds__brick'] = data.pop('brick')
        if data.has_key('rpp'):
            data.pop('rpp')
        queryset = queryset.filter(**data)
    if datefilter.is_valid():
        data = dict(filter(lambda i:i[1],datefilter.cleaned_data.items()))
        queryset = queryset.filter(**data)
    return render(request,'whs/bills.html',dict(filter=billfilter,datefilter=datefilter,
        object_list=queryset,rpp=rpp))
コード例 #4
0
ファイル: views.py プロジェクト: wd5/1-bkz
def bricks(request):
    """ Главная страница """
    Bricks = Brick.objects.all()
    form = YearMonthFilter(request.GET or None,model=Bill)
    if form.is_valid():
        data = dict([(k, v) for k, v in form.cleaned_data.items() if v is not None])
        if data.has_key('date__month'):
            begin = datetime.date(year=data['date__year'], month=data['date__month'], day=1)
            end = begin + relativedelta(months=1)
        else:
            begin = datetime.date(year=data['date__year'], month=1, day=1)
            end = begin + relativedelta(years=1)
        before = operations(dict(date__gte=end))
        before = calc(before)
    else:
        begin = datetime.date.today().replace(day=1)
        end = begin + relativedelta(months=1)
        before = {}
    opers = operations(dict(date__range=(begin, end - datetime.timedelta(1))))
    for b in Bricks:
        if before:
            b.total += before.get(b.pk, 0)
        b.sold = opers['sold'].get(b.pk, 0)
        b.add = opers['add'].get(b.pk, 0)
        b.t_from = opers['t_from'].get(b.pk, 0)
        b.t_to = opers['t_to'].get(b.pk, 0)
        b.m_from = opers['m_from'].get(b.pk, 0)
        b.m_to = opers['m_to'].get(b.pk, 0)
        b.m_rmv = opers['m_rmv'].get(b.pk, 0)
        b.inv = opers['inv'].get(b.pk, 0)

        b.begin = (b.total
                   + b.sold + b.t_from - b.t_to # Накладные
                   - b.add # Приход
                   + b.inv # Инвенторизация
                   + b.m_from - b.m_to # + b.m_rmv # Перебор кирпича в цехе
            )
        b.opers = b.sold or b.add or b.t_from or b.t_to or b.m_from or b.m_to or b.m_rmv or b.inv
    return render(request, 'whs/bricks.html',
        dict(Bricks=Bricks, order=Brick.order, form=form,brick_menu = get_menu(), 
            begin=begin, end=end - datetime.timedelta(1)))
コード例 #5
0
ファイル: views.py プロジェクト: wd5/1-bkz
def transfers(request):
    datefilter = YearMonthFilter(request.GET or None,model=Bill)
    queryset = Sold.objects.filter(brick_from__isnull=False).values('brick__mark','brick_from__mark').annotate(Sum('amount'))
    if datefilter.is_valid():
        data = dict([('doc__'+k,v) for k,v in datefilter.cleaned_data.items() if v])
    else:
        date = datetime.date.today()
        data = {'doc__date__year':date.year,'doc__date__month':date.month}
    queryset = queryset.filter(**data)
    d = dict(map(lambda x: (x[0],0),mark_c))
    out = OrderedDict()
    for m,l in mark_c:
        out[m]=OrderedDict()
        for w,l in mark_c:
            out[m][w]=0
    d = out
    for s in queryset:
        q = out.get(s['brick_from__mark'],d)
        q[s['brick__mark']]=s['amount__sum']
        out[s['brick_from__mark']]=q
    print out
    return render(request,'whs/transfers.html',{'data':out,'datefilter':datefilter})