Fetching employee information into report print format

Hello. Is there any way to include document information (let’s say employee name), that is unrelated to the report, into the print format of any report? My use case here is that I am planning to send one of the reports to our customers and will require the name of the person using the system but I can’t seem to link to the report format the information from other doctypes. My guess is that it may be because it is a report and not a form in the database.

I’ve already tried frappe.db.get_value ( _____ , ______ , ______) which yielded [object Object]. I’ve also tried using set ____ = frappe.get_doc( " ____ " , _____ ) but it also doesn’t work. These are some of the function I use for the normal form type print formats.

I hope I can get some advice on how to get the info. I’m looking into this on my own but none of what I am searching seem to work. Thanks in advance.

Try it {{ frappe.get_fullname(doc.owner) }}

Hi. I tried it and it doesn’t work.

Could you share code here?

Hi. The code is actually the standard “accounts receivable report” html file that came with the erpnext system. I am just adding the name of the creator into that report. Do you still need me to send the code? (/home/frappe/frappe-bench/apps/erpnext/erpnext/accounts/report/accounts receivable/)

I’ve experimented a few times and I found out that frappe.user works in the report html. The result is the email of the user though so it isn’t the outcome that I wanted but at least its a step in the right direction.

Need code

<style>
.print-format {
padding: 4mm;
font-size: 8.0pt !important;
}
.print-format td {
vertical-align:middle !important;
}
</style>
<h2 class="text-center" style="margin-top:0">{%= __(report.report_name) %}</h2>
<h4 class="text-center">
{% if (filters.customer_name) { %}
	{%= filters.customer_name %}
{% } else { %}
	{%= filters.customer || filters.supplier %}
{% } %}
</h4>
<h6 class="text-center">
	{% if (filters.tax_id) { %}
	{%= __("Tax Id: ")%}	{%= filters.tax_id %}
	{% } %}
</h6>
<h5 class="text-center">
{%= __(filters.ageing_based_on) %}
{%= __("Until") %}
{%= frappe.datetime.str_to_user(filters.report_date) %}
</h5>

<div class="clearfix">
<div class="pull-left">
{% if(filters.payment_terms) { %}
	<strong>{%= __("Payment Terms") %}:</strong> {%= filters.payment_terms %}
{% } %}
</div>
<div class="pull-right">
{% if(filters.credit_limit) { %}
	<strong>{%= __("Credit Limit") %}:</strong> {%= format_currency(filters.credit_limit) %}
{% } %}
</div>
</div>

{% if(filters.show_pdc_in_print) { %}
{% var balance_row = data.slice(-1).pop();
	   var range1 = report.columns[11].label;
	   var range2 = report.columns[12].label;
	   var range3 = report.columns[13].label;
	   var range4 = report.columns[14].label;
%}
{% if(balance_row) { %}
<table class="table table-bordered table-condensed">
	<caption class="text-right">(Amount in {%= data[0][__("currency")] || "" %})</caption>
        <colgroup>
            <col style="width: 30mm;">
            <col style="width: 18mm;">
            <col style="width: 18mm;">
            <col style="width: 18mm;">
            <col style="width: 18mm;">
            <col style="width: 18mm;">
            <col style="width: 18mm;">
        </colgroup>

	<thead>
		<tr>
			<th>{%= __(" ") %}</th>
			<th>{%= __(range1) %}</th>
			<th>{%= __(range2) %}</th>
			<th>{%= __(range3) %}</th>
			<th>{%= __(range4) %}</th>
			<th>{%= __("Total") %}</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>{%= __("Total Outstanding") %}</td>
			<td class="text-right">{%= format_currency(balance_row[range1]) %}</td>
			<td class="text-right">{%= format_currency(balance_row[range2]) %}</td>
			<td class="text-right">{%= format_currency(balance_row[range3]) %}</td>
			<td class="text-right">{%= format_currency(balance_row[range4]) %}</td>
			<td class="text-right">
				{%= format_currency(flt(balance_row[("outstanding_amount")]), data[data.length-1]["currency"]) %}
				</td>
		</tr>
			<td>{%= __("PDC/LC") %}</td>
			<td></td>
			<td></td>
			<td></td>
			<td></td>
			<td class="text-right">
				{%= format_currency(flt(balance_row[("pdc/lc_amount")]), data[data.length-1]["currency"]) %}
			</td>
		<tr class="cvs-footer">
			<th class="text-left">{%= __("Cheques Required") %}</th>
			<th></th>
			<th></th>
			<th></th>
			<th></th>
			<th class="text-right">
				{%= format_currency(flt(balance_row[("outstanding_amount")]-balance_row[("pdc/lc_amount")]), data[data.length-1]["currency"]) %}</th>
		</tr>
	</tbody>

</table>
{% } %}
{% } %}
<table class="table table-bordered">
<thead>
	<tr>
		{% if(report.report_name === "Accounts Receivable" || report.report_name === "Accounts Payable") { %}
			<th style="width: 10%">{%= __("Date") %}</th>
			<th style="width: 4%">{%= __("Age (Days)") %}</th>

			{% if(report.report_name === "Accounts Receivable" && filters.show_sales_person_in_print) { %}
				<th style="width: 16%">{%= __("Reference") %}</th>
				<th style="width: 10%">{%= __("Sales Person") %}</th>
			{% } else { %}
				<th style="width: 26%">{%= __("Reference") %}</th>
			{% } %}
			{% if(!filters.show_pdc_in_print) { %}
				<th style="width: 20%">{%= (filters.customer || filters.supplier) ? __("Remarks"): __("Party") %}</th>
			{% } %}
			<th style="width: 10%; text-align: right">{%= __("Invoiced Amount") %}</th>
			{% if(!filters.show_pdc_in_print) { %}
				<th style="width: 10%; text-align: right">{%= __("Paid Amount") %}</th>
				<th style="width: 10%; text-align: right">{%= report.report_name === "Accounts Receivable" ? __('Credit Note') : __('Debit Note') %}</th>
			{% } %}
			<th style="width: 10%; text-align: right">{%= __("Outstanding Amount") %}</th>
			{% if(filters.show_pdc_in_print) { %}
				{% if(report.report_name === "Accounts Receivable") { %}
					<th style="width: 10%">{%= __("Customer LPO No.") %}</th>
				{% } %}
				<th style="width: 10%">{%= __("PDC/LC Ref") %}</th>
				<th style="width: 10%">{%= __("PDC/LC Amount") %}</th>
				<th style="width: 10%">{%= __("Remaining Balance") %}</th>
			{% } %}
		{% } else { %}
			<th style="width: 40%">{%= (filters.customer || filters.supplier) ? __("Remarks"): __("Party") %}</th>
			<th style="width: 15%">{%= __("Total Invoiced Amount") %}</th>
			<th style="width: 15%">{%= __("Total Paid Amount") %}</th>
			<th style="width: 15%">{%= report.report_name === "Accounts Receivable Summary" ? __('Credit Note Amount') : __('Debit Note Amount') %}</th>
			<th style="width: 15%">{%= __("Total Outstanding Amount") %}</th>
		{% } %}
	</tr>
