mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Fixes for new "allocation" tab
- Fix broken link - Add "description" column - Add thumbnail images
This commit is contained in:
parent
0ea0edf1bb
commit
f6ffef66e0
@ -822,6 +822,7 @@ class SOAllocationList(generics.ListAPIView):
|
|||||||
kwargs['item_detail'] = str2bool(params.get('item_detail', False))
|
kwargs['item_detail'] = str2bool(params.get('item_detail', False))
|
||||||
kwargs['order_detail'] = str2bool(params.get('order_detail', False))
|
kwargs['order_detail'] = str2bool(params.get('order_detail', False))
|
||||||
kwargs['location_detail'] = str2bool(params.get('location_detail', False))
|
kwargs['location_detail'] = str2bool(params.get('location_detail', False))
|
||||||
|
kwargs['customer_detail'] = str2bool(params.get('customer_detail', False))
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -495,6 +495,7 @@ class SalesOrderAllocationSerializer(InvenTreeModelSerializer):
|
|||||||
part_detail = PartBriefSerializer(source='item.part', many=False, read_only=True)
|
part_detail = PartBriefSerializer(source='item.part', many=False, read_only=True)
|
||||||
item_detail = stock.serializers.StockItemSerializer(source='item', many=False, read_only=True)
|
item_detail = stock.serializers.StockItemSerializer(source='item', many=False, read_only=True)
|
||||||
location_detail = stock.serializers.LocationSerializer(source='item.location', many=False, read_only=True)
|
location_detail = stock.serializers.LocationSerializer(source='item.location', many=False, read_only=True)
|
||||||
|
customer_detail = CompanyBriefSerializer(source='line.order.customer', many=False, read_only=True)
|
||||||
|
|
||||||
shipment_date = serializers.DateField(source='shipment.shipment_date', read_only=True)
|
shipment_date = serializers.DateField(source='shipment.shipment_date', read_only=True)
|
||||||
|
|
||||||
@ -504,6 +505,7 @@ class SalesOrderAllocationSerializer(InvenTreeModelSerializer):
|
|||||||
part_detail = kwargs.pop('part_detail', True)
|
part_detail = kwargs.pop('part_detail', True)
|
||||||
item_detail = kwargs.pop('item_detail', False)
|
item_detail = kwargs.pop('item_detail', False)
|
||||||
location_detail = kwargs.pop('location_detail', False)
|
location_detail = kwargs.pop('location_detail', False)
|
||||||
|
customer_detail = kwargs.pop('customer_detail', False)
|
||||||
|
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
@ -519,12 +521,16 @@ class SalesOrderAllocationSerializer(InvenTreeModelSerializer):
|
|||||||
if not location_detail:
|
if not location_detail:
|
||||||
self.fields.pop('location_detail')
|
self.fields.pop('location_detail')
|
||||||
|
|
||||||
|
if not customer_detail:
|
||||||
|
self.fields.pop('customer_detail')
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = order.models.SalesOrderAllocation
|
model = order.models.SalesOrderAllocation
|
||||||
|
|
||||||
fields = [
|
fields = [
|
||||||
'pk',
|
'pk',
|
||||||
'line',
|
'line',
|
||||||
|
'customer_detail',
|
||||||
'serial',
|
'serial',
|
||||||
'quantity',
|
'quantity',
|
||||||
'location',
|
'location',
|
||||||
|
@ -62,15 +62,16 @@ function imageHoverIcon(url) {
|
|||||||
* @param {String} url is the image URL
|
* @param {String} url is the image URL
|
||||||
* @returns html <img> tag
|
* @returns html <img> tag
|
||||||
*/
|
*/
|
||||||
function thumbnailImage(url) {
|
function thumbnailImage(url, options={}) {
|
||||||
|
|
||||||
if (!url) {
|
if (!url) {
|
||||||
url = blankImage();
|
url = blankImage();
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Support insertion of custom classes
|
// TODO: Support insertion of custom classes
|
||||||
|
var title = options.title || '';
|
||||||
|
|
||||||
var html = `<img class='hover-img-thumb' src='${url}'>`;
|
var html = `<img class='hover-img-thumb' src='${url}' title='${title}'>`;
|
||||||
|
|
||||||
return html;
|
return html;
|
||||||
|
|
||||||
|
@ -2251,8 +2251,12 @@ function loadStockAllocationTable(table, options={}) {
|
|||||||
onLoadSuccess: function(tableData) {
|
onLoadSuccess: function(tableData) {
|
||||||
|
|
||||||
var query_params = params;
|
var query_params = params;
|
||||||
|
|
||||||
|
query_params.customer_detail = true;
|
||||||
query_params.order_detail = true;
|
query_params.order_detail = true;
|
||||||
|
|
||||||
|
delete query_params.build_detail;
|
||||||
|
|
||||||
// Load sales order allocation data
|
// Load sales order allocation data
|
||||||
inventreeGet('{% url "api-so-allocation-list" %}', query_params, {
|
inventreeGet('{% url "api-so-allocation-list" %}', query_params, {
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
@ -2270,18 +2274,34 @@ function loadStockAllocationTable(table, options={}) {
|
|||||||
var html = '';
|
var html = '';
|
||||||
|
|
||||||
if (row.build) {
|
if (row.build) {
|
||||||
html = renderLink(
|
|
||||||
|
// Add an icon for the part being built
|
||||||
|
html += thumbnailImage(row.build_detail.part_detail.thumbnail, {
|
||||||
|
title: row.build_detail.part_detail.full_name
|
||||||
|
});
|
||||||
|
|
||||||
|
html += ' ';
|
||||||
|
|
||||||
|
html += renderLink(
|
||||||
global_settings.BUILDORDER_REFERENCE_PREFIX + row.build_detail.reference,
|
global_settings.BUILDORDER_REFERENCE_PREFIX + row.build_detail.reference,
|
||||||
`/build/${row.build}/`
|
`/build/${row.build}/`
|
||||||
);
|
);
|
||||||
|
|
||||||
html += makeIconBadge('fa-tools', '{% trans "Build Order" %}');
|
html += makeIconBadge('fa-tools', '{% trans "Build Order" %}');
|
||||||
} else if (row.order) {
|
} else if (row.order) {
|
||||||
html += renderLink(
|
|
||||||
global_settings.SALESORDER_REFERENCE_PREFIX + row.order,
|
|
||||||
`/order/so/${row.order}/`
|
|
||||||
);
|
|
||||||
|
|
||||||
|
// Add an icon for the customer
|
||||||
|
html += thumbnailImage(
|
||||||
|
row.customer_detail.thumbnail || row.customer_detail.image, {
|
||||||
|
title: row.customer_detail.name,
|
||||||
|
});
|
||||||
|
|
||||||
|
html += ' ';
|
||||||
|
|
||||||
|
html += renderLink(
|
||||||
|
global_settings.SALESORDER_REFERENCE_PREFIX + row.order_detail.reference,
|
||||||
|
`/order/sales-order/${row.order}/`
|
||||||
|
);
|
||||||
html += makeIconBadge('fa-truck', '{% trans "Sales Order" %}');
|
html += makeIconBadge('fa-truck', '{% trans "Sales Order" %}');
|
||||||
} else {
|
} else {
|
||||||
return '-';
|
return '-';
|
||||||
@ -2290,6 +2310,19 @@ function loadStockAllocationTable(table, options={}) {
|
|||||||
return html;
|
return html;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
field: 'description',
|
||||||
|
title: '{% trans "Description" %}',
|
||||||
|
formatter: function(value, row) {
|
||||||
|
if (row.order_detail) {
|
||||||
|
return row.order_detail.description;
|
||||||
|
} else if (row.build_detail) {
|
||||||
|
return row.build_detail.title;
|
||||||
|
} else {
|
||||||
|
return '-';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
field: 'status',
|
field: 'status',
|
||||||
title: '{% trans "Order Status" %}',
|
title: '{% trans "Order Status" %}',
|
||||||
|
Loading…
Reference in New Issue
Block a user