Merge pull request #2571 from SchrodingersGat/po-line-item-patch

Add clean() function for PurchaseOrderLineItem
This commit is contained in:
Oliver 2022-01-26 23:44:29 +11:00 committed by GitHub
commit d25397e95c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 57 additions and 9 deletions

View File

@ -822,15 +822,26 @@ class PurchaseOrderLineItem(OrderLineItem):
"""
@staticmethod
def get_api_url():
return reverse('api-po-line-list')
class Meta:
unique_together = (
('order', 'part', 'quantity', 'purchase_price')
)
@staticmethod
def get_api_url():
return reverse('api-po-line-list')
def clean(self):
super().clean()
if self.order.supplier and self.part:
# Supplier part *must* point to the same supplier!
if self.part.supplier != self.order.supplier:
raise ValidationError({
'part': _('Supplier part must match supplier')
})
def __str__(self):
return "{n} x {part} from {supplier} (for {po})".format(
n=decimal2string(self.quantity),

View File

@ -1734,6 +1734,9 @@ function renderModelData(name, model, data, parameters, options) {
case 'partparametertemplate':
renderer = renderPartParameterTemplate;
break;
case 'purchaseorder':
renderer = renderPurchaseOrder;
break;
case 'salesorder':
renderer = renderSalesOrder;
break;

View File

@ -221,13 +221,47 @@ function renderOwner(name, data, parameters, options) {
}
// Renderer for "PurchaseOrder" model
// eslint-disable-next-line no-unused-vars
function renderPurchaseOrder(name, data, parameters, options) {
var html = '';
var prefix = global_settings.PURCHASEORDER_REFERENCE_PREFIX;
var thumbnail = null;
html += `<span>${prefix}${data.reference}</span>`;
if (data.supplier_detail) {
thumbnail = data.supplier_detail.thumbnail || data.supplier_detail.image;
html += ' - ' + select2Thumbnail(thumbnail);
html += `<span>${data.supplier_detail.name}</span>`;
}
if (data.description) {
html += ` - <em>${data.description}</em>`;
}
html += `
<span class='float-right'>
<small>
{% trans "Order ID" %}: ${data.pk}
</small>
</span>
`;
return html;
}
// Renderer for "SalesOrder" model
// eslint-disable-next-line no-unused-vars
function renderSalesOrder(name, data, parameters, options) {
var html = `<span>${data.reference}</span>`;
if (data.description) {
html += ` - <i>${data.description}</i>`;
html += ` - <em>${data.description}</em>`;
}
html += `