You guys are awesome and that did work.
Just to let you know it still doesn't show the delivery notes in the 0.00 amount.
Thanks again, you guys are always the greatest
It's much more fun, when you can discuss your problems with others...
You are not logged in. Please login or register.
FrontAccounting forum → Posts by trafficpest
You guys are awesome and that did work.
Just to let you know it still doesn't show the delivery notes in the 0.00 amount.
Thanks again, you guys are always the greatest
I just upgraded to 2.4.4 from 2.4.1 and it no longer shows sales invoices if they were for free i.e. 0.00
We create service invoices for 0.00 when work was guaranteed all the time and can no longer see the clients complete work history. The invoices can no longer be seen all types and I just noticed the delivery notes are missing as well.
Thank you
Sorry to delay on this response I've just been very busy.
I just wanted a question about the upgrade and this transaction.
Should I just do the update with the transaction how it is or should I void the transaction update then redo the transaction.
Basically, is it a problem how the transaction was written to the ledgers or just how it was interpreted / read from them.
Thank you.
Hello,
I have noticed if you debit a clients account receivables directly from a journal entry that there seems to be an error. when you check the client under Customer Transaction Inquiry all looks well but when creating a new invoice under Current Credit the calculation will be incorrect showing they have more credit available to them.
for Example
Sales Invoice 2/21/18 Debit 65.00
Sales Invoice 4/18/18 Debit 65.00
Customer Payment 4/20/18 Credit 65.00
Journal Entry 4/26/18 Debit 65.00 (Customer cheque was returned)
Client's balance should be 120.00 and it shows that in Customer Transaction Inquiry
but in enter direct invoice it shows 0.00 so it calculates the debit to A/R as a credit
Ok here is a stock file with only the print invoice balance modifacations.
<?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");
//----------------------------------------------------------------------------------------------------
function get_invoice_range($from, $to)
{
global $SysPrefs;
$ref = ($SysPrefs->print_invoice_no() == 1 ? "trans_no" : "reference");
$sql = "SELECT trans.trans_no, trans.reference
FROM ".TB_PREF."debtor_trans trans
LEFT JOIN ".TB_PREF."voided voided ON trans.type=voided.type AND trans.trans_no=voided.id
WHERE trans.type=".ST_SALESINVOICE
." AND ISNULL(voided.id)"
." AND trans.reference>=".db_escape(get_reference(ST_SALESINVOICE, $from))
." AND trans.reference<=".db_escape(get_reference(ST_SALESINVOICE, $to))
." ORDER BY trans.tran_date, trans.$ref";
return db_query($sql, "Cant retrieve invoice range");
}
print_invoices();
//---------------------------------------------------------------------------------------------------- added from rep101 to get current balance
function get_open_balance($debtorno, $to)
{
if($to)
$to = date2sql($to);
$sql = "SELECT SUM(IF(t.type = ".ST_SALESINVOICE." OR (t.type = ".ST_JOURNAL." AND t.ov_amount>0),
-abs(t.ov_amount + t.ov_gst + t.ov_freight + t.ov_freight_tax + t.ov_discount), 0)) AS charges,";
$sql .= "SUM(IF(t.type != ".ST_SALESINVOICE." AND NOT(t.type = ".ST_JOURNAL." AND t.ov_amount>0),
abs(t.ov_amount + t.ov_gst + t.ov_freight + t.ov_freight_tax + t.ov_discount) * -1, 0)) AS credits,";
$sql .= "SUM(IF(t.type != ".ST_SALESINVOICE." AND NOT(t.type = ".ST_JOURNAL." AND t.ov_amount>0), t.alloc * -1, t.alloc)) AS Allocated,";
$sql .= "SUM(IF(t.type = ".ST_SALESINVOICE.", 1, -1) *
(abs(t.ov_amount + t.ov_gst + t.ov_freight + t.ov_freight_tax + t.ov_discount) - abs(t.alloc))) AS OutStanding
FROM ".TB_PREF."debtor_trans t
WHERE t.debtor_no = ".db_escape($debtorno)
." AND t.type <> ".ST_CUSTDELIVERY;
if ($to)
$sql .= " AND t.tran_date < '$to+1'"; // Has +1 to include any invoices created today in the balance
$sql .= " GROUP BY debtor_no";
$result = db_query($sql,"No transactions were returned");
return db_fetch($result);
}
//----------------------------------------------------------------------------------------------------
function print_invoices()
{
global $path_to_root, $SysPrefs;
$show_this_payment = true; // include payments invoiced here in summary
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]);
//-------------code-Descr-Qty--uom--tax--prc--Disc-Tot--//
$cols = array(4, 60, 225, 300, 325, 385, 450, 515);
// $headers in doctext.inc
$aligns = array('left', 'left', 'right', 'center', '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);
$range = get_invoice_range($from, $to);
while($row = db_fetch($range))
{
if (!exists_customer_trans(ST_SALESINVOICE, $row['trans_no']))
continue;
$sign = 1;
$myrow = get_customer_trans($row['trans_no'], ST_SALESINVOICE);
if ($customer && $myrow['debtor_no'] != $customer) {
continue;
}
if ($currency != ALL_TEXT && $myrow['curr_code'] != $currency) {
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->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->SetHeaderType('Header2');
$rep->NewPage();
// calculate summary start row for later use
$summary_start_row = $rep->bottomMargin + (15 * $rep->lineHeight);
if ($rep->formData['prepaid'])
{
$result = get_sales_order_invoices($myrow['order_']);
$prepayments = array();
while($inv = db_fetch($result))
{
$prepayments[] = $inv;
if ($inv['trans_no'] == $row['trans_no'])
break;
}
if (count($prepayments) > ($show_this_payment ? 0 : 1))
$summary_start_row += (count($prepayments)) * $rep->lineHeight;
else
unset($prepayments);
}
$result = get_customer_trans_details(ST_SALESINVOICE, $row['trans_no']);
$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']));
$DisplayNet = number_format2($Net,$dec);
if ($myrow2["discount_percent"]==0)
$DisplayDiscount ="";
else
$DisplayDiscount = number_format2($myrow2["discount_percent"]*100,user_percent_dec()) . "%";
$c=0;
$rep->TextCol($c++, $c, $myrow2['stock_id'], -2);
$oldrow = $rep->row;
$rep->TextColLines($c++, $c, $myrow2['StockDescription'], -2);
$newrow = $rep->row;
$rep->row = $oldrow;
if ($Net != 0.0 || !is_service($myrow2['mb_flag']) || !$SysPrefs->no_zero_lines_amount())
{
$rep->TextCol($c++, $c, $DisplayQty, -2);
$rep->TextCol($c++, $c, $myrow2['units'], -2);
$rep->TextCol($c++, $c, $DisplayPrice, -2);
$rep->TextCol($c++, $c, $DisplayDiscount, -2);
$rep->TextCol($c++, $c, $DisplayNet, -2);
}
$rep->row = $newrow;
//$rep->NewLine(1);
if ($rep->row < $summary_start_row)
$rep->NewPage();
}
$memo = get_comments_string(ST_SALESINVOICE, $row['trans_no']);
if ($memo != "")
{
$rep->NewLine();
$rep->TextColLines(1, 3, $memo, -2);
}
$DisplaySubTot = number_format2($SubTotal,$dec);
// set to start of summary line:
$rep->row = $summary_start_row;
if (isset($prepayments))
{
// Partial invoices table
$rep->TextCol(0, 3,_("Prepayments invoiced to this order up to day:"));
$rep->TextCol(0, 3, str_pad('', 150, '_'));
$rep->cols[2] -= 20;
$rep->aligns[2] = 'right';
$rep->NewLine(); $c = 0; $tot_pym=0;
$rep->TextCol(0, 3, str_pad('', 150, '_'));
$rep->TextCol($c++, $c, _("Date"));
$rep->TextCol($c++, $c, _("Invoice reference"));
$rep->TextCol($c++, $c, _("Amount"));
foreach ($prepayments as $invoice)
{
if ($show_this_payment || ($invoice['reference'] != $myrow['reference']))
{
$rep->NewLine();
$c = 0; $tot_pym += $invoice['prep_amount'];
$rep->TextCol($c++, $c, sql2date($invoice['tran_date']));
$rep->TextCol($c++, $c, $invoice['reference']);
$rep->TextCol($c++, $c, number_format2($invoice['prep_amount'], $dec));
}
if ($invoice['reference']==$myrow['reference']) break;
}
$rep->TextCol(0, 3, str_pad('', 150, '_'));
$rep->NewLine();
$rep->TextCol(1, 2, _("Total payments:"));
$rep->TextCol(2, 3, number_format2($tot_pym, $dec));
}
$doctype = ST_SALESINVOICE;
$rep->row = $summary_start_row;
$rep->cols[2] += 20;
$rep->cols[3] += 20;
$rep->aligns[3] = 'left';
$rep->TextCol(3, 6, _("Sub-total"), -2);
$rep->TextCol(6, 7, $DisplaySubTot, -2);
$rep->NewLine();
if ($myrow['ov_freight'] != 0.0)
{
$DisplayFreight = number_format2($sign*$myrow["ov_freight"],$dec);
$rep->TextCol(3, 6, _("Shipping"), -2);
$rep->TextCol(6, 7, $DisplayFreight, -2);
$rep->NewLine();
}
$tax_items = get_trans_tax_details(ST_SALESINVOICE, $row['trans_no']);
$first = true;
while ($tax_item = db_fetch($tax_items))
{
if ($tax_item['amount'] == 0)
continue;
$DisplayTax = number_format2($sign*$tax_item['amount'], $dec);
if ($SysPrefs->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 ($myrow['tax_included'])
{
if ($SysPrefs->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, 6, _("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();
//-----------------------------------------------------------added to fetch and calculate total balance
$accumulate = 0;
$bal = get_open_balance($myrow['debtor_no'],today());
$init[0] = $init[1] = 0.0;
$init[0] = round2(abs($bal['charges']), $dec);
$init[1] = round2(Abs($bal['credits']), $dec);
$init[2] = round2($bal['Allocated'], $dec);
$init[3] = $init[0] - $init[1];
$accumulate += $init[3];
//-----------------------------------------------------------End added to fetch and calculate total balance
$DisplayTotal = number_format2($sign*($myrow["ov_freight"] + $myrow["ov_gst"] +
$myrow["ov_amount"]+$myrow["ov_freight_tax"]),$dec);
$rep->Font('bold');
if (!$myrow['prepaid']) $rep->Font('bold');
$rep->TextCol(3, 6, $rep->formData['prepaid'] ? _("TOTAL ORDER VAT INCL.") : _("TOTAL INVOICE"), - 2);
$rep->TextCol(6, 7, $DisplayTotal, -2);
//-------------------------------------------- added to display total balance
$rep->NewLine();
$rep->TextCol(3, 6, $rep->formData['prepaid'] ? _("TOTAL ORDER VAT INCL.") : _("TOTAL BALANCE"), - 2);
$DisplayGrand = number_format2($init[3],$dec);
$rep->TextCol(6, 7, $DisplayGrand, -2);
//-----------------------------------------------------------End added to display total balance
if ($rep->formData['prepaid'])
{
$rep->NewLine();
$rep->Font('bold');
$rep->TextCol(3, 6, $rep->formData['prepaid']=='final' ? _("THIS INVOICE") : _("TOTAL INVOICE"), - 2);
$rep->TextCol(6, 7, number_format2($myrow['prep_amount'], $dec), -2);
}
$words = price_in_words($rep->formData['prepaid'] ? $myrow['prep_amount'] : $myrow['Total']
, array( 'type' => ST_SALESINVOICE, 'currency' => $myrow['curr_code']));
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 was pretty busy with work.
Update, I have used it this way for a week with no problems. It works much better.
@Apmuthu
Ok I got it working Thank You for the help. I'll send you some money on Pay Pal for your help on Monday (Waiting to verify the new Bank Account) I'll send it to the Email on you whois for the domain.
So, Here is the code for anyone that wants it. I am no coder so someone might want to clean it up, but it works.
It will print the clients current balance for all invoices up to the day it s printed. For example if today is 1/12/18 it will includeinvoices with dates from 1/5/18 and 1/12/18 but not an invoice made for the future 1/16/18.
add this funcion from rep101.php to the top of your /reporting/rep107.php where all the funcions are
function get_open_balance($debtorno, $to)
{
if($to)
$to = date2sql($to);
$sql = "SELECT SUM(IF(t.type = ".ST_SALESINVOICE." OR (t.type = ".ST_JOURNAL." AND t.ov_amount>0),
-abs(t.ov_amount + t.ov_gst + t.ov_freight + t.ov_freight_tax + t.ov_discount), 0)) AS charges,";
$sql .= "SUM(IF(t.type != ".ST_SALESINVOICE." AND NOT(t.type = ".ST_JOURNAL." AND t.ov_amount>0),
abs(t.ov_amount + t.ov_gst + t.ov_freight + t.ov_freight_tax + t.ov_discount) * -1, 0)) AS credits,";
$sql .= "SUM(IF(t.type != ".ST_SALESINVOICE." AND NOT(t.type = ".ST_JOURNAL." AND t.ov_amount>0), t.alloc * -1, t.alloc)) AS Allocated,";
$sql .= "SUM(IF(t.type = ".ST_SALESINVOICE.", 1, -1) *
(abs(t.ov_amount + t.ov_gst + t.ov_freight + t.ov_freight_tax + t.ov_discount) - abs(t.alloc))) AS OutStanding
FROM ".TB_PREF."debtor_trans t
WHERE t.debtor_no = ".db_escape($debtorno)
." AND t.type <> ".ST_CUSTDELIVERY;
if ($to)
$sql .= " AND t.tran_date < '$to+1'";
$sql .= " GROUP BY debtor_no";
$result = db_query($sql,"No transactions were returned");
return db_fetch($result);
}Then add this above
$accumulate = 0;
$bal = get_open_balance($myrow['debtor_no'],today());
$init[0] = $init[1] = 0.0;
$init[0] = round2(abs($bal['charges']), $dec);
$init[1] = round2(Abs($bal['credits']), $dec);
$init[2] = round2($bal['Allocated'], $dec);
$init[3] = $init[0] - $init[1];
$accumulate += $init[3];and this below
$rep->TextCol(6, 7, $DisplayTotal, -2);
$rep->NewLine(); // added for total balance
$rep->TextCol(3, 6, $rep->formData['prepaid'] ? _("TOTAL ORDER VAT INCL.") : _("TOTAL BALANCE"), - 2);
$DisplayGrand = number_format2($init[3],$dec);
$rep->TextCol(6, 7, $DisplayGrand, -2); // added for total balanceThis line of code
$DisplayTotal = number_format2($sign*($myrow["ov_freight"] + $myrow["ov_gst"] +
$myrow["ov_amount"]+$myrow["ov_freight_tax"]),$dec);
$rep->Font('bold');
if (!$myrow['prepaid']) $rep->Font('bold');
$rep->TextCol(3, 6, $rep->formData['prepaid'] ? _("TOTAL ORDER VAT INCL.") : _("THIS INVOICE"), - 2);Okay I was a complete fool it wasn't working because I was entering the payment in the bank charges section. Thats why I couldnt allocate because there was no balance left to allocate. There could be a if statement to prevent that. I feel like a fool. Ha
Okay I was able to fix the debit account to be undeposited funds that setting was actually under the bank account setting but I still can't allocate a payment to an invoice
Ok, I also get that error when allocating in the Customer Payment Entry ui as well.
I can see the amount was credited from accounts receivables and debited in 5690 Interest & Bank Charges???
shouldn't it go to a undeposited funds account in current assets???
Thanks
In sales_order_ui.inc the reference number input is placed in table_section(1) and I beleive workflow is better if it is placed at the end of table_section(4). Because...
When entering an invoice and tabbing through the fields with a keyboard. If you enter a custom reference in table_section(1) then tab through to table_section(4) and enter a date it will update the reference number to the next sequencial number causing you to go back to table_section(1) to replace the value again.
I suggest removing this line from line 361
ref_row(_("Reference").':', 'ref', _('Reference number unique for this document type'), null, '', $order->trans_type, array('date'=> @$_POST['OrderDate']));
and place it here around 458
else
{
label_row($date_text, $order->document_date);
hidden('OrderDate', $order->document_date);
}
ref_row(_("Reference").':', 'ref', _('Reference number unique for this document type'), null, '', $order->trans_type, array('date'=> @$_POST['OrderDate']));
end_outer_table(1); // outer table
if ($change_prices != 0) {
foreach ($order->line_items as $line_no=>$item) {
$line = &$order->line_items[$line_no];
$line->price = get_kit_price($line->stock_id, $order->customer_currency,
$order->sales_type, $order->price_factor, get_post('OrderDate'));
}
$Ajax->activate('items_table');
}Let me know if this will cause trouble that I am unaware I am trying it now.
I have a service industry and am trying to create a "service ticket/invoice" with the total customer balance at the time of printing. I have imported the function get_open_balance from rep101 and am trying to use it but it returns an array. Maybe the array needs to be added up before displaying?
Here is the funcion I imported to the begining of my version of rep107
The parts with variable $to were disabled since it is not passed in an invoice
function get_open_balance($debtorno)
{
#if($to)
# $to = date2sql($to);
$sql = "SELECT SUM(IF(t.type = ".ST_SALESINVOICE." OR (t.type = ".ST_JOURNAL." AND t.ov_amount>0),
-abs(t.ov_amount + t.ov_gst + t.ov_freight + t.ov_freight_tax + t.ov_discount), 0)) AS charges,";
$sql .= "SUM(IF(t.type != ".ST_SALESINVOICE." AND NOT(t.type = ".ST_JOURNAL." AND t.ov_amount>0),
abs(t.ov_amount + t.ov_gst + t.ov_freight + t.ov_freight_tax + t.ov_discount) * -1, 0)) AS credits,";
$sql .= "SUM(IF(t.type != ".ST_SALESINVOICE." AND NOT(t.type = ".ST_JOURNAL." AND t.ov_amount>0), t.alloc * -1, t.alloc)) AS Allocated,";
$sql .= "SUM(IF(t.type = ".ST_SALESINVOICE.", 1, -1) *
(abs(t.ov_amount + t.ov_gst + t.ov_freight + t.ov_freight_tax + t.ov_discount) - abs(t.alloc))) AS OutStanding
FROM ".TB_PREF."debtor_trans t
WHERE t.debtor_no = ".db_escape($debtorno)
." AND t.type <> ".ST_CUSTDELIVERY;
# if ($to)
# $sql .= " AND t.tran_date < '$to'";
#$sql .= " GROUP BY debtor_no";
$result = db_query($sql,"No transactions were returned");
return db_fetch($result);
}On the end of the invoice printing side I have this:
The lines are commented becuse it is broken.
$rep->NewLine();
#$bal = get_open_balance($myrow['debtor_no']); // added for total balance not working function returns an array.
#$DisplayCustTotal = number_format2($bal,$dec); // added for total balance
$DisplayTotal = number_format2($sign*($myrow["ov_freight"] + $myrow["ov_gst"] +
$myrow["ov_amount"]+$myrow["ov_freight_tax"]),$dec);
$rep->Font('bold');
if (!$myrow['prepaid']) $rep->Font('bold');
$rep->TextCol(3, 6, $rep->formData['prepaid'] ? _("TOTAL ORDER VAT INCL.") : _("THIS INVOICE"), - 2);
$rep->TextCol(6, 7, $DisplayTotal, -2);
$rep->NewLine(); // added for total balance
$rep->TextCol(3, 6, $rep->formData['prepaid'] ? _("TOTAL ORDER VAT INCL.") : _("TOTAL BALANCE"), - 2); // added for total balance
#$rep->TextCol(6, 7, $DisplayCustTotal, -2); // added for total balance
if ($rep->formData['prepaid'])
{
$rep->NewLine();
$rep->Font('bold');
$rep->TextCol(3, 6, $rep->formData['prepaid']=='final' ? _("THIS INVOICE") : _("TOTAL INVOICE"), - 2);
$rep->TextCol(6, 7, number_format2($myrow['prep_amount'], $dec), -2);
}
$words = price_in_words($rep->formData['prepaid'] ? $myrow['prep_amount'] : $myrow['Total']
, array( 'type' => ST_SALESINVOICE, 'currency' => $myrow['curr_code']));
if ($words != "")
{
$rep->NewLine(1);
$rep->TextCol(1, 7, $myrow['curr_code'] . ": " . $words, - 2);
}
$rep->Font();
if ($email == 1)
{
$rep->End($email);
}I am not a very good programmer and I have no experience in PHP. Thank you in advance you guys are lifesavers.
When I enter a payment in the ui it never gives me the success screen. But when I check the Database and the Allocate customer payment screen it shows that the payments were entered but not allocated. When I try to allocate them in the allocate customer payment screen with the debug 2 flag set (in config.php) It gives me this error
/home4/traffid0/public_html/books/sales/includes/db/cust_trans_db.inc:206: display_backtrace()
/home4/traffid0/public_html/books/includes/ui/allocation_cart.inc:126: get_customer_trans('1','12','190')
/home4/traffid0/public_html/books/includes/ui/allocation_cart.inc:42: (allocation Object)->read('12','1','190','2')
/home4/traffid0/public_html/books/sales/allocations/customer_allocate.php:111: (allocation Object)->allocation('12','1','190','2')
/home4/traffid0/public_html/books/includes/ui/ui_msgs.inc:14: trigger_error('
/home4/traffid0/public_html/books/sales/includes/db/cust_trans_db.inc:206: display_backtrace()
/home4/traffid0/public_html/books/includes/ui/allocation_cart.inc:126: get_customer_trans('1','12','190')
/home4/traffid0/public_html/books/includes/ui/allocation_cart.inc:42: (allocation Object)->read('12','1','190','2')
/home4/traffid0/public_html/books/sales/allocations/customer_allocate.php:111: (allocation Object)->allocation('12','1','190','2')
','256')
/home4/traffid0/public_html/books/includes/ui/ui_view.inc:1484: display_error('
/home4/traffid0/public_html/books/sales/includes/db/cust_trans_db.inc:206: display_backtrace()
/home4/traffid0/public_html/books/includes/ui/allocation_cart.inc:126: get_customer_trans('1','12','190')
/home4/traffid0/public_html/books/includes/ui/allocation_cart.inc:42: (allocation Object)->read('12','1','190','2')
/home4/traffid0/public_html/books/sales/allocations/customer_allocate.php:111: (allocation Object)->allocation('12','1','190','2')
')
/home4/traffid0/public_html/books/sales/includes/db/cust_trans_db.inc:206: display_backtrace()
/home4/traffid0/public_html/books/includes/ui/allocation_cart.inc:126: get_customer_trans('1','12','190')
/home4/traffid0/public_html/books/includes/ui/allocation_cart.inc:42: (allocation Object)->read('12','1','190','2')
/home4/traffid0/public_html/books/sales/allocations/customer_allocate.php:111: (allocation Object)->allocation('12','1','190','2')
DATABASE ERROR : no debtor trans found for given params
sql that failed was : SELECT trans.*,ov_amount+ov_gst+ov_freight+ov_freight_tax+ov_discount AS Total,cust.name AS DebtorName, cust.address, cust.curr_code, cust.tax_id, trans.prep_amount>0 as prepaid,com.memo_,bank_act,2_bank_accounts.bank_name, 2_bank_accounts.bank_account_name, 2_bank_accounts.account_type AS BankTransType, 2_bank_accounts.bank_curr_code, 2_bank_trans.amount as bank_amount FROM 2_debtor_trans trans LEFT JOIN 2_comments com ON trans.type=com.type AND trans.trans_no=com.id LEFT JOIN 2_shippers ON 2_shippers.shipper_id=trans.ship_via, 2_debtors_master cust, 2_bank_trans, 2_bank_accounts WHERE trans.trans_no='1' AND trans.type='12' AND trans.debtor_no=cust.debtor_no AND trans.debtor_no='190' AND 2_bank_trans.trans_no ='1' AND 2_bank_trans.type=12 AND 2_bank_trans.amount != 0 AND 2_bank_accounts.id=2_bank_trans.bank_act
/home4/traffid0/public_html/books/includes/errors.inc:198: trigger_error('DATABASE ERROR : no debtor trans found for given params
sql that failed was : SELECT trans.*,ov_amount+ov_gst+ov_freight+ov_freight_tax+ov_discount AS Total,cust.name AS DebtorName, cust.address, cust.curr_code, cust.tax_id, trans.prep_amount>0 as prepaid,com.memo_,bank_act,2_bank_accounts.bank_name, 2_bank_accounts.bank_account_name, 2_bank_accounts.account_type AS BankTransType, 2_bank_accounts.bank_curr_code, 2_bank_trans.amount as bank_amount FROM 2_debtor_trans trans LEFT JOIN 2_comments com ON trans.type=com.type AND trans.trans_no=com.id LEFT JOIN 2_shippers ON 2_shippers.shipper_id=trans.ship_via, 2_debtors_master cust, 2_bank_trans, 2_bank_accounts WHERE trans.trans_no='1' AND trans.type='12' AND trans.debtor_no=cust.debtor_no AND trans.debtor_no='190' AND 2_bank_trans.trans_no ='1' AND 2_bank_trans.type=12 AND 2_bank_trans.amount != 0 AND 2_bank_accounts.id=2_bank_trans.bank_act
','256')
/home4/traffid0/public_html/books/sales/includes/db/cust_trans_db.inc:207: display_db_error('no debtor trans found for given params','SELECT trans.*,ov_amount+ov_gst+ov_freight+ov_freight_tax+ov_discount AS Total,cust.name AS DebtorName, cust.address, cust.curr_code, cust.tax_id, trans.prep_amount>0 as prepaid,com.memo_,bank_act,&TB_PREF&bank_accounts.bank_name, &TB_PREF&bank_accounts.bank_account_name, &TB_PREF&bank_accounts.account_type AS BankTransType, &TB_PREF&bank_accounts.bank_curr_code, &TB_PREF&bank_trans.amount as bank_amount FROM &TB_PREF&debtor_trans trans LEFT JOIN &TB_PREF&comments com ON trans.type=com.type AND trans.trans_no=com.id LEFT JOIN &TB_PREF&shippers ON &TB_PREF&shippers.shipper_id=trans.ship_via, &TB_PREF&debtors_master cust, &TB_PREF&bank_trans, &TB_PREF&bank_accounts WHERE trans.trans_no='1' AND trans.type='12' AND trans.debtor_no=cust.debtor_no AND trans.debtor_no='190' AND &TB_PREF&bank_trans.trans_no ='1' AND &TB_PREF&bank_trans.type=12 AND &TB_PREF&bank_trans.amount != 0 AND &TB_PREF&bank_accounts.id=&TB_PREF&bank_trans.bank_act ','1')
/home4/traffid0/public_html/books/includes/ui/allocation_cart.inc:126: get_customer_trans('1','12','190')
/home4/traffid0/public_html/books/includes/ui/allocation_cart.inc:42: (allocation Object)->read('12','1','190','2')
/home4/traffid0/public_html/books/sales/allocations/customer_allocate.php:111: (allocation Object)->allocation('12','1','190','2')Thank You in advance
I as well want the 'long_description' on the invoice but I can't find it in the tables? inventory/manage/items.php says its called 'long_decription' I tried to replace
$rep->TextColLines($c++, $c, $myrow2['StockDescription'], -2);
to:
$rep->TextColLines($c++, $c, $myrow2['long_description'], -2);in /reporting/rep107.php but I get a blank spot on the invoice so, when I checked the DB I couldn't find it in the item_codes table
Where is it held? Am I totally wrong?
Just as a warning in the United States you can change your books from cash to accrual but not the other way around. I would be surprised if it's the only Country too.
Cash is accounted when you get the payment
Accrual when it is invoiced or billed
Example
$100000 sales in in 2017, 80000 paid 20000 in accounts receivable
Accrual based taxes on 100000 of income
Cash based taxes on 80000
@Braath Waate
HAHA not that fancy I'll go over it now.
1: Exported all clients from Quickbooks to a CSV file (option in the clients section)
2: Opened Front Acc. and entered the first client entry from the CSV Manually (Entered Customer, Branch and CRM Sections)
3: Opened the Database to look at the tables affected and the format (I used PhpMyAdmin on my server)
4: Exported each of the tables affected to CSV in PhpMyAdmin (0_debtors_master: 0_crm_persons:0_crm_contacts: 0_cust_branch:)
5: Copy and Paste the data from your QB Clients.CSV file into each of the exported FA DB CSV files in a spreadsheet editor (I used OpenOffice/Libre Office)
6: Import the DB CSV files on your server (You can use PHP commands i.e. LOAD DATA INFILE "/home/jason/clients.csv" but I used PhpMyAdmin as it has built-in CSV import.
Et Voila c'est fini, That is my fancy import process.
Ok I'm following up for anyone in the future importing clients. I finished importing about 1000 clients directly in the database and it worked beautifully. Everything I wrote above was correct just missing one thing. The 0_crm_contacts table connects 0_cust_branch to 0_crm_persons as well as the 0_debtors_master table so you should have twice as many entries in 0_crm_contacts as you have clients (assuming your clients are 1 branch per client like how my data was.)
@Braath Waate Thank you for the suggestion of QuickBooks2FA.zip I decided to stay working directly with the database because I was close to done already.
Ok as stated I'm importing our customers to the our new FA System running Version 2.4.1 Build 22.05.2017 just in case for database consistency. Ive been looking at the database and I believe I found all the tables needed. Let me know if i have missed anything.
0_debtors_master: to import the clients and some basic settings
0_crm_persons: to import clients customer relations / contact info such as billing address telephone and such
0_crm_contacts: to connect the clients crm_persons table to their debtors_master id
0_cust_branch: for the clients branch info and accounts affected
Is there any other tables needed or affected when creating a client?
Also is there anyway to give the client a starting / opening balance to not have to transfer over and open invoices?
Thank You,
Jason
Okay just to follow up for anyone with this issue. The error above is from having PHP 5.2 and older. Updating solved the problem right away. In my case, I had a line in .htaccess that prevented my server from using the updated version. At this time, I'm using PHP Version 5.4.43 and it works perfectly.
Thank you again for your help.
Okay it's the Justhost server it's running PHP 5.2.17
what's weird is when I change it with the server tools or the PHP.ini it doesnt change I have to dig deeper later.
maybe the .htaccess? i'll see
Thanks guys your awesome. You got me on train to find the problem. So, FA is not generating the PDFs on the server in the previously stated PDF folder and when I turned on Debugging the error log give me
PHP Parse error: syntax error, unexpected T_FUNCTION in /home4/traffid0/public_html/books/reporting/includes/html_entity_decode_php4.php on line 338I'm looking into it now
Thanks again and Happy New Year!
I can't print invoices or Display PDF reports on a new install on my Justhost server. My browser can display PDFs fine but my FA install shows me a progress bar then does nothing. Permissions write problem perhaps? Please help me if you can I have the example company DB and login @
http://trafficpestsolutions.com/books/
User: tester
Pass: tester
FrontAccounting forum → Posts by trafficpest
Powered by PunBB, supported by Informer Technologies, Inc.
Currently installed 4 official extensions. Copyright © 2003–2009 PunBB.