51

(44 replies, posted in Reporting)

Thanks for the quick reply elax.
Would it be possible to get a copy of the patch?

52

(44 replies, posted in Reporting)

I've been trying to input 0-VAT purchases via supplier invoices using quick entries for non inventory items -ie utility payments etc. These do not show up on the tax report. Is this a bug? Or have I not set the tax up properly? - I have no problems with tax specifically associated with items. 

I have found by using the statement below that the net amounts can be shown in the report. Is there a better way of achieving this?

UPDATE 0_supp_trans as strans, 0_trans_tax_details as tax
SET tax.net_amount = strans.ov_amount
WHERE strans.type = tax.trans_type AND strans.trans_no = tax.trans_no AND strans.tran_date = tax.tran_date AND tax.tax_type_id = '4' AND
strans.ov_amount<>'0' AND
tax.net_amount='0'


Are the current 0-VAT issues likely to be improved in 2.4?

Many thanks for the great work

53

(44 replies, posted in Reporting)

Amended SQL query to pull all associated 0-VAT transactions

Select t2.*
   From 0_gl_trans as t2
   Join 0_gl_trans on ( t2.type = 0_gl_trans.type and t2.type_no = 0_gl_trans.type_no )
  Where 0_gl_trans.account = '2206'
   // And t2.account ='5000'         -- optional for specific purchase accounts

I've modified rep107.php to include a VAT rate column for UK sales invoice.
By changing the text in reporting/includes/doctext.inc to this at around line 30.

    // default item column headers
    $this->headers = array(_("Item Code"), _("Item Description"), _("Quantity"),
        _("Unit"), _("Price"), _("Disc %"), _("VAT %"), _("Total"));


and then changing the reporting/rep107.php to the file below the tax rate for each individual item is included.




<?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]);

    $cols = array(4, 60, 225, 300, 325, 375, 425, 465, 515);

    // $headers in doctext.inc
    $aligns = array('left',    'left',    'right', 'left', 'right', 'right', 'right', '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;
            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;
                $DisplayPrice = number_format2($myrow2["unit_price"],$dec);
                $DisplayQty = number_format2($sign*$myrow2["quantity"],get_qty_dec($myrow2['stock_id']));
            $DisplayTaxRate = number_format2($myrow2["unit_tax"] * 100 / $myrow2["unit_price"],user_percent_dec()) . "%";
                $DisplayNet = number_format2($Net,$dec);
                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);
                $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,    $myrow2['units'], -2);
                    $rep->TextCol(4, 5,    $DisplayPrice, -2);
                    $rep->TextCol(5, 6,    $DisplayDiscount, -2);
                    $rep->TextCol(6, 7,    $DisplayTaxRate, -2);
                    $rep->TextCol(7, 8,    $DisplayNet, -2);
                }   
                $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(3, 6, _("Sub-total"), -2);
            $rep->TextCol(6, 7,    $DisplaySubTot, -2);
            $rep->NewLine();
            $rep->TextCol(3, 6, _("Shipping"), -2);
            $rep->TextCol(6, 7,    $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(3, 6, _("Total Tax Excluded"), -2);
                            $rep->TextCol(6, 7,    number_format2($sign*$tax_item['net_amount'], $dec), -2);
                            $rep->NewLine();
                        }
                        $rep->TextCol(3, 6, $tax_type_name, -2);
                        $rep->TextCol(6, 7,    $DisplayTax, -2);
                        $first = false;
                    }
                    else
                        $rep->TextCol(3, 7, _("Included") . " " . $tax_type_name . _("Amount") . ": " . $DisplayTax, -2);
                }
                else
                {
                    $rep->TextCol(3, 6, $tax_type_name, -2);
                    $rep->TextCol(6, 7,    $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(3, 6, _("TOTAL INVOICE"), - 2);
            $rep->TextCol(6, 7, $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();
}

?>

Is it possible to delete an invoice but keep the associated delivery note. I have now realised for this particular requirement I should have done a direct delivery and then batch them at the end of the month.

Am happy to directly manipulate tables on this occasion if required.

Thanks

56

(44 replies, posted in Reporting)

Many thanks for the info. Understood.

I haven't looked closely at the code but somehow thought it would be concurrency safe if the 0-VAT was effectively attached immediately after the 'Net' value, given that the payment/deposit appears to go through as a transaction when processed. ( This was just for a temporary fix to allow me to start using FA 'live')

Will look into the info sent. I really need to start using FA in earnest and this seems to be the only major issue I have.

Is v2.4 likely to have a solution to this issue ?

Once again many thanks.

57

(44 replies, posted in Reporting)

HI
I'm still getting my head around the table structures etc. However in an attempt to get the 0-VAT UK BOX7 transactions from a Banking and GL payment/Deposit.....

If I ensure by quick entry that the 0-VAT is entered with and after the relevant associated transaction, is there any reason that

SELECT amount, counter, account FROM `1_gl_trans` WHERE counter IN (SELECT counter-1 FROM `1_gl_trans` WHERE account=2206)

will not work all the time and pull all the required transactions out? (2206 is my 0-VAT account) It is rough and ready but is a temporary fix until I can organise something else. It has worked for my test data, but I would be interested if anyone has an amount of previous data they can test it against.

Also any comments as to if there is a better way to link to the transaction.

Many thanks
David

Hi I'm new to FA

I've input a previous quarter to analyse against our current accounting system and am happy with that. Indeed I'm very impressed with FA and it's flexibility etc.

I now wish to start using FA in earnest and have some other quarters in between that already entered and the new year. I do not wish to laboriously enter all this data and am planning to enter some adjustments in each of the a/c's to finalise to the year end from the audited accounts. At present I haven't the full figures to finalise this system to the old ( at accountants).

Can I start a new fiscal year and input data as required and still finalise a previous year to whatever necessary easily without any major consequences to the new fiscal year?

Probably a silly question but just checking. As said, very impressed with FA, but quite a steep learning curve to a complete newbie.

many thanks for some great work.
David

I've edited a Bank Deposit entry following a search with Journal Inquiry and now have the modified entry and also the original entry. I can't get rid of the original entry. I tried to use the original and edit for another new entry but it still inserts the new entry and leaves the original entry too!! Ver 2.3.19.       any advice, also if I delete original entry via phpMyAdmin can I do this from just one table?
Thanks

I need to create an invoice that allows a product that is zero rated VAT to be invoiced. Associated with that product is a levy and the levy has VAT applied.

I also need to produce purchase orders that take a zero rated VAT product as a starting point (priced on weight) and subtract the same levy and associated levy VAT from the cost to arrive at the total.

I am new to FrontAccounting and wondered if there is an easy way of doing this?

Many thanks

I'm new to FA and am trying to set it up for Cash Accounting in the UK. Is anyone using it for this? Any info regards this would be most appreciated, also on UK invoice template modification etc.