OpenERP – Thai Withholding Tax

Withholding Tax is a required feature if you do business in Thailand (and as I know in many other part of the world), yet we found it not available in many standard ERP packages. Ecosoft has developed an extension to accounting module which will make it comply with Thai Withholding Tax rule and is now freely available at http://apps.openerp.com (search for account_thai_wht).

What is Withholding Tax?

When an organisation render Services from vendor or provide services to customer, there will be withholding tax payable or withholding tax receivable occur in business process. The tax will be withheld from the full amount of service price to pay to the Revenue Department on monthly basis in case of Tax Payable and to be credited on Corporate Income Tax at the end of year in case of Tax Receivable.

References: Withholding Tax in Thailand

Sample Case

Following is the sample case we will use to explain how it works in this tutorial.

Service Fee: 1,000, Tax (VAT) 7%: 70, WHT 3%: 30 ==> Total 1,070, Withhold 30

Setup OpenERP for Withholding Tax

  • Install addons account_thai_wht (it also depend on some other modules need to get it seperately from apps.openerp.com)
  • Go to Tax window and create new Withholding Tax. Also note that we can specify minimum threshold amount that this tax will apply

thai_wht_tax_setup

Working Steps:

  • Create Purchase Order for a Service, amount 1,000. As it is Service type it will require 2 kind of taxes 1) VAT 2) Withholding Tax
  • As you will see, for Withholding Tax, although specified, will not deducted yet, as it will be so in Payment.

thai_wht_tax_po

  • Once Purchase Order is confirmed, and Invoice is created, you will see in the invoice all the detail about VAT and Withholding Tax.
  • But again, Withholding Tax is not yet deducted in invoice.

thai_wht_tax_inv

  • And finally for the Supplier Payment, company need not pay full amount of 1,070 but only 1,040 as 30 will be withheld for the Revenue Department

thai_wht_tax_pay

Withholding Tax is a very important feature when implement OpenERP in Thailand.  That’s just the simply example but the same will apply for Sales Cycle, partial payment (and partial WHT) is also supported, account Posting will be done automatically.

Finally we can print out the Withholding Tax Certificate (หนังสือรับรองหัก ณ. ที่จ่าย).

thai_wht_cert

Note: addon jasper_reports is required to print CERT

Multi-Supplier Purchase Requisitions

One problem about existing PR module of OpenERP is that, it is too simple and in most case does not enough for real life business. Standard PR allow user to select only 1 supplier per creation of the purchase quotation.

Ecosoft has developed a new extension to PR module which will make it more flexible and easy to use and is now freely available at http://apps.openerp.com (search for purchase_requisition_multi_supplier).

Here is how the standard OpenERP’s PR works,

  1. User fill in PR with required products
  2. Click [Request a Quotation] button and select supplier
  3. Quotation created to this supplier with all product lines from PR
  4. Repeat the steps to create more quotations for other suppliers, add or remove products each time if not exact same products to issue for next supplier

pr_standard

Note:

As you can see, this is a bit cumbersome, given that a PR request from 1 user can consist of many product of which might be valid only to some supplier. And that, user might not know that from when they request for products.

To make it more flexible, the new addon allow user (and/or purchase manager) to select multiple suppliers in each line of products, also with the option to group, split, overwrite supplier. Clicking [Request a Quotation] button will create multiple purchase quotations each with valid supplier in one go.

Here is how the Multi-Supplier PR works,

  1. User fill in PR with required products
  2. User / Purchase Manager, who knows supplier to source for product select 1 or multiple suppliers in each product line.
  3. User can first select only the product line to make quotation then click [Request a Quotation], the wizard show options to,
    • Grouping: to group product with same supplier to the same quotation, otherwise will split one by one
    • Overwrite Supplier: to not use the supplier in product line, but rightly select from here (same as standard)
  4. Multiple quotations created to appropriate suppliers with all product lines being specified, in one go!

pr_multi_supplier

Schedule Backup and Restore Database with contrab_config

Backup and Restore Database with ease, contrab_config is the new module developed by Ecosoft and is now freely available at http://apps.openerp.com (search for contrab_config).

The difference between this schedule backup addons and others is that, this addon will write a crontab scheduler to run at OS level. This can ensure that, no matter OpenERP server is running or not, the backup and restore process still works!

crontab_config

This module do the following,

  1. On scheduled time, backup database <DB>
  2. Restore it as <DB>_TEST
  3. Update company logo in <DB>_TEST with the new image (i.e., with TEST mark)

By default simply install this module and it should work. If you need more configuration, you might need to do more setup.

Note: crontab scheduler will be created only when State = Confirmed and Active = True

Setup Procedure

Menu -> Setting/Technical/Scheduler/Crontab Configuration

Fields:

  1. Crontab Name – name of crontab
  2. Description – more information
  3. Scheduling – crontab scheduling
    • Minute: 0-59
    • Hour: 0-23
    • Day: 1-31
    • Month: 1-12
    • Weekday: 0-6, where 0 = Sunday
  4. Execute Directory – OpenERP’s root path to be used for log file, Temp File, DB Backup File and etc (depends on type of program)
  5. Command – command to run the program in command line interface pattern, require full path.
  6. Active – when True, will create crontab scheduler in OS. When False will delete it.
  7. Status
    • Draft
    • Confirmed
    • Cancelled
  8. Attach File – Additional files, to be used in process (optional)