Revision [1011]

This is an old revision of HOWTO made by PhilDaintree on 2008-01-01 14:59:19.

 

Various Guides for General Use


HOWTO Setup a Bill Of Material (BOM)

1. First you need to ensure that all the components of the item are defined as items in webERP using the
Inventory tab -> Add A New Item
The component items can be purchased or manufactured but not assemblies or kit-sets
2. Once all the components are defined you then need to set up an item as manufactured, assembly or kit-set that you want to set up your BOM for.
3. Setup a work centre where the work required in manufacutring or assembling your item will take place.
Manufacturing tab -> Work Centre
The work centre is associated with an inventory or factory location - even assemblies and kit-sets need to have a work centre but this can be set up as a default and the work centre is not actually used in the case of assemblies or kit-sets.
4. Go into Manufacturing tab -> Bills Of Material (under the Maintenance section of the main menu and select the item that you wish to create the BOM for.

BOM
You can add as many or as few components as you like. For each component you need to select the work centre where the component is added and the quantity of the component required to make one of the parent item (the parent item is the item being made/manufactured).



HOWTO Use Controlled and Serial numbered Inventory


webERP allows you to choose how to record and manage your inventory.

Default inventory is "No Control"

Selecting "Controlled" is for things like Beer - brewed in vats with a mix of ingredients in certain ratios so there is a requirement to to keep track of what happened to the beer in a particular vat for quality purposes.

Perhaps the beer maker put the wrong chemicals in a vat by mistake and a recall is required - the business will need to know who purchased this beer. The beer maker could find out this by looking at the stock movments of the item concerned to see to whom the vat of beer was sold to.

Or rolls of cloth - often differences between dying can mean that to get a proper match cloth from the same roll is required. Or heats of metal production or any production job that is done in batches - and where tracability of the batch is required.

In general it is where there is a reference for a quantity of stock but it is not individually serialised.

Controlled means that there is some traceabilitiy for who we sell the this item to - the lots rolls or batches of product sold can be traced back - hence there is some element of "control" about what is sold to a customer.

Serialised is a special case of controlled - makes it so there can only be one item per reference entered - there is no opportunity to enter quantities since as a controlled and serialis(z)ed item the reference itself implies just one.

HOWTO Hold and Release Payments to Suppliers


After you Enter a Suppliers Invoice, you can choose to "Hold" or "Release" payments. The default state is that payments are free to be released. This may seem confusing to some users, but remember the default state is that payments are not-on-hold, and that pressing the "hold" button will place the invoice into the "hold" state, pressing the "release" button will change the state to "release".

This option acts like a toggle-switch, it is either switched to "Hold" or "Release". When the invoice is selected to be held, the colour changes.

The effect of this option is purely upon the " Payment Run Report". It does not stop you entering payments to suppliers.

Under "Payment Run Report" there are options to print PDF, which will print a report of all payments due by the date selected, omitting invoices that are marked as on "Hold".

The "Print and Process Payments" option, currently, does the same thing AND will allocate payments to suppliers. This would allow you to skip the steps as detailed in "HOWTO Allocate payments to Invoices"

In theory this "Print and Process Payments" option could be linked to a cheque printing script etc. etc. You would then choose the type of payment to occur (the type of payment is coming from the supplier setup and can be anyone of the acceptable payment types, cheque, cash, direct deposit etc) And would trigger the printing of all cheques/deposits slips/etc due by the date selected, omitting payments that are on hold.

Under the current system, to do an actual payment, choose the Supplier and choose "Enter payment a Payment to the Supplier" and choose the payment type and the amount.

HOWTO Reverse Invoices and Reverse Dispatched Inventory


Credit notes bring stock back in from dispatched invoices - there is an option to write the inventory off too. There is an option to reverse an invoice
completely with a credit note - this is done by clicking the undo on the customer inquiry screen. You can remove invoice lines that were ok from the
credit.

HOWTO Reconcile your Bank Statements


The bank account reconciliation needs to know the cheques and receipts that have not yet appeared on bank statements.

It is a question of matching off items that have already appeared on bank statements.

Ongoing....

HOWTO Allocate payments to Invoices


webERP keeps track of supplie]]]]r invoices that you have received, and keeps track of payments you have sent out.

webERP understands that a payment was made to a certain supplier, But...

webERP does not automatically know that a certain payment is allocated to a specific invoice.

You could, for instance, send a cheque to pay two invoices at once, or maybe just make a part payment on an invoice, you could even send too much money to cover future invoices.

The webERP administrator must periodically (the period is up to you), allocate, the payments made, to the invoices received.

You do this via the Supplier Allocations menu, under the Payables tab.

The method is to choose a payment, choose an invoice, and type in the amount paid that you wish to allocate, to that invoice.

As you allocate funds paid out, the system updates the General Ledger with any currency differences between the invoice and the payment, and writes the difference off to keep the ledger in balance.

