Topic: How to design invoice form
Hello,
I want to design my own invoice format, since the standard invoice form is not suitable for our bussines, what should I do.
Thanks a lot.
Ken Surya
It's much more fun, when you can discuss your problems with others...
You are not logged in. Please login or register.
FrontAccounting forum → Reporting → How to design invoice form
Hello,
I want to design my own invoice format, since the standard invoice form is not suitable for our bussines, what should I do.
Thanks a lot.
Ken Surya
Look into the file /reporting/header2.inc. This is the file used for the forms. You can change it to suit your needs. If you think you are creating a nice form, you are welcome to share it with us.
/Joe
Hello Joe,
Thanks for your info.
It was difficult for me since I'm not a technician. I just want to add some other information in that standard invoice i.e. giving a name of our President Director name in the bottom of the form, could you help me in easier way?.
Thanks in advance.
Ken Surya
The easiest way of doing this, is to use the Legal Text on invoices. This is on the Company Setup, Setup tab. If you already have a legal text, then just extend the text.
/Joe
hi joe
i can't find the legal text under setup tab, company setup. i am using 2.3
Sorry, spacewalker, I should have answered 'System and General GL Setup' under the same tab.
/Joe
thanks joe. found it
i need to draw a line whereby i can sign off the invoice. is it possible to do that?
Yes. Instead of physically drawing a line, you can just add an underscore line in the 'Legal Text' in Systems and GL Setup, like:
'Previous text .........
_______________________'
If there is not enoght room for the line, you can decrease the bottom margin.
/Joe
hi joe
I have added the below into php107
$rep->NewLine(12);
$rep->TextCol(4, 7, $doc_InvoiceSignature, -2);
$rep->TextCol(4, 5, $doc_DatedS, -2);
is there any other way to specify the column and row where the wordings should appear.
also, how to i insert the line above the invoice signature and date.
I also notice that the customer address is not reflected under sales order and quotation. how do i activate it.
The NewLine produces 12 cr/nl.
The TextCol uses the column definition for 4 and 7/5. If you want to print exactly you can use other routines in /reporting/includes/pdf_report.inc..
Normally we don't have resources to help with design of reports, so you are on your own here. Maybe some from the community can help you.
/Joe
The NewLine produces 12 cr/nl.
The TextCol uses the column definition for 4 and 7/5. If you want to print exactly you can use other routines in /reporting/includes/pdf_report.inc..Normally we don't have resources to help with design of reports, so you are on your own here. Maybe some from the community can help you.
/Joe
thank you joe. i am a noob in programming, so i am trying to learn and understand and hopefully contribute back to the community
Hi Joe,
It is a government requirement to place the GST Number of the Customer in the Invoice format.
Please help how do I insert the information right under the "Charge To" details.
GST number is displayed above Charge To details in horizontal table under 'Your VAT no.' title.
Janusz
Hello Guys,
I am a intermediate php programmer, i have created a INVOICE form design which suitable for indian users,
My form contains S.NO , Item Des , Qty , Rate, Gross , Dis% , DisAmt , Vat% , VatAmt, Total,
I designed this form for my business.If u are interested in this design then go and edit reporting/rep107.php.
Note : Better take a backup of this file before altering it.
Here is the complete coding for my design
<?php
/**********************************************************************
Copyright (C) FrontAccounting, LLC.
Released under the terms of the GNU General Public License, GPL,
as published by the Free Software Foundation, either version 3
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
***********************************************************************/
$page_security = $_POST['PARAM_0'] == $_POST['PARAM_1'] ?
'SA_SALESTRANSVIEW' : 'SA_SALESBULKREP';
// ----------------------------------------------------------------
// $ Revision: 2.0 $
// Creator: Joe Hunt
// date_: 2005-05-19
// Title: Print Invoices
// ----------------------------------------------------------------
$path_to_root="..";
include_once($path_to_root . "/includes/session.inc");
include_once($path_to_root . "/includes/date_functions.inc");
include_once($path_to_root . "/includes/data_checks.inc");
include_once($path_to_root . "/sales/includes/sales_db.inc");
//----------------------------------------------------------------------------------------------------
print_invoices();
//----------------------------------------------------------------------------------------------------
function print_invoices()
{
global $path_to_root, $alternative_tax_include_on_docs, $suppress_tax_rates, $no_zero_lines_amount;
include_once($path_to_root . "/reporting/includes/pdf_report.inc");
$from = $_POST['PARAM_0'];
$to = $_POST['PARAM_1'];
$currency = $_POST['PARAM_2'];
$email = $_POST['PARAM_3'];
$pay_service = $_POST['PARAM_4'];
$comments = $_POST['PARAM_5'];
$customer = $_POST['PARAM_6'];
$orientation = $_POST['PARAM_7'];
if (!$from || !$to) return;
$orientation = ($orientation ? 'L' : 'P');
$dec = user_price_dec();
$fno = explode("-", $from);
$tno = explode("-", $to);
$from = min($fno[0], $tno[0]);
$to = max($fno[0], $tno[0]);
//Modify this valus to increase or decrease column size
$cols = array(10, 40, 170, 200, 250,300, 340, 380, 420, 450, 0);
// $headers in doctext.inc
$aligns = array('left', 'left', 'left', 'left', 'left', 'left', 'left', 'left', 'left', 'right');
$params = array('comments' => $comments);
$cur = get_company_Pref('curr_default');
if ($email == 0)
$rep = new FrontReport(_('INVOICE'), "InvoiceBulk", user_pagesize(), 9, $orientation);
if ($orientation == 'L')
recalculate_cols($cols);
for ($i = $from; $i <= $to; $i++)
{
if (!exists_customer_trans(ST_SALESINVOICE, $i))
continue;
$sign = 1;
$myrow = get_customer_trans($i, ST_SALESINVOICE);
if($customer && $myrow['debtor_no'] != $customer) {
continue;
}
$baccount = get_default_bank_account($myrow['curr_code']);
$params['bankaccount'] = $baccount['id'];
$branch = get_branch($myrow["branch_code"]);
$sales_order = get_sales_order_header($myrow["order_"], ST_SALESORDER);
if ($email == 1)
{
$rep = new FrontReport("", "", user_pagesize(), 9, $orientation);
$rep->title = _('INVOICE');
$rep->filename = "Invoice" . $myrow['reference'] . ".pdf";
}
$rep->SetHeaderType('Header2');
$rep->currency = $cur;
$rep->Font();
$rep->Info($params, $cols, null, $aligns);
$contacts = get_branch_contacts($branch['branch_code'], 'invoice', $branch['debtor_no'], true);
$baccount['payment_service'] = $pay_service;
$rep->SetCommonData($myrow, $branch, $sales_order, $baccount, ST_SALESINVOICE, $contacts);
$rep->NewPage();
$result = get_customer_trans_details(ST_SALESINVOICE, $i);
$SubTotal = 0;
// This variable $n used for SNO calculation.
$no=1;
while ($myrow2=db_fetch($result))
{
if ($myrow2["quantity"] == 0)
continue;
$Net = round2($sign * ((1 - $myrow2["discount_percent"]) * $myrow2["unit_price"] * $myrow2["quantity"]),
user_price_dec());
$SubTotal += $Net;
$DispTax = number_format2($myrow2["unit_tax"] * 100 / $myrow2["unit_price"],user_percent_dec()) . "%";
$Dispgross = $myrow2["quantity"] * $myrow2["unit_price"];
$Dispda = $myrow2["discount_percent"] * $myrow2["unit_price"] * $myrow2["quantity"];
$DisplayPrice = number_format2($myrow2["unit_price"],$dec);
$DisplayQty = number_format2($sign*$myrow2["quantity"],get_qty_dec($myrow2['stock_id']));
$DisplayNet = number_format2($Net,$dec);
// str_replace(",", "", $_POST['price']); for string removal
$net1 = str_replace(",", "", $DisplayNet);
$Dispvm = number_format2($net1 * $DispTax / 100 ,$dec); // To display vat Amount
if ($myrow2["discount_percent"]==0)
$DisplayDiscount ="";
else
$DisplayDiscount = number_format2($myrow2["discount_percent"]*100,user_percent_dec()) . "%";
//$rep->TextCol(0, 1, $myrow2['stock_id'], -2);
// $rep->TextCol(0, 1, $myrow2['StockDescription'], -2);
// New Altered coding
$rep->TextCol(0, 1, $no, -2);
$oldrow = $rep->row;
$rep->TextColLines(1, 2, $myrow2['StockDescription'], -2);
$newrow = $rep->row;
$rep->row = $oldrow;
if ($Net != 0.0 || !is_service($myrow2['mb_flag']) || !isset($no_zero_lines_amount) || $no_zero_lines_amount == 0)
{
$rep->TextCol(2, 3, $DisplayQty, -2);
$rep->TextCol(3, 4, $DisplayPrice, -2);
$rep->TextCol(4, 5, $Dispgross, -2);
$rep->TextCol(5, 6, $DisplayDiscount, -2);
$rep->TextCol(6, 7, $Dispda, -2);
$rep->TextCol(7, 8, $DispTax, -2);
$rep->TextCol(8, 9, $Dispvm, -2);
$rep->TextCol(9, 10,$DisplayNet, -2);
$no++;
}
$rep->row = $newrow;
//$rep->NewLine(1);
if ($rep->row < $rep->bottomMargin + (15 * $rep->lineHeight))
$rep->NewPage();
}
$memo = get_comments_string(ST_SALESINVOICE, $i);
if ($memo != "")
{
$rep->NewLine();
$rep->TextColLines(1, 5, $memo, -2);
}
$DisplaySubTot = number_format2($SubTotal,$dec);
$DisplayFreight = number_format2($sign*$myrow["ov_freight"],$dec);
$rep->row = $rep->bottomMargin + (15 * $rep->lineHeight);
$doctype = ST_SALESINVOICE;
$rep->TextCol(6, 9, _("Sub-total"), -2);
$rep->TextCol(9, 10, $DisplaySubTot, -2);
$rep->NewLine();
$rep->TextCol(6, 9, _("Shipping"), -2);
$rep->TextCol(9, 10, $DisplayFreight, -2);
$rep->NewLine();
$tax_items = get_trans_tax_details(ST_SALESINVOICE, $i);
$first = true;
while ($tax_item = db_fetch($tax_items))
{
if ($tax_item['amount'] == 0)
continue;
$DisplayTax = number_format2($sign*$tax_item['amount'], $dec);
if (isset($suppress_tax_rates) && $suppress_tax_rates == 1)
$tax_type_name = $tax_item['tax_type_name'];
else
$tax_type_name = $tax_item['tax_type_name']." (".$tax_item['rate']."%) ";
if ($tax_item['included_in_price'])
{
if (isset($alternative_tax_include_on_docs) && $alternative_tax_include_on_docs == 1)
{
if ($first)
{
$rep->TextCol(6, 9, _("Total Tax Excluded"), -2);
$rep->TextCol(9, 10, number_format2($sign*$tax_item['net_amount'], $dec), -2);
$rep->NewLine();
}
$rep->TextCol(6, 9, $tax_type_name, -2);
$rep->TextCol(9, 10, $DisplayTax, -2);
$first = false;
}
else
$rep->TextCol(3, 7, _("Included") . " " . $tax_type_name . _("Amount") . ": " . $DisplayTax, -2);
}
else
{
$rep->TextCol(6, 9, $tax_type_name, -2);
$rep->TextCol(9, 10, $DisplayTax, -2);
}
$rep->NewLine();
}
$rep->NewLine();
$DisplayTotal = number_format2($sign*($myrow["ov_freight"] + $myrow["ov_gst"] +
$myrow["ov_amount"]+$myrow["ov_freight_tax"]),$dec);
$rep->Font('bold');
$rep->TextCol(6, 9, _("TOTAL INVOICE"), - 2);
$rep->TextCol(9, 10, $DisplayTotal, -2);
$words = price_in_words($myrow['Total'], ST_SALESINVOICE);
if ($words != "")
{
$rep->NewLine(1);
$rep->TextCol(1, 7, $myrow['curr_code'] . ": " . $words, - 2);
}
$rep->Font();
if ($email == 1)
{
$rep->End($email);
}
}
if ($email == 0)
$rep->End();
}
?>
I have tried to increase the top margin in file header2inc: $this->row = $this->pageHeight - $this->topMargin;
to this value: $this->row = $this->pageHeight - $this->topMargin + 18;
Nothing changes.
How can I increase top margin?
Jan-Eric
The values decrease from top to bottom. So I guess you should use, - 18, instead of + 18.
Joe
No doesn't work, I haved tried with -45 and nothing changes
Jan-Eric
Well, I am not at the source computer right now. Please have a look into the code, that the row is not set later.
Joe
It is the first row after the comments.
$this->row = $this->pageHeight - $this->topMargin - 45;
$upper = $this->row - 2 * $this->lineHeight;
$lower = $this->bottomMargin + 8 * $this->lineHeight;
$iline1 = $upper - 7.5 * $this->lineHeight;
etc.
Jan-Eric
I found the solution :-) Even though I started Kate with kdesu variable, the changes was not saved. I used Nano and I could do the adjustment. $this->row = $this->pageHeight - $this->topMargin - 3 * $this->lineHeight;
Hello Guys,
I am a intermediate php programmer, i have created a INVOICE form design which suitable for indian users,My form contains S.NO , Item Des , Qty , Rate, Gross , Dis% , DisAmt , Vat% , VatAmt, Total,
I designed this form for my business.If u are interested in this design then go and edit reporting/rep107.php.
Note : Better take a backup of this file before altering it.
Here is the complete coding for my design
<?php
/**********************************************************************
Copyright (C) FrontAccounting, LLC.
Released under the terms of the GNU General Public License, GPL,
as published by the Free Software Foundation, either version 3
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
***********************************************************************/
$page_security = $_POST['PARAM_0'] == $_POST['PARAM_1'] ?
'SA_SALESTRANSVIEW' : 'SA_SALESBULKREP';
// ----------------------------------------------------------------?>
HI, hope you doing great joe,
What if I want to line in my invoice? I want to print paper from printing press, and my frontaccounting only write text there, becuase I am using dot matrix printer and that take long time for printing lines, especially that vertical lines, So please help me that how can I remove all the lines from invoice, that will be better if you can paste that complete code here of that file, I am not expert , but I can go and copy paste things in /reporting/includes/ directory. Thanks in advance, and will wait for your reply. Thanks again bro.
Most, if not all lines are in the reporting/includes/header2.inc file. Try commenting out sets of lines at a time and see what disappears in the resulting invoice.... Also see what is necessary to manage the position ($x, $y co-ordinates) of the subsequent printing....
Solved, but how can I forget to say T H A N K YOU / Salute bro.
Most, if not all lines are in the reporting/includes/header2.inc file. Try commenting out sets of lines at a time and see what disappears in the resulting invoice.... Also see what is necessary to manage the position ($x, $y co-ordinates) of the subsequent printing....
You're most welcome and in your turn you too can help other newbies getting their feet wet in FA.
Since you have managed to make and test such a version of the header2.inc, you can submit it in 2 parts to the project - one having just the lines to make pre-printed stationery, and another for use with such pre-printed stationery.
FrontAccounting forum → Reporting → How to design invoice form
Powered by PunBB, supported by Informer Technologies, Inc.
Currently installed 4 official extensions. Copyright © 2003–2009 PunBB.