</thead>
<tbody>
	{% for(var i=0, l=data.length; i<l; i++) { %}
		<tr>
		{% if(report.report_name === "Accounts Receivable" || report.report_name === "Accounts Payable") { %}
			{% if(data[i][__("Customer")] || data[i][__("Supplier")]) { %}
				<td>{%= frappe.datetime.str_to_user(data[i]["posting_date"]) %}</td>
				<td style="text-align: right">{%= data[i][__("Age (Days)")] %}</td>
				<td>
					{% if(!filters.show_pdc_in_print) { %}
						{%= data[i]["voucher_type"] %}
						<br>
					{% } %}
					{%= data[i]["voucher_no"] %}
				</td>

				{% if(report.report_name === "Accounts Receivable" && filters.show_sales_person_in_print) { %}
				<td>{%= data[i]["sales_person"] %}</td>
				{% } %}

				{% if(!filters.show_pdc_in_print) { %}
				<td>
					{% if(!(filters.customer || filters.supplier)) { %}
						{%= data[i][__("Customer")] || data[i][__("Supplier")] %}
						{% if(data[i][__("Customer Name")] && data[i][__("Customer Name")] != data[i][__("Customer")]) { %}
							<br> {%= data[i][__("Customer Name")] %}
						{% } else if(data[i][__("Supplier Name")] != data[i][__("Supplier")]) { %}
							<br> {%= data[i][__("Supplier Name")] %}
						{% } %}
					{% } %}
					<div>
					{% if data[i][__("Remarks")] %}
						{%= __("Remarks") %}:
						{%= data[i][__("Remarks")] %}
					{% } %}
					</div>
				</td>
				{% } %}

				<td style="text-align: right">
					{%= format_currency(data[i]["invoiced_amount"], data[i]["currency"]) %}</td>

				{% if(!filters.show_pdc_in_print) { %}
					<td style="text-align: right">
						{%= format_currency(data[i]["paid_amount"], data[i]["currency"]) %}</td>
					<td style="text-align: right">
						{%= report.report_name === "Accounts Receivable" ? format_currency(data[i]["credit_note"], data[i]["currency"]) : format_currency(data[i]["debit_note"], data[i]["currency"])  %}</td>
				{% } %}
				<td style="text-align: right">
					{%= format_currency(data[i]["outstanding_amount"], data[i]["currency"]) %}</td>

				{% if(filters.show_pdc_in_print) { %}
					{% if(report.report_name === "Accounts Receivable") { %}
						<td style="text-align: right">
							{%= data[i]["po_no"] %}</td>
					{% } %}
					<td style="text-align: right">{%= data[i][("pdc/lc_ref")] %}</td>
					<td style="text-align: right">{%= format_currency(data[i][("pdc/lc_amount")], data[i]["currency"]) %}</td>
					<td style="text-align: right">{%= format_currency(data[i][("remaining_balance")], data[i]["currency"]) %}</td>
				{% } %}
			{% } else { %}
				<td></td>
				{% if(!filters.show_pdc_in_print) { %}
				<td></td>
				{% } %}
				{% if(report.report_name === "Accounts Receivable" && filters.show_sales_person_in_print) { %}
				<td></td>
				{% } %}
				<td></td>
				<td style="text-align: right"><b>{%= __("Total") %}</b></td>
				<td style="text-align: right">
					{%= format_currency(data[i]["invoiced_amount"], data[i]["currency"] ) %}</td>

				{% if(!filters.show_pdc_in_print) { %}
					<td style="text-align: right">
						{%= format_currency(data[i]["paid_amount"], data[i]["currency"]) %}</td>
					<td style="text-align: right">{%= report.report_name === "Accounts Receivable" ? format_currency(data[i]["credit_note"], data[i]["currency"])  : format_currency(data[i]["debit_note"], data[i]["currency"])  %} </td>
				{% } %}
				<td style="text-align: right">
					{%= format_currency(data[i]["outstanding_amount"], data[i]["currency"]) %}</td>

				{% if(filters.show_pdc_in_print) { %}
					{% if(report.report_name === "Accounts Receivable") { %}
						<td style="text-align: right">
							{%= data[i][__("Customer LPO")] %}</td>
					{% } %}
					<td style="text-align: right">{%= data[i][("pdc/lc_ref")] %}</td>
					<td style="text-align: right">{%= format_currency(data[i][("pdc/lc_amount")], data[i]["currency"]) %}</td>
					<td style="text-align: right">{%= format_currency(data[i][("remaining_balance")], data[i]["currency"]) %}</td>
				{% } %}
			{% } %}
		{% } else { %}
			{% if(data[i][__("Customer")] || data[i][__("Supplier")]|| "&nbsp;") { %}
				{% if((data[i][__("Customer")] || data[i][__("Supplier")]) != __("'Total'")) { %}
					<td>
						{% if(!(filters.customer || filters.supplier)) { %}
							{%= data[i][__("Customer")] || data[i][__("Supplier")] %}
							{% if(data[i][__("Customer Name")] && data[i][__("Customer Name")] != data[i][__("Customer")]) { %}
								<br> {%= data[i][__("Customer Name")] %}
							{% } else if(data[i][__("Supplier Name")] != data[i][__("Supplier")]) { %}
								<br> {%= data[i][__("Supplier Name")] %}
							{% } %}
						{% } %}
						<br>{%= __("Remarks") %}:
						{%= data[i][__("Remarks")] %}
					</td>
				{% } else { %}
					<td><b>{%= __("Total") %}</b></td>
				{% } %}
				<td style="text-align: right">{%= format_currency(data[i][("total_invoiced_amt")], data[i]["currency"]) %}</td>
				<td style="text-align: right">{%= format_currency(data[i][("total_paid_amt")], data[i]["currency"]) %}</td>
				<td style="text-align: right">{%= report.report_name === "Accounts Receivable Summary" ? format_currency(data[i][__("credit_note_amt")], data[i]["currency"]) : format_currency(data[i][__("debit_note_amt")], data[i]["currency"]) %}</td>
				<td style="text-align: right">{%= format_currency(data[i][("total_outstanding_amt")], data[i]["currency"]) %}</td>
			{% } %}
		{% } %}
		</tr>
	{% } %}
