mirror of
https://github.com/inventree/InvenTree.git
synced 2025-05-01 13:06:45 +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 %}
|
{% endif %}
|
||||||
|
|
||||||
enableSidebar('buildorder');
|
enableSidebar('buildorder');
|
||||||
|
@ -333,14 +333,6 @@
|
|||||||
orderParts(
|
orderParts(
|
||||||
parts,
|
parts,
|
||||||
);
|
);
|
||||||
|
|
||||||
return;
|
|
||||||
|
|
||||||
launchModalForm("/order/purchase-order/order-parts/", {
|
|
||||||
data: {
|
|
||||||
parts: parts,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@ -404,14 +396,16 @@
|
|||||||
var parts = [];
|
var parts = [];
|
||||||
|
|
||||||
selections.forEach(function(item) {
|
selections.forEach(function(item) {
|
||||||
parts.push(item.part);
|
var part = item.part_detail;
|
||||||
|
parts.push(part);
|
||||||
});
|
});
|
||||||
|
|
||||||
launchModalForm("/order/purchase-order/order-parts/", {
|
orderParts(
|
||||||
data: {
|
parts,
|
||||||
parts: parts,
|
{
|
||||||
},
|
supplier: {{ company.pk }},
|
||||||
});
|
}
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -485,9 +485,16 @@ function orderParts(parts_list, options={}) {
|
|||||||
|
|
||||||
var parts = [];
|
var parts = [];
|
||||||
|
|
||||||
|
var parts_seen = {};
|
||||||
|
|
||||||
parts_list.forEach(function(part) {
|
parts_list.forEach(function(part) {
|
||||||
if (part.purchaseable) {
|
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>
|
</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({}, {
|
constructFormBody({}, {
|
||||||
preFormContent: html,
|
preFormContent: html,
|
||||||
title: '{% trans "Order Parts" %}',
|
title: '{% trans "Order Parts" %}',
|
||||||
preventSubmit: true,
|
preventSubmit: true,
|
||||||
closeText: '{% trans "Close" %}',
|
closeText: '{% trans "Close" %}',
|
||||||
afterRender: function(fields, opts) {
|
afterRender: function(fields, opts) {
|
||||||
// TODO
|
|
||||||
parts.forEach(function(part) {
|
parts.forEach(function(part) {
|
||||||
|
|
||||||
var filters = {
|
// Filter by base part
|
||||||
part: part.pk,
|
supplier_part_filters.part = part.pk;
|
||||||
supplier_detail: true,
|
|
||||||
part_detail: true,
|
|
||||||
};
|
|
||||||
|
|
||||||
if (part.manufacturer_part) {
|
if (part.manufacturer_part) {
|
||||||
// Filter by 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
|
// Configure the "supplier part" field
|
||||||
@ -650,7 +673,7 @@ function orderParts(parts_list, options={}) {
|
|||||||
required: true,
|
required: true,
|
||||||
type: 'related field',
|
type: 'related field',
|
||||||
auto_fill: true,
|
auto_fill: true,
|
||||||
filters: filters,
|
filters: supplier_part_filters,
|
||||||
noResults: function(query) {
|
noResults: function(query) {
|
||||||
return '{% trans "No matching supplier parts" %}';
|
return '{% trans "No matching supplier parts" %}';
|
||||||
}
|
}
|
||||||
@ -664,10 +687,7 @@ function orderParts(parts_list, options={}) {
|
|||||||
required: true,
|
required: true,
|
||||||
type: 'related field',
|
type: 'related field',
|
||||||
auto_fill: false,
|
auto_fill: false,
|
||||||
filters: {
|
filters: order_filters,
|
||||||
status: {{ PurchaseOrderStatus.PENDING }},
|
|
||||||
supplier_detail: true,
|
|
||||||
},
|
|
||||||
noResults: function(query) {
|
noResults: function(query) {
|
||||||
return '{% trans "No matching purchase orders" %}';
|
return '{% trans "No matching purchase orders" %}';
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user