Beispiel #1
0
def table_stock_items(request, warehouse_pk=None, param_name=None):
    """Ajax view that returns list of stock items for using in datatables"""

    if not warehouse_pk:
        warehouse_pk = request.GET.get(param_name)

    warehouse = get_object_or_404(ets.models.Warehouse, pk=warehouse_pk)
        
    column_index_map = {
        0: 'commodity__name',
        1: 'project_number',
        2: 'si_code',
        3: 'quality',
        4: 'number_of_units',
        5: 'unit_weight_net',
        6: 'unit_weight_gross',
        7: 'quantity_net',
        8: 'quantity_gross' 
    }

    redirect_url = get_api_url(request, column_index_map, "api_stock_items", { 'warehouse': warehouse.pk })
    if redirect_url:
        return HttpResponse(simplejson.dumps({'redirect_url': redirect_url}), content_type="application/json; charset=utf-8")

    return get_datatables_records(request, warehouse.stock_items.all(), column_index_map, lambda item: [
        unicode(item.commodity),
        item.project_number,
        item.si_code,
        item.get_quality_display(),
        int(item.number_of_units),
        item.unit_weight_net,
        item.unit_weight_gross,
        item.quantity_net,
        item.quantity_gross,
    ])
Beispiel #2
0
def table_waybills(request, queryset=ets.models.Waybill.objects.all(), filtering=None):
    """Ajax view that returns list of waybills for using in datatables"""
    
    search_string = request.GET.get("search_string", "")
    request_params = {}
    if search_string:
        request_params["search_string"] = search_string
        queryset = queryset.filter(pk__icontains=search_string)

    column_index_map = {
        0: 'order__pk',
        1: 'pk',
        2: 'order__warehouse__name',
        3: 'order__consignee__name',
        4: 'order__location__name',
        5: 'destination__name',
        6: 'transaction_type',
        7: 'transport_dispach_signed_date',
        8: 'receipt_signed_date',
        9: 'pk',
        10: 'pk',
        11: 'pk',
    }

    params = { 'filtering': filtering } if filtering else None
    redirect_url = get_api_url(request, column_index_map, "api_waybills", params, request_params )
    if redirect_url:
        return HttpResponse(simplejson.dumps({'redirect_url': redirect_url}), content_type="application/json; charset=utf-8")

    return get_datatables_records(request, queryset, column_index_map, lambda item: [
        fill_link(item.order.get_absolute_url(), item.order.pk),
        fill_link(item.get_absolute_url(), item.pk),
        item.order.warehouse.name,
        item.order.consignee.name,
        item.order.location.name,
        item.destination.name if item.destination else "",
        item.get_transaction_type_display(),
        item.transport_dispach_signed_date and date_filter(item.transport_dispach_signed_date).upper() \
                        or fill_link(item.get_absolute_url(), _("Open")),
        item.receipt_signed_date and date_filter(item.receipt_signed_date).upper() \
                        or fill_link(reverse('waybill_reception', kwargs={'waybill_pk': item.pk})
                            if item.has_receive_permission(request.user) else '', _("Receive")),
                        
        "%s/%s" % (item.validated and "D" or "-", item.receipt_validated and "R" or "-", ),
        "%s/%s" % (item.sent_compas and "D" or "-", item.receipt_sent_compas and "R" or "-", ),        
        
        fill_link(reverse('waybill_delete', kwargs={'waybill_pk': item.pk}) \
                  if item.has_delete_permission(request.user) else '',
                  _("Delete"), "delete_waybill"),
    ])
