Merge branch 'rmehta-microtemplate-fixes' into develop
This commit is contained in:
commit
854f9895e4
@ -16,7 +16,6 @@ class Account(Document):
|
||||
if not frozen_accounts_modifier or frozen_accounts_modifier in frappe.user.get_roles():
|
||||
self.get("__onload").can_freeze_account = True
|
||||
|
||||
|
||||
def autoname(self):
|
||||
self.name = self.account_name.strip() + ' - ' + \
|
||||
frappe.db.get_value("Company", self.company, "abbr")
|
||||
|
@ -440,7 +440,7 @@
|
||||
"icon": "icon-file-text",
|
||||
"idx": 1,
|
||||
"is_submittable": 1,
|
||||
"modified": "2014-05-27 03:49:12.326026",
|
||||
"modified": "2014-07-31 05:05:03.294068",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Accounts",
|
||||
"name": "Journal Voucher",
|
||||
|
@ -0,0 +1,20 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-10">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
<span class="text-muted" style="margin-right: 8px;">
|
||||
{%= doc.get_formatted("posting_date") %}</span>
|
||||
<span class="label label-info filterable"
|
||||
data-filter="voucher_type,=,{%= doc.voucher_type %}">
|
||||
{%= doc.voucher_type %}
|
||||
</span>
|
||||
{% if(doc.docstatus===0) { %}
|
||||
<span class="label label-danger filterable"
|
||||
data-filter="docstatus,=,0">{%= __("Draft") %}</span>
|
||||
{% } %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-2 text-right">
|
||||
{%= doc.get_formatted("total_debit") %}
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,3 @@
|
||||
frappe.listview_settings['Journal Voucher'] = {
|
||||
add_fields: ["voucher_type", "posting_date", "total_debit", "company"]
|
||||
};
|
@ -128,8 +128,9 @@
|
||||
}
|
||||
],
|
||||
"hide_toolbar": 1,
|
||||
"icon": "icon-resize-horizontal",
|
||||
"issingle": 1,
|
||||
"modified": "2014-07-22 14:53:59.084438",
|
||||
"modified": "2014-07-31 05:43:03.410832",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Accounts",
|
||||
"name": "Payment Reconciliation",
|
||||
@ -139,7 +140,7 @@
|
||||
{
|
||||
"cancel": 0,
|
||||
"create": 1,
|
||||
"delete": 0,
|
||||
"delete": 1,
|
||||
"permlevel": 0,
|
||||
"read": 1,
|
||||
"role": "Accounts Manager",
|
||||
@ -149,7 +150,7 @@
|
||||
{
|
||||
"cancel": 0,
|
||||
"create": 1,
|
||||
"delete": 0,
|
||||
"delete": 1,
|
||||
"permlevel": 0,
|
||||
"read": 1,
|
||||
"role": "Accounts User",
|
||||
|
@ -14,6 +14,10 @@ import frappe.defaults
|
||||
from erpnext.controllers.buying_controller import BuyingController
|
||||
from erpnext.accounts.party import get_party_account, get_due_date
|
||||
|
||||
form_grid_templates = {
|
||||
"entries": "templates/form_grid/item_grid.html"
|
||||
}
|
||||
|
||||
class PurchaseInvoice(BuyingController):
|
||||
tname = 'Purchase Invoice Item'
|
||||
fname = 'entries'
|
||||
|
@ -0,0 +1,45 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-9">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
<span style="margin-right: 8px; display: inline-block">
|
||||
<span class="filterable"
|
||||
data-filter="supplier,=,{%= doc.supplier %}">
|
||||
{%= doc.supplier_name %}</span></span>
|
||||
{% if(doc.outstanding_amount > 0 && doc.docstatus==1) { %}
|
||||
{% if(frappe.datetime.get_diff(doc.due_date) < 0) { %}
|
||||
<span class="label label-danger filterable"
|
||||
title="{%= doc.get_formatted("due_date")%}"
|
||||
data-filter="outstanding_amount,>,0|due_date,<,Today">
|
||||
{%= __("Overdue: ") + comment_when(doc.due_date) %}
|
||||
</span>
|
||||
{% } else { %}
|
||||
<span class="label label-warning filterable"
|
||||
data-filter="outstanding_amount,>,0|due,>=,Today"
|
||||
title="{%= __("Payment Pending") %}">
|
||||
{%= doc.get_formatted("due_date") %}</span>
|
||||
{% } %}
|
||||
{% } %}
|
||||
{% if(doc.outstanding_amount==0 && doc.docstatus==1) { %}
|
||||
<span class="label label-success filterable"
|
||||
title="{%= doc.get_formatted("due_date")%}"
|
||||
data-filter="outstanding_amount,=,0">
|
||||
<i class="icon-ok-sign"></i> {%= __("Paid") %}
|
||||
</span>
|
||||
{% } %}
|
||||
{% if(doc.docstatus===0) { %}
|
||||
<span class="label label-danger filterable"
|
||||
data-filter="docstatus,=,0">{%= __("Draft") %}</span>
|
||||
{% } %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-1 text-right">
|
||||
{% var completed = cint((doc.grand_total - doc.outstanding_amount) * 100 / doc.grand_total), title = __("Outstanding Amount") + ": " + doc.get_formatted("outstanding_amount") %}
|
||||
{% include "templates/form_grid/includes/progress.html" %}
|
||||
</div>
|
||||
<div class="col-xs-2 text-right">
|
||||
<div class="text-ellipsis" title="{%= doc.get_formatted('grand_total_import') %}">
|
||||
{%= doc.get_formatted("grand_total_import") %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -3,10 +3,6 @@
|
||||
|
||||
// render
|
||||
frappe.listview_settings['Purchase Invoice'] = {
|
||||
add_fields: ["`tabPurchase Invoice`.grand_total", "`tabPurchase Invoice`.outstanding_amount"],
|
||||
add_columns: [{"content":"paid_amount", width:"10%", type:"bar-graph", label: "Paid"}],
|
||||
prepare_data: function(data) {
|
||||
data.paid_amount = flt(data.grand_total) ? (((flt(data.grand_total) -
|
||||
flt(data.outstanding_amount)) / flt(data.grand_total)) * 100) : 0;
|
||||
}
|
||||
add_fields: ["supplier", "supplier_name", "grand_total", "outstanding_amount", "due_date", "company",
|
||||
"currency"]
|
||||
};
|
||||
|
@ -18,6 +18,10 @@ month_map = {'Monthly': 1, 'Quarterly': 3, 'Half-yearly': 6, 'Yearly': 12}
|
||||
|
||||
from erpnext.controllers.selling_controller import SellingController
|
||||
|
||||
form_grid_templates = {
|
||||
"entries": "templates/form_grid/item_grid.html"
|
||||
}
|
||||
|
||||
class SalesInvoice(SellingController):
|
||||
tname = 'Sales Invoice Item'
|
||||
fname = 'entries'
|
||||
|
@ -0,0 +1,45 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-9">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
<span style="margin-right: 8px; display: inline-block">
|
||||
<span class="filterable"
|
||||
data-filter="customer,=,{%= doc.customer %}">
|
||||
{%= doc.customer_name %}</span></span>
|
||||
{% if(doc.outstanding_amount > 0 && doc.docstatus==1) { %}
|
||||
{% if(frappe.datetime.get_diff(doc.due_date) < 0) { %}
|
||||
<span class="label label-danger filterable"
|
||||
title="{%= doc.get_formatted("due_date")%}"
|
||||
data-filter="outstanding_amount,>,0|due_date,<,Today">
|
||||
{%= __("Overdue: ") + comment_when(doc.due_date) %}
|
||||
</span>
|
||||
{% } else { %}
|
||||
<span class="label label-warning filterable"
|
||||
data-filter="outstanding_amount,>,0|due_date,>=,Today"
|
||||
title="{%= __("Payment Pending") %}">
|
||||
{%= doc.get_formatted("due_date") %}</span>
|
||||
{% } %}
|
||||
{% } %}
|
||||
{% if(doc.outstanding_amount==0 && doc.docstatus==1) { %}
|
||||
<span class="label label-success filterable"
|
||||
title="{%= doc.get_formatted("due_date")%}"
|
||||
data-filter="outstanding_amount,=,0">
|
||||
<i class="icon-ok-sign"></i> {%= __("Paid") %}
|
||||
</span>
|
||||
{% } %}
|
||||
{% if(doc.docstatus===0) { %}
|
||||
<span class="label label-danger filterable"
|
||||
data-filter="docstatus,=,0">{%= __("Draft") %}</span>
|
||||
{% } %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-1 text-right">
|
||||
{% var completed = cint((doc.grand_total - doc.outstanding_amount) * 100 / doc.grand_total), title = __("Outstanding Amount") + ": " + doc.get_formatted("outstanding_amount") %}
|
||||
{% include "templates/form_grid/includes/progress.html" %}
|
||||
</div>
|
||||
<div class="col-xs-2 text-right">
|
||||
<div class="text-ellipsis" title="{%= doc.get_formatted("grand_total_export") %}">
|
||||
{%= doc.get_formatted("grand_total_export") %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -3,14 +3,7 @@
|
||||
|
||||
// render
|
||||
frappe.listview_settings['Sales Invoice'] = {
|
||||
add_fields: ["`tabSales Invoice`.grand_total", "`tabSales Invoice`.outstanding_amount"],
|
||||
add_columns: [{"content":"Percent Paid", width:"10%", type:"bar-graph",
|
||||
label: "Payment Received"}],
|
||||
prepare_data: function(data) {
|
||||
if (data.docstatus === 1) {
|
||||
data["Percent Paid"] = flt(data.grand_total)
|
||||
? (((flt(data.grand_total) - flt(data.outstanding_amount)) / flt(data.grand_total)) * 100)
|
||||
: 100.0;
|
||||
}
|
||||
}
|
||||
add_fields: ["customer", "customer_name", "grand_total", "outstanding_amount", "due_date", "company",
|
||||
"currency"],
|
||||
filters: [["outstanding_amount", ">", "0"]]
|
||||
};
|
||||
|
@ -8,6 +8,10 @@ from frappe import msgprint, _, throw
|
||||
from frappe.model.mapper import get_mapped_doc
|
||||
from erpnext.controllers.buying_controller import BuyingController
|
||||
|
||||
form_grid_templates = {
|
||||
"po_details": "templates/form_grid/item_grid.html"
|
||||
}
|
||||
|
||||
class PurchaseOrder(BuyingController):
|
||||
tname = 'Purchase Order Item'
|
||||
fname = 'po_details'
|
||||
|
@ -0,0 +1,39 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-8">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
<span style="margin-right: 8px; display: inline-block">
|
||||
<span class="filterable"
|
||||
data-filter="supplier,=,{%= doc.supplier %}">
|
||||
{%= doc.supplier_name %}</span></span>
|
||||
{% if(doc.per_received < 100 && doc.status!=="Stopped") { %}
|
||||
<span class="label label-warning filterable"
|
||||
data-filter="per_received,<,100|status,!=,Stopped">
|
||||
{%= __("Pending") %}
|
||||
</span>
|
||||
{% } %}
|
||||
{% if(doc.status==="Stopped" || doc.status==="Draft") { %}
|
||||
<span class="label label-danger filterable"
|
||||
data-filter="status,=,Stopped">{%= __(doc.status) %}</span>
|
||||
{% } %}
|
||||
{% if(doc.per_received == 100 && doc.status!=="Stopped") { %}
|
||||
<span class="filterable text-muted"
|
||||
data-filter="per_received,=,100|status,!=,Stopped">
|
||||
<i class="icon-ok-sign"></i></span>
|
||||
{% } %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-1 text-right">
|
||||
{% var completed = doc.per_received, title = __("Received") %}
|
||||
{% include "templates/form_grid/includes/progress.html" %}
|
||||
</div>
|
||||
<div class="col-xs-1 text-right">
|
||||
{% var completed = doc.per_billed, title = __("Billed") %}
|
||||
{% include "templates/form_grid/includes/progress.html" %}
|
||||
</div>
|
||||
<div class="col-xs-2 text-right">
|
||||
<div class="text-ellipsis" title="{%= doc.get_formatted('grand_total_import') %}">
|
||||
{%= doc.get_formatted("grand_total_import") %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,4 @@
|
||||
frappe.listview_settings['Purchase Order'] = {
|
||||
add_fields: ["grand_total", "company", "currency", "supplier",
|
||||
"supplier_name", "per_received", "per_billed"]
|
||||
};
|
@ -186,7 +186,7 @@
|
||||
],
|
||||
"icon": "icon-user",
|
||||
"idx": 1,
|
||||
"modified": "2014-05-27 03:49:20.060872",
|
||||
"modified": "2014-08-07 06:57:15.274795",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Buying",
|
||||
"name": "Supplier",
|
||||
@ -231,5 +231,6 @@
|
||||
"role": "Accounts User"
|
||||
}
|
||||
],
|
||||
"search_fields": "supplier_name,supplier_type"
|
||||
"search_fields": "supplier_name,supplier_type",
|
||||
"title_field": "supplier_name"
|
||||
}
|
15
erpnext/buying/doctype/supplier/supplier_list.html
Normal file
15
erpnext/buying/doctype/supplier/supplier_list.html
Normal file
@ -0,0 +1,15 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-12">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
{% if(doc.supplier_name != doc.name) { %}
|
||||
<span style="margin-right: 8px; display: inline-block">
|
||||
{%= doc.supplier_name %}</span>
|
||||
{% } %}
|
||||
<span class="label label-info filterable"
|
||||
data-filter="supplier_type,=,{%= doc.supplier_type %}">
|
||||
{%= doc.supplier_type %}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
3
erpnext/buying/doctype/supplier/supplier_list.js
Normal file
3
erpnext/buying/doctype/supplier/supplier_list.js
Normal file
@ -0,0 +1,3 @@
|
||||
frappe.listview_settings['Supplier'] = {
|
||||
add_fields: ["supplier_name", "supplier_type"]
|
||||
};
|
@ -6,6 +6,11 @@ import frappe
|
||||
from frappe.model.mapper import get_mapped_doc
|
||||
|
||||
from erpnext.controllers.buying_controller import BuyingController
|
||||
|
||||
form_grid_templates = {
|
||||
"quotation_items": "templates/form_grid/item_grid.html"
|
||||
}
|
||||
|
||||
class SupplierQuotation(BuyingController):
|
||||
tname = "Supplier Quotation Item"
|
||||
fname = "quotation_items"
|
||||
|
@ -0,0 +1,22 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-10">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
<span style="margin-right: 8px; display: inline-block">
|
||||
<span class="filterable"
|
||||
data-filter="supplier,=,{%= doc.supplier %}">
|
||||
{%= doc.supplier %}</span>
|
||||
</span>
|
||||
</span>
|
||||
<span class="label {%= doc.status=="Draft" ? "label-danger" :
|
||||
(doc.status=="Ordered" ? "label-success": "label-info") %}
|
||||
filterable"
|
||||
data-filter="status,=,{%= doc.status %}">{%= doc.status %}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-2 text-right">
|
||||
<div class="text-ellipsis" title="{%= doc.get_formatted('grand_total_import') %}">
|
||||
{%= doc.get_formatted("grand_total_import") %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,3 @@
|
||||
frappe.listview_settings['Supplier Quotation'] = {
|
||||
add_fields: ["supplier", "grand_total", "status", "company", "currency"]
|
||||
};
|
@ -13,13 +13,13 @@ def get_data():
|
||||
},
|
||||
{
|
||||
"type": "doctype",
|
||||
"name": "Salary Slip",
|
||||
"description": _("Monthly salary statement."),
|
||||
"name": "Leave Application",
|
||||
"description": _("Applications for leave."),
|
||||
},
|
||||
{
|
||||
"type": "doctype",
|
||||
"name": "Leave Application",
|
||||
"description": _("Applications for leave."),
|
||||
"name": "Expense Claim",
|
||||
"description": _("Claims for company expense."),
|
||||
},
|
||||
{
|
||||
"type": "doctype",
|
||||
@ -28,8 +28,8 @@ def get_data():
|
||||
},
|
||||
{
|
||||
"type": "doctype",
|
||||
"name": "Expense Claim",
|
||||
"description": _("Claims for company expense."),
|
||||
"name": "Salary Slip",
|
||||
"description": _("Monthly salary statement."),
|
||||
},
|
||||
{
|
||||
"type": "doctype",
|
||||
|
@ -6,6 +6,7 @@ import frappe
|
||||
from frappe.utils import cint, flt, rounded, cstr, comma_or
|
||||
from erpnext.setup.utils import get_company_currency
|
||||
from frappe import _, throw
|
||||
from erpnext.stock.get_item_details import get_available_qty
|
||||
|
||||
from erpnext.controllers.stock_controller import StockController
|
||||
|
||||
@ -17,6 +18,12 @@ class SellingController(StockController):
|
||||
"other_charges": "templates/print_formats/includes/taxes.html",
|
||||
}
|
||||
|
||||
def onload(self):
|
||||
if self.doctype in ("Sales Order", "Delivery Note", "Sales Invoice"):
|
||||
for item in self.get(self.fname):
|
||||
item.update(get_available_qty(item.item_code,
|
||||
item.warehouse))
|
||||
|
||||
def validate(self):
|
||||
super(SellingController, self).validate()
|
||||
self.validate_max_discount()
|
||||
|
@ -129,7 +129,7 @@
|
||||
"icon": "icon-ok",
|
||||
"idx": 1,
|
||||
"is_submittable": 1,
|
||||
"modified": "2014-05-27 03:49:07.580876",
|
||||
"modified": "2014-08-05 06:52:02.226904",
|
||||
"modified_by": "Administrator",
|
||||
"module": "HR",
|
||||
"name": "Attendance",
|
||||
@ -178,5 +178,6 @@
|
||||
],
|
||||
"search_fields": "employee, employee_name, att_date, status",
|
||||
"sort_field": "modified",
|
||||
"sort_order": "DESC"
|
||||
"sort_order": "DESC",
|
||||
"title_field": "employee_name"
|
||||
}
|
19
erpnext/hr/doctype/attendance/attendance_list.html
Normal file
19
erpnext/hr/doctype/attendance/attendance_list.html
Normal file
@ -0,0 +1,19 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-10">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
|
||||
<span class="label
|
||||
label-{%= {"Present":"success", "Absent":"default", "Half Day": "warning"}[doc.status] %} filterable"
|
||||
title="{%= __("Status") %}"
|
||||
data-filter="status,=,{%= doc.status %}">
|
||||
{%= doc.status %}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-2 text-right">
|
||||
<span style="margin-right: 8px;" class="filterable"
|
||||
data-filter="att_date,=,{%= doc.att_date %}">
|
||||
{%= doc.get_formatted("att_date") %}</span>
|
||||
</div>
|
||||
</div>
|
3
erpnext/hr/doctype/attendance/attendance_list.js
Normal file
3
erpnext/hr/doctype/attendance/attendance_list.js
Normal file
@ -0,0 +1,3 @@
|
||||
frappe.listview_settings['Attendance'] = {
|
||||
add_fields: ["status", "att_date"],
|
||||
};
|
10
erpnext/hr/doctype/attendance/test_attendance.py
Normal file
10
erpnext/hr/doctype/attendance/test_attendance.py
Normal file
@ -0,0 +1,10 @@
|
||||
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors and Contributors
|
||||
# See license.txt
|
||||
|
||||
import frappe
|
||||
import unittest
|
||||
|
||||
test_records = frappe.get_test_records('Attendance')
|
||||
|
||||
class TestAttendance(unittest.TestCase):
|
||||
pass
|
11
erpnext/hr/doctype/attendance/test_records.json
Normal file
11
erpnext/hr/doctype/attendance/test_records.json
Normal file
@ -0,0 +1,11 @@
|
||||
[
|
||||
{
|
||||
"doctype": "Attendance",
|
||||
"name": "_Test Attendance 1",
|
||||
"employee": "_T-Employee-0001",
|
||||
"status": "Present",
|
||||
"att_date": "2014-02-01",
|
||||
"fiscal_year": "_Test Fiscal Year 2014",
|
||||
"company": "_Test Company"
|
||||
}
|
||||
]
|
@ -27,33 +27,11 @@
|
||||
"permlevel": 0,
|
||||
"reqd": 0,
|
||||
"width": "300px"
|
||||
},
|
||||
{
|
||||
"fieldname": "taxable",
|
||||
"fieldtype": "Select",
|
||||
"in_list_view": 1,
|
||||
"label": "Taxable",
|
||||
"oldfieldname": "taxable",
|
||||
"oldfieldtype": "Select",
|
||||
"options": "\nYes\nNo",
|
||||
"permlevel": 0,
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:doc.taxable=='No'",
|
||||
"fieldname": "exemption_limit",
|
||||
"fieldtype": "Float",
|
||||
"hidden": 0,
|
||||
"in_list_view": 1,
|
||||
"label": "Exemption Limit",
|
||||
"oldfieldname": "exemption_limit",
|
||||
"oldfieldtype": "Currency",
|
||||
"permlevel": 0
|
||||
}
|
||||
],
|
||||
"icon": "icon-flag",
|
||||
"idx": 1,
|
||||
"modified": "2014-05-27 03:49:10.133416",
|
||||
"modified": "2014-07-31 07:25:26.606030",
|
||||
"modified_by": "Administrator",
|
||||
"module": "HR",
|
||||
"name": "Earning Type",
|
||||
|
35
erpnext/hr/doctype/employee/employee_list.html
Normal file
35
erpnext/hr/doctype/employee/employee_list.html
Normal file
@ -0,0 +1,35 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-12">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
|
||||
{% if(doc.status==="Active") { %}
|
||||
<span style="margin-right: 8px;"
|
||||
title="{%= __("Active") %}" class="filterable"
|
||||
data-filter="status,=,Active">
|
||||
<i class="icon-ok"></i>
|
||||
</span>
|
||||
{% } %}
|
||||
|
||||
{% if(doc.designation) { %}
|
||||
<span style="margin-right: 8px;" class="filterable"
|
||||
data-filter="designation,=,{%= doc.designation %}">
|
||||
{%= doc.designation %}</span>
|
||||
{% } %}
|
||||
|
||||
{% if(doc.branch) { %}
|
||||
<span class="label label-default filterable"
|
||||
data-filter="branch,=,{%= doc.branch %}">
|
||||
<i class="icon-map-marker"></i> {%= doc.branch %}
|
||||
</span>
|
||||
{% } %}
|
||||
|
||||
{% if(doc.department) { %}
|
||||
<span class="label label-default filterable"
|
||||
data-filter="department,=,{%= doc.department %}">
|
||||
<i class="icon-sitemap"></i> {%= doc.department %}
|
||||
</span>
|
||||
{% } %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
4
erpnext/hr/doctype/employee/employee_list.js
Normal file
4
erpnext/hr/doctype/employee/employee_list.js
Normal file
@ -0,0 +1,4 @@
|
||||
frappe.listview_settings['Employee'] = {
|
||||
add_fields: ["status", "branch", "department", "designation"],
|
||||
filters:[["status","=", "Active"]]
|
||||
};
|
23
erpnext/hr/doctype/expense_claim/expense_claim_list.html
Normal file
23
erpnext/hr/doctype/expense_claim/expense_claim_list.html
Normal file
@ -0,0 +1,23 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-10">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
|
||||
<span style="margin-right: 8px;" class="filterable"
|
||||
data-filter="employee,=,{%= doc.employee %}">
|
||||
{%= doc.employee_name %}</span>
|
||||
|
||||
<span class="label
|
||||
label-{%= frappe.utils.guess_style(doc.approval_status) %} filterable"
|
||||
title="{%= __("Status") %}"
|
||||
data-filter="status,=,{%= doc.approval_status %}">
|
||||
{%= doc.approval_status %}
|
||||
</span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- sample graph -->
|
||||
<div class="col-xs-2 text-right">
|
||||
{%= doc.get_formatted("total_claimed_amount") %}
|
||||
</div>
|
||||
</div>
|
4
erpnext/hr/doctype/expense_claim/expense_claim_list.js
Normal file
4
erpnext/hr/doctype/expense_claim/expense_claim_list.js
Normal file
@ -0,0 +1,4 @@
|
||||
frappe.listview_settings['Expense Claim'] = {
|
||||
add_fields: ["approval_status", "employee", "employee_name", "total_claimed_amount"],
|
||||
filters:[["approval_status","!=", "Rejected"]]
|
||||
};
|
@ -0,0 +1,28 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-12">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
|
||||
<span style="margin-right: 8px;" class="filterable"
|
||||
data-filter="employee,=,{%= doc.employee %}">
|
||||
{%= doc.employee_name %}</span>
|
||||
|
||||
<span style="margin-right: 8px;" class="text-muted">
|
||||
{%= __("{0} days from {1}",
|
||||
[doc.total_leave_days, doc.get_formatted("from_date")]) %}</span>
|
||||
|
||||
<span class="label
|
||||
label-{%= frappe.utils.guess_style(doc.status) %} filterable"
|
||||
title="{%= __("Status") %}"
|
||||
data-filter="status,=,{%= doc.status %}">
|
||||
{%= doc.status %}
|
||||
</span>
|
||||
|
||||
<span class="label label-default filterable"
|
||||
title="{%= __("Leave Type") %}"
|
||||
data-filter="leave_type,=,{%= doc.leave_type %}">
|
||||
{%= doc.leave_type %}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,4 @@
|
||||
frappe.listview_settings['Leave Application'] = {
|
||||
add_fields: ["status", "leave_type", "employee", "employee_name", "total_leave_days", "from_date"],
|
||||
filters:[["status","!=", "Rejected"], ["to_date", ">=", frappe.datetime.get_today()]]
|
||||
};
|
26
erpnext/hr/doctype/salary_slip/salary_slip_list.html
Normal file
26
erpnext/hr/doctype/salary_slip/salary_slip_list.html
Normal file
@ -0,0 +1,26 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-9">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
|
||||
<!-- sample text -->
|
||||
<span style="margin-right: 8px;" class="filterable"
|
||||
data-filter="employee,=,{%= doc.employee %}">
|
||||
{%= doc.employee_name %}</span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-3 text-right">
|
||||
<span class="label label-default filterable"
|
||||
title="{%= __("Month") %}"
|
||||
data-filter="month,=,{%= doc.month %}">
|
||||
{%= doc.month %}
|
||||
</span>
|
||||
|
||||
<span class="label label-default filterable"
|
||||
title="{%= __("Fiscal Year") %}"
|
||||
data-filter="fiscal_year,=,{%= doc.fiscal_year %}">
|
||||
{%= doc.fiscal_year %}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
3
erpnext/hr/doctype/salary_slip/salary_slip_list.js
Normal file
3
erpnext/hr/doctype/salary_slip/salary_slip_list.js
Normal file
@ -0,0 +1,3 @@
|
||||
frappe.listview_settings['Salary Slip'] = {
|
||||
add_fields: ["employee", "employee_name", "fiscal_year", "month"],
|
||||
};
|
@ -227,7 +227,7 @@
|
||||
],
|
||||
"icon": "icon-file-text",
|
||||
"idx": 1,
|
||||
"modified": "2014-05-27 03:49:17.438605",
|
||||
"modified": "2014-08-05 06:56:27.038404",
|
||||
"modified_by": "Administrator",
|
||||
"module": "HR",
|
||||
"name": "Salary Structure",
|
||||
@ -260,5 +260,6 @@
|
||||
}
|
||||
],
|
||||
"sort_field": "modified",
|
||||
"sort_order": "DESC"
|
||||
"sort_order": "DESC",
|
||||
"title_field": "employee_name"
|
||||
}
|
8
erpnext/hr/doctype/salary_structure/test_records.json
Normal file
8
erpnext/hr/doctype/salary_structure/test_records.json
Normal file
@ -0,0 +1,8 @@
|
||||
[
|
||||
{
|
||||
"doctype": "Salary Structure",
|
||||
"name": "_Test Salary Structure 1",
|
||||
"employee": "_T-Employee-0001",
|
||||
"from_date": "2014-02-01"
|
||||
}
|
||||
]
|
10
erpnext/hr/doctype/salary_structure/test_salary_structure.py
Normal file
10
erpnext/hr/doctype/salary_structure/test_salary_structure.py
Normal file
@ -0,0 +1,10 @@
|
||||
# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors and Contributors
|
||||
# See license.txt
|
||||
|
||||
import frappe
|
||||
import unittest
|
||||
|
||||
test_records = frappe.get_test_records('Salary Structure')
|
||||
|
||||
class TestSalaryStructure(unittest.TestCase):
|
||||
pass
|
20
erpnext/manufacturing/doctype/bom/bom_list.html
Normal file
20
erpnext/manufacturing/doctype/bom/bom_list.html
Normal file
@ -0,0 +1,20 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-10">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
{% if(cint(doc.is_active)) { %}
|
||||
<span class="label label-success filterable"
|
||||
data-filter="is_active,=,Yes">
|
||||
<i class="icon-ok-sign"></i> {%= __("Active") %}</span>
|
||||
{% } %}
|
||||
{% if(cint(doc.is_default)) { %}
|
||||
<span class="label label-primary filterable"
|
||||
data-filter="is_default,=,Yes">
|
||||
<i class="icon-ok-sign"></i> {%= __("Default") %}</span>
|
||||
{% } %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-2 text-right">
|
||||
{%= doc.get_formatted("total_cost") %}
|
||||
</div>
|
||||
</div>
|
3
erpnext/manufacturing/doctype/bom/bom_list.js
Normal file
3
erpnext/manufacturing/doctype/bom/bom_list.js
Normal file
@ -0,0 +1,3 @@
|
||||
frappe.listview_settings['BOM'] = {
|
||||
add_fields: ["is_active", "is_default", "total_cost"]
|
||||
};
|
@ -0,0 +1,47 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-11">
|
||||
<div class="text-ellipsis">
|
||||
{% var per = 100 - cint((doc.qty - doc.produced_qty) * 100 / doc.qty); %}
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
<span style="margin-right: 8px; display: inline-block">
|
||||
<span class="filterable"
|
||||
data-filter="customer,=,{%= doc.customer %}">
|
||||
{%= doc.customer_name %}</span></span>
|
||||
{% if(per < 100 && doc.status!=="Stopped") { %}
|
||||
{% if(frappe.datetime.get_diff(doc.expected_delivery_date) < 0) { %}
|
||||
<span class="label label-danger filterable"
|
||||
title="{%= doc.get_formatted("expected_delivery_date")%}"
|
||||
data-filter="status,=,Submitted|expected_delivery_date,<,Today"
|
||||
>
|
||||
{%= __("Overdue") %}
|
||||
</span>
|
||||
{% } else { %}
|
||||
<span class="label label-warning filterable"
|
||||
data-filter="produced_qty,<,{%= doc.qty %}|status,!=,Stopped"
|
||||
title="{%= __("Pending") %}">
|
||||
{%= doc.get_formatted("expected_delivery_date")%}</span>
|
||||
{% } %}
|
||||
{% } %}
|
||||
{% if(per == 100 && doc.status!=="Stopped") { %}
|
||||
<span class="filterable text-muted"
|
||||
data-filter="produced_qty,=,{%= doc.qty %}|status,!=,Stopped">
|
||||
<i class="icon-ok-sign"></i></span>
|
||||
{% } %}
|
||||
{% if(doc.status==="Stopped") { %}
|
||||
<span class="label label-danger filterable"
|
||||
data-filter="status,=,Stopped">{%= __("Stopped") %}</span>
|
||||
{% } %}
|
||||
<span class="label label-default filterable"
|
||||
data-filter="sales_order,=,{%= doc.sales_order %}"
|
||||
title="{%= __("Sales Order") %}">
|
||||
<i class="icon-file-text"></i> {%= doc.sales_order %}</span>
|
||||
<span class="label label-default filterable"
|
||||
data-filter="bom_no,=,{%= doc.bom_no %}" title="{%= __("BOM") %}">
|
||||
<i class="icon-sitemap"></i> {%= doc.bom_no %}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-1 text-right">
|
||||
{% var completed = per, title = __("Completed") %}
|
||||
{% include "templates/form_grid/includes/progress.html" %}
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,5 @@
|
||||
frappe.listview_settings['Production Order'] = {
|
||||
add_fields: ["bom_no", "status", "sales_order", "qty",
|
||||
"produced_qty", "expected_delivery_date"],
|
||||
filters: [["status", "!=", "Completed"], ["status", "!=", "Stopped"]]
|
||||
};
|
@ -74,3 +74,4 @@ execute:frappe.delete_doc("Page", "trial-balance") #2014-07-22
|
||||
erpnext.patches.v4_2.delete_old_print_formats #2014-07-29
|
||||
erpnext.patches.v4_2.toggle_rounded_total #2014-07-30
|
||||
erpnext.patches.v4_2.fix_account_master_type
|
||||
erpnext.patches.v4_2.update_project_milestones
|
||||
|
7
erpnext/patches/v4_2/update_project_milestones.py
Normal file
7
erpnext/patches/v4_2/update_project_milestones.py
Normal file
@ -0,0 +1,7 @@
|
||||
import frappe
|
||||
|
||||
def execute():
|
||||
for project in frappe.db.sql_list("select name from tabProject"):
|
||||
p = frappe.get_doc("Project", project)
|
||||
p.update_milestones_completed()
|
||||
p.db_set("percent_milestones_completed", p.percent_milestones_completed)
|
@ -4,14 +4,14 @@
|
||||
// show tasks
|
||||
cur_frm.cscript.refresh = function(doc) {
|
||||
if(!doc.__islocal) {
|
||||
cur_frm.appframe.add_button(__("Gantt Chart"), function() {
|
||||
cur_frm.add_custom_button(__("Gantt Chart"), function() {
|
||||
frappe.route_options = {"project": doc.name}
|
||||
frappe.set_route("Gantt", "Task");
|
||||
}, "icon-tasks");
|
||||
}, "icon-tasks", true);
|
||||
cur_frm.add_custom_button(__("Tasks"), function() {
|
||||
frappe.route_options = {"project": doc.name}
|
||||
frappe.set_route("List", "Task");
|
||||
}, "icon-list");
|
||||
}, "icon-list", true);
|
||||
}
|
||||
}
|
||||
|
||||
@ -19,4 +19,4 @@ cur_frm.fields_dict.customer.get_query = function(doc,cdt,cdn) {
|
||||
return{
|
||||
query: "erpnext.controllers.queries.customer_query"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -136,6 +136,13 @@
|
||||
"permlevel": 0,
|
||||
"search_index": 0
|
||||
},
|
||||
{
|
||||
"fieldname": "percent_milestones_completed",
|
||||
"fieldtype": "Percent",
|
||||
"label": "% Milestones Completed",
|
||||
"permlevel": 0,
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "section_break0",
|
||||
"fieldtype": "Section Break",
|
||||
@ -158,7 +165,7 @@
|
||||
"fieldname": "percent_complete",
|
||||
"fieldtype": "Percent",
|
||||
"in_list_view": 1,
|
||||
"label": "Percent Complete",
|
||||
"label": "% Tasks Completed",
|
||||
"permlevel": 0,
|
||||
"read_only": 1
|
||||
},
|
||||
@ -259,7 +266,7 @@
|
||||
"icon": "icon-puzzle-piece",
|
||||
"idx": 1,
|
||||
"max_attachments": 4,
|
||||
"modified": "2014-06-24 12:44:19.530707",
|
||||
"modified": "2014-08-04 03:22:11.416219",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Projects",
|
||||
"name": "Project",
|
||||
|
@ -26,6 +26,13 @@ class Project(Document):
|
||||
if getdate(self.completion_date) < getdate(self.project_start_date):
|
||||
frappe.throw(_("Expected Completion Date can not be less than Project Start Date"))
|
||||
|
||||
self.update_milestones_completed()
|
||||
|
||||
def update_milestones_completed(self):
|
||||
if self.project_milestones:
|
||||
completed = filter(lambda x: x.status=="Completed", self.project_milestones)
|
||||
self.percent_milestones_completed = len(completed) * 100 / len(self.project_milestones)
|
||||
|
||||
def on_update(self):
|
||||
self.add_calendar_event()
|
||||
|
||||
@ -38,6 +45,7 @@ class Project(Document):
|
||||
frappe.db.set_value("Project", self.name, "percent_complete",
|
||||
int(float(completed) / total * 100))
|
||||
|
||||
|
||||
def add_calendar_event(self):
|
||||
# delete any earlier event for this project
|
||||
delete_events(self.doctype, self.name)
|
||||
|
38
erpnext/projects/doctype/project/project_list.html
Normal file
38
erpnext/projects/doctype/project/project_list.html
Normal file
@ -0,0 +1,38 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-10">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
<span class="label label-{%= frappe.utils.guess_style(doc.status) %} filterable"
|
||||
data-filter="status,=,{%= doc.status %}">
|
||||
{%= doc.status %}
|
||||
</span>
|
||||
<span class="label label-{%= frappe.utils.guess_style(doc.priority) %} filterable"
|
||||
data-filter="priority,=,{%= doc.priority %}">
|
||||
{%= doc.priority %}
|
||||
</span>
|
||||
{% if(doc.status==="Open" && doc.completion_date
|
||||
&& frappe.datetime.get_diff(doc.completion_date) <= 0) { %}
|
||||
<span class="label label-danger filterable"
|
||||
data-filter="completion_date,>=,Today"
|
||||
title="{%= doc.get_formatted("completion_date") %}">
|
||||
{%= __("Overdue") %}
|
||||
</span>
|
||||
{% } else if(doc.completion_date) { %}
|
||||
<span class="label label-default filterable"
|
||||
data-filter="completion_date,=,{%= doc.completion_date %}"
|
||||
title="{%= __("Due Date") %}">
|
||||
{%= doc.get_formatted("completion_date") %}
|
||||
</span>
|
||||
{% } %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-1 text-right">
|
||||
{% var completed = doc.percent_complete, title = __("% Tasks Completed") %}
|
||||
{% include "templates/form_grid/includes/progress.html" %}
|
||||
</div>
|
||||
<div class="col-xs-1 text-right">
|
||||
{% var completed = doc.percent_milestones_completed,
|
||||
title = __("% Milestones Achieved") %}
|
||||
{% include "templates/form_grid/includes/progress.html" %}
|
||||
</div>
|
||||
</div>
|
5
erpnext/projects/doctype/project/project_list.js
Normal file
5
erpnext/projects/doctype/project/project_list.js
Normal file
@ -0,0 +1,5 @@
|
||||
frappe.listview_settings['Project'] = {
|
||||
add_fields: ["status", "priority", "is_active", "percent_complete",
|
||||
"percent_milestones_completed", "completion_date"],
|
||||
filters:[["status","=", "Open"]]
|
||||
};
|
@ -62,12 +62,13 @@ def get_events(start, end, filters=None):
|
||||
|
||||
data = frappe.db.sql("""select name, exp_start_date, exp_end_date,
|
||||
subject, status, project from `tabTask`
|
||||
where ((exp_start_date between '%(start)s' and '%(end)s') \
|
||||
or (exp_end_date between '%(start)s' and '%(end)s'))
|
||||
%(conditions)s""" % {
|
||||
where ((ifnull(exp_start_date, '0000-00-00')!= '0000-00-00') \
|
||||
and (exp_start_date between %(start)s and %(end)s) \
|
||||
or ((ifnull(exp_start_date, '0000-00-00')!= '0000-00-00') \
|
||||
and exp_end_date between %(start)s and %(end)s))
|
||||
{conditions}""".format(conditions=conditions), {
|
||||
"start": start,
|
||||
"end": end,
|
||||
"conditions": conditions
|
||||
"end": end
|
||||
}, as_dict=True, update={"allDay": 0})
|
||||
|
||||
return data
|
||||
|
34
erpnext/projects/doctype/task/task_list.html
Normal file
34
erpnext/projects/doctype/task/task_list.html
Normal file
@ -0,0 +1,34 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-12">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
{% if(doc.project) { %}
|
||||
<span class="filterable" style="margin-right: 8px;"
|
||||
data-filter="project,=,{%= doc.project %}">
|
||||
{%= doc.project %}</span>
|
||||
{% } %}
|
||||
<span class="label label-{%= frappe.utils.guess_style(doc.status) %} filterable"
|
||||
data-filter="status,=,{%= doc.status %}">
|
||||
{%= doc.status %}
|
||||
</span>
|
||||
<span class="label label-{%= frappe.utils.guess_style(doc.priority) %} filterable"
|
||||
data-filter="priority,=,{%= doc.priority %}">
|
||||
{%= doc.priority %}
|
||||
</span>
|
||||
{% if(doc.status==="Open" && doc.exp_end_date
|
||||
&& frappe.datetime.get_diff(doc.exp_end_date) <= 0) { %}
|
||||
<span class="label label-danger filterable"
|
||||
data-filter="exp_end_date,>=,Today"
|
||||
title="{%= doc.get_formatted("exp_end_date") %}">
|
||||
{%= __("Overdue") %}
|
||||
</span>
|
||||
{% } else if(doc.exp_end_date) { %}
|
||||
<span class="label label-default filterable"
|
||||
data-filter="exp_end_date,=,{%= doc.exp_end_date %}"
|
||||
title="{%= __("Due Date") %}">
|
||||
{%= doc.get_formatted("exp_end_date") %}
|
||||
</span>
|
||||
{% } %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
4
erpnext/projects/doctype/task/task_list.js
Normal file
4
erpnext/projects/doctype/task/task_list.js
Normal file
@ -0,0 +1,4 @@
|
||||
frappe.listview_settings['Task'] = {
|
||||
add_fields: ["project", "status", "priority", "exp_end_date"],
|
||||
filters:[["status","=", "Open"]]
|
||||
};
|
@ -3,12 +3,27 @@
|
||||
|
||||
frappe.provide("erpnext.projects");
|
||||
|
||||
erpnext.projects.TimeLog = frappe.ui.form.Controller.extend({
|
||||
onload: function() {
|
||||
this.frm.set_query("task", erpnext.queries.task);
|
||||
}
|
||||
frappe.ui.form.on("Time Log", "onload", function(frm) {
|
||||
frm.set_query("task", erpnext.queries.task);
|
||||
});
|
||||
|
||||
cur_frm.cscript = new erpnext.projects.TimeLog({frm: cur_frm});
|
||||
// set to time if hours is updated
|
||||
frappe.ui.form.on("Time Log", "hours", function(frm) {
|
||||
if(!frm.doc.from_time) {
|
||||
frm.set_value("from_time", frappe.datetime.now_datetime());
|
||||
}
|
||||
var d = moment(frm.doc.from_time);
|
||||
d.add(frm.doc.hours, "hours");
|
||||
frm._setting_hours = true;
|
||||
frm.set_value("to_time", d.format(moment.defaultDatetimeFormat));
|
||||
frm._setting_hours = false;
|
||||
});
|
||||
|
||||
cur_frm.add_fetch('task','project','project');
|
||||
// set hours if to_time is updated
|
||||
frappe.ui.form.on("Time Log", "to_time", function(frm) {
|
||||
if(frm._setting_hours) return;
|
||||
frm.set_value("hours", moment(cur_frm.doc.to_time).diff(moment(cur_frm.doc.from_time),
|
||||
"hours"));
|
||||
});
|
||||
|
||||
cur_frm.add_fetch('task','project','project');
|
||||
|
@ -26,6 +26,14 @@
|
||||
"read_only": 0,
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "hours",
|
||||
"fieldtype": "Float",
|
||||
"in_list_view": 1,
|
||||
"label": "Hours",
|
||||
"permlevel": 0,
|
||||
"read_only": 0
|
||||
},
|
||||
{
|
||||
"fieldname": "to_time",
|
||||
"fieldtype": "Datetime",
|
||||
@ -35,14 +43,6 @@
|
||||
"read_only": 0,
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "hours",
|
||||
"fieldtype": "Float",
|
||||
"in_list_view": 1,
|
||||
"label": "Hours",
|
||||
"permlevel": 0,
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "column_break_3",
|
||||
"fieldtype": "Column Break",
|
||||
@ -152,7 +152,7 @@
|
||||
"icon": "icon-time",
|
||||
"idx": 1,
|
||||
"is_submittable": 1,
|
||||
"modified": "2014-05-27 03:49:21.143356",
|
||||
"modified": "2014-08-04 05:23:15.740050",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Projects",
|
||||
"name": "Time Log",
|
||||
|
25
erpnext/projects/doctype/time_log/time_log_list.html
Normal file
25
erpnext/projects/doctype/time_log/time_log_list.html
Normal file
@ -0,0 +1,25 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-12">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
{% if(doc.billable) { %}
|
||||
<span style="margin-right: 8px;"
|
||||
title="{%= __("Billable") %}" class="filterable"
|
||||
data-filter="billable,=,Yes">
|
||||
<i class="icon-money text-muted"></i>
|
||||
</span>
|
||||
{% } %}
|
||||
<span class="label label-info filterable" style="margin-right: 8px;"
|
||||
data-filter="activity_type,=,{%= doc.activity_type %}">
|
||||
{%= doc.activity_type %}</span>
|
||||
<span style="margin-right: 8px;" class="text-muted">
|
||||
({%= doc.hours + " " + __("hours") %})
|
||||
</span>
|
||||
{% if(doc.project) { %}
|
||||
<span class="filterable" style="margin-right: 8px;"
|
||||
data-filter="project,=,{%= doc.project %}">
|
||||
{%= doc.project %}</span>
|
||||
{% } %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -3,10 +3,10 @@
|
||||
|
||||
// render
|
||||
frappe.listview_settings['Time Log'] = {
|
||||
add_fields: ["`tabTime Log`.`status`", "`tabTime Log`.`billable`", "`tabTime Log`.`activity_type`"],
|
||||
add_fields: ["status", "billable", "activity_type", "task", "project", "hours"],
|
||||
selectable: true,
|
||||
onload: function(me) {
|
||||
me.appframe.add_button(__("Make Time Log Batch"), function() {
|
||||
me.appframe.add_primary_action(__("Make Time Log Batch"), function() {
|
||||
var selected = me.get_checked_items() || [];
|
||||
|
||||
if(!selected.length) {
|
||||
|
@ -0,0 +1,15 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-12">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
<span class="label label-{%= doc.status=="Billed" ? "success" :
|
||||
frappe.utils.guess_style(doc.status) %} filterable"
|
||||
style="margin-right: 8px;"
|
||||
data-filter="status,=,{%= doc.status %}">
|
||||
{%= doc.status %}</span>
|
||||
<span style="margin-right: 8px;" class="text-muted">
|
||||
({%= doc.total_hours + " " + __("hours") %})
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,3 @@
|
||||
frappe.listview_settings['Time Log Batch'] = {
|
||||
add_fields: ["status", "total_hours", "rate"]
|
||||
};
|
@ -282,7 +282,7 @@
|
||||
],
|
||||
"icon": "icon-user",
|
||||
"idx": 1,
|
||||
"modified": "2014-05-27 03:49:09.208254",
|
||||
"modified": "2014-08-07 06:57:25.248707",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Selling",
|
||||
"name": "Customer",
|
||||
@ -332,5 +332,6 @@
|
||||
"write": 1
|
||||
}
|
||||
],
|
||||
"search_fields": "customer_name,customer_group,territory"
|
||||
"search_fields": "customer_name,customer_group,territory",
|
||||
"title_field": "customer_name"
|
||||
}
|
29
erpnext/selling/doctype/customer/customer_list.html
Normal file
29
erpnext/selling/doctype/customer/customer_list.html
Normal file
@ -0,0 +1,29 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-12">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
{% if(doc.customer_name != doc.name) { %}
|
||||
<span style="margin-right: 8px; display: inline-block">
|
||||
{%= doc.customer_name %}</span>
|
||||
{% } %}
|
||||
<span style="margin-right: 8px; display: inline-block"
|
||||
title="{%= doc.customer_type %}" class="filterable"
|
||||
data-filter="customer_type,=,{%= doc.customer_type %}">
|
||||
{% if(doc.customer_type==="Company") { %}
|
||||
<i class="icon-building"></i>
|
||||
{% } else { %}
|
||||
<i class="icon-user"></i>
|
||||
{% } %}
|
||||
</span>
|
||||
<span class="label label-info filterable"
|
||||
data-filter="customer_group,=,{%= doc.customer_group %}">
|
||||
{%= doc.customer_group %}</span>
|
||||
{% if(doc.territory) { %}
|
||||
<span class="label label-default filterable"
|
||||
data-filter="territory,=,{%= doc.territory %}">
|
||||
<i class="icon-map-marker"></i>
|
||||
{%= doc.territory %}</span>
|
||||
{% } %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
3
erpnext/selling/doctype/customer/customer_list.js
Normal file
3
erpnext/selling/doctype/customer/customer_list.js
Normal file
@ -0,0 +1,3 @@
|
||||
frappe.listview_settings['Customer'] = {
|
||||
add_fields: ["customer_name", "territory", "customer_group", "customer_type"]
|
||||
};
|
18
erpnext/selling/doctype/lead/lead_list.html
Normal file
18
erpnext/selling/doctype/lead/lead_list.html
Normal file
@ -0,0 +1,18 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-12">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
<span style="margin-right: 8px; display: inline-block">
|
||||
{%= doc.company_name %}</span>
|
||||
<span class="label
|
||||
{%= doc.status=="Open" ? "label-danger" : "label-info" %} filterable"
|
||||
data-filter="status,=,{%= doc.status %}">{%= doc.status %}</span>
|
||||
{% if(doc.territory) { %}
|
||||
<span class="label label-default filterable"
|
||||
data-filter="territory,=,{%= doc.territory %}">
|
||||
<i class="icon-map-marker"></i>
|
||||
{%= doc.territory %}</span>
|
||||
{% } %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
3
erpnext/selling/doctype/lead/lead_list.js
Normal file
3
erpnext/selling/doctype/lead/lead_list.js
Normal file
@ -0,0 +1,3 @@
|
||||
frappe.listview_settings['Lead'] = {
|
||||
add_fields: ["territory", "company_name", "status", "source"]
|
||||
};
|
23
erpnext/selling/doctype/opportunity/opportunity_list.html
Normal file
23
erpnext/selling/doctype/opportunity/opportunity_list.html
Normal file
@ -0,0 +1,23 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-12">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
<span style="margin-right: 8px; display: inline-block">
|
||||
<span class="filterable"
|
||||
data-filter="{%= doc.enquiry_from.toLowerCase() %},=,{%= doc[doc.enquiry_from.toLowerCase()] %}">
|
||||
{%= doc.customer_name %}</span> ({%= doc.enquiry_from %})</span>
|
||||
<span style="margin-right: 8px; display: inline-block"
|
||||
title="{%= doc.enquiry_type %}" class="filterable"
|
||||
data-filter="enquiry_type,=,{%= doc.enquiry_type %}">
|
||||
{% if(doc.enquiry_type==="Sales") { %}
|
||||
<i class="icon-tag"></i>
|
||||
{% } else { %}
|
||||
<i class="icon-wrench"></i>
|
||||
{% } %}
|
||||
</span>
|
||||
<span class="label
|
||||
{%= doc.status=="Draft" ? "label-danger" : "label-info" %} filterable"
|
||||
data-filter="status,=,{%= doc.status %}">{%= doc.status %}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
3
erpnext/selling/doctype/opportunity/opportunity_list.js
Normal file
3
erpnext/selling/doctype/opportunity/opportunity_list.js
Normal file
@ -0,0 +1,3 @@
|
||||
frappe.listview_settings['Opportunity'] = {
|
||||
add_fields: ["customer_name", "enquiry_type", "enquiry_from", "status"]
|
||||
};
|
@ -9,6 +9,10 @@ from frappe import _
|
||||
|
||||
from erpnext.controllers.selling_controller import SellingController
|
||||
|
||||
form_grid_templates = {
|
||||
"quotation_details": "templates/form_grid/item_grid.html"
|
||||
}
|
||||
|
||||
class Quotation(SellingController):
|
||||
tname = 'Quotation Item'
|
||||
fname = 'quotation_details'
|
||||
|
31
erpnext/selling/doctype/quotation/quotation_list.html
Normal file
31
erpnext/selling/doctype/quotation/quotation_list.html
Normal file
@ -0,0 +1,31 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-10">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
<span style="margin-right: 8px; display: inline-block">
|
||||
<span class="filterable"
|
||||
data-filter="{%= doc.quotation_to.toLowerCase() %},=,{%= doc[doc.quotation_to.toLowerCase()] %}">
|
||||
{%= doc.customer_name %}</span> ({%= doc.quotation_to %})
|
||||
</span>
|
||||
</span>
|
||||
<span style="margin-right: 8px; display: inline-block"
|
||||
title="{%= doc.order_type %}" class="filterable"
|
||||
data-filter="order_type,=,{%= doc.order_type %}">
|
||||
{% if(doc.order_type==="Service") { %}
|
||||
<i class="icon-wrench"></i>
|
||||
{% } else { %}
|
||||
<i class="icon-tag"></i>
|
||||
{% } %}
|
||||
</span>
|
||||
<span class="label {%= doc.status=="Draft" ? "label-danger" :
|
||||
(doc.status=="Ordered" ? "label-success": "label-info") %}
|
||||
filterable"
|
||||
data-filter="status,=,{%= doc.status %}">{%= doc.status %}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-2 text-right">
|
||||
<div class="text-ellipsis" title="{%= doc.get_formatted('grand_total_export') %}">
|
||||
{%= doc.get_formatted("grand_total_export") %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
5
erpnext/selling/doctype/quotation/quotation_list.js
Normal file
5
erpnext/selling/doctype/quotation/quotation_list.js
Normal file
@ -0,0 +1,5 @@
|
||||
frappe.listview_settings['Quotation'] = {
|
||||
add_fields: ["customer_name", "quotation_to", "grand_total", "status",
|
||||
"company", "currency", "order_type", "lead", "customer"],
|
||||
filters: [["status", "=", "Submitted"]]
|
||||
};
|
@ -12,6 +12,10 @@ from frappe.model.mapper import get_mapped_doc
|
||||
|
||||
from erpnext.controllers.selling_controller import SellingController
|
||||
|
||||
form_grid_templates = {
|
||||
"sales_order_details": "templates/form_grid/item_grid.html"
|
||||
}
|
||||
|
||||
class SalesOrder(SellingController):
|
||||
tname = 'Sales Order Item'
|
||||
fname = 'sales_order_details'
|
||||
|
48
erpnext/selling/doctype/sales_order/sales_order_list.html
Normal file
48
erpnext/selling/doctype/sales_order/sales_order_list.html
Normal file
@ -0,0 +1,48 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-8">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
<span style="margin-right: 8px; display: inline-block">
|
||||
<span class="filterable"
|
||||
data-filter="customer,=,{%= doc.customer %}">
|
||||
{%= doc.customer_name %}</span></span>
|
||||
{% if(doc.per_delivered < 100 && doc.status!=="Stopped") { %}
|
||||
{% if(frappe.datetime.get_diff(doc.delivery_date) < 0) { %}
|
||||
<span class="label label-danger filterable"
|
||||
title="{%= doc.get_formatted("delivery_date")%}"
|
||||
data-filter="per_delivered,<,100|delivery_date,<,Today|status,!=,Stopped"
|
||||
>
|
||||
{%= __("Overdue") %}
|
||||
</span>
|
||||
{% } else { %}
|
||||
<span class="label label-warning filterable"
|
||||
data-filter="per_delivered,<,100|status,!=,Stopped"
|
||||
title="{%= __("Pending") %}">
|
||||
{%= doc.get_formatted("delivery_date")%}</span>
|
||||
{% } %}
|
||||
{% } %}
|
||||
{% if(doc.per_delivered == 100 && doc.status!=="Stopped") { %}
|
||||
<span class="filterable text-muted"
|
||||
data-filter="per_delivered,=,100|status,!=,Stopped">
|
||||
<i class="icon-ok-sign"></i></span>
|
||||
{% } %}
|
||||
{% if(doc.status==="Stopped") { %}
|
||||
<span class="label label-danger filterable"
|
||||
data-filter="status,=,Stopped">{%= __("Stopped") %}</span>
|
||||
{% } %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-1 text-right">
|
||||
{% var completed = doc.per_delivered, title = __("Delivered") %}
|
||||
{% include "templates/form_grid/includes/progress.html" %}
|
||||
</div>
|
||||
<div class="col-xs-1 text-right">
|
||||
{% var completed = doc.per_billed, title = __("Billed") %}
|
||||
{% include "templates/form_grid/includes/progress.html" %}
|
||||
</div>
|
||||
<div class="col-xs-2 text-right">
|
||||
<div class="text-ellipsis" title="{%= doc.get_formatted('grand_total_export') %}">
|
||||
{%= doc.get_formatted("grand_total_export") %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
5
erpnext/selling/doctype/sales_order/sales_order_list.js
Normal file
5
erpnext/selling/doctype/sales_order/sales_order_list.js
Normal file
@ -0,0 +1,5 @@
|
||||
frappe.listview_settings['Sales Order'] = {
|
||||
add_fields: ["grand_total", "company", "currency", "customer",
|
||||
"customer_name", "per_delivered", "per_billed", "delivery_date"],
|
||||
filters: [["per_delivered", "<", 100]]
|
||||
};
|
@ -1,443 +1,443 @@
|
||||
{
|
||||
"autoname": "SOD/.#####",
|
||||
"creation": "2013-03-07 11:42:58",
|
||||
"docstatus": 0,
|
||||
"doctype": "DocType",
|
||||
"autoname": "SOD/.#####",
|
||||
"creation": "2013-03-07 11:42:58",
|
||||
"docstatus": 0,
|
||||
"doctype": "DocType",
|
||||
"fields": [
|
||||
{
|
||||
"fieldname": "item_code",
|
||||
"fieldtype": "Link",
|
||||
"in_filter": 1,
|
||||
"in_list_view": 1,
|
||||
"label": "Item Code",
|
||||
"oldfieldname": "item_code",
|
||||
"oldfieldtype": "Link",
|
||||
"options": "Item",
|
||||
"permlevel": 0,
|
||||
"print_width": "150px",
|
||||
"read_only": 0,
|
||||
"reqd": 1,
|
||||
"search_index": 1,
|
||||
"fieldname": "item_code",
|
||||
"fieldtype": "Link",
|
||||
"in_filter": 1,
|
||||
"in_list_view": 1,
|
||||
"label": "Item Code",
|
||||
"oldfieldname": "item_code",
|
||||
"oldfieldtype": "Link",
|
||||
"options": "Item",
|
||||
"permlevel": 0,
|
||||
"print_width": "150px",
|
||||
"read_only": 0,
|
||||
"reqd": 1,
|
||||
"search_index": 1,
|
||||
"width": "150px"
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "customer_item_code",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 1,
|
||||
"in_list_view": 0,
|
||||
"label": "Customer's Item Code",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"fieldname": "customer_item_code",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 1,
|
||||
"in_list_view": 0,
|
||||
"label": "Customer's Item Code",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"read_only": 1
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "item_name",
|
||||
"fieldtype": "Data",
|
||||
"in_list_view": 0,
|
||||
"label": "Item Name",
|
||||
"oldfieldname": "item_name",
|
||||
"oldfieldtype": "Data",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "150",
|
||||
"read_only": 0,
|
||||
"reqd": 1,
|
||||
"fieldname": "item_name",
|
||||
"fieldtype": "Data",
|
||||
"in_list_view": 0,
|
||||
"label": "Item Name",
|
||||
"oldfieldname": "item_name",
|
||||
"oldfieldtype": "Data",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "150",
|
||||
"read_only": 0,
|
||||
"reqd": 1,
|
||||
"width": "150"
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "col_break1",
|
||||
"fieldtype": "Column Break",
|
||||
"fieldname": "col_break1",
|
||||
"fieldtype": "Column Break",
|
||||
"permlevel": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "description",
|
||||
"fieldtype": "Small Text",
|
||||
"in_filter": 1,
|
||||
"in_list_view": 1,
|
||||
"label": "Description",
|
||||
"oldfieldname": "description",
|
||||
"oldfieldtype": "Small Text",
|
||||
"permlevel": 0,
|
||||
"print_width": "300px",
|
||||
"read_only": 0,
|
||||
"reqd": 1,
|
||||
"search_index": 1,
|
||||
"fieldname": "description",
|
||||
"fieldtype": "Small Text",
|
||||
"in_filter": 1,
|
||||
"in_list_view": 1,
|
||||
"label": "Description",
|
||||
"oldfieldname": "description",
|
||||
"oldfieldtype": "Small Text",
|
||||
"permlevel": 0,
|
||||
"print_width": "300px",
|
||||
"read_only": 0,
|
||||
"reqd": 1,
|
||||
"search_index": 1,
|
||||
"width": "300px"
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "quantity_and_rate",
|
||||
"fieldtype": "Section Break",
|
||||
"in_list_view": 0,
|
||||
"label": "Quantity and Rate",
|
||||
"fieldname": "quantity_and_rate",
|
||||
"fieldtype": "Section Break",
|
||||
"in_list_view": 0,
|
||||
"label": "Quantity and Rate",
|
||||
"permlevel": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "qty",
|
||||
"fieldtype": "Float",
|
||||
"in_list_view": 1,
|
||||
"label": "Quantity",
|
||||
"oldfieldname": "qty",
|
||||
"oldfieldtype": "Currency",
|
||||
"permlevel": 0,
|
||||
"print_width": "100px",
|
||||
"read_only": 0,
|
||||
"reqd": 1,
|
||||
"fieldname": "qty",
|
||||
"fieldtype": "Float",
|
||||
"in_list_view": 1,
|
||||
"label": "Quantity",
|
||||
"oldfieldname": "qty",
|
||||
"oldfieldtype": "Currency",
|
||||
"permlevel": 0,
|
||||
"print_width": "100px",
|
||||
"read_only": 0,
|
||||
"reqd": 1,
|
||||
"width": "100px"
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "price_list_rate",
|
||||
"fieldtype": "Currency",
|
||||
"in_list_view": 0,
|
||||
"label": "Price List Rate",
|
||||
"oldfieldname": "ref_rate",
|
||||
"oldfieldtype": "Currency",
|
||||
"options": "currency",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "70px",
|
||||
"read_only": 1,
|
||||
"reqd": 0,
|
||||
"fieldname": "price_list_rate",
|
||||
"fieldtype": "Currency",
|
||||
"in_list_view": 0,
|
||||
"label": "Price List Rate",
|
||||
"oldfieldname": "ref_rate",
|
||||
"oldfieldtype": "Currency",
|
||||
"options": "currency",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "70px",
|
||||
"read_only": 1,
|
||||
"reqd": 0,
|
||||
"width": "70px"
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "discount_percentage",
|
||||
"fieldtype": "Percent",
|
||||
"in_list_view": 0,
|
||||
"label": "Discount(%)",
|
||||
"oldfieldname": "adj_rate",
|
||||
"oldfieldtype": "Float",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "70px",
|
||||
"read_only": 0,
|
||||
"fieldname": "discount_percentage",
|
||||
"fieldtype": "Float",
|
||||
"in_list_view": 0,
|
||||
"label": "Discount(%)",
|
||||
"oldfieldname": "adj_rate",
|
||||
"oldfieldtype": "Float",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "70px",
|
||||
"read_only": 0,
|
||||
"width": "70px"
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "col_break2",
|
||||
"fieldtype": "Column Break",
|
||||
"fieldname": "col_break2",
|
||||
"fieldtype": "Column Break",
|
||||
"permlevel": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "stock_uom",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 0,
|
||||
"in_list_view": 0,
|
||||
"label": "UOM",
|
||||
"oldfieldname": "stock_uom",
|
||||
"oldfieldtype": "Data",
|
||||
"options": "UOM",
|
||||
"permlevel": 0,
|
||||
"print_width": "70px",
|
||||
"read_only": 1,
|
||||
"reqd": 0,
|
||||
"fieldname": "stock_uom",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 0,
|
||||
"in_list_view": 0,
|
||||
"label": "UOM",
|
||||
"oldfieldname": "stock_uom",
|
||||
"oldfieldtype": "Data",
|
||||
"options": "UOM",
|
||||
"permlevel": 0,
|
||||
"print_width": "70px",
|
||||
"read_only": 1,
|
||||
"reqd": 0,
|
||||
"width": "70px"
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "base_price_list_rate",
|
||||
"fieldtype": "Currency",
|
||||
"in_list_view": 0,
|
||||
"label": "Price List Rate (Company Currency)",
|
||||
"oldfieldname": "base_ref_rate",
|
||||
"oldfieldtype": "Currency",
|
||||
"options": "Company:company:default_currency",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "100px",
|
||||
"read_only": 1,
|
||||
"fieldname": "base_price_list_rate",
|
||||
"fieldtype": "Currency",
|
||||
"in_list_view": 0,
|
||||
"label": "Price List Rate (Company Currency)",
|
||||
"oldfieldname": "base_ref_rate",
|
||||
"oldfieldtype": "Currency",
|
||||
"options": "Company:company:default_currency",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "100px",
|
||||
"read_only": 1,
|
||||
"width": "100px"
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "section_break_simple1",
|
||||
"fieldtype": "Section Break",
|
||||
"fieldname": "section_break_simple1",
|
||||
"fieldtype": "Section Break",
|
||||
"permlevel": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "rate",
|
||||
"fieldtype": "Currency",
|
||||
"in_list_view": 1,
|
||||
"label": "Rate",
|
||||
"oldfieldname": "export_rate",
|
||||
"oldfieldtype": "Currency",
|
||||
"options": "currency",
|
||||
"permlevel": 0,
|
||||
"print_width": "100px",
|
||||
"read_only": 0,
|
||||
"reqd": 0,
|
||||
"fieldname": "rate",
|
||||
"fieldtype": "Currency",
|
||||
"in_list_view": 1,
|
||||
"label": "Rate",
|
||||
"oldfieldname": "export_rate",
|
||||
"oldfieldtype": "Currency",
|
||||
"options": "currency",
|
||||
"permlevel": 0,
|
||||
"print_width": "100px",
|
||||
"read_only": 0,
|
||||
"reqd": 0,
|
||||
"width": "100px"
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "amount",
|
||||
"fieldtype": "Currency",
|
||||
"in_list_view": 1,
|
||||
"label": "Amount",
|
||||
"no_copy": 0,
|
||||
"oldfieldname": "export_amount",
|
||||
"oldfieldtype": "Currency",
|
||||
"options": "currency",
|
||||
"permlevel": 0,
|
||||
"print_width": "100px",
|
||||
"read_only": 1,
|
||||
"reqd": 0,
|
||||
"fieldname": "amount",
|
||||
"fieldtype": "Currency",
|
||||
"in_list_view": 1,
|
||||
"label": "Amount",
|
||||
"no_copy": 0,
|
||||
"oldfieldname": "export_amount",
|
||||
"oldfieldtype": "Currency",
|
||||
"options": "currency",
|
||||
"permlevel": 0,
|
||||
"print_width": "100px",
|
||||
"read_only": 1,
|
||||
"reqd": 0,
|
||||
"width": "100px"
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "col_break3",
|
||||
"fieldtype": "Column Break",
|
||||
"fieldname": "col_break3",
|
||||
"fieldtype": "Column Break",
|
||||
"permlevel": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "base_rate",
|
||||
"fieldtype": "Currency",
|
||||
"in_list_view": 0,
|
||||
"label": "Basic Rate (Company Currency)",
|
||||
"oldfieldname": "basic_rate",
|
||||
"oldfieldtype": "Currency",
|
||||
"options": "Company:company:default_currency",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "100px",
|
||||
"read_only": 1,
|
||||
"reqd": 0,
|
||||
"fieldname": "base_rate",
|
||||
"fieldtype": "Currency",
|
||||
"in_list_view": 0,
|
||||
"label": "Basic Rate (Company Currency)",
|
||||
"oldfieldname": "basic_rate",
|
||||
"oldfieldtype": "Currency",
|
||||
"options": "Company:company:default_currency",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "100px",
|
||||
"read_only": 1,
|
||||
"reqd": 0,
|
||||
"width": "100px"
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "base_amount",
|
||||
"fieldtype": "Currency",
|
||||
"in_list_view": 0,
|
||||
"label": "Amount (Company Currency)",
|
||||
"no_copy": 0,
|
||||
"oldfieldname": "amount",
|
||||
"oldfieldtype": "Currency",
|
||||
"options": "Company:company:default_currency",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "100px",
|
||||
"read_only": 1,
|
||||
"reqd": 0,
|
||||
"fieldname": "base_amount",
|
||||
"fieldtype": "Currency",
|
||||
"in_list_view": 0,
|
||||
"label": "Amount (Company Currency)",
|
||||
"no_copy": 0,
|
||||
"oldfieldname": "amount",
|
||||
"oldfieldtype": "Currency",
|
||||
"options": "Company:company:default_currency",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "100px",
|
||||
"read_only": 1,
|
||||
"reqd": 0,
|
||||
"width": "100px"
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "pricing_rule",
|
||||
"fieldtype": "Link",
|
||||
"label": "Pricing Rule",
|
||||
"options": "Pricing Rule",
|
||||
"permlevel": 0,
|
||||
"fieldname": "pricing_rule",
|
||||
"fieldtype": "Link",
|
||||
"label": "Pricing Rule",
|
||||
"options": "Pricing Rule",
|
||||
"permlevel": 0,
|
||||
"read_only": 1
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "warehouse_and_reference",
|
||||
"fieldtype": "Section Break",
|
||||
"in_list_view": 0,
|
||||
"label": "Warehouse and Reference",
|
||||
"fieldname": "warehouse_and_reference",
|
||||
"fieldtype": "Section Break",
|
||||
"in_list_view": 0,
|
||||
"label": "Warehouse and Reference",
|
||||
"permlevel": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "warehouse",
|
||||
"fieldtype": "Link",
|
||||
"in_list_view": 0,
|
||||
"label": "Reserved Warehouse",
|
||||
"no_copy": 0,
|
||||
"oldfieldname": "reserved_warehouse",
|
||||
"oldfieldtype": "Link",
|
||||
"options": "Warehouse",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "150px",
|
||||
"read_only": 0,
|
||||
"reqd": 0,
|
||||
"fieldname": "warehouse",
|
||||
"fieldtype": "Link",
|
||||
"in_list_view": 0,
|
||||
"label": "Reserved Warehouse",
|
||||
"no_copy": 0,
|
||||
"oldfieldname": "reserved_warehouse",
|
||||
"oldfieldtype": "Link",
|
||||
"options": "Warehouse",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "150px",
|
||||
"read_only": 0,
|
||||
"reqd": 0,
|
||||
"width": "150px"
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "prevdoc_docname",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 0,
|
||||
"in_filter": 1,
|
||||
"in_list_view": 0,
|
||||
"label": "Quotation",
|
||||
"no_copy": 1,
|
||||
"oldfieldname": "prevdoc_docname",
|
||||
"oldfieldtype": "Link",
|
||||
"options": "Quotation",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"read_only": 1,
|
||||
"fieldname": "prevdoc_docname",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 0,
|
||||
"in_filter": 1,
|
||||
"in_list_view": 0,
|
||||
"label": "Quotation",
|
||||
"no_copy": 1,
|
||||
"oldfieldname": "prevdoc_docname",
|
||||
"oldfieldtype": "Link",
|
||||
"options": "Quotation",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"read_only": 1,
|
||||
"search_index": 1
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "brand",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 1,
|
||||
"in_filter": 1,
|
||||
"in_list_view": 0,
|
||||
"label": "Brand Name",
|
||||
"oldfieldname": "brand",
|
||||
"oldfieldtype": "Link",
|
||||
"options": "Brand",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"read_only": 1,
|
||||
"fieldname": "brand",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 1,
|
||||
"in_filter": 1,
|
||||
"in_list_view": 0,
|
||||
"label": "Brand Name",
|
||||
"oldfieldname": "brand",
|
||||
"oldfieldtype": "Link",
|
||||
"options": "Brand",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"read_only": 1,
|
||||
"search_index": 1
|
||||
},
|
||||
},
|
||||
{
|
||||
"description": "<a href=\"#Sales Browser/Item Group\">Add / Edit</a>",
|
||||
"fieldname": "item_group",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 1,
|
||||
"in_filter": 1,
|
||||
"in_list_view": 0,
|
||||
"label": "Item Group",
|
||||
"oldfieldname": "item_group",
|
||||
"oldfieldtype": "Link",
|
||||
"options": "Item Group",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"read_only": 1,
|
||||
"description": "<a href=\"#Sales Browser/Item Group\">Add / Edit</a>",
|
||||
"fieldname": "item_group",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 1,
|
||||
"in_filter": 1,
|
||||
"in_list_view": 0,
|
||||
"label": "Item Group",
|
||||
"oldfieldname": "item_group",
|
||||
"oldfieldtype": "Link",
|
||||
"options": "Item Group",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"read_only": 1,
|
||||
"search_index": 1
|
||||
},
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 1,
|
||||
"fieldname": "page_break",
|
||||
"fieldtype": "Check",
|
||||
"in_list_view": 0,
|
||||
"label": "Page Break",
|
||||
"oldfieldname": "page_break",
|
||||
"oldfieldtype": "Check",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"read_only": 0,
|
||||
"allow_on_submit": 1,
|
||||
"fieldname": "page_break",
|
||||
"fieldtype": "Check",
|
||||
"in_list_view": 0,
|
||||
"label": "Page Break",
|
||||
"oldfieldname": "page_break",
|
||||
"oldfieldtype": "Check",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"read_only": 0,
|
||||
"report_hide": 1
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "col_break4",
|
||||
"fieldtype": "Column Break",
|
||||
"fieldname": "col_break4",
|
||||
"fieldtype": "Column Break",
|
||||
"permlevel": 0
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "projected_qty",
|
||||
"fieldtype": "Float",
|
||||
"hidden": 1,
|
||||
"in_list_view": 0,
|
||||
"label": "Projected Qty",
|
||||
"no_copy": 1,
|
||||
"oldfieldname": "projected_qty",
|
||||
"oldfieldtype": "Currency",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "70px",
|
||||
"read_only": 1,
|
||||
"fieldname": "projected_qty",
|
||||
"fieldtype": "Float",
|
||||
"hidden": 0,
|
||||
"in_list_view": 0,
|
||||
"label": "Projected Qty",
|
||||
"no_copy": 1,
|
||||
"oldfieldname": "projected_qty",
|
||||
"oldfieldtype": "Currency",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "70px",
|
||||
"read_only": 1,
|
||||
"width": "70px"
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "actual_qty",
|
||||
"fieldtype": "Float",
|
||||
"in_list_view": 0,
|
||||
"label": "Actual Qty",
|
||||
"no_copy": 1,
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "70px",
|
||||
"read_only": 1,
|
||||
"fieldname": "actual_qty",
|
||||
"fieldtype": "Float",
|
||||
"in_list_view": 0,
|
||||
"label": "Actual Qty",
|
||||
"no_copy": 1,
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "70px",
|
||||
"read_only": 1,
|
||||
"width": "70px"
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "delivered_qty",
|
||||
"fieldtype": "Float",
|
||||
"hidden": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"label": "Delivered Qty",
|
||||
"no_copy": 1,
|
||||
"oldfieldname": "delivered_qty",
|
||||
"oldfieldtype": "Currency",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "100px",
|
||||
"read_only": 1,
|
||||
"search_index": 0,
|
||||
"fieldname": "delivered_qty",
|
||||
"fieldtype": "Float",
|
||||
"hidden": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"label": "Delivered Qty",
|
||||
"no_copy": 1,
|
||||
"oldfieldname": "delivered_qty",
|
||||
"oldfieldtype": "Currency",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "100px",
|
||||
"read_only": 1,
|
||||
"search_index": 0,
|
||||
"width": "100px"
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "billed_amt",
|
||||
"fieldtype": "Currency",
|
||||
"in_list_view": 0,
|
||||
"label": "Billed Amt",
|
||||
"no_copy": 1,
|
||||
"options": "currency",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"fieldname": "billed_amt",
|
||||
"fieldtype": "Currency",
|
||||
"in_list_view": 0,
|
||||
"label": "Billed Amt",
|
||||
"no_copy": 1,
|
||||
"options": "currency",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"read_only": 1
|
||||
},
|
||||
},
|
||||
{
|
||||
"description": "For Production",
|
||||
"fieldname": "planned_qty",
|
||||
"fieldtype": "Float",
|
||||
"hidden": 1,
|
||||
"in_list_view": 0,
|
||||
"label": "Planned Quantity",
|
||||
"no_copy": 1,
|
||||
"oldfieldname": "planned_qty",
|
||||
"oldfieldtype": "Currency",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "50px",
|
||||
"read_only": 1,
|
||||
"report_hide": 1,
|
||||
"description": "For Production",
|
||||
"fieldname": "planned_qty",
|
||||
"fieldtype": "Float",
|
||||
"hidden": 1,
|
||||
"in_list_view": 0,
|
||||
"label": "Planned Quantity",
|
||||
"no_copy": 1,
|
||||
"oldfieldname": "planned_qty",
|
||||
"oldfieldtype": "Currency",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "50px",
|
||||
"read_only": 1,
|
||||
"report_hide": 1,
|
||||
"width": "50px"
|
||||
},
|
||||
},
|
||||
{
|
||||
"description": "For Production",
|
||||
"fieldname": "produced_qty",
|
||||
"fieldtype": "Float",
|
||||
"hidden": 1,
|
||||
"in_list_view": 0,
|
||||
"label": "Produced Quantity",
|
||||
"oldfieldname": "produced_qty",
|
||||
"oldfieldtype": "Currency",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "50px",
|
||||
"read_only": 1,
|
||||
"report_hide": 1,
|
||||
"description": "For Production",
|
||||
"fieldname": "produced_qty",
|
||||
"fieldtype": "Float",
|
||||
"hidden": 1,
|
||||
"in_list_view": 0,
|
||||
"label": "Produced Quantity",
|
||||
"oldfieldname": "produced_qty",
|
||||
"oldfieldtype": "Currency",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_width": "50px",
|
||||
"read_only": 1,
|
||||
"report_hide": 1,
|
||||
"width": "50px"
|
||||
},
|
||||
},
|
||||
{
|
||||
"fieldname": "item_tax_rate",
|
||||
"fieldtype": "Small Text",
|
||||
"hidden": 1,
|
||||
"in_list_view": 0,
|
||||
"label": "Item Tax Rate",
|
||||
"oldfieldname": "item_tax_rate",
|
||||
"oldfieldtype": "Small Text",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"read_only": 1,
|
||||
"fieldname": "item_tax_rate",
|
||||
"fieldtype": "Small Text",
|
||||
"hidden": 1,
|
||||
"in_list_view": 0,
|
||||
"label": "Item Tax Rate",
|
||||
"oldfieldname": "item_tax_rate",
|
||||
"oldfieldtype": "Small Text",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"read_only": 1,
|
||||
"report_hide": 1
|
||||
},
|
||||
},
|
||||
{
|
||||
"description": "Used for Production Plan",
|
||||
"fieldname": "transaction_date",
|
||||
"fieldtype": "Date",
|
||||
"hidden": 1,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"label": "Sales Order Date",
|
||||
"oldfieldname": "transaction_date",
|
||||
"oldfieldtype": "Date",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"read_only": 1,
|
||||
"report_hide": 1,
|
||||
"description": "Used for Production Plan",
|
||||
"fieldname": "transaction_date",
|
||||
"fieldtype": "Date",
|
||||
"hidden": 1,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"label": "Sales Order Date",
|
||||
"oldfieldname": "transaction_date",
|
||||
"oldfieldtype": "Date",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"read_only": 1,
|
||||
"report_hide": 1,
|
||||
"search_index": 0
|
||||
}
|
||||
],
|
||||
"idx": 1,
|
||||
"istable": 1,
|
||||
"modified": "2014-07-31 04:55:10.143164",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Selling",
|
||||
"name": "Sales Order Item",
|
||||
"owner": "Administrator",
|
||||
"permissions": [],
|
||||
"sort_field": "modified",
|
||||
],
|
||||
"idx": 1,
|
||||
"istable": 1,
|
||||
"modified": "2014-07-31 04:55:10.143164",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Selling",
|
||||
"name": "Sales Order Item",
|
||||
"owner": "Administrator",
|
||||
"permissions": [],
|
||||
"sort_field": "modified",
|
||||
"sort_order": "DESC"
|
||||
}
|
||||
}
|
||||
|
21
erpnext/stock/doctype/batch/batch_list.html
Normal file
21
erpnext/stock/doctype/batch/batch_list.html
Normal file
@ -0,0 +1,21 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-12">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
<span class="filterable" style="margin-right: 8px;"
|
||||
data-filter="item,=,{%= doc.item %}">
|
||||
{%= doc.item %}</span>
|
||||
{% if(doc.expiry_date && frappe.datetime.get_diff(doc.expiry_date) <= 0) { %}
|
||||
<span class="label label-danger filterable"
|
||||
data-filter="expiry_date,>=,Today">
|
||||
{%= __("Expired") %}: {%= doc.get_formatted("expiry_date") %}
|
||||
</span>
|
||||
{% } else if(doc.expiry_date) { %}
|
||||
<span class="label label-default filterable"
|
||||
data-filter="expiry_date,=,{%= doc.expiry_date %}">
|
||||
{%= __("Expiry") %}: {%= doc.get_formatted("expiry_date") %}
|
||||
</span>
|
||||
{% } %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
3
erpnext/stock/doctype/batch/batch_list.js
Normal file
3
erpnext/stock/doctype/batch/batch_list.js
Normal file
@ -0,0 +1,3 @@
|
||||
frappe.listview_settings['Batch'] = {
|
||||
add_fields: ["item", "expiry_date"]
|
||||
};
|
@ -12,6 +12,10 @@ from frappe.model.mapper import get_mapped_doc
|
||||
from erpnext.stock.utils import update_bin
|
||||
from erpnext.controllers.selling_controller import SellingController
|
||||
|
||||
form_grid_templates = {
|
||||
"delivery_note_details": "templates/form_grid/item_grid.html"
|
||||
}
|
||||
|
||||
class DeliveryNote(SellingController):
|
||||
tname = 'Delivery Note Item'
|
||||
fname = 'delivery_note_details'
|
||||
|
31
erpnext/stock/doctype/delivery_note/delivery_note_list.html
Normal file
31
erpnext/stock/doctype/delivery_note/delivery_note_list.html
Normal file
@ -0,0 +1,31 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-9">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
<span style="margin-right: 8px; display: inline-block">
|
||||
<span class="filterable"
|
||||
data-filter="customer,=,{%= doc.customer %}">
|
||||
{%= doc.customer_name %}</span></span>
|
||||
{% if(doc.transporter_name) { %}
|
||||
<span style="margin-right: 8px;"
|
||||
title="{%= doc.transporter_name %}" class="filterable"
|
||||
data-filter="transporter_name,=,{%= doc.transporter_name %}">
|
||||
<i class="icon-truck text-muted"></i>
|
||||
</span>
|
||||
{% } %}
|
||||
{% if(doc.docstatus===0) { %}
|
||||
<span class="label label-danger filterable"
|
||||
data-filter="docstatus,=,0">{%= __("Draft") %}</span>
|
||||
{% } %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-1 text-right">
|
||||
{% var completed = doc.per_installed, title=__("% Installed") %}
|
||||
{% include "templates/form_grid/includes/progress.html" %}
|
||||
</div>
|
||||
<div class="col-xs-2 text-right">
|
||||
<div class="text-ellipsis" title="{%= doc.get_formatted('grand_total_export') %}">
|
||||
{%= doc.get_formatted("grand_total_export") %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,4 @@
|
||||
frappe.listview_settings['Delivery Note'] = {
|
||||
add_fields: ["customer", "customer_name", "grand_total", "per_installed",
|
||||
"transporter_name"]
|
||||
};
|
@ -109,7 +109,7 @@
|
||||
},
|
||||
{
|
||||
"fieldname": "discount_percentage",
|
||||
"fieldtype": "Percent",
|
||||
"fieldtype": "Float",
|
||||
"in_list_view": 0,
|
||||
"label": "Discount (%)",
|
||||
"oldfieldname": "adj_rate",
|
||||
@ -365,6 +365,7 @@
|
||||
"label": "Against Sales Order",
|
||||
"options": "Sales Order",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
@ -373,6 +374,7 @@
|
||||
"label": "Against Sales Invoice",
|
||||
"options": "Sales Invoice",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
@ -429,7 +431,7 @@
|
||||
],
|
||||
"idx": 1,
|
||||
"istable": 1,
|
||||
"modified": "2014-07-24 05:56:00.218977",
|
||||
"modified": "2014-07-29 06:11:36.636120",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Stock",
|
||||
"name": "Delivery Note Item",
|
||||
|
53
erpnext/stock/doctype/item/item_list.html
Normal file
53
erpnext/stock/doctype/item/item_list.html
Normal file
@ -0,0 +1,53 @@
|
||||
<div class="row">
|
||||
<div class="col-xs-11">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
{% if(doc.item_name != doc.name) { %}
|
||||
<span style="margin-right: 8px;">{%= doc.item_name %}</span>
|
||||
{% } %}
|
||||
{% if(doc.is_stock_item==="Yes") { %}
|
||||
<span style="margin-right: 8px;"
|
||||
title="{%= __("Stock Item") %}" class="filterable"
|
||||
data-filter="is_stock_item,=,Yes">
|
||||
<i class="icon-inbox text-muted"></i>
|
||||
</span>
|
||||
{% } %}
|
||||
{% if(doc.is_sales_item==="Yes") { %}
|
||||
<span style="margin-right: 8px;"
|
||||
title="{%= __("Sales Item") %}" class="filterable"
|
||||
data-filter="is_sales_item,=,Yes">
|
||||
<i class="icon-tag text-muted"></i>
|
||||
</span>
|
||||
{% } %}
|
||||
{% if(doc.is_purchase_item==="Yes") { %}
|
||||
<span style="margin-right: 8px;"
|
||||
title="{%= __("Purchase Item") %}" class="filterable"
|
||||
data-filter="is_purchase_item,=,Yes">
|
||||
<i class="icon-shopping-cart text-muted"></i>
|
||||
</span>
|
||||
{% } %}
|
||||
{% if(doc.is_manufactured_item==="Yes") { %}
|
||||
<span style="margin-right: 8px;"
|
||||
title="{%= __("Manufactured Item") %}" class="filterable"
|
||||
data-filter="is_manufactured_item,=,Yes">
|
||||
<i class="icon-wrench text-muted"></i>
|
||||
</span>
|
||||
{% } %}
|
||||
{% if(doc.show_in_website) { %}
|
||||
<span style="margin-right: 8px;"
|
||||
title="{%= __("Shown in Website") %}" class="filterable"
|
||||
data-filter="show_in_website,=,Yes">
|
||||
<i class="icon-globe text-muted"></i>
|
||||
</span>
|
||||
{% } %}
|
||||
<span class="label label-info filterable"
|
||||
data-filter="item_group,=,{%= doc.item_group %}">
|
||||
{%= doc.item_group %}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-1">
|
||||
{% if(doc.image) { %}
|
||||
<img src="{%= doc.image %}" class="img-responsive" style="margin-bottom: 4px;">
|
||||
{% } %}
|
||||
</div>
|
||||
</div>
|
5
erpnext/stock/doctype/item/item_list.js
Normal file
5
erpnext/stock/doctype/item/item_list.js
Normal file
@ -0,0 +1,5 @@
|
||||
frappe.listview_settings['Item'] = {
|
||||
add_fields: ["item_name", "stock_uom", "item_group", "image",
|
||||
"is_stock_item", "is_sales_item", "is_purchase_item",
|
||||
"is_manufactured_item", "show_in_website"]
|
||||
};
|
@ -12,6 +12,11 @@ from frappe import _
|
||||
from frappe.model.mapper import get_mapped_doc
|
||||
|
||||
from erpnext.controllers.buying_controller import BuyingController
|
||||
|
||||
form_grid_templates = {
|
||||
"indent_details": "templates/form_grid/material_request_grid.html"
|
||||
}
|
||||
|
||||
class MaterialRequest(BuyingController):
|
||||
tname = 'Material Request Item'
|
||||
fname = 'indent_details'
|
||||
|
@ -0,0 +1,28 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-10">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
<span style="margin-right: 8px; display: inline-block"
|
||||
title="{%= doc.material_request_type %}" class="filterable"
|
||||
data-filter="material_request_type,=,{%= doc.material_request_type %}">
|
||||
{% if(doc.material_request_type==="Purchase") { %}
|
||||
<i class="icon-shopping-cart"></i>
|
||||
{% } else { %}
|
||||
<i class="icon-truck"></i>
|
||||
{% } %}
|
||||
</span>
|
||||
{% if(doc.status=="Draft") { %}
|
||||
<span class="label label-danger"
|
||||
data-filter="status,=,{%= doc.status %}">{%= doc.status %}</span>
|
||||
{% } %}
|
||||
{% if(doc.status=="Submitted" && doc.per_ordered < 100) { %}
|
||||
<span class="label label-warning filterable"
|
||||
data-filter="per_ordered,<,100">{%= __("Pending") %}</span>
|
||||
{% } %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-2">
|
||||
{% var completed = doc.per_ordered, title = __("Ordered") %}
|
||||
{% include "templates/form_grid/includes/progress.html" %}
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,4 @@
|
||||
frappe.listview_settings['Material Request'] = {
|
||||
add_fields: ["material_request_type", "status", "per_ordered"],
|
||||
filters: [["per_ordered", "<", 100]]
|
||||
};
|
@ -109,7 +109,7 @@
|
||||
"allow_on_submit": 0,
|
||||
"fieldname": "schedule_date",
|
||||
"fieldtype": "Date",
|
||||
"in_list_view": 1,
|
||||
"in_list_view": 0,
|
||||
"label": "Required Date",
|
||||
"no_copy": 0,
|
||||
"oldfieldname": "schedule_date",
|
||||
@ -234,7 +234,7 @@
|
||||
],
|
||||
"idx": 1,
|
||||
"istable": 1,
|
||||
"modified": "2014-07-18 01:04:18.470761",
|
||||
"modified": "2014-08-07 07:12:47.994668",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Stock",
|
||||
"name": "Material Request Item",
|
||||
|
@ -11,6 +11,11 @@ import frappe.defaults
|
||||
from erpnext.stock.utils import update_bin
|
||||
|
||||
from erpnext.controllers.buying_controller import BuyingController
|
||||
|
||||
form_grid_templates = {
|
||||
"purchase_receipt_details": "templates/form_grid/item_grid.html"
|
||||
}
|
||||
|
||||
class PurchaseReceipt(BuyingController):
|
||||
tname = 'Purchase Receipt Item'
|
||||
fname = 'purchase_receipt_details'
|
||||
|
@ -0,0 +1,34 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-10">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
<span style="margin-right: 8px; display: inline-block">
|
||||
<span class="filterable"
|
||||
data-filter="supplier,=,{%= doc.supplier %}">
|
||||
{%= doc.supplier_name %}</span></span>
|
||||
{% if(cint(doc.is_subcontracted)) { %}
|
||||
<span style="margin-right: 8px;"
|
||||
title="{%= __("Subcontracted") %}" class="filterable"
|
||||
data-filter="is_subcontracted,=,Yes">
|
||||
<i class="icon-cog text-muted"></i>
|
||||
</span>
|
||||
{% } %}
|
||||
{% if(doc.transporter_name) { %}
|
||||
<span style="margin-right: 8px;"
|
||||
title="{%= doc.transporter_name %}" class="filterable"
|
||||
data-filter="transporter_name,=,{%= doc.transporter_name %}">
|
||||
<i class="icon-truck text-muted"></i>
|
||||
</span>
|
||||
{% } %}
|
||||
{% if(doc.docstatus===0) { %}
|
||||
<span class="label label-danger filterable"
|
||||
data-filter="docstatus,=,0">{%= __("Draft") %}</span>
|
||||
{% } %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-2 text-right">
|
||||
<div class="text-ellipsis" title="{%= doc.get_formatted('grand_total_import') %}">
|
||||
{%= doc.get_formatted("grand_total_import") %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,4 @@
|
||||
frappe.listview_settings['Purchase Receipt'] = {
|
||||
add_fields: ["supplier", "supplier_name", "grand_total", "is_subcontracted",
|
||||
"transporter_name"]
|
||||
};
|
28
erpnext/stock/doctype/serial_no/serial_no_list.html
Normal file
28
erpnext/stock/doctype/serial_no/serial_no_list.html
Normal file
@ -0,0 +1,28 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-12">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
<span class="filterable" style="margin-right: 8px;"
|
||||
data-filter="item_code,=,{%= doc.item_code %}">
|
||||
{%= doc.item_code %}</span>
|
||||
{% var icon = {
|
||||
"Available": ["icon-ok", "label-success"],
|
||||
"Not Available": ["icon-remove", "label-danger"],
|
||||
"Delivered": ["icon-truck", "label-success"],
|
||||
"Purchase Returned": ["icon-retweet", "label-warning"],
|
||||
"Sales Returned": ["icon-retweet", "label-warning"],
|
||||
}[doc.status]; %}
|
||||
<span class="label {%= icon[1] %} filterable"
|
||||
data-filter="status,=,{%= doc.status %}"
|
||||
title="{%= doc.purpose %}">
|
||||
<i class="{%= icon[0] %}"></i> {%= doc.status %}
|
||||
</span>
|
||||
{% if(doc.warehouse) { %}
|
||||
<span class="label label-default filterable"
|
||||
data-filter="warehouse,=,{%= doc.warehouse %}">
|
||||
{%= doc.warehouse %}
|
||||
</span>
|
||||
{% } %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
3
erpnext/stock/doctype/serial_no/serial_no_list.js
Normal file
3
erpnext/stock/doctype/serial_no/serial_no_list.js
Normal file
@ -0,0 +1,3 @@
|
||||
frappe.listview_settings['Serial No'] = {
|
||||
add_fields: ["status", "item_code", "warehouse"]
|
||||
};
|
@ -11,6 +11,7 @@ from frappe import _
|
||||
from erpnext.stock.utils import get_incoming_rate
|
||||
from erpnext.stock.stock_ledger import get_previous_sle
|
||||
from erpnext.controllers.queries import get_match_cond
|
||||
from erpnext.stock.get_item_details import get_available_qty
|
||||
|
||||
class NotUpdateStockError(frappe.ValidationError): pass
|
||||
class StockOverReturnError(frappe.ValidationError): pass
|
||||
@ -19,8 +20,17 @@ class DuplicateEntryForProductionOrderError(frappe.ValidationError): pass
|
||||
|
||||
from erpnext.controllers.stock_controller import StockController
|
||||
|
||||
form_grid_templates = {
|
||||
"mtn_details": "templates/form_grid/stock_entry_grid.html"
|
||||
}
|
||||
|
||||
class StockEntry(StockController):
|
||||
fname = 'mtn_details'
|
||||
def onload(self):
|
||||
if self.docstatus==1:
|
||||
for item in self.get(self.fname):
|
||||
item.update(get_available_qty(item.item_code,
|
||||
item.s_warehouse))
|
||||
|
||||
def validate(self):
|
||||
self.validate_posting_time()
|
||||
|
50
erpnext/stock/doctype/stock_entry/stock_entry_list.html
Normal file
50
erpnext/stock/doctype/stock_entry/stock_entry_list.html
Normal file
@ -0,0 +1,50 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-12">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
{% var icon = {
|
||||
"Material Issue": "icon-arrow-right",
|
||||
"Material Receipt": "icon-arrow-left",
|
||||
"Material Transfer": "icon-resize-horizontal",
|
||||
"Manufacture/Repack": "icon-wrench",
|
||||
"Sales Return": "icon-warning-sign",
|
||||
"Purchase Return": "icon-warning-sign",
|
||||
"Subcontract": "icon-truck"
|
||||
}[doc.purpose]; %}
|
||||
<span class="label label-info filterable"
|
||||
data-filter="purpose,=,{%= doc.purpose %}"
|
||||
title="{%= doc.purpose %}">
|
||||
<i class="{%= icon %}"></i>
|
||||
</span>
|
||||
{% if(doc.from_warehouse) { %}
|
||||
<span class="label label-default filterable"
|
||||
data-filter="from_warehouse,=,{%= doc.from_warehouse %}">
|
||||
{%= doc.from_warehouse %}
|
||||
</span>
|
||||
{% } %}
|
||||
{% if(doc.from_warehouse || doc.to_warehouse) { %}
|
||||
<i class="icon-arrow-right text-muted"></i>
|
||||
{% } %}
|
||||
{% if(doc.to_warehouse) { %}
|
||||
<span class="label label-primary filterable"
|
||||
data-filter="to_warehouse,=,{%= doc.to_warehouse %}">
|
||||
{%= doc.to_warehouse %}
|
||||
</span>
|
||||
{% } %}
|
||||
{% if(doc.production_order) { %}
|
||||
<span class="label label-info filterable"
|
||||
data-filter="production_order,=,{%= doc.production_order %}"
|
||||
title="{%= doc.production_order %}">
|
||||
<i class="icon-wrench"></i>
|
||||
</span>
|
||||
{% } %}
|
||||
{% if(doc.bom_no) { %}
|
||||
<span class="label label-info filterable"
|
||||
data-filter="bom_no,=,{%= doc.bom_no %}"
|
||||
title="{%= doc.bom_no %}">
|
||||
<i class="icon-sitemap"></i>
|
||||
</span>
|
||||
{% } %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
3
erpnext/stock/doctype/stock_entry/stock_entry_list.js
Normal file
3
erpnext/stock/doctype/stock_entry/stock_entry_list.js
Normal file
@ -0,0 +1,3 @@
|
||||
frappe.listview_settings['Stock Entry'] = {
|
||||
add_fields: ["from_warehouse", "to_warehouse", "purpose", "production_order", "bom_no"]
|
||||
};
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"autoname": "MTND/.######",
|
||||
"creation": "2013-03-29 18:22:12.000000",
|
||||
"creation": "2013-03-29 18:22:12",
|
||||
"docstatus": 0,
|
||||
"doctype": "DocType",
|
||||
"fields": [
|
||||
@ -190,7 +190,7 @@
|
||||
"oldfieldtype": "Link",
|
||||
"options": "Batch",
|
||||
"permlevel": 0,
|
||||
"print_hide": 1,
|
||||
"print_hide": 0,
|
||||
"read_only": 0
|
||||
},
|
||||
{
|
||||
@ -300,9 +300,10 @@
|
||||
],
|
||||
"idx": 1,
|
||||
"istable": 1,
|
||||
"modified": "2014-02-03 12:59:27.000000",
|
||||
"modified": "2014-07-29 05:28:21.872968",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Stock",
|
||||
"name": "Stock Entry Detail",
|
||||
"owner": "Administrator"
|
||||
"owner": "Administrator",
|
||||
"permissions": []
|
||||
}
|
@ -43,6 +43,7 @@
|
||||
"description": "Account for the warehouse (Perpetual Inventory) will be created under this Account.",
|
||||
"fieldname": "create_account_under",
|
||||
"fieldtype": "Link",
|
||||
"in_list_view": 1,
|
||||
"label": "Parent Account",
|
||||
"options": "Account",
|
||||
"permlevel": 0
|
||||
@ -150,7 +151,7 @@
|
||||
],
|
||||
"icon": "icon-building",
|
||||
"idx": 1,
|
||||
"modified": "2014-05-27 03:49:22.483111",
|
||||
"modified": "2014-08-04 02:55:16.750848",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Stock",
|
||||
"name": "Warehouse",
|
||||
|
@ -0,0 +1,24 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-12">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
|
||||
<span style="margin-right: 8px;" class="filterable"
|
||||
data-filter="customer,=,{%= doc.customer %}">
|
||||
{%= doc.customer %}</span>
|
||||
|
||||
<span class="label
|
||||
label-{%= frappe.utils.guess_style(doc.status) %} filterable"
|
||||
data-filter="status,=,{%= doc.status %}">
|
||||
{%= doc.status %}
|
||||
</span>
|
||||
|
||||
{% if(doc.item_code) { %}
|
||||
<span class="label label-default filterable"
|
||||
data-filter="item_code,=,{%= doc.item_code %}">
|
||||
{%= doc.item_code %}
|
||||
</span>
|
||||
{% } %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,4 @@
|
||||
frappe.listview_settings['Customer Issue'] = {
|
||||
add_fields: ["status", "customer", "item_code"],
|
||||
filters:[["status","=", "Open"]]
|
||||
};
|
@ -0,0 +1,35 @@
|
||||
<div class="row" style="max-height: 30px;">
|
||||
<div class="col-xs-12">
|
||||
<div class="text-ellipsis">
|
||||
{%= list.get_avatar_and_id(doc) %}
|
||||
|
||||
<!-- sample text -->
|
||||
<span style="margin-right: 8px;" class="filterable"
|
||||
data-filter="customer,=,{%= doc.customer %}">
|
||||
{%= doc.customer_name %}</span>
|
||||
|
||||
<!-- sample label -->
|
||||
{% var style = {
|
||||
"Scheduled": "default",
|
||||
"Unscheduled": "default",
|
||||
"Breakdown": "danger"
|
||||
}[doc.maintenance_type] %}
|
||||
<span class="label
|
||||
label-{%= style %} filterable"
|
||||
data-filter="maintenance_type,=,{%= doc.maintenance_type %}">
|
||||
{%= doc.maintenance_type %}
|
||||
</span>
|
||||
{% var style = doc.completion_status==="Partially Completed" ? "warning" : "success" %}
|
||||
<span class="label
|
||||
label-{%= style %} filterable"
|
||||
data-filter="completion_status,=,{%= doc.completion_status %}">
|
||||
{%= doc.completion_status %}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<!-- sample graph -->
|
||||
<div class="col-xs-1 text-right">
|
||||
{% var completed = doc.completed, title = __("Completed") %}
|
||||
{% include "templates/form_grid/includes/progress.html" %}
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,3 @@
|
||||
frappe.listview_settings['Maintenance Visit'] = {
|
||||
add_fields: ["customer", "customer_name", "completion_status", "maintenance_type"],
|
||||
};
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"autoname": "naming_series:",
|
||||
"creation": "2013-01-10 16:34:31.000000",
|
||||
"creation": "2013-01-10 16:34:31",
|
||||
"description": "Create and Send Newsletters",
|
||||
"docstatus": 0,
|
||||
"doctype": "DocType",
|
||||
@ -132,7 +132,7 @@
|
||||
],
|
||||
"icon": "icon-envelope",
|
||||
"idx": 1,
|
||||
"modified": "2014-02-03 11:32:22.000000",
|
||||
"modified": "2014-08-04 07:22:06.445634",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Support",
|
||||
"name": "Newsletter",
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user