After you have allocated all outstanding amounts, there is nothing more to do.

HOWTO Switch from Accrual to Cash basis Accounting methods for GST Reporting


webERP produces general ledger transactions to record when the Purchase Order or Sales Invoice is created.

<Phil> webERP does not handle cash based tax reporting </Phil>

Currently the GST (Goods and Services Tax, a type of Sales Tax) Reporting module, will calulate the amounts of tax inputs and outputs based on accrued transactions, NOT allocated transactions. ie. Reporting will be based on an accrual method.

For Australian GST reporting, some businesses are recommended to use a "Cash Basis" reporting system. Under the cash method, income is not counted until cash (or any payment) is actually received, and expenses are not counted until actually paid.

In a nutshell, the two methods differ only in the timing of when transactions, including sales and purchases, are credited or debited to your accounts.

The report to modify is Tax.php

(<Phil> - NOTE: This would probably not be acceptable to the ATO since under a cash basis GST is payable based on all revenue received this statement only shows the tax on invoices that are fully paid. Also the date of the invoice is not relevant under a payments basis so the logic of this SQL is not appropriate to a cash basis of accounting this is really not reliable</Phil>)

The lines to change are:

change this statement from

$SQL = 'SELECT debtortrans.transno,
debtortrans.type,
systypes.typename,
debtortrans.trandate,
debtortrans.debtorno,
debtorsmaster.name,
debtortrans.branchcode,
debtortrans.order_,
(ovamount+ovfreight)/rate AS netamount,
ovfreight/rate AS freightamount,
ovgst/rate AS tax
FROM debtortrans
INNER JOIN debtorsmaster ON debtortrans.debtorno=debtorsmaster.debtorno
INNER JOIN systypes ON debtortrans.type=systypes.typeid
WHERE debtortrans.prd >= ' . ($_POST['ToPeriod'] - $_POST['NoOfPeriods'] + 1) . '
AND debtortrans.prd <= ' . $_POST['ToPeriod'] . '
AND (debtortrans.type=10 OR debtortrans.type=11)
ORDER BY debtortrans.id';


change to

$SQL = 'SELECT debtortrans.transno,
debtortrans.type,
systypes.typename,
debtortrans.trandate,
debtortrans.debtorno,
debtorsmaster.name,
debtortrans.branchcode,
 debtortrans.order_,
(ovamount+ovfreight)/rate AS netamount,
ovfreight/rate AS freightamount,
ovgst/rate AS tax
FROM debtortrans
INNER JOIN debtorsmaster ON debtortrans.debtorno=debtorsmaster.debtorno
INNER JOIN systypes ON debtortrans.type=systypes.typeid
WHERE debtortrans.prd >= ' . ($_POST['ToPeriod'] - $_POST['NoOfPeriods'] + 1) . '
AND debtortrans.prd <= ' . $_POST['ToPeriod'] . '
AND (debtortrans.type=10 OR debtortrans.type=11)
AND debtortrans.alloc = (debtortrans.ovamount+debtortrans.ovgst)
ORDER BY debtortrans.id';


change this statement from

$SQL = "SELECT supptrans.type,
supptrans.suppreference,
systypes.typename,
supptrans.trandate,
suppliers.suppname,
supptrans.ovamount/supptrans.rate AS netamount,
supptrans.ovgst/supptrans.rate AS taxamt
FROM supptrans
INNER JOIN suppliers ON supptrans.supplierno=suppliers.supplierid
INNER JOIN systypes ON supptrans.type=systypes.typeid
WHERE supptrans.trandate >= '" . $StartDateSQL . "'
AND supptrans.trandate <= '" . FormatDateForSQL($PeriodEnd) . "'
AND (supptrans.type=20 OR supptrans.type=21)
ORDER BY supptrans.id";


change to

$SQL = "SELECT supptrans.type,
supptrans.suppreference,
systypes.typename,
supptrans.trandate,
suppliers.suppname,
supptrans.ovamount/supptrans.rate AS netamount,
supptrans.ovgst/supptrans.rate AS taxamt
FROM supptrans
INNER JOIN suppliers ON supptrans.supplierno=suppliers.supplierid
INNER JOIN systypes ON supptrans.type=systypes.typeid
WHERE supptrans.trandate >= '" . $StartDateSQL . "'
AND supptrans.trandate <= '" . FormatDateForSQL($PeriodEnd) . "'
AND (supptrans.type=20 OR supptrans.type=21)
AND supptrans.alloc = (supptrans.ovamount+supptrans.ovgst)
ORDER BY supptrans.id";


Now the GST report will exclude transactions where the money has not been allocated (ie. received or paid), and the GST reports will be "cash based".

HOWTO Create a Christmas / New Year / Holiday mailing list for top Customers


This is just some SQL to generate a mailing list of your top customers for the year. You can use it to send a Thank You card. Remember to modify to suit your circumstances.

