Entirely web-based. Runs on any web-server that can accommodate PHP - can use an ISP instead of having/maintaining own server
Fully configurable and extendable dashboard showing key performance indicators for the organisation. Allows different configuration for each user.
Fully open sourced, the code is available for all to see, use, and modify for their own uses.
Has the facility to use third party plugins, both commercial and open source.
Will work on any client with a web browser, including smartphones, tablets, laptops, and desktops.
Produces reports to Portable Document Format - PDF for accurate positioning of text
All reports and scripts easily modifiable PHP text
All processing on the server and no installation required on client machines
Multi-language - each user can see the interface in their preferred language - 28 translations available bundled with the system.
Numbers are displayed appropriately for the language selected and input is allowed in this format.
Fully utf-8 compliant. PDF reports produced using adobe CIF fonts for lightweight PDFs using utf-8 character set for any language
Multi-theme - each user can see the interface in their preferred graphical theme
User defined font sizes - Each user can define whether they wish to see the text in small, medium, or large size fonts.
Can be integrated with a wiki (any wakka fork) to hold narrative on items, suppliers and customers. e.g. The wiki may contain any information particular to the customer with links to say credit history - call log for customer services/sales/accounts etc
The underlying code of the system is written in a way so as to maximise its readability for those new to PHP coding. The idea being that business users will be able to administer and adapt the system to exactly suit their needs.
Modular API to enable any application to be linked to KwaMoja in a safe and secure manner. Many applications have already been linked, including an open source Health information system, a POS, and several web shops.
Users can be defined with access to only certain options using a fully configurable role based model
Options applicable to certain roles can be graphically configured and users defined as fulfilling a given role.
Users can only see those options that they have access to.
Incorrect entry of password (more than 3 times) blocks the account until reset by the System Administrator. This prevents password crackers from breaking the security.
Pages can be encrypted using SSL and KwaMoja can be configured to only display pages using SSL to ensure that all information passing over the internet is encrypted.
Users can be defined to see only certain modules on the main menu - so menu options that they will not have access to are not even displayed on screen.
HTTP security can be configured over the top of the inbuilt security to provide two levels of security - the first to access the web-server at all and the second to actually get into KwaMoja
An audit trail of which users did what is retained and is automatically maintained based on how long the information is required to be kept
All inputs are sanitised to prevent SQL injections and cross site scripting.
Sales and Orders
Quotations can be entered and printed as quotations then changed to an order if the customer accepts without re-entering
Customer orders can be entered and maintained and referenced back to the customer's order number.
The cumulative quantity on order for a stock item shows as a demand in stock status inquiries.
The cumulative quantity on order for assembly items shows the demand against its components in the stock status inquiries.
The quantity of the order left to invoice is maintained and updated for invoices and credit notes raised against the order.
The orders entered can be invoiced directly with little or no additional input.
Multiple dispatches are possible from a single order. Order retains references to each dispatch.
Differences from the order are logged when dispatches are not the same as the ordered quantities for reporting delivery in full on time.
Pricing automatically returned based on the customer sales type, branch and currency.
Pricing can be set to be effective from specific dates and to finish on a final date
Pricing is by currency
Any number of price lists can be maintained. Customers are defined to get their pricing from a specific price list. However, special prices can be defined as an exception for a given customer or even a particular branch of a customer
Quantity break discounts across a range of products are automatically calculated based on a discount matrix.
Packing slips printable on laser or pre-printed stationery.
User selectable inventory location to pick from.
Automatic freight calculations based on shipping method and delivery address. Orders calculate weight and cubic based on item unit weight and cubic.
Free form entry of delivery addresses defaulting to the customer branch physical address.
Automatically recurring orders can be entered and if the orders are for \"service items\" the order can also be automatically invoiced.
Daily sales reports and ad-hoc sales graphs
Delivery In Full On Time reporting
Very flexible taxation options suitable for most countries
Tax rates dependent on the type of product - using tax categories
Tax rates dependent on the location of the warehouse dispatched from
Tax rates dependent on the location of the customer
Multiple taxes payable to different tax authorities
Each tax posted to different user-definable general ledger accounts - if linked to AR/AP
Overdues inquiry that takes into account delivery days to the customer's branch and the actual (user definable) payment terms applicable to the customer, supported by detailed inquiry of actual invoices overdue.
Full on-screen inquiry on a customer's account, complete with invoice details and narrative which appeared on the invoice. Drill down to source document and invoice or credit note.
Invoice can be emailed to customers together with pdf attachments dependent on items invoices eg. warranty, datasheets, instructions, manuals etc.
Inquiries on payments received will show how a payment was allocated to invoices and the difference on exchange attributable to each invoice.
Full integration with stock records and general ledger - a full trail of journals for each transaction is maintained & a drill down to the general ledger transactions for each transaction on a customers account is available from the customer inquiry page.
Flexible general ledger postings for sales and if required as well cost of sales based on sales area and product category. General ledger integration is optional.
Open item - full analysis of the outstanding balance is maintained and printed on statements for maximum information to the customer.
Statements can show transactions settled this month or only outstanding transactions as at the date of printing.
Flexible user definable sales analysis reports to pdf or spreadsheet (csv / comma separated values). Report definitions can be saved for re-running or automating email delivery from a scheduled job.
Retrospective / de-allocation and re-allocation of receipts or credit notes agains charges with re-calculation of differences on exchange and corresponding general ledger journals.
Any number of branch / delivery addresses can be added serviced by different sales people with different tax authorities and different areas for sales analysis purposes.
Unlimited accounts and unlimited number of branches (ship to addresses) for each account.
Shipping method updated by branch.
Customer accounts can be in any currency. Individual rate for each invoice, default to currency table rate.
Currency table can be set to be automatically updated daily from European central bank published rates.
Invoices and credit notes created in pdf.
Email of invoices and credit notes.
Credit notes can be produced from one click taking the details of a selected invoice for subsequent modification.
Transaction inquiries show sequence of invoices, credit notes and receipts entered.
Option to produce integrated google maps of customer locations (and suppliers)
Unlimited number of warehouses (stocking locations), stock quantities are maintained for an unlimited number of locations.
Fully configurable multiple ABC analysis of stock items available.
Selling prices for a stock item can be set for each sales type defined in any (and all) currency (ies) allowing great pricing flexibility. Pricing can also be set specific to an individual customer account or even a specific customer branch.
Automatic back ordering. Sales orders yet to be delivered can be automatically back ordered at the time of invoicing or the balance of the order canceled as appropriate.
A history of stock movements is maintained by stock item allowing full traceability including serialised and lot/batch numbered stock items.
Allows Dummy (service) stock items which can be invoiced, priced, costed but with no stock record maintained for items such as labour or services.
Kit-set parts can be defined. An order for a kit-set part explodes into the components defined for the parts at the predefined quantities as extended by the number of the kitset item ordered all priced individually. These component quantities are then available on the order for modification by the user.
Assembly parts can be defined in a similar way to kitsets. These parts exist only for ordering, pricing, invoicing and sales analysis. No stock balance is maintained, instead the quantities of the components are updated in proportion to the quantity defined in the assembly.
Invoice and credit note inquiries are linked to stock movements so the detail of items sold on an invoice can be queried calling up the actual invoice or credit note that caused the stock movement.
Standard cost manually maintained or automatically maintained weighted average cost.
Inventory usage by month inquiry by location and over all locations.
Inventory planning report showing the last 4 months and the current months sales including sales of assembly components.
Receiving inventory against purchase orders creates journals in the general ledger to reflect the increase in stock value and the amount owing to a supplier.
Stock transfers to other inventory locations can raise transfer dockets.
Re-order quantities can be maintained.
Internal departments can request consumables from a stock location. These requests must be authorised, and can be amended/cancelled on a line by line or complete request basis.
Inventory adjustments can create general ledger entries to reflect write on or off of stock value.
Inventory cost changes can create general ledger entries to reflect write on or off of stock value.
A stock taking system allows business to continue recording system stock quantities at the time of counting adjustments created based on these quantities and the sum of all quantities entered as counted for the item. General ledger integration creates the necessary journals to reflect the changes to stock values.
Controlled items allow referencing of each stock movement to the bundles/batch references.
Serialiased inventory allows controlled items to be in units of one. Ie a reference for each individual item.
Unlimited user defined fields specific to each inventory category for additional important information required to be stored against items
Weighted Average (automatic) or standard (manually maintained) costing
Purchase orders and suppliers can be in any currency.
Supplier item descriptions and pricing (in the currency of the supplier) for purchased items can be maintained. Purchase orders automatically use these prices. The same item can be purchased from many different suppliers.
Quantities on order show on inventory status inquiries by inventory location to receive into. Quantities on order also show on planning reports.
Goods received can be entered up to the purchase order quantity plus a user definable percentage allowance for over delivery.
Goods received are sequenced as a GRN and a record is retained for every stock movement referenced to the GRN.
Purchase orders record the quantity received and the quantity invoiced as well as the original quantity ordered.
Purchase orders can be emailed to one of the defined supplier contacts email addresses.
Inventory planning report can be produced based on a 3 or 4 month lead time showing suggested quantities to purchase based on the maximum of the prior 5 months usage.
Purchase orders can be entered for nominal items i.e. non-stock items with a general ledger code to be entered to specify how the general ledger integration postings should be made.
Purchase order approval levels and authorities can be defined. With all approvals required by an authoriser easily accessible for authorisation
Shipment costing can be set up across several purchase orders from the same supplier choosing only those lines that have been dispatched together. Costs entered against these lines and against the shipment (from AP) are apportioned across all lines. Shipment costing allows for automatic updating of standard or weighted average costs on closing shipments.
Supplier units and purchasing prices can be maintained with a preferred supplier for each item. Orders can be entered referring to the supplier\'s item code and description and in the suppliers unit, converting to the business units for all internal purposes.
Suppliers can be defined in any currency.
Invoices can be entered against goods received with a user definable allowance for over invoicing. Thus ensuring payment is only made for goods received.
Invoices can be entered as a cost of a shipment for apportionment between the items on the shipment.
An aged listing of balances is available as a pdf showing either summary balances or the detail invoice by invoice of the balance of the account.
Retrospective allocation or de-allocation of payments to invoices. With differences on exchange reported.
Supplier invoices cannot be entered with the same reference as prior invoices.
Supplier invoices/credits can be entered against the internal record of goods received from the supplier. Providing an internal check to ensure only those goods received are paid for.
Supplier invoices for freight/duty etc can be charged against shipments from other suppliers.
Supplier invoices can be entered directly against multiple general ledger codings.
Inquiry on Suppliers account shows all transactions.
Fully integrated general ledger postings keeps the creditors control account in line with the supplier balances in local currency.
Payment run creates payment transactions based on payment of all due invoices not flagged as held.
A petty cash expense reimbursement module is available for sales people to enter their claims.
As many bank accounts as required can be set up details and account number can be held against the bank account definition.
Bank accounts can be any currency and payments/receipts can be paid in any currency from any bank account.
Transfers between accounts are automatically detected by entry of payment to another bank account or receipt.
Bank transaction matching to bank statements show outstanding payments/receipts only or all depending on selections.
Online reconciliation statement based on matched and all entered transactions.
Calculation and posting to GL of unrealised exchange differences in foreign currency bank account balances
Automatically maintained periods, reporting over any range of periods with no rollover procedure at period end.
Regular payments can be defined and the processed every period.
Balance Sheet and Profit and Loss Statements
Reporting against budget
Inquiry on any account over any period.
Posting journals into any number of periods ahead or periods before.
Automatic posting no separate process to run to post general ledger transactions.
Extensive narrative on journals created by sub-ledgers (AP/AR).
Accounts can be grouped using relational methods ie flagged as a member of user definable account groups - rather than the old chart of accounts numbering structure.
Account groups can be nested so hierarchical structures can be accommodated - detailed profit and loss, balance sheet and trial balance all use account group structures to display reports.
Posting to prior periods can be disabled based on transaction date to prevent prior periods being changed.
Charts of accounts can be held in multiple languages with the user seeing the GL account names in their own languages.
Multi-level bill of materials - with error trapping to prevent recursive BOMs.
Phantom bills - automatically explode into components when a parent work order is created.
Automatic cost rolls ups on change of BOM or component costs.
Works orders can have multiple output items for handling by-products.
Optional automatic backflushing or auto-issue of components.
Issues to works orders and receipts of finished goods from work orders integrated to inventory and GL.
Issue of labour and time or other services to works order.
Work order costing - automatic weighted average cost updates (or manual standard costing updates).
Usage variances reported to GL - inventory category record determines GL accounts.
Demand for components of work orders shows in stock status inquiries.
Full MRP - Material Requirements Planning with master production schedule/forecast maintenance and creation facilities. Fast full recursive calculation of MRP - (note that capacity requirements planning and MRP II functionality is NOT currently available in KwaMoja).
Job costings can be created for a selected customer using stock and other requirements. These can be converted into a quotation and if the quotation is accepted a sales order/work order.
Issuing stock to the job is handled like any other work order until the contract/job is invoiced
Full report on contract/job variances from quoted costs
Fixed Asset Register
Asset additions through purchase orders or supplier invoice entry directly.
Disposals of fixed assets through normal sales order entry - asset to be disposed can be selected for sale.
Fixed Asset register covers a period showing additions, depreciation and disposals for that period.
Integrated GL entries created based on asset category GL codes if creditors and debtors are linked to GL.