Beispiel #3
0
def table_validate_waybills(request, queryset=ets.models.Waybill.objects.all(), filtering=None):
    """Ajax view that returns list of validated/not validated waybills for using in datatables"""
    
    if filtering in ["dispatch_validated", "validate_dispatch"]:
        url = "validate_dispatch"
        logger_action = ets.models.CompasLogger.DISPATCH
        queryset = queryset.filter(**get_dispatch_compas_filters(request.user))
    elif filtering in ["receipt_validated", "validate_receipt"]:
        url = "validate_receipt"
        logger_action = ets.models.CompasLogger.RECEIPT
        queryset = queryset.filter(**get_receipt_compas_filters(request.user))
        
    column_index_map = {
        0: 'order__pk',
        1: 'pk',
        2: 'order__warehouse__name',
        3: 'order__consignee__name',
        4: 'order__location__name',
        5: 'transport_dispach_signed_date',
        6: 'receipt_signed_date',
        7: 'pk',
        8: 'pk',
    }

    params = { 'filtering': filtering } if filtering else None
    redirect_url = get_api_url(request, column_index_map, "api_waybills", params)
    if redirect_url:
        return HttpResponse(simplejson.dumps({'redirect_url': redirect_url}), content_type="application/json; charset=utf-8")

    return get_datatables_records(request, queryset, column_index_map, lambda item: [
        fill_link(item.order.get_absolute_url(), item.order.pk),
        fill_link(item.get_absolute_url(), item.pk),
        item.order.warehouse.name,
        item.order.consignee.name,
        item.order.location.name,
        item.transport_dispach_signed_date and date_filter(item.transport_dispach_signed_date).upper() or _("Pending"),
        item.receipt_signed_date and date_filter(item.receipt_signed_date).upper() or _("Pending"),
        fill_link(reverse(url, kwargs={'waybill_pk': item.pk}), _("Validate"), "validate-link"),
        fill_link(reverse("waybill_errors", kwargs={'waybill_pk': item.pk, "logger_action": logger_action}), _("Show errors"), "error-link") if item.compass_loggers.filter(action=logger_action).exists() else "",
    ])
Beispiel #4
0
def table_compas_waybills(request, queryset=ets.models.Waybill.objects.all(), filtering=None):
    """Ajax view that returns list of compas' waybills for using in datatables"""
    
    column_index_map = {
        0: 'order__pk',
        1: 'pk',
        2: 'order__warehouse__location__name',
        3: 'order__consignee__name',
        4: 'order__location__name',
    }

    params = { 'filtering': filtering } if filtering else None
    redirect_url = get_api_url(request, column_index_map, "api_waybills", params)
    if redirect_url:
        return HttpResponse(simplejson.dumps({'redirect_url': redirect_url}), content_type="application/json; charset=utf-8")
    
    return get_datatables_records(request, queryset, column_index_map, lambda item: [
        fill_link(item.order.get_absolute_url(), item.order.pk),
        fill_link(item.get_absolute_url(), item.pk),
        item.order.warehouse.location.name,
        item.order.consignee.name,
        item.order.location.name,
    ])
Beispiel #5
0
def table_orders(request, queryset):
    """Ajax view that returns list of orders for using in datatables"""
    column_index_map = {
        0: 'code',
        1: 'created',
        2: 'dispatch_date',
        3: 'expiry',
        4: 'warehouse__name',
        5: 'location__name',
        6: 'consignee__code',
        7: 'transport_name',
        8: 'code',
        9: 'code',
        10: 'code',
    }
    
    queryset = queryset.filter(**filter_for_orders())

    redirect_url = get_api_url(request, column_index_map, "api_orders")
    if redirect_url:
        return HttpResponse(simplejson.dumps({'redirect_url': redirect_url}), content_type="application/json; charset=utf-8")

    return get_datatables_records(request, queryset, column_index_map, lambda item: [
        fill_link(item.get_absolute_url(), item.code),
        date_filter(item.created).upper(),
        date_filter(item.dispatch_date).upper(),
        date_filter(item.expiry).upper(),
        item.warehouse.name,
        item.location.name,
        unicode(item.consignee),
        item.transport_name,
        item.percentage,
        fill_link(reverse('waybill_create', kwargs={'order_pk': item.pk}) \
                  if item.has_waybill_creation_permission(request.user) else '', 
                  _("Create")),
        item.is_expired(),
        ])
Beispiel #6
0
def table_warehouses(request, queryset=ets.models.Warehouse):
    """Ajax view that returns list of warehouses for using in datatables"""

    column_index_map = {
        0: 'code',
        1: 'name',
        2: 'location__name',
        3: 'organization__name',
        4: 'compas_text',
        5: 'code'
    }

    redirect_url = get_api_url(request, column_index_map, "api_warehouses")
    if redirect_url:
        return HttpResponse(simplejson.dumps({'redirect_url': redirect_url}), content_type="application/json; charset=utf-8")

    return get_datatables_records(request, queryset, column_index_map, lambda item: [
        fill_link(reverse('stock_list', kwargs={ 'object_id': item.code }), item.code),
        item.name,
        item.location.name,
        item.organization and item.organization.name or '',
        item.compas_text,
        fill_link(reverse('export_warehouse_file', kwargs={ 'data_type': "data", 'warehouse': item.code }), _('download')),
    ])