[bot] first bot
This commit is contained in:
parent
d5bf8253da
commit
fe027b34a9
@ -143,3 +143,7 @@ default_mail_footer = """<div style="text-align: center;">
|
||||
get_translated_dict = {
|
||||
("doctype", "Global Defaults"): "frappe.geo.country_info.get_translated_dict"
|
||||
}
|
||||
|
||||
bot_parsers = [
|
||||
'erpnext.utilities.bot.FindItemBot',
|
||||
]
|
36
erpnext/utilities/bot.py
Normal file
36
erpnext/utilities/bot.py
Normal file
@ -0,0 +1,36 @@
|
||||
# Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and Contributors
|
||||
# See license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from frappe.utils.bot import BotParser
|
||||
|
||||
import frappe
|
||||
from frappe import _
|
||||
|
||||
class FindItemBot(BotParser):
|
||||
def get_reply(self):
|
||||
if self.startswith('where is', 'find item', 'locate'):
|
||||
item = '%{0}%'.format(self.strip_words(self.query, 'where is', 'find item', 'locate'))
|
||||
items = frappe.db.sql('''select name from `tabItem` where item_code like %(txt)s
|
||||
or item_name like %(txt)s or description like %(txt)s''', dict(txt=item))
|
||||
|
||||
if items:
|
||||
out = []
|
||||
warehouses = frappe.get_all("Warehouse")
|
||||
for item in items:
|
||||
found = False
|
||||
for warehouse in warehouses:
|
||||
qty = frappe.db.get_value("Bin", {'item_code': item[0], 'warehouse': warehouse.name}, 'actual_qty')
|
||||
if qty:
|
||||
out.append(_('{0} units of [{1}](#Form/Item/{1}) found in [{2}](#Form/Warehouse/{2})').format(qty,
|
||||
item[0], warehouse.name))
|
||||
found = True
|
||||
|
||||
if not found:
|
||||
out.append(_('[{0}](#Form/Item/{0}) is out of stock').format(item[0]))
|
||||
|
||||
return "\n\n".join(out)
|
||||
|
||||
else:
|
||||
return _("Did not find any item called {0}".format(item))
|
Loading…
x
Reference in New Issue
Block a user