Merge pull request #5354 from saurabh6790/cheque_print

Cheque print
This commit is contained in:
Rushabh Mehta 2016-06-02 17:48:58 +05:30
commit eb1e0673e2
13 changed files with 1292 additions and 1 deletions

View File

@ -0,0 +1,74 @@
// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt
frappe.provide("erpnext.cheque_print");
frappe.ui.form.on('Cheque Print Template', {
refresh: function(frm) {
if(!frm.doc.__islocal) {
frm.add_custom_button(frm.doc.has_print_format?__("Update Print Format"):__("Create Print Format"),
function() {
erpnext.cheque_print.view_cheque_print(frm);
}).addClass("btn-primary");
$(frm.fields_dict.cheque_print_preview.wrapper).empty()
var template = '<div style="position: relative; overflow-x: scroll;">\
<div id="cheque_preview" style="width: {{ cheque_width }}cm; \
height: {{ cheque_height }}cm;\
background-image: url({{ scanned_cheque }});\
background-repeat: no-repeat;\
background-size: cover;">\
<span style="top: {{ acc_pay_dist_from_top_edge }}cm;\
left: {{ acc_pay_dist_from_left_edge }}cm;\
border-bottom: solid 1px;border-top:solid 1px;\
position: absolute;"> {{ message_to_show || __("Account Pay Only") }} </span>\
<span style="top: {{ date_dist_from_top_edge }}cm;\
left: {{ date_dist_from_left_edge }}cm;\
position: absolute;"> {{ frappe.datetime.obj_to_user() }} </span>\
<span style="top: {{ acc_no_dist_from_top_edge }}cm;\
left: {{ acc_no_dist_from_left_edge }}cm;\
position: absolute;"> Acc. No. </span>\
<span style="top: {{ payer_name_from_top_edge }}cm;\
left: {{ payer_name_from_left_edge }}cm;\
position: absolute;"> Payer Name </span>\
<span style="top:{{ amt_in_words_from_top_edge }}cm;\
left: {{ amt_in_words_from_left_edge }}cm;\
position: absolute;\
display: block;\
width: {{ amt_in_word_width }}cm;\
line-height: {{ amt_in_words_line_spacing }}cm;\
word-wrap: break-word;"> Amount in Words </span>\
<span style="top: {{ amt_in_figures_from_top_edge }}cm;\
left: {{ amt_in_figures_from_left_edge }}cm;\
position: absolute;"> 1000 </span>\
<span style="top: {{ signatory_from_top_edge }}cm;\
left: {{ signatory_from_left_edge }}cm;\
position: absolute;"> Signatory Name </span>\
</div>\
</div>';
$(frappe.render(template, frm.doc)).appendTo(frm.fields_dict.cheque_print_preview.wrapper)
}
}
});
erpnext.cheque_print.view_cheque_print = function(frm) {
frappe.call({
method: "erpnext.accounts.doctype.cheque_print_template.cheque_print_template.create_or_update_cheque_print_format",
args:{
"template_name": frm.doc.name
},
callback: function(r) {
if (!r.exe && !frm.doc.has_print_format) {
var doc = frappe.model.sync(r.message);
frappe.set_route("Form", r.message.doctype, r.message.name);
}
else {
frappe.msgprint(__("Print settings updated in respective print format"))
}
}
})
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,89 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
import frappe
from frappe.model.document import Document
from frappe import _
class ChequePrintTemplate(Document):
pass
@frappe.whitelist()
def create_or_update_cheque_print_format(template_name):
if not frappe.db.exists("Print Format", template_name):
cheque_print = frappe.new_doc("Print Format")
cheque_print.update({
"doc_type": "Journal Entry",
"standard": "No",
"custom_format": 1,
"print_format_type": "Server",
"name": template_name
})
else:
cheque_print = frappe.get_doc("Print Format", template_name)
doc = frappe.get_doc("Cheque Print Template", template_name)
cheque_print.html = """
<div style="position: relative; top:%(starting_position_from_top_edge)scm">
<div style="width:%(cheque_width)scm;height:%(cheque_height)scm;">
<span style="top: {{ %(acc_pay_dist_from_top_edge)s }}cm; left: {{ %(acc_pay_dist_from_left_edge)s }}cm;
border-bottom: solid 1px;border-top:solid 1px; position: absolute;">
%(message_to_show)s
</span>
<span style="top:%(date_dist_from_top_edge)s cm; left:%(date_dist_from_left_edge)scm;
position: absolute;">
{{doc.cheque_date or '' }}
</span>
<span style="top:%(acc_no_dist_from_top_edge)scm;left:%(acc_no_dist_from_left_edge)scm;
position: absolute;">
{{ doc.account_no }}
</span>
<span style="top:%(payer_name_from_top_edge)scm;left: %(payer_name_from_left_edge)scm;
position: absolute;">
{{doc.pay_to_recd_from}}
</span>
<span style="top:%(amt_in_words_from_top_edge)scm; left:%(amt_in_words_from_left_edge)scm;
position: absolute; display: block; width: %(amt_in_word_width)scm;
line-height:%(amt_in_words_line_spacing)scm; word-wrap: break-word;">
{{doc.total_amount_in_words}}
</span>
<span style="top:%(amt_in_figures_from_top_edge)scm;left: %(amt_in_figures_from_left_edge)scm;
position: absolute;">
{{doc.get_formatted("total_amount")}}
</span>
<span style="top:%(signatory_from_top_edge)scm;left: %(signatory_from_left_edge)scm;
position: absolute;">
{{doc.company}}
</span>
</div>
</div>"""%{
"starting_position_from_top_edge": doc.starting_position_from_top_edge \
if doc.cheque_size == "A4" else 0.0,
"cheque_width": doc.cheque_width, "cheque_height": doc.cheque_height,
"acc_pay_dist_from_top_edge": doc.acc_pay_dist_from_top_edge,
"acc_pay_dist_from_left_edge": doc.acc_pay_dist_from_left_edge,
"message_to_show": doc.message_to_show if doc.message_to_show else _("Account Pay Only"),
"date_dist_from_top_edge": doc.date_dist_from_top_edge,
"date_dist_from_left_edge": doc.date_dist_from_left_edge,
"acc_no_dist_from_top_edge": doc.acc_no_dist_from_top_edge,
"acc_no_dist_from_left_edge": doc.acc_no_dist_from_left_edge,
"payer_name_from_top_edge": doc.payer_name_from_top_edge,
"payer_name_from_left_edge": doc.payer_name_from_left_edge,
"amt_in_words_from_top_edge": doc.amt_in_words_from_top_edge,
"amt_in_words_from_left_edge": doc.amt_in_words_from_left_edge,
"amt_in_word_width": doc.amt_in_word_width,
"amt_in_words_line_spacing": doc.amt_in_words_line_spacing,
"amt_in_figures_from_top_edge": doc.amt_in_figures_from_top_edge,
"amt_in_figures_from_left_edge": doc.amt_in_figures_from_left_edge,
"signatory_from_top_edge": doc.signatory_from_top_edge,
"signatory_from_left_edge": doc.signatory_from_left_edge
}
cheque_print.save(ignore_permissions=True)
frappe.db.set_value("Cheque Print Template", template_name, "has_print_format", 1)
return cheque_print

View File

@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
# See license.txt
from __future__ import unicode_literals
import frappe
import unittest
# test_records = frappe.get_test_records('Cheque Print Template')
class TestChequePrintTemplate(unittest.TestCase):
pass

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 KiB

View File

@ -0,0 +1,36 @@
#Cheque Print
** Whats is Cheque Print? **
You can choose to print Cheques at the time of making payments to Creditors/ parties during Voucher Entry i.e., directly from the Payment Vouchers and Inter-bank payment or transfers through Contra Vouchers.
###Setup Cheque Print
To enable cheque printing,
1. Create cheque settings under `Accounts > Cheque Print Template`.
![Cheque Print Template]({{docs_base_url}}/assets/img/articles/cueque_print_template.png)
You can see a preview of cheque print by attaching scanned copy of cheque to avoid miss printing.
![Cheque scanned copy]({{docs_base_url}}/assets/img/articles/attach_scanned_copy.png)
![Cheque Print Preview]({{docs_base_url}}/assets/img/articles/cueque_print_preview.png)
2. After saving cheque print settings, you can Create / Update print format for settings.
To create print format, click on `Create Print Format`.
![Create Print Format]({{docs_base_url}}/assets/img/articles/create_print_format.png)
If you have already created a Print Format, you can update it by clicking on `Update Print Format`.
3. You will see newly created / updated print format under Journal Entry.
![Print from Journal Entry]({{docs_base_url}}/assets/img/articles/journal_entry_cheque_print.png)
###Cheque Print
![Print from Journal Entry]({{docs_base_url}}/assets/img/articles/cheque_print.gif)

View File

@ -13,3 +13,4 @@ post-dated-cheque-entry
update-stock-option-in-sales-invoice
what-is-the-differences-of-total-and-valuation-in-tax-and-charges
withdrawing-salary-from-owners-equity-account
cheque-print