SELECT debtortrans.debtorno, debtorsmaster.name, debtorsmaster.address1, debtorsmaster.address2, debtorsmaster.address3, debtorsmaster.address4, debtorsmaster.address5, debtorsmaster.address6, sum( debtortrans.ovamount ) as amount
FROM debtortrans, debtorsmaster
WHERE year( trandate ) =2006
AND debtortrans.debtorno = debtorsmaster.debtorno
AND debtortrans.type =10
GROUP BY debtorno
HAVING sum( debtortrans.ovamount ) >1000
ORDER BY amount DESC
LIMIT 0 , 30



HOWTO Send HTML Formated Emails containing WebERP queries, example of Debtor Balance Report


This is just a hacked up script to send a formatted email containing a list of all Debtors (customers) that have outstanding invoices with your company. You can send this to your boss, accounts people etc. Feel free to clean-up and optimse.

You can execute it via cron, something like:

# Send WebERP Debtor reports
30 07 * * 1 php /var/www/html/weberp/EmailDebtors_script.php

<?
ob_start();
$date = date("D M d Y H:i:s");

?>
<html>
<head>
<title>Accounting System - Confidential</title>
<link rel="stylesheet" href="http://whatever.com/style.css" type="text/css">
</head>
<body>
<p><img src=http://www.someserver/someimage.jpg width=200 height=40></img></p>
<p>WebERP Accounting System
<br>
<? echo " Server Date and Time is "; ?>
<? echo $date; ?>
<br>
<? 
echo "Report generated from {$_SERVER['REMOTE_ADDR']}"; 
?>
</p>
<?
$connection = mysql_connect (localhost, USER,PASSWORD) or die("Error connecting to database");
mysql_select_db (DATABASENAME, $connection) or die("Error selecting database");
?>
<p>
The following Invoices are still unpaid.
</p>
<p>
<table width="100%">
<tr class="row"><td>Company</td><td>Type</td><td>Number</td><td>Account Name</td><td>Issue Date</td><td>Balance</td></tr>
<?php
$result = mysql_query("SELECT companies.coyname, systypes.typename, debtortrans.transno, debtorsmaster.name, date_format(debtortrans.trandate,'%D %b %y') as invoicedate, (debtortrans.ovamount + debtortrans.ovgst + debtortrans.ovfreight +debtortrans.ovdiscount - debtortrans.alloc) as balance
FROM debtorsmaster, paymentterms, debtortrans, systypes, companies
WHERE systypes.typeid = debtortrans.type
AND debtorsmaster.paymentterms = paymentterms.termsindicator
AND debtorsmaster.debtorno = debtortrans.debtorno
AND ABS(debtortrans.ovamount + debtortrans.ovgst + debtortrans.ovfreight + debtortrans.ovdiscount - debtortrans.alloc)>0.1");
$i = 0;
while($result_ar = mysql_fetch_assoc($result)){
?>
<tr <?php if($i%2 == 1){
echo "class='body2'";
}else{
echo "class='body1'";}?>>
<td>
<?php echo $result_ar['coyname']; ?></td>
<?php echo $result_ar['typename']; ?></td>
<td><?php echo $result_ar['transno']; ?></td>
<td><?php echo $result_ar['name']; ?></td>
<td><?php echo $result_ar['invoicedate']; ?></td>
<td>
<?php echo $result_ar['balance']; ?>
</td>
</tr>
<?php
$i+=1;
}
?>
</table>
</p>
</body>
</html>
<?
$body = ob_get_contents();
ob_end_clean();
$eol="\n";
# To Email Address
$emailaddress="someone@somewhere.com, someoneelse@somewherelse.com";
# Message Subject
$emailsubject="Outstanding Invoices - ".date("jS M Y H:i:s");
# Message Body
$headers .= 'From: Weberp <weberp@someserver.com>'.$eol;
$headers .= 'Reply-To: Weberp <weberp@someserver.com>'.$eol;
$headers .= 'Return-Path: Weberp <weberp@someserver.com>'.$eol;    // these two to set reply address
$headers .= "X-Mailer: PHP v".phpversion().$eol;          // These two to help avoid spam-filters
# Boundry for marking the split & Multitype Headers
$mime_boundary=md5(time());
$headers .= 'MIME-Version: 1.0'.$eol;
$headers .= "Content-Type: text/html; charset=iso-8859-1".$eol;
$headers .= "Content-Transfer-Encoding: 8bit".$eol;
$msg = "";
$msg .= $body.$eol.$eol;
# Finished
#$msg .= "--".$mime_boundary."--".$eol.$eol;  // finish with two eol's for better security. see Injection.
# SEND THE EMAIL
  mail($emailaddress, $emailsubject, $msg, $headers);
?>
Valid XHTML :: Valid CSS: :: Powered by WikkaWikiGet webERP Accounting & Business Management at SourceForge.net. Fast, secure and Free Open Source software downloads