Пример #1
0
def inventory(request):
    form = InventorySearchForm(request.GET or None)
    extra_context = {
        'form': form,
        'product': None,
        'product_inventory_tuples': None
    }
    if form.is_valid():
        product = form.cleaned_data['product']
        poly_product = polymorphic_type(product)
        product_inventory_tuples = []
        if hasattr(poly_product, "get_physical_products"):
            for p in poly_product.get_physical_products():
                inventory_records = [ir for ir in p.inventory_records.with_net_adjustments_qty().all()]
                product_inventory_tuples.append(
                    (p, inventory_records)
                )
        else:
            inventory_records = [ir for ir in poly_product.inventory_records.with_net_adjustments_qty().all()]
            product_inventory_tuples.append(
                (poly_product, inventory_records)
            )
        extra_context.update({
            'product': poly_product,
            'product_inventory_tuples': product_inventory_tuples,
        })
    return render_to_response("inventory/inventory.html", extra_context, RequestContext(request))
Пример #2
0
 def get_formsets(self, request, obj=None):
     # get polymorphic type of obj
     product = None
     if obj is not None:
         product = polymorphic_type(obj)
     for inline in self.get_inline_instances(request):
         # hide InventoryRecordInline for product types that don't have inventory
         if isinstance(inline, InventoryRecordInline) and \
            product is not None and \
            product.has_editable_inventory==False:
             continue
         yield inline.get_formset(request, obj)
Пример #3
0
def expected_inventory(request):
    form = ExpectedInventorySearchForm(request.GET or None)
    extra_context = {
        'form': form
    }
    if form.is_valid():
        product = form.cleaned_data['product']
        facility = form.cleaned_data['facility']
        start_time = form.cleaned_data['start_time']
        end_time = form.cleaned_data['end_time']
        increment = form.cleaned_data['increment']

        poly_product = polymorphic_type(product)
        physical_products = [poly_product, ]
        if hasattr(poly_product, 'get_physical_products'):
            physical_products = getattr(poly_product, 'get_physical_products')()
        expected_inventories = []
        for i, p in enumerate(physical_products):
            # goal is to build a list of lists in the the following format:
            # [
            #   [time1, expected_inventory_for_p1_at_time1, expected_inventory_for_p2_at_time1, ...]
            #   [time1, expected_inventory_for_p1_at_time2, expected_inventory_for_p2_at_time2, ...]
            # ]
            expected_inventory = facility.get_expected_inventory_by_time(p.id, start_time, end_time, increment)
            for j, ei in enumerate(expected_inventory):
                if i == 0:
                    # for first product, append new list with time record and expected inventory
                    expected_inventories.append([ei[0], ei[1]])
                else:
                    # for subsequent products, append expected inventory to inner list
                    expected_inventories[j].append(ei[1])

        extra_context.update({
            'product': poly_product,
            'physical_products': physical_products,
            'expected_inventories': expected_inventories,
            'form': form
        })
    return render_to_response("inventory/expected_inventory.html", extra_context, RequestContext(request))
Пример #4
0
 def _get_inventory_records(self):
     poly_product = polymorphic_type(self.physical_product)
     return poly_product.inventory_records
Пример #5
0
 def _get_inventory_records(self):
     inventory_records = []
     for p in self.get_physical_products():
         poly_product = polymorphic_type(p)
         inventory_records.extend(poly_product.inventory_records)
     return inventory_records