mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-29 18:04:46 +00:00
Contract Manufacturing : Customer Provided Items (#15828)
* Material Request from Production Plan for Customer provided parts * Test cases * Customer web portal for their material requests
This commit is contained in:
committed by
Nabin Hait
parent
35b2627112
commit
2b14d6a058
74
erpnext/templates/pages/material_request_info.html
Normal file
74
erpnext/templates/pages/material_request_info.html
Normal file
@@ -0,0 +1,74 @@
|
||||
{% extends "templates/web.html" %}
|
||||
{% from "erpnext/templates/includes/order/order_macros.html" import item_name_and_description %}
|
||||
|
||||
{% block breadcrumbs %}
|
||||
{% include "templates/includes/breadcrumbs.html" %}
|
||||
{% endblock %}
|
||||
|
||||
{% block title %}{{ doc.name }}{% endblock %}
|
||||
|
||||
{% block header %}
|
||||
<h1>{{ doc.name }}</h1>
|
||||
{% endblock %}
|
||||
|
||||
{% block header_actions %}
|
||||
<a class='btn btn-xs btn-default' href='/printview?doctype={{ doc.doctype}}&name={{ doc.name }}&format={{ print_format }}' target="_blank" rel="noopener noreferrer">{{ _("Print") }}</a>
|
||||
{% endblock %}
|
||||
|
||||
{% block page_content %}
|
||||
|
||||
<div class="row transaction-subheading">
|
||||
<div class="col-xs-6">
|
||||
|
||||
<span class="indicator {{ doc.indicator_color or ("blue" if doc.docstatus==1 else "darkgrey") }}">
|
||||
{{ _(doc.get('indicator_title')) or _(doc.status) or _("Submitted") }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-xs-6 text-muted text-right small">
|
||||
{{ frappe.utils.formatdate(doc.transaction_date, 'medium') }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if doc._header %}
|
||||
{{ doc._header }}
|
||||
{% endif %}
|
||||
|
||||
<div class="order-container">
|
||||
|
||||
<!-- items -->
|
||||
<div class="order-item-table">
|
||||
<div class="row order-items order-item-header text-muted">
|
||||
<div class="col-sm-6 col-xs-6 h6 text-uppercase">
|
||||
{{ _("Item") }}
|
||||
</div>
|
||||
<div class="col-sm-3 col-xs-3 text-right h6 text-uppercase">
|
||||
{{ _("Work Order") }}
|
||||
</div>
|
||||
<div class="col-sm-3 col-xs-3 text-right h6 text-uppercase">
|
||||
{{ _("Quantity") }}
|
||||
</div>
|
||||
</div>
|
||||
{% for d in doc.items %}
|
||||
{% if d.customer_provided %}
|
||||
<div class="row order-items">
|
||||
<div class="col-sm-6 col-xs-6">
|
||||
{{ item_name_and_description(d) }}
|
||||
</div>
|
||||
<div class="col-sm-3 col-xs-3 text-right">
|
||||
{% for wo in d.work_orders %}
|
||||
<p class="text-muted small">{{_(wo.name) }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="col-sm-3 col-xs-3 text-right">
|
||||
{{ d.qty }}
|
||||
{% if d.delivered_qty is defined and d.delivered_qty != None %}
|
||||
<p class="text-muted small">{{
|
||||
_("Delivered: {0}").format(d.delivered_qty) }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
49
erpnext/templates/pages/material_request_info.py
Normal file
49
erpnext/templates/pages/material_request_info.py
Normal file
@@ -0,0 +1,49 @@
|
||||
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
||||
# License: GNU General Public License v3. See license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe import _
|
||||
|
||||
from frappe.utils import flt
|
||||
|
||||
def get_context(context):
|
||||
context.no_cache = 1
|
||||
context.show_sidebar = True
|
||||
context.doc = frappe.get_doc(frappe.form_dict.doctype, frappe.form_dict.name)
|
||||
if hasattr(context.doc, "set_indicator"):
|
||||
context.doc.set_indicator()
|
||||
|
||||
context.parents = frappe.form_dict.parents
|
||||
context.title = frappe.form_dict.name
|
||||
|
||||
if not frappe.has_website_permission(context.doc):
|
||||
frappe.throw(_("Not Permitted"), frappe.PermissionError)
|
||||
|
||||
default_print_format = frappe.db.get_value('Property Setter', dict(property='default_print_format', doc_type=frappe.form_dict.doctype), "value")
|
||||
if default_print_format:
|
||||
context.print_format = default_print_format
|
||||
else:
|
||||
context.print_format = "Standard"
|
||||
context.doc.items = get_more_items_info(context.doc.items, context.doc.name)
|
||||
|
||||
def get_more_items_info(items, material_request):
|
||||
for item in items:
|
||||
item.customer_provided = frappe.get_value('Item', item.item_code, 'is_customer_provided_item')
|
||||
item.work_orders = frappe.db.sql("""
|
||||
select
|
||||
wo.name, wo.status, wo_item.consumed_qty
|
||||
from
|
||||
`tabWork Order Item` wo_item, `tabWork Order` wo
|
||||
where
|
||||
wo_item.item_code=%s
|
||||
and wo_item.consumed_qty=0
|
||||
and wo_item.parent=wo.name
|
||||
and wo.status not in ('Completed', 'Cancelled', 'Stopped')
|
||||
order by
|
||||
wo.name asc""", item.item_code, as_dict=1)
|
||||
item.delivered_qty = flt(frappe.db.sql("""select sum(transfer_qty)
|
||||
from `tabStock Entry Detail` where material_request = %s
|
||||
and item_code = %s and docstatus = 1""",
|
||||
(material_request, item.item_code))[0][0])
|
||||
return items
|
||||
Reference in New Issue
Block a user