On invoices, the company identificator will not be printed. Therefore, the following changes must be made:
1 includes/GetConfig.php:
FROM companies
INNER JOIN currencies ON companies.currencydefault=currencies.currabrev
WHERE coycode=1";

2 includes/PDFTransPageHeader.inc:
$PDF->addText($XPos, $YPos, $FontSize, $_SESSION['CompanyRecord']['coyname'] . ' (' . $_SESSION['CompanyRecord']['companynumber'] . ')');

In User Settigs, if you want to change the value for the field "Email" then after clicking "Modify", the old email address will be restored in the form. First after logging out and in again, you see the new email address.

Receiving orders doesn't work unless you change "GoodsReceived.php" from
$SQL = "SELECT stockcosts.materialcost + stockcosts.labourcost + stockcosts.overheadcost as stdcost,
FROM stockcosts
INNER JOIN stockmaster
ON stockcosts.stockid=stockmaster.stockid
AND stockcosts.succeeded=0
WHERE stockcosts.stockid='" . $OrderLine->StockID . "'";
$SQL = "SELECT stockcosts.materialcost + stockcosts.labourcost + stockcosts.overheadcost as stdcost,
FROM stockcosts
INNER JOIN stockmaster
ON stockcosts.stockid=stockmaster.stockid
AND stockcosts.succeeded=0
WHERE stockcosts.stockid='" . $OrderLine->StockID . "'";

It was impossible to mail customer statements and I've changed the file starting by line 445:

$FileName = dirname(__FILE__) . '/companies/ektel/reports/' . 'Statement_' . $Cust_No . '_' . $Cust_Name . '.pdf';
$PDF->Output($FileName, 'F');
$mail = new PHPMailer();
$mail->CharSet = 'UTF-8';

$SQL = "SELECT realname FROM www_users WHERE userid='" . $MyRow['initiator'] . "'";
$UserResult = DB_query($SQL);
$MyUserRow = DB_fetch_array($UserResult);
$SenderName = $MyUserRow['realname'];

$mail->Host = $_SESSION['SMTPSettings']['host']; // SMTP server example
$mail->SMTPDebug = 1; // enables SMTP debug information (for testing)
$mail->SMTPAuth = $_SESSION['SMTPSettings']['auth'];
$mail->SMTPSecure = "tls"; // enable SMTP authentication
$mail->Port = $_SESSION['SMTPSettings']['port']; // set the SMTP port for the GMAIL server
$mail->Username = html_entity_decode($_SESSION['SMTPSettings']['username']); // SMTP account username example
$mail->Password = html_entity_decode($_SESSION['SMTPSettings']['password']); // SMTP account password example
$mail->From = $_SESSION['CompanyRecord']['email'];
$mail->FromName = $SenderName;
$mail->addAddress($_GET['Email']); // Add a recipient
$mail->WordWrap = 50; // Set word wrap to 50 characters
$mail->addAttachment($FileName); // Add attachments
$mail->isHTML(true); // Set email format to HTML

if (isset($_GET['Subject']) and $_GET['Subject'] != '') {
$mail->Subject = $_GET['Subject'];
} else {
$mail->Subject = 'saldoteatis';
$mail->Body = 'Manusena on saldoteatis.';
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
$Title = _('Emailing customer statements');
echo '<p>' . _(' Customer statements has been emailed to') . ' ' . $_GET['Email'];

unlink($FileName); //delete the temporary file
//$Attachment = $mail->getFile($FileName);
//$Mail->setText(_('Please find attached Statements') );
// $Mail->SetSubject('Your Statement From XXX');
//$Mail->addAttachment($FileName);//$Mail->addAttachment($Attachment, $FileName, 'application/pdf');
if ($_SESSION['SmtpSetting'] == 0) {
$Mail->setFrom($_SESSION['CompanyRecord']['coyname'] . ' <' . $_SESSION['CompanyRecord']['email'] . '>');
$Result = $Mail->send(array($_GET['Email']));
} else {
$Result = SendmailBySmtp($Mail, array($_GET['Email']));

unlink($FileName); //delete the temporary file

$Title = _('Emailing customer statements');
echo '<p>' . _(' Customer statements has been emailed to') . ' ' . $_GET['Email'];

This isn't elegant because I've hardcoded the subject and body texts but the translation system for this software is robust and not human-friendly anyway so I don't bother to mess with it as I know that it can be implemented the human friendly way which I've done for my CMS already.

Please update the file for the next release.

After updating to a newer version, for companies that exister before the update, still the old version is shown.

I've spent about four hours on figuring out why retained earnings and profit + retained earnings from the previous period didn't match although the balance sheet was OK. It turned out that one account was missing in the profit and loss statement. Why? Because of the software bug! Or is it a feature, tim? After doing General Ledger -> GL Account Authorised Users Maintenance -> Select GL Account -> Accept -> Add access permissions to a user -> Accept the profit was different and the sums matched.

I think that integration tests for this software are missing completely or are they partial.

Every time I allocate a payment to a supplier's invoice I see a remarkable exchange difference. Why is that? The supplier's currency is euro. The main currency is Estonian kroon which doesn't even exist in the new version of KwaMoja but I use an old database, so it's there. For instance, if the amount of invoice is 10 € and the payment is also 10 € and I allocate the payment to that invoice in full then in addition an exchange difference will be calculated:

10 / 15.646660846109 - 10 / 0.06391139999999985 = −155.827494461

This difference will be calculated because if the daily rate of the payment differs from the rate of the invoice then there is either a loss or gain. But the rate between kroon and euro is always the same - fixed. There can't be an exchange difference ever. The result should be 0. But it isn't. Why? Because first, the amount in euro will be divided by rate of how many kroons per euro. Then, the same amount in euro will be divided by the rate of how many euros per kroon. This is a nonsense. The divisions should be equal.

I don't dig deeper to find out why there is sometimes the rate and sometimes the upside down rate. I have just changed the code in "SupplierAllocations.php" on the line 76 so that instead of the first division, there will be a multiplication:

$_SESSION['Alloc']>Allocs[$_POST['AllocID' . $AllocCounter]]>DiffOnExch = ($_POST['Amt' . $AllocCounter] * $_SESSION['Alloc']>TransExRate) - ($_POST['Amt' . $AllocCounter] / $_SESSION['Alloc']>Allocs[$_POST['AllocID' . $AllocCounter]]->ExRate);

Then, the program still calculates a tiny difference and stores it in gltrans but it is so tiny that it's even not visible to the bare eye. :-)

Please update the code in the repo or fix the rate thing somewhere else.

Post has attachment

I want to credit an invoice that I have sent to a customer. It only contains sums for services. I need to credit that invoice by a fraction of an amount of a service. If I click "Credit" I receive the following message:
"WARNING Report : There are no line items that were retrieved for this invoice. The automatic credit program can not create a credit note from this invoice"

If I try to create a credit note under transactions and choose the customer I cannot enter any service items.

How can I credit this part of the invoice?

While creating an order, I first select line items. I select one item which appears as a new line item on the order afterwards. But clicking "Process Order", it requires to enter another item (please fill in the price per item). How can I process a new order?
Wait while more posts are being loaded