mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Order parts from "supplier parts" page
- Prevent duplicate parts from loading
This commit is contained in:
parent
c0163a476f
commit
28f3244574
@ -546,14 +546,6 @@ $('#allocate-selected-items').click(function() {
|
||||
);
|
||||
});
|
||||
|
||||
$("#btn-order-parts").click(function() {
|
||||
launchModalForm("/order/purchase-order/order-parts/", {
|
||||
data: {
|
||||
build: {{ build.id }},
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
{% endif %}
|
||||
|
||||
enableSidebar('buildorder');
|
||||
|
@ -333,14 +333,6 @@
|
||||
orderParts(
|
||||
parts,
|
||||
);
|
||||
|
||||
return;
|
||||
|
||||
launchModalForm("/order/purchase-order/order-parts/", {
|
||||
data: {
|
||||
parts: parts,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
{% endif %}
|
||||
@ -404,14 +396,16 @@
|
||||
var parts = [];
|
||||
|
||||
selections.forEach(function(item) {
|
||||
parts.push(item.part);
|
||||
var part = item.part_detail;
|
||||
parts.push(part);
|
||||
});
|
||||
|
||||
launchModalForm("/order/purchase-order/order-parts/", {
|
||||
data: {
|
||||
parts: parts,
|
||||
},
|
||||
});
|
||||
orderParts(
|
||||
parts,
|
||||
{
|
||||
supplier: {{ company.pk }},
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
{% endif %}
|
||||
|
@ -485,9 +485,16 @@ function orderParts(parts_list, options={}) {
|
||||
|
||||
var parts = [];
|
||||
|
||||
var parts_seen = {};
|
||||
|
||||
parts_list.forEach(function(part) {
|
||||
if (part.purchaseable) {
|
||||
parts.push(part);
|
||||
|
||||
// Prevent duplicates
|
||||
if (!(part.pk in parts_seen)) {
|
||||
parts_seen[part.pk] = true;
|
||||
parts.push(part);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -622,24 +629,40 @@ function orderParts(parts_list, options={}) {
|
||||
</table>
|
||||
`;
|
||||
|
||||
// Construct API filters for the SupplierPart field
|
||||
var supplier_part_filters = {
|
||||
supplier_detail: true,
|
||||
part_detail: true,
|
||||
};
|
||||
|
||||
if (options.supplier) {
|
||||
supplier_part_filters.supplier = options.supplier;
|
||||
}
|
||||
|
||||
// Construct API filtres for the PurchaseOrder field
|
||||
var order_filters = {
|
||||
status: {{ PurchaseOrderStatus.PENDING }},
|
||||
supplier_detail: true,
|
||||
};
|
||||
|
||||
if (options.supplier) {
|
||||
order_filters.supplier = options.supplier;
|
||||
}
|
||||
|
||||
constructFormBody({}, {
|
||||
preFormContent: html,
|
||||
title: '{% trans "Order Parts" %}',
|
||||
preventSubmit: true,
|
||||
closeText: '{% trans "Close" %}',
|
||||
afterRender: function(fields, opts) {
|
||||
// TODO
|
||||
parts.forEach(function(part) {
|
||||
|
||||
var filters = {
|
||||
part: part.pk,
|
||||
supplier_detail: true,
|
||||
part_detail: true,
|
||||
};
|
||||
// Filter by base part
|
||||
supplier_part_filters.part = part.pk;
|
||||
|
||||
if (part.manufacturer_part) {
|
||||
// Filter by manufacturer part
|
||||
filters.manufacturer_part = part.manufacturer_part;
|
||||
supplier_part_filters.manufacturer_part = part.manufacturer_part;
|
||||
}
|
||||
|
||||
// Configure the "supplier part" field
|
||||
@ -650,7 +673,7 @@ function orderParts(parts_list, options={}) {
|
||||
required: true,
|
||||
type: 'related field',
|
||||
auto_fill: true,
|
||||
filters: filters,
|
||||
filters: supplier_part_filters,
|
||||
noResults: function(query) {
|
||||
return '{% trans "No matching supplier parts" %}';
|
||||
}
|
||||
@ -664,10 +687,7 @@ function orderParts(parts_list, options={}) {
|
||||
required: true,
|
||||
type: 'related field',
|
||||
auto_fill: false,
|
||||
filters: {
|
||||
status: {{ PurchaseOrderStatus.PENDING }},
|
||||
supplier_detail: true,
|
||||
},
|
||||
filters: order_filters,
|
||||
noResults: function(query) {
|
||||
return '{% trans "No matching purchase orders" %}';
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user