Thursday, 4 July 2013

if (isset($_POST['ws'])){ //ws??? wtf???

This page is written in response to the lies that +Phil Daintree  has written about me, and spread on the internet. Despite years of searching he has been unable to find anything I have written that is untrue, and he has had to resort to vague generalities, faked emails, and badly fabricated screenshots (you can see the joins if you zoom in using any bit mapped image editor). +Phil Daintree is welcome to make any comments to these pages, as he has done in the past. If I agree with what he says I will amend my writings, if I do not agree I have allowed his comments to stand next to mine so that people can make their own judgements. I have every confidence in the intelligence of readers to make a sensible judgement based on the facts. +Phil Daintree will not allow me the right of reply to any of the lies he has told about me. It seems to me significant that he realises that if people see both sides of the argument they will see through his lies.


A strange title I know, but the story behind this is typical of the dishonest and abusive style of leadership that webERP is currently suffering from. 

This comment appeared in Phil Daintree's commit here. Including comments like this in code is inappropriate. If he has a problem with some code he should speak to the author of the code privately and not litter the code with such abusive comments.

What is amusing about this though is that he hadn't bothered to look up who did this code. A simple svn command tells us who did it:

13:37:23 $ svn blame Customers.php | grep 'ws'
   297   daintree                       '. ' . _('If this does not
happen') .' (' . _('if the browser does not support META Refresh') .
') ' .
  6033   daintree if (isset($_POST['ws'])){ //ws??? wtf???
   944   daintree       $ws = $_POST['ws'];
   944   daintree } elseif (isset($_GET['ws'])){
   944   daintree       $ws = $_GET['ws'];
   194   daintree       if (DB_num_rows($result)==0){
  4594   daintree       if (DB_num_rows($result)==0){
   194   daintree       if (DB_num_rows($result)==0){
   194   daintree       if (DB_num_rows($result)==0){
   194   daintree       if (DB_num_rows($result)==0){
   944   daintree                       echo '<tr class="OddTableRows">';
   944   daintree                       echo '<tr class="EvenTableRows">';


As can be seen, it turns out the author of the code is somebody called daintree!  Once I pointed this out to him, instead of his normal trick of ridiculing the authors work, he silently removed the comment here.

If it hadn't been Phil who had authored the code, what would have happened? In 2010 a developer called Marcos Trejo with the help of Pak Ricard developed an excellent module for printing labels, which has since been used by many businesses.

However, Phil didn't like this code. Instead of speaking to Ricard and Marcos privately about this code, and how it can be improved, he started to constantly ridicule the code on the mailing list. Almost daily we would wake up to yet more personal attacks on this contribution. This is not the way to encourage new developers. It is no wonder that Marcos didn't contribute any more code.

All contributors should be treated equally. All contributors should retain the copyright to their own work. Double standards should not be applied.

Tuesday, 25 June 2013

Lot's of great new functionality

KwaMoja has just gained lots of new functionality.

We now have a maintenance module for fixed assets. This allows you to set specific maintenance tasks for individual fixed assets, set up a schedule for these tasks to be done, and to email the person responsible with reminders when the tasks are becoming due.

Electronic bank statements in the MT940 format can now be imported and analysed directly into the KwaMoja general ledger.

Many thanks must go to Phil Daintree for this excellent contribution.

Phil has also setup a demo mode, which will stop whoever it is with an IP address in Wellington, New Zealand that has too much time on their hands and too little to occupy themselves. This person keeps trying to come up with new ways to wreck our demo. Thanks Phil for helping to stop them.

Also KwaMoja now links to Phil's new web shop, and it can be administered directly through KwaMoja. This web shop is commercial software, and not open source, so it is hard for us to test and verify, so caution  needs to be observed on the security side of this as it stores information about your customers payment methods. Nevertheless a great contribution, thanks Phil.

We now also have the ability to import general ledger journals, payments, and receipts directly from a csv file.

Also there is now a flag setting in the user setup that can restrict a user to only access their default location. Thanks Jerry for sponsoring this work.

All this new functionality can be tried out at the KwaMoja demo.




Friday, 21 June 2013

Re-writing history

This page is written in response to the lies that +Phil Daintree has written about me, and spread on the internet. Despite years of searching he has been unable to find anything I have written that is untrue, and he has had to resort to vague generalities, faked emails, and badly fabricated screenshots (you can see the joins if you zoom in using any bit mapped image editor). +Phil Daintree is welcome to make any comments to these pages, as he has done in the past. If I agree with what he says I will amend my writings, if I do not agree I have allowed his comments to stand next to mine so that people can make their own judgements. I have every confidence in the intelligence of readers to make a sensible judgement based on the facts. +Phil Daintree will not allow me the right of reply to any of the lies he has told about me. It seems to me significant that he realises that if people see both sides of the argument they will see through his lies.

Phil Daintree has started editing and deleting posts of mine on the nabble forums in order to show a version of history that he wants people to believe rather than the reality.

This is typical of the dishonest way that the webERP project is currently being run.

I will re-instate my posts, but it is guaranteed that he will just repeat his actions, and remove the real posts, and just insert his own as mine.

Meanwhile users should be aware that the views that seem to come from me are not necessarily mine, and should be treated with caution.

I also urge others who post to the nabble forums to carefully check any posts they have made, to ensure that theirs have also not been changed by Phil.

Friday, 7 June 2013

The dishonesty of sending private emails to third parties libeling somebody.

This page is written in response to the lies that +Phil Daintree has written about me, and spread on the internet. Despite years of searching he has been unable to find anything I have written that is untrue, and he has had to resort to vague generalities, faked emails, and badly fabricated screenshots (you can see the joins if you zoom in using any bit mapped image editor). +Phil Daintree is welcome to make any comments to these pages, as he has done in the past. If I agree with what he says I will amend my writings, if I do not agree I have allowed his comments to stand next to mine so that people can make their own judgements. I have every confidence in the intelligence of readers to make a sensible judgement based on the facts. +Phil Daintree will not allow me the right of reply to any of the lies he has told about me. It seems to me significant that he realises that if people see both sides of the argument they will see through his lies.


It seems that Phil Daintree's latest ploy is to send people private emails about me, thus hoping that I will be unable to give that person my version of the events. Several people have sent me copies of these emails so I have been able to point out the facts to them, however this doesn't get away from the basic dishonesty of these actions.

It's important to note that Phil does not dispute any of the facts about him that I have put in this blog, what he is against is that I should be able to write it at all, and that he is unable to block it.

One of the things Phil repeatedly says about me is that I am unable to admit when I am wrong. So just for fun I spent 5 minutes searching the nabble archives. There are dozens of examples of my apologising for being wrong of which the following is a small sample, but the reader can find there own by searching here.

http://weberp-accounting.1478800.n4.nabble.com/Purchase-Orders-entry-td1482135.html#a1482137

http://weberp-accounting.1478800.n4.nabble.com/Release-3-10-4-td1483601.html#a1483603

http://weberp-accounting.1478800.n4.nabble.com/Re-Stock-php-refresh-problem-td1487424.html#a1487424

http://weberp-accounting.1478800.n4.nabble.com/Care2x-webERP-integration-td1487567.html#a1487570

http://weberp-accounting.1478800.n4.nabble.com/webERP-translation-Translations-td1490158.html#a1490160

http://weberp-accounting.1478800.n4.nabble.com/PrintCheque-php-error-td1488350.html#a1488356

http://weberp-accounting.1478800.n4.nabble.com/Issue-with-PO-header-php-Version-3-11-rc2-td1484089.html#a1484092

http://weberp-accounting.1478800.n4.nabble.com/Error-on-stock-adj-td1483826.html#a1483827

http://weberp-accounting.1478800.n4.nabble.com/SVN-gurus-td1489462i20.html#a1489486


When Phil says I cannot admit to being wrong, what he actually means is that I wont say he is right when he is clearly wrong. In an email to several major contributors of webERP he told us that once he has expressed his opinion on a matter then the subject should be closed and no more discussion will be allowed. This is unacceptable in an open source project, whatever messianic delusions the administrator may have

Wednesday, 5 June 2013

How to keep a stable KwaMoja/webERP installation updated

There has been a lot of discussion recently on the webERP forums about how to keep a stable version of your implementation, so I thought it might be a good moment to write an article on how to do this.

Firstly Web ERP Africa Ltd keeps a stable branch of the webERP code. This takes the last release (4.10.1 at the moment I write this) and then just adds in any bug fixes that have been applied to the main line. Obviously this does not include any bug fix to any new functionality, as that functionality does not exist in the stable branch. We also apply our regression tests to these fixes, to ensure that they are not re-introducing any previous bugs. This branch should then get progressively more stable, but anybody  who wants the latest features can use the main trunk. I have made this stable branch publicly available from my github repository and can be found here. You can download a zip file containing this code from here. This zip file is automatically updated when a new bug fix is applied.

Exactly the same is true for KwaMoja, it's stable branch can be found by using the master branch here.

So if you are using a KwaMoja/webERP that has no customisations in it then all you have to do, is to keep an eye on this repository, and download new versions as and when it is updated.

However there are potential problems when you have customised scripts in your installation. I will assume that if the user has the knowledge to change the files then they will have a small knowledge of IT, and you will need the application Git installed.
 
What we wish is to avoid the code being over written when updating from the stable branch. I have created a small git repository here to represent the stable branch, and have uploaded the following script to it, calling it HelloWorld.php:

<?php
include('includes/session.inc');
$Title = _('Hello World');
include('includes/header.inc');
echo '<p class="page_title_text noPrint" ><img src="'.$RootPath.'/css/'.$Theme.'/images/user.png" width="24px" title="' . _('Hello World') . '" alt="" />' . _('Hello World') . '</p>';
if (isset($_POST['Submit'])) {
    /* Get clients IP address */
    $IPAddress = $_SERVER['REMOTE_ADDR'];

    /* Has user been here before? */
    $SQL = "SELECT count(name) as names
                FROM helloworld
                WHERE name='" . $_POST['Name'] . "'
                    AND ipaddress='" . $IPAddress . "'";
    $Result = DB_query($SQL, $db);
    $MyRow = DB_fetch_array($Result);
    if ($MyRow['names'] > 0) {
        prnMsg( _('Welcome back') . ' ' . $_POST['Name'], 'info');
    } else {
        $SQL = "INSERT INTO helloworld (ipaddress,
                                        name)
                                    VALUES (
                                        '" . $IPAddress . "',
                                        '" . $_POST['Name'] . "'
                                    )";
        $Result = DB_query($SQL, $db);
        prnMsg( _('Hi') . ' ' . $_POST['Name'], 'info');
    }
} else {
    echo '<div class="page_help_text noPrint">' . _('Enter your name in the box below.') . '</div>';
    echo '<form enctype="multipart/form-data" action="' . htmlspecialchars($_SERVER['PHP_SELF'],ENT_QUOTES,'UTF-8') . '" method="post" class="noPrint">';
    echo '<input type="hidden" name="FormID" value="' . $_SESSION['FormID'] . '" />';
    echo '<div class="centre">
            <input type="text" name="Name" />
        </div>
        <div class="centre">
            <input type="submit" name="Submit" value="Submit" />
        </div>';
    echo '</form>';
}
include('includes/footer.inc');

?>

Now you can pull this code to your own machine by issuing the command:

git clone git@github.com:timschofield/Example1.git

Now we make a local change to our code. We will change the word 'Hi' to 'Hello'. Now if we wish to update our code to the latest from the repository we would issue the command:

git pull git@github.com:timschofield/Example1.git

and this will update any changes - if there were any new bug fixes applied for instance. However you will notice that Git is smart enough not to try and overwrite your code that you changed locally.

So by using Git we can update our code to the latest stable branch, whilst keeping our local changes in place.

Monday, 27 May 2013

ABC inventory ranking system is completed

As detailed in this blog post we have been working on a system for ranking inventory items by the standard ABC classification system.

I am happy to announce that this new system has just been uploaded to the KwaMoja repositories and those who wish to try it can download our development snapshot from here.

The only change from the original blog post was a suggestion from Francis that we use a consumption value system as our default ranking method rather than the proposed sales value method - thanks Francis.

The next step in warehouse management system is to setup the warehouse storage definitions as outlined in the excellent document prepared by Buz and Mary Beth (sorry I don't know more details of these people) that can be downloaded from here. Then we are into the cycle count code.

This code was offered to Phil Daintree at webERP but appears to have been rejected.