Income/expense info in email digest

This commit is contained in:
Nabin Hait
2014-05-20 15:27:24 +05:30
parent 0e6554edc1
commit 44ae408b36
2 changed files with 45 additions and 48 deletions

View File

@@ -96,7 +96,7 @@
{ {
"fieldname": "income_year_to_date", "fieldname": "income_year_to_date",
"fieldtype": "Check", "fieldtype": "Check",
"hidden": 1, "hidden": 0,
"label": "Income Year to Date", "label": "Income Year to Date",
"permlevel": 0 "permlevel": 0
}, },
@@ -104,7 +104,7 @@
"description": "Income booked for the digest period", "description": "Income booked for the digest period",
"fieldname": "income", "fieldname": "income",
"fieldtype": "Check", "fieldtype": "Check",
"hidden": 1, "hidden": 0,
"label": "Income Booked", "label": "Income Booked",
"permlevel": 0 "permlevel": 0
}, },
@@ -112,24 +112,10 @@
"description": "Expenses booked for the digest period", "description": "Expenses booked for the digest period",
"fieldname": "expenses_booked", "fieldname": "expenses_booked",
"fieldtype": "Check", "fieldtype": "Check",
"hidden": 1, "hidden": 0,
"label": "Expenses Booked", "label": "Expenses Booked",
"permlevel": 0 "permlevel": 0
}, },
{
"description": "Payments received during the digest period",
"fieldname": "collections",
"fieldtype": "Check",
"label": "Payments Received",
"permlevel": 0
},
{
"description": "Payments made during the digest period",
"fieldname": "payments",
"fieldtype": "Check",
"label": "Payments Made",
"permlevel": 0
},
{ {
"description": "Receivable / Payable account will be identified based on the field Master Type", "description": "Receivable / Payable account will be identified based on the field Master Type",
"fieldname": "column_break_16", "fieldname": "column_break_16",
@@ -151,6 +137,20 @@
"label": "Payables", "label": "Payables",
"permlevel": 0 "permlevel": 0
}, },
{
"description": "Payments received during the digest period",
"fieldname": "collections",
"fieldtype": "Check",
"label": "Payments Received",
"permlevel": 0
},
{
"description": "Payments made during the digest period",
"fieldname": "payments",
"fieldtype": "Check",
"label": "Payments Made",
"permlevel": 0
},
{ {
"fieldname": "section_break_20", "fieldname": "section_break_20",
"fieldtype": "Section Break", "fieldtype": "Section Break",
@@ -328,7 +328,7 @@
], ],
"icon": "icon-envelope", "icon": "icon-envelope",
"idx": 1, "idx": 1,
"modified": "2014-05-09 02:16:43.979204", "modified": "2014-05-20 14:02:36.762220",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Setup", "module": "Setup",
"name": "Email Digest", "name": "Email Digest",

View File

@@ -13,8 +13,7 @@ from frappe.utils.email_lib import sendmail
from frappe.core.doctype.user.user import STANDARD_USERS from frappe.core.doctype.user.user import STANDARD_USERS
content_sequence = [ content_sequence = [
# ["Income / Expenses", ["income_year_to_date", "bank_balance", ["Income / Expenses", ["income_year_to_date", "income", "expenses_booked"]],
# "income", "expenses_booked"]],
["Receivables / Payables", ["collections", "payments", ["Receivables / Payables", ["collections", "payments",
"invoiced_amount", "payables"]], "invoiced_amount", "payables"]],
["Bank Balance", ["bank_balance"]], ["Bank Balance", ["bank_balance"]],
@@ -154,9 +153,9 @@ class EmailDigest(Document):
return msg return msg
# def get_income_year_to_date(self): def get_income_year_to_date(self):
# return self.get_income(frappe.db.get_defaults("year_start_date"), return self.get_income(frappe.db.get_defaults("year_start_date"),
# self.meta.get_label("income_year_to_date")) self.meta.get_label("income_year_to_date"))
def get_bank_balance(self): def get_bank_balance(self):
# account is of type "Bank" or "Cash" # account is of type "Bank" or "Cash"
@@ -169,36 +168,34 @@ class EmailDigest(Document):
accounts[gle["account"]][1] += gle["debit"] - gle["credit"] accounts[gle["account"]][1] += gle["debit"] - gle["credit"]
# build html # build html
out = self.get_html("Bank/Cash Balance", "", "") out = self.get_html("Bank/Cash Balance as on " + formatdate(self.to_date), "", "")
for ac in ackeys: for ac in ackeys:
if accounts[ac][1]: if accounts[ac][1]:
out += "\n" + self.get_html(accounts[ac][0], self.currency, out += "\n" + self.get_html(accounts[ac][0], self.currency,
fmt_money(accounts[ac][1]), style="margin-left: 17px") fmt_money(accounts[ac][1]), style="margin-left: 17px")
return sum((accounts[ac][1] for ac in ackeys)), out return sum((accounts[ac][1] for ac in ackeys)), out
# def get_income(self, from_date=None, label=None): def get_income(self, from_date=None, label=None):
# # account is PL Account and Credit type account accounts = [a["name"] for a in self.get_accounts() if a["root_type"]=="Income"]
# accounts = [a["name"] for a in self.get_accounts() if a["root_type"]=="Income"]
# income = 0
# income = 0 for gle in self.get_gl_entries(from_date or self.from_date, self.to_date):
# for gle in self.get_gl_entries(from_date or self.from_date, self.to_date): if gle["account"] in accounts:
# if gle["account"] in accounts: income += gle["credit"] - gle["debit"]
# income += gle["credit"] - gle["debit"]
# return income, self.get_html(label or self.meta.get_label("income"), self.currency,
# return income, self.get_html(label or self.meta.get_label("income"), self.currency, fmt_money(income))
# fmt_money(income))
# def get_expenses_booked(self):
# def get_expenses_booked(self): accounts = [a["name"] for a in self.get_accounts() if a["root_type"]=="Expense"]
# # account is PL Account and Debit type account
# accounts = [a["name"] for a in self.get_accounts() if a["root_type"]=="Expense"] expense = 0
# for gle in self.get_gl_entries(self.from_date, self.to_date):
# expense = 0 if gle["account"] in accounts:
# for gle in self.get_gl_entries(self.from_date, self.to_date): expense += gle["debit"] - gle["credit"]
# if gle["account"] in accounts:
# expense += gle["debit"] - gle["credit"] return expense, self.get_html(self.meta.get_label("expenses_booked"), self.currency,
# fmt_money(expense))
# return expense, self.get_html(self.meta.get_label("expenses_booked"), self.currency,
# fmt_money(expense))
def get_collections(self): def get_collections(self):
return self.get_party_total("Customer", "credit", self.meta.get_label("collections")) return self.get_party_total("Customer", "credit", self.meta.get_label("collections"))
@@ -390,7 +387,7 @@ class EmailDigest(Document):
def get_accounts(self): def get_accounts(self):
if not hasattr(self, "accounts"): if not hasattr(self, "accounts"):
self.accounts = frappe.db.sql("""select name, account_type, account_name, master_type self.accounts = frappe.db.sql("""select name, account_type, account_name, master_type, root_type
from `tabAccount` where company=%s and docstatus < 2 from `tabAccount` where company=%s and docstatus < 2
and group_or_ledger = "Ledger" order by lft""", and group_or_ledger = "Ledger" order by lft""",
(self.company,), as_dict=1) (self.company,), as_dict=1)