Create a new purchase order from a company page

This commit is contained in:
Oliver Walters 2019-06-10 22:56:34 +10:00
parent c132f275f5
commit 04a9b1a980
5 changed files with 41 additions and 4 deletions

View File

@ -6,11 +6,32 @@
<h4>Open Purchase Orders</h4> <h4>Open Purchase Orders</h4>
<div class='container' style='float: right;'>
<div class='btn-group'>
<button class='btn btn-primary' type='button' id='po-create' title='Create new purchase order'>New Purchase Order</button>
</div>
</div>
{% include "order/po_table.html" with orders=company.outstanding_purchase_orders.all %} {% include "order/po_table.html" with orders=company.outstanding_purchase_orders.all %}
{% if company.closed_purchase_orders.count > 0 %} {% if company.closed_purchase_orders.count > 0 %}
{% include "order/po_table_collapse.html" with title="Closed Orders" orders=company.closed_purchase_orders.all %} {% include "order/po_table_collapse.html" with title="Closed Orders" orders=company.closed_purchase_orders.all %}
{% endif %} {% endif %}
{% endblock %}
{% block js_ready %}
{{ block.super }}
$("#po-create").click(function() {
launchModalForm("{% url 'purchase-order-create' %}",
{
data: {
supplier: {{ company.id }},
},
follow: true,
}
);
});
{% endblock %} {% endblock %}

View File

@ -7,7 +7,7 @@ Order model definitions
from django.db import models from django.db import models
from django.core.validators import MinValueValidator from django.core.validators import MinValueValidator
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.urls import reverse
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from datetime import datetime from datetime import datetime
@ -98,6 +98,9 @@ class PurchaseOrder(Order):
help_text=_('Company') help_text=_('Company')
) )
def get_absolute_url(self):
return reverse('purchase-order-detail', kwargs={'pk': self.id})
class OrderLineItem(models.Model): class OrderLineItem(models.Model):
""" Abstract model for an order line item """ Abstract model for an order line item

View File

@ -7,7 +7,7 @@
</tr> </tr>
{% for order in orders %} {% for order in orders %}
<tr> <tr>
<td>{% include "hover_image.html" with image=order.supplier.image hover=True %}<a href="{{ order.supplier.get_absolute_url }}">{{ order.supplier.name }}</a></td> <td>{% include "hover_image.html" with image=order.supplier.image hover=True %}<a href="{{ order.supplier.get_absolute_url }}purchase-orders/">{{ order.supplier.name }}</a></td>
<td><a href="{% url 'purchase-order-detail' order.id %}">{{ order }}</a></td> <td><a href="{% url 'purchase-order-detail' order.id %}">{{ order }}</a></td>
<td>{{ order.description }}</td> <td>{{ order.description }}</td>
<td>{% include "order/order_status.html" %}</td> <td>{% include "order/order_status.html" %}</td>

View File

@ -31,6 +31,10 @@ InvenTree | {{ order }}
<div class='col-sm-6'> <div class='col-sm-6'>
<h4>Purchase Order Details</h4> <h4>Purchase Order Details</h4>
<table class='table'> <table class='table'>
<tr>
<td>Supplier</td>
<td><a href="{% url 'company-detail' order.supplier.id %}">{{ order.supplier }}</a></td>
</tr>
<tr> <tr>
<td>Status</td> <td>Status</td>
<td>{% include "order/order_status.html" %}</td> <td>{% include "order/order_status.html" %}</td>
@ -57,7 +61,7 @@ InvenTree | {{ order }}
<div class='btn-group' style='float: right;'> <div class='btn-group' style='float: right;'>
<button type='button' class='btn btn-primary' id='edit-order'>Edit Order</button> <button type='button' class='btn btn-primary' id='edit-order'>Edit Order</button>
{% if order.status == OrderStatus.PENDING %} {% if order.status == OrderStatus.PENDING and order.lines.count > 0 %}
<button type='button' class='btn btn-primary' id='place-order'>Place Order</button> <button type='button' class='btn btn-primary' id='place-order'>Place Order</button>
{% endif %} {% endif %}
</div> </div>

View File

@ -10,7 +10,7 @@ from django.views.generic import DetailView, ListView
from django.forms import HiddenInput from django.forms import HiddenInput
from .models import PurchaseOrder, PurchaseOrderLineItem from .models import PurchaseOrder, PurchaseOrderLineItem
from company.models import SupplierPart from company.models import Company, SupplierPart
from . import forms as order_forms from . import forms as order_forms
@ -70,6 +70,15 @@ class PurchaseOrderCreate(AjaxCreateView):
initials['status'] = OrderStatus.PENDING initials['status'] = OrderStatus.PENDING
supplier_id = self.request.GET.get('supplier', None)
if supplier_id:
try:
supplier = Company.objects.get(id=supplier_id)
initials['supplier'] = supplier
except Company.DoesNotExist:
pass
return initials return initials