</tbody>
</table>
<p> Please settle all overdue accounts within one (1) week from receipt of this statement. </p>
<br>
<p> Certified true and correct, </p>
{{ frappe.db.get_value ("Employee", frappe.user, "employee_name") }}
<p class="text-right text-muted">{{ __("Printed On ") }}{%=frappe.datetime.str_to_user(frappe.datetime.get_datetime_as_string()) %}</p>

Sorry for the late send and thanks for the help @Hor_Kimhab.

Hello. I am not sure myself if the normal custom print format will work here but the code that I’ve sent is based on the standard report print format made by erpnext. All I’ve been doing so far worked in the custom print format so I am not sure if the reports are covered by that.

The {% if (filters.tax_id) { %} and other filters I believe are the filters part of the Accounts Receivable report in the accounts module. The names with “report” are for the report details found inside Accounts Receivable. What I am looking for is how we’re going to add in info like employee name, or employee first name, last name, birthday, etc. from the Employee Doctype into this report.

The parts I’ve added are the 2 paragraphs at the end with the “Please settle …” and “Certified …” plus the {{ frappe.db.get_value }} that doesn’t seem to work.

The code you mentioned above is JavaScript, not python Jinja.
frappe.db.get_value return a promise, not value

Try this:

frappe.user_info("someone@example.com").fullname
or
frappe.user_infor(frappe.user.name).fullname

1 Like

Hi, I tried it and it works. Thanks for the help.