Merge branch 'develop' into variant-error-msg

This commit is contained in:
Marica 2020-06-17 19:22:49 +05:30 committed by GitHub
commit 7bc9352546
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 186 additions and 6 deletions

View File

@ -146,7 +146,7 @@
"idx": 1,
"is_tree": 1,
"links": [],
"modified": "2020-04-29 16:09:30.025214",
"modified": "2020-06-17 16:09:30.025214",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Cost Center",

View File

@ -227,7 +227,9 @@ class StockController(AccountsController):
def check_expense_account(self, item):
if not item.get("expense_account"):
frappe.throw(_("Expense Account not set for Item {0}. Please set an Expense Account for the item in the Items table").format(item.item_code))
frappe.throw(_("Row #{0}: Expense Account not set for Item {1}. Please set an Expense \
Account in the Items table").format(item.idx, frappe.bold(item.item_code)),
title=_("Expense Account Missing"))
else:
is_expense_account = frappe.db.get_value("Account",

View File

@ -9,6 +9,14 @@ frappe.ui.form.on('Fee Structure', {
},
onload: function(frm) {
frm.set_query("academic_term", function() {
return {
"filters": {
"academic_year": frm.doc.academic_year
}
};
});
frm.set_query("receivable_account", function(doc) {
return {
filters: {

View File

@ -1,4 +1,5 @@
{
"actions": [],
"allow_import": 1,
"allow_rename": 1,
"autoname": "naming_series:",
@ -11,8 +12,8 @@
"program",
"student_category",
"column_break_2",
"academic_term",
"academic_year",
"academic_term",
"section_break_4",
"components",
"section_break_6",
@ -157,7 +158,8 @@
],
"icon": "fa fa-flag",
"is_submittable": 1,
"modified": "2019-05-26 09:04:17.765758",
"links": [],
"modified": "2020-06-16 15:34:57.295010",
"modified_by": "Administrator",
"module": "Education",
"name": "Fee Structure",

View File

@ -81,4 +81,10 @@
.place-order-container {
text-align: right;
}
.kb-card {
.card-body > .card-title {
line-height: 1.3;
}
}

View File

@ -1,5 +1,5 @@
{
"actions": [],
"actions": "",
"creation": "2017-02-17 13:07:35.686409",
"doctype": "DocType",
"editable_grid": 1,
@ -22,6 +22,10 @@
"post_description_key",
"post_route_key",
"post_route_string",
"greetings_section_section",
"greeting_title",
"column_break_19",
"greeting_subtitle",
"search_apis_sb",
"search_apis"
],
@ -127,11 +131,40 @@
"fieldname": "allow_resetting_service_level_agreement",
"fieldtype": "Check",
"label": "Allow Resetting Service Level Agreement"
},
{
"default": "We're here to help",
"fieldname": "greeting_title",
"fieldtype": "Data",
"label": "Greeting Title",
"show_days": 1,
"show_seconds": 1
},
{
"fieldname": "column_break_19",
"fieldtype": "Column Break",
"show_days": 1,
"show_seconds": 1
},
{
"default": "Browse help topics",
"fieldname": "greeting_subtitle",
"fieldtype": "Data",
"label": "Greeting Subtitle",
"show_days": 1,
"show_seconds": 1
},
{
"fieldname": "greetings_section_section",
"fieldtype": "Section Break",
"label": "Greetings Section",
"show_days": 1,
"show_seconds": 1
}
],
"issingle": 1,
"links": [],
"modified": "2020-06-05 17:56:17.491684",
"modified": "2020-06-11 13:08:38.473616",
"modified_by": "Administrator",
"module": "Support",
"name": "Support Settings",

View File

View File

@ -0,0 +1,55 @@
{% extends "templates/web.html" %}
{% block content %}
<section class="section section-padding-top section-padding-bottom">
<div class='container'>
<div class="hero-content">
<h1 class="hero-title">{{ greeting_title or _("We're here to help") }}</h1>
<p class="hero-subtitle">{{ greeting_subtitle or _("Browse help topics.") }}</p>
</div>
</div>
</section>
{% if favorite_article_list %}
<section class="section section-padding-top section-padding-bottom bg-light">
<div class='container'>
<h2>{{ _("Frequently Read Articles") }}</h2>
<div class="row">
{% for favorite_article in favorite_article_list %}
<div class="mt-4 col-12 col-sm-6 col-lg-4">
<div class="card card-md h-100 kb-card">
<div class="card-body">
<h6 class="card-subtitle mb-2 text-uppercase small text-muted">{{ favorite_article['category'] }}</h6>
<h3 class="card-title">{{ favorite_article['title'] }}</h3>
<p class="card-text">{{ favorite_article['description'] }}</p>
</div>
<a href="{{ favorite_article['route'] }}" class="stretched-link"></a>
</div>
</div>
{% endfor %}
</div>
</div>
</section>
{% endif %}
{% if help_article_list %}
<section class="section section-padding-top section-padding-bottom">
<div class='container'>
<h2>{{ _("Help Articles") }}</h2>
<div class="row">
{% for item in help_article_list %}
<div class="mt-5 col-12 col-sm-6 col-lg-4">
<h5>{{ item['category'].name }}</h5>
<div>
{% for article in item['articles'] %}
<a href="{{ article.route }}" class="mt-2 d-block">{{ article.title }}</a>
{% endfor %}
</div>
</div>
{% endfor %}
</div>
</div>
</section>
{% endif %}
{% endblock %}

View File

@ -0,0 +1,74 @@
from __future__ import unicode_literals
import frappe
def get_context(context):
context.no_cache = 1
context.align_greeting = ''
setting = frappe.get_doc("Support Settings")
context.greeting_title = setting.greeting_title
context.greeting_subtitle = setting.greeting_subtitle
# Support content
favorite_articles = get_favorite_articles_by_page_view()
if len(favorite_articles) < 6:
name_list = []
if favorite_articles:
for article in favorite_articles:
name_list.append(article.name)
for record in (frappe.get_all("Help Article",
fields=["title", "content", "route", "category"],
filters={"name": ['not in', tuple(name_list)], "published": 1},
order_by="creation desc", limit=(6-len(favorite_articles)))):
favorite_articles.append(record)
context.favorite_article_list = get_favorite_articles(favorite_articles)
context.help_article_list = get_help_article_list()
def get_favorite_articles_by_page_view():
return frappe.db.sql(
"""
SELECT
t1.name as name,
t1.title as title,
t1.content as content,
t1.route as route,
t1.category as category,
count(t1.route) as count
FROM `tabHelp Article` AS t1
INNER JOIN
`tabWeb Page View` AS t2
ON t1.route = t2.path
WHERE t1.published = 1
GROUP BY route
ORDER BY count DESC
LIMIT 6;
""", as_dict=True)
def get_favorite_articles(favorite_articles):
favorite_article_list=[]
for article in favorite_articles:
description = frappe.utils.strip_html(article.content)
if len(description) > 120:
description = description[:120] + '...'
favorite_article_dict = {
'title': article.title,
'description': description,
'route': article.route,
'category': article.category,
}
favorite_article_list.append(favorite_article_dict)
return favorite_article_list
def get_help_article_list():
help_article_list=[]
category_list = frappe.get_all("Help Category", fields="name")
for category in category_list:
help_articles = frappe.get_all("Help Article", fields="*", filters={"category": category.name, "published": 1}, order_by="modified desc", limit=5)
if help_articles:
help_aricles_per_caetgory = {
'category': category,
'articles': help_articles,
}
help_article_list.append(help_aricles_per_caetgory)
return help_article_list