Stable branch merged up to 2.3.21
authorJanusz Dobrowolski <janusz@frontaccouting.eu>
Sat, 31 May 2014 11:33:31 +0000 (13:33 +0200)
committerJanusz Dobrowolski <janusz@frontaccouting.eu>
Sat, 31 May 2014 11:33:31 +0000 (13:33 +0200)
198 files changed:
.hgtags
.htaccess
CHANGELOG.txt
admin/db/company_db.inc
admin/db/fiscalyears_db.inc
admin/db/maintenance_db.inc
admin/display_prefs.php
admin/gl_setup.php
admin/inst_upgrade.php
admin/void_transaction.php
applications/customers.php
applications/generalledger.php
applications/suppliers.php
config.default.php
dimensions/view/view_dimension.php
doc/api_changes.txt [new file with mode: 0644]
gl/accruals.php
gl/bank_account_reconcile.php
gl/bank_transfer.php
gl/gl_bank.php
gl/gl_journal.php
gl/includes/db/gl_db_accounts.inc
gl/includes/db/gl_db_bank_accounts.inc
gl/includes/db/gl_db_banking.inc
gl/includes/db/gl_db_trans.inc
gl/includes/ui/gl_bank_ui.inc
gl/includes/ui/gl_journal_ui.inc
gl/inquiry/bank_inquiry.php
gl/inquiry/gl_account_inquiry.php
gl/inquiry/gl_trial_balance.php
gl/inquiry/profit_loss.php
gl/inquiry/tax_inquiry.php
gl/manage/bank_accounts.php
gl/manage/close_period.php [new file with mode: 0644]
gl/manage/gl_accounts.php
gl/manage/revaluate_currencies.php
gl/view/accrual_trans.php
gl/view/gl_deposit_view.php
gl/view/gl_payment_view.php
gl/view/gl_trans_view.php
includes/access_levels.inc
includes/app_entries.inc [new file with mode: 0644]
includes/current_user.inc
includes/data_checks.inc
includes/date_functions.inc
includes/db/allocations_db.inc [new file with mode: 0644]
includes/db/audit_trail_db.inc
includes/db/connect_db.inc
includes/db/connect_db_mysql.inc [new file with mode: 0644]
includes/db/connect_db_mysqli.inc [new file with mode: 0644]
includes/db/inventory_db.inc
includes/db_pager.inc
includes/errors.inc
includes/hooks.inc
includes/lang/language.php
includes/main.inc
includes/prefs/sysprefs.inc
includes/prefs/userprefs.inc
includes/references.inc
includes/session.inc
includes/sysnames.inc
includes/system_tests.inc
includes/types.inc
includes/ui/allocation_cart.inc
includes/ui/items_cart.inc
includes/ui/ui_controls.inc
includes/ui/ui_input.inc
includes/ui/ui_lists.inc
includes/ui/ui_view.inc
install/lang/ar_EG/LC_MESSAGES/ar_EG.po
install/lang/fr_FR/LC_MESSAGES/fr_FR.mo
install/lang/fr_FR/LC_MESSAGES/fr_FR.po
install/lang/new_language_template/LC_MESSAGES/empty.po
install/lang/pl_PL/LC_MESSAGES/pl_PL.mo
install/lang/pl_PL/LC_MESSAGES/pl_PL.po
install/lang/pt_BR/LC_MESSAGES/pt_BR.po
inventory/adjustments.php
inventory/cost_update.php
inventory/includes/db/items_category_db.inc
inventory/includes/db/items_db.inc
inventory/includes/db/items_trans_db.inc
inventory/inquiry/stock_movements.php
inventory/inquiry/stock_status.php
inventory/manage/item_categories.php
inventory/manage/items.php
inventory/prices.php
inventory/purchasing_data.php
inventory/reorder_level.php
inventory/transfers.php
lang/new_language_template/LC_MESSAGES/empty.po
manufacturing/includes/db/work_order_costing_db.inc [new file with mode: 0644]
manufacturing/includes/db/work_order_issues_db.inc
manufacturing/includes/db/work_order_produce_items_db.inc
manufacturing/includes/db/work_orders_db.inc
manufacturing/includes/db/work_orders_quick_db.inc
manufacturing/includes/manufacturing_db.inc
manufacturing/includes/manufacturing_ui.inc
manufacturing/view/wo_costs_view.php [new file with mode: 0644]
manufacturing/work_order_add_finished.php
manufacturing/work_order_costs.php
manufacturing/work_order_entry.php
manufacturing/work_order_issue.php
purchasing/allocations/supplier_allocate.php
purchasing/includes/db/grn_db.inc
purchasing/includes/db/invoice_db.inc
purchasing/includes/db/invoice_items_db.inc
purchasing/includes/db/po_db.inc
purchasing/includes/db/supp_payment_db.inc
purchasing/includes/db/supp_trans_db.inc
purchasing/includes/db/suppalloc_db.inc
purchasing/includes/db/suppliers_db.inc
purchasing/includes/po_class.inc
purchasing/includes/purchasing_db.inc
purchasing/includes/purchasing_ui.inc
purchasing/includes/supp_trans_class.inc
purchasing/includes/ui/invoice_ui.inc
purchasing/includes/ui/po_ui.inc
purchasing/inquiry/po_search.php
purchasing/inquiry/po_search_completed.php
purchasing/inquiry/supplier_allocation_inquiry.php
purchasing/inquiry/supplier_inquiry.php
purchasing/manage/suppliers.php
purchasing/po_entry_items.php
purchasing/po_receive_items.php
purchasing/supplier_credit.php
purchasing/supplier_invoice.php
purchasing/supplier_payment.php
purchasing/view/view_po.php
purchasing/view/view_supp_invoice.php
reporting/includes/class.pdf.inc
reporting/includes/doctext.inc
reporting/includes/pdf_report.inc
reporting/includes/reporting.inc
reporting/rep102.php
reporting/rep107.php
reporting/rep108.php
reporting/rep109.php
reporting/rep110.php
reporting/rep111.php
reporting/rep112.php
reporting/rep113.php
reporting/rep202.php
reporting/rep209.php
reporting/rep210.php
reporting/rep304.php
reporting/rep305.php
reporting/rep409.php
reporting/rep601.php
reporting/rep602.php [new file with mode: 0644]
reporting/rep701.php
reporting/rep702.php
reporting/rep708.php
reporting/rep709.php
reporting/reports_main.php
sales/allocations/customer_allocate.php
sales/create_recurrent_invoices.php
sales/credit_note_entry.php
sales/customer_credit_invoice.php
sales/customer_delivery.php
sales/customer_invoice.php
sales/customer_payments.php
sales/includes/cart_class.inc
sales/includes/db/branches_db.inc
sales/includes/db/cust_trans_db.inc
sales/includes/db/custalloc_db.inc
sales/includes/db/customers_db.inc
sales/includes/db/payment_db.inc
sales/includes/db/sales_credit_db.inc
sales/includes/db/sales_delivery_db.inc
sales/includes/db/sales_invoice_db.inc
sales/includes/db/sales_order_db.inc
sales/includes/sales_db.inc
sales/includes/ui/sales_order_ui.inc
sales/inquiry/customer_allocation_inquiry.php
sales/inquiry/customer_inquiry.php
sales/inquiry/sales_deliveries_view.php
sales/inquiry/sales_orders_view.php
sales/manage/customer_branches.php
sales/manage/customers.php
sales/sales_order_entry.php
sales/view/view_invoice.php
sales/view/view_sales_order.php
sql/alter2.1.php
sql/alter2.2.php
sql/alter2.3.php
sql/alter2.4.php [new file with mode: 0644]
sql/alter2.4.sql [new file with mode: 0644]
sql/en_US-demo.sql
sql/en_US-new.sql
taxes/db/tax_groups_db.inc
taxes/db/tax_types_db.inc
taxes/tax_calc.inc
taxes/tax_groups.php
themes/aqua/images/closed.png [new file with mode: 0644]
themes/cool/images/closed.png [new file with mode: 0644]
themes/default/images/closed.png [new file with mode: 0644]
update.html
version.php

diff --git a/.hgtags b/.hgtags
index ee59e5d37c32db06fcf72bd2071bc1c4075157ed..19512328102e431aa7228f5d3345da8436aeaac3 100644 (file)
--- a/.hgtags
+++ b/.hgtags
@@ -57,5 +57,6 @@ a8b119b77f054c85223eb3a256268a3d5a61b3cb version_2_3_9
 b2ead0b2a3e30c13254288eddf587b5d8140d731 version_2_3_8
 06e6f1abb26edd035aa34a5180da99ca72fce5dd version_2_3_11
 05b037ff3c0b294819843e6bc5ca6ee7b6555176 version_2_3_12
+180d185518cfc3e4fbb6b9ba2279436145c30ebc unstable_2.3.13
 a253b76db0fb0a972672c174f4af7a7ad85df066 version_2_3_13
 2515a2808a2de65f2eeed795b98e3ef7dbf328ea version_2_3_14
index 05e1f772c98b3766c123ee778a1e9428030bde51..27e55548b09db271335cff27c39af8d8f09c4f4a 100644 (file)
--- a/.htaccess
+++ b/.htaccess
@@ -1,6 +1,8 @@
 # Protect sensitive files.
 <FilesMatch "\.(inc|po|sh|.*sql|log)$">
        Order allow,deny
+       Deny from All
+       Satisfy All
 </FilesMatch>
 
 # Disable directory listings.
index 2b23f80bab1c5a6b208474baf90d17b7e942ebb6..f75adf628203452ffd3fef339a12314d4a7fe98f 100644 (file)
 ------------
 This is a changelog for FrontAccounting All releases.
 
-2014-05-21 08:59 +0200 Janusz Dobrowolski
-(3386) Fixed unexpected additional GL postings when tax was used in Supplier Invoice additional GL lines.
- purchasing/includes/supp_trans_class.inc
- purchasing/supplier_credit.php
-
-2014-05-21 08:58 +0200 Janusz Dobrowolski
-(3385) Small code cleanups.
- includes/current_user.inc
- purchasing/supplier_invoice.php
-
-2014-04-26 09:14 +0200 Janusz Dobrowolski
-(3384) Added option to allow password reset (by Mithy).
- access/login.php
- access/password_reset.php
- admin/db/users_db.inc
- config.default.php
- includes/current_user.inc
- includes/session.inc
-
-2014-04-26 00:57 +0200 Janusz Dobrowolski
-(3383) Fixed directory traversal issues.
- admin/inst_module.php
- includes/hooks.inc
-
-2014-04-26 00:12 +0200 Janusz Dobrowolski
-(3382) Redirect all database errors to error log unless $go_debug is switched on.
- includes/errors.inc
-
-2014-04-26 00:01 +0200 Janusz Dobrowolski
-(3381) A couple of security issues fixed.
- access/logout.php
- admin/create_coy.php
- admin/db/users_db.inc
- includes/current_user.inc
- includes/session.inc
- inventory/includes/db/items_db.inc
- taxes/db/tax_types_db.inc
-
-2014-03-23 16:02 +0100 Janusz Dobrowolski
-(3380) Fixed email option labels in Supplier Reports.
- reporting/reports_main.php
-
-2014-05-05 16:19 +0200 Joe
-(3377) Allow changing currency on customer/supplier as long as no transactions exist.
- purchasing/manage/suppliers.php
- sales/manage/customers.php
-
-2014-05-04 09:46 +0200 Joe
-(3376) Backward compatible empty sql mode for MySql databases greater than release 5.5.
- includes/db/connect_db.inc
-
-2014-04-08 09:20 +0200 Joe
-(3375) Sending location email when below reorder also in Itmes Transfer and Adjustment
- inventory/includes/db/items_adjust_db.inc
- inventory/includes/db/items_transfer_db.inc
- inventory/includes/inventory_db.inc
- sales/includes/db/sales_order_db.inc
-
-2014-04-05 10:15 +0200 Joe
-(3374) Selecting the cancel button in confirming the voiding of document did not work properly. Rerun
- sales/sales_order_entry.php
-
-2014-04-05 10:08 +0200 Joe
-(3373) Selecting the cancel button in confirming the voiding of document did not work properly.
- sales/sales_order_entry.php
-
-2014-04-04 23:51 +0200 Joe
-(3372) When canceling a non finished sales quotation FA should not try to delete record.
- sales/sales_order_entry.php
-
-2014-04-03 16:37 +0200 Joe
-(3371) Bad elsif sentense in items.php (image upload)
- inventory/manage/items.php
-
-2014-03-11 23:57 +0100 Joe
-(3370) Changed decimal places in preferences to be number lists.
- admin/display_prefs.php
-
-2014-03-10 11:06 +0100 Joe
-(3369) Crusial update instructions
- update.html
-
-2014-03-10 11:01 +0100 Joe
-(3368) New CHANGELOG.txt
- CHANGELOG.txt
-
-2014-03-10 10:58 +0100 Joe
-(3367) Release 2.3.20
- version.php
-
-2014-03-10 10:18 +0100 Janusz Dobrowolski
-(3366) Gettext template update.
- lang/new_language_template/LC_MESSAGES/empty.po
-
-2014-03-07 00:57 +0100 Janusz Dobrowolski
-(3365) Fixed security issues in file uploads.
- admin/attachments.php
- admin/company_preferences.php
- admin/inst_lang.php
- includes/main.inc
- inventory/includes/inventory_db.inc
-
-2014-03-10 10:15 +0100 Joe
-(3364) fixed a check that company logo exists when using header3.
- reporting/includes/pdf_report.inc
-
-2014-02-07 09:02 +0100 Joe
-(3363) If no memo on GL line in GL account inquiry, the comments for the voucher is shown on the line.
- gl/inquiry/gl_account_inquiry.php
-
-2014-02-07 01:13 +0100 Joe
-(3362) Supplier info not shown on gl inquiry for bank account.
- purchasing/includes/db/supp_payment_db.inc
-
-2014-02-04 15:35 +0100 Joe
-(3361) Supp credit notes should not be shown in allocable list.
- purchasing/includes/db/suppalloc_db.inc
-
-2014-02-04 12:47 +0100 Janusz Dobrowolski
-(3360) Fixed bug in Supplier Credit Note allocation to Purchase Invoice.
- purchasing/includes/db/invoice_db.inc
-
-2014-01-29 08:49 +0100 Joe
-(3359) Link customer payment entry after saving Invoice (if not cash)
- purchasing/supplier_invoice.php
- sales/customer_invoice.php
- sales/sales_order_entry.php
-
-2014-01-17 13:38 +0100 Joe
-(3358) 0002615: Rerun. voiding an allocated currency invoice doesn't clear FX account
- sales/includes/db/custalloc_db.inc
-
-2014-01-16 19:34 +0100 Joe
-(3357) 0002615: voiding an allocated currency invoice doesn't clear FX account
- purchasing/includes/db/suppalloc_db.inc
- sales/includes/db/custalloc_db.inc
-
-2013-12-28 21:04 +0100 Janusz Dobrowolski
-(3349) Added debtor_trans key on order_ field.
- sql/en_US-demo.sql
- sql/en_US-new.sql
-
-2013-12-10 08:21 +0100 Joe
-(3348) Avoiding redundant passes in Fiscal Year deletion.
- admin/db/fiscalyears_db.inc
-
-2013-12-05 09:58 +0100 Joe
-(3347) Rerun. Allowing more than one document attachment.
- admin/db/attachments_db.inc
-
-2013-12-05 00:17 +0100 Joe
-(3346) Inventory Items Movements always starts with 0 qty. Fixed.
- inventory/includes/db/movement_types_db.inc
-
-2013-12-04 10:24 +0100 Joe
-(3345) Allowing more than one document attachment.
- admin/db/attachments_db.inc
- includes/ui/ui_controls.inc
-
-2013-11-20 16:09 +0100 Janusz Dobrowolski
-(3344) Supplier Payments: Fixed error during payment allocation in strict MySQL mode.
- includes/ui/allocation_cart.inc
- purchasing/includes/db/suppalloc_db.inc
- purchasing/supplier_payment.php
-
-2013-11-19 17:35 +0100 Janusz Dobrowolski
-(3343) Fixed back link presented when trying to modify fully invoiced Customer Delivery.
- sales/customer_delivery.php
-
-2013-11-19 15:09 +0100 Janusz Dobrowolski
-(3342) Fixed inventory valuation bug after voiding foreign supplier GRN leading to negative inventory.
- includes/db/inventory_db.inc
- purchasing/includes/db/grn_db.inc
-
-2013-11-10 15:11 +0100 Janusz Dobrowolski
-(3341) Journal Inquiry (bank transaction view): fixed database error on bank transaction view triggered on some buggy MySQL versions.
- gl/includes/db/gl_db_bank_trans.inc
-
-2013-11-06 21:13 +0100 Janusz Dobrowolski
-(3340) Payments, Deposits: fixed false error when payment is made in customer/supplier currency.
- gl/gl_bank.php
-
-2013-11-06 08:01 +0100 Joe
-(3339) CHANGELOG
- CHANGELOG.txt
-
-2013-11-06 07:52 +0100 Joe
-(3338) Release 2.3.19
- CHANGELOG.txt
- version.php
-
-2013-11-05 17:55 +0100 Janusz Dobrowolski
-(3337) Gettext template update.
- lang/new_language_template/LC_MESSAGES/empty.po
-
-2013-11-03 14:39 +0100 Janusz Dobrowolski
-(3336) Supplier Invoice: Fixed tax input refresh after change in gl/grn items.
- purchasing/supplier_invoice.php
-
-2013-10-27 00:09 +0200 Janusz Dobrowolski
-(3325) Bank Payment View, Bank Deposit View: fixed 'left to allocate' amount, added value in customer/payment currency.
- gl/includes/db/gl_db_bank_trans.inc
- gl/view/gl_deposit_view.php
- gl/view/gl_payment_view.php
-
-2013-10-27 00:05 +0200 Janusz Dobrowolski
-(3324) Supplier Allocations: Bank Payments transactions were improperly available for supplier payments allocations.
- purchasing/includes/db/suppalloc_db.inc
-
-2013-10-26 19:15 +0200 Janusz Dobrowolski
-(3323) Bank Transfer: roundings for transfers between two currencies are posted to exchange variance account.
- gl/includes/db/gl_db_banking.inc
-
-2013-10-18 11:33 +0200 Joe
-(3322) Supplier transactions now show supplier reference for PO Deliveries.
- purchasing/includes/db/supp_trans_db.inc
-
-2013-10-14 13:53 +0200 Janusz Dobrowolski
-(3321) Fixed person contact deletion.
- includes/db/crm_contacts_db.inc
- includes/ui/contacts_view.inc
-
-2013-10-14 11:15 +0200 Joe
-(3320) When automatic creating a branch the contact is also created on the customer (Rerun).
- sales/manage/customers.php
-
-2013-10-14 00:00 +0200 Joe
-(3319) Ehen automatic creating a branch the contact is also created on the customer.
- sales/manage/customers.php
-
-2013-10-13 21:11 +0200 Janusz Dobrowolski
-(3318) Customer Allocation Inquiry, Supplier Allocation Inquiry: fixed payment forms initialization, different icons for playment and allocation links.
- config.default.php
- includes/types.inc
- purchasing/allocations/supplier_allocation_main.php
- purchasing/inquiry/supplier_allocation_inquiry.php
- purchasing/supplier_payment.php
- sales/allocations/customer_allocation_main.php
- sales/customer_payments.php
- sales/inquiry/customer_allocation_inquiry.php
- themes/aqua/images/alloc.png
- themes/cool/images/alloc.png
- themes/default/images/alloc.png
-
-2013-10-13 19:27 +0200 Janusz Dobrowolski
-(3317) Customer/Supplier Balances Reports: fixed error in recalculation to home currency value.
- reporting/rep101.php
- reporting/rep201.php
-
-2013-09-26 12:57 +0200 Joe
-(3316) Some documents views didn't show new lines in comments. Fixed.
- includes/ui/ui_view.inc
- purchasing/includes/db/po_db.inc
- sales/view/view_sales_order.php
-
-2013-09-24 17:45 +0200 Janusz Dobrowolski
-(3315) Supplier Payment: small fix in fixed ui translation.
- purchasing/supplier_payment.php
-
-2013-09-24 17:43 +0200 Janusz Dobrowolski
-(3314) Added portuguese translation for installer.
- install/isession.inc
- install/lang/pt_PT/LC_MESSAGES/pt_PT.mo
- install/lang/pt_PT/LC_MESSAGES/pt_PT.po
-
-2013-09-24 13:24 +0200 Janusz Dobrowolski
-(3313) Bank Payment/Bank Deposit: removed sparse sign from settled amount input, fixed sign in AR/AP record;
-Fixed amounts displayed in header for customer/supplier bank payments.
- gl/gl_bank.php
- gl/includes/db/gl_db_banking.inc
- gl/includes/ui/gl_bank_ui.inc
- purchasing/includes/db/supp_trans_db.inc
- sales/includes/db/cust_trans_db.inc
-
-2013-09-21 00:19 +0200 Janusz Dobrowolski
-(3312) Customer Payments, Payments to Supplier: improved readbility and multiply cleanups in payments allocations.
- includes/banking.inc
- includes/ui/allocation_cart.inc
- purchasing/allocations/supplier_allocate.php
- purchasing/includes/db/supp_trans_db.inc
- purchasing/includes/db/suppalloc_db.inc
- purchasing/includes/ui/invoice_ui.inc
- purchasing/inquiry/supplier_allocation_inquiry.php
- purchasing/supplier_payment.php
- purchasing/view/view_supp_payment.php
- sales/allocations/customer_allocate.php
- sales/allocations/customer_allocation_main.php
- sales/customer_payments.php
- sales/includes/db/cust_trans_db.inc
- sales/includes/db/custalloc_db.inc
- sales/inquiry/customer_allocation_inquiry.php
-
-2013-09-20 16:03 +0200 Janusz Dobrowolski
-(3311) Fixed bug in bank history check resulting in false negative balance errors.
- gl/includes/db/gl_db_bank_trans.inc
-
-2013-09-18 15:28 +0200 Janusz Dobrowolski
-(3310) Printer Profiles: fixed sql error on update under some MySQL versions.
- admin/db/printers_db.inc
-
-2013-09-18 15:01 +0200 Janusz Dobrowolski
-(3309) Supplier Payment, Payments, Bank Transfer: fixed account balance limit checks.
- gl/bank_transfer.php
- gl/gl_bank.php
- purchasing/supplier_payment.php
-
-2013-09-17 08:54 +0200 Janusz Dobrowolski
-(3308) Bank Transfer: fixed typo in input description.
- gl/bank_transfer.php
-
-2013-09-17 10:31 +0200 Joe
-(3307) 0002443: Receipts and Remittances now show discounts.
- reporting/rep112.php
- reporting/rep210.php
-
-2013-09-16 23:27 +0200 Joe
-(3306) 0002177: Currency problem in Item Sales Summary Report
- reporting/rep309.php
-
-2013-09-16 15:35 +0200 Janusz Dobrowolski
-(3305) [0002429] Supplier Invoice: tax was not updated on GRN line addition/removal.
- purchasing/supplier_invoice.php
-
-2013-09-16 12:49 +0200 Janusz Dobrowolski
-(3304) [0002340] Fixed problem with login after intallation, when special chars are used in password.
- install/isession.inc
-
-2013-09-14 18:07 +0200 Janusz Dobrowolski
-(3303) Various small code cleanups.
- gl/bank_transfer.php
- gl/includes/db/gl_db_banking.inc
- purchasing/supplier_payment.php
- sales/customer_payments.php
- sales/inquiry/customer_inquiry.php
-
-2013-09-11 13:19 +0200 Janusz Dobrowolski
-(3302) Units of Measure: fixed edition problems when abbreviation contains special characters.
- inventory/manage/item_units.php
-
-2013-09-06 10:48 +0200 Janusz Dobrowolski
-(3301) Page number is now printed on all documents (starting from second page).
- reporting/includes/header2.inc
-
-2013-09-16 10:55 +0200 Joe
-(3300) 0002430: Order Status Listing Report shows invoiced in heading rather than delivered. Fixed.
- reporting/rep105.php
-
-2013-09-05 14:39 +0200 Joe
-(3299) CHANGELOG.txt
- CHANGELOG.txt
-
-2013-09-05 14:36 +0200 Joe
-(3298) Release 2.3.18.
- version.php
-
-2013-09-05 14:17 +0200 Janusz Dobrowolski
-(3297) Updated gettext template.
- lang/new_language_template/LC_MESSAGES/empty.po
-
-2013-09-03 08:51 +0200 Janusz Dobrowolski
-(3296) Customer Payment: fixed missing charge amount during edition, fixed submit button name.
- includes/banking.inc
- sales/customer_payments.php
- sales/includes/db/cust_trans_db.inc
- sales/includes/db/payment_db.inc
- sales/view/view_receipt.php
-
-2013-09-02 13:28 +0200 Joe
-(3295) Bug no 2409 and 2410. Fixed headers and sql error when deleting a category.
- admin/crm_categories.php
-
-2013-08-31 09:32 +0200 Janusz Dobrowolski
-(3294) Customer Payment: fixed bug with exchange rates resulting in invalid postings ts AR and foreign Exchange Gain Accounts.
- sales/includes/db/payment_db.inc
-
-2013-08-29 22:18 +0200 Janusz Dobrowolski
-(3293) Delivery Against Sales Orders: sales orders displayed as overdue after delivery date.
- sales/inquiry/sales_orders_view.php
-
-2013-08-29 21:13 +0200 Janusz Dobrowolski
-(3292) Customer Balances Report, Supplier Balances Report: balances in home currency were calculated using wrong exchange rates.
- reporting/rep101.php
- reporting/rep201.php
-
-2013-08-25 20:39 +0200 Janusz Dobrowolski
-(3291) Fixed problem with customer payment allocations (invalid exrate stored in debtor_trans record).
- sales/includes/db/payment_db.inc
-
-2013-08-17 14:50 +0200 Janusz Dobrowolski
-(3290) Bank Transfer: fixed problem with entering transfer between accounts of the same currency.
- gl/bank_transfer.php
-
-2013-08-14 23:56 +0200 Janusz Dobrowolski
-(3289) Added F4 hotkey for item popup editor in sales documents.
- includes/ui/ui_lists.inc
- sales/includes/ui/sales_order_ui.inc
-
-2013-08-14 09:34 +0200 Joe
-(3288) Customer/Supplier payments with amounts bigger than 1,000 was truncated. Fixed.
- purchasing/supplier_payment.php
- sales/customer_payments.php
-
-2013-08-01 23:50 +0200 Joe
-(3287) New global flags in config.default.php
- update.html
-
-2013-08-01 12:35 +0200 Janusz Dobrowolski
-(3286) Langauage template update.
- lang/new_language_template/LC_MESSAGES/empty.po
-
-2013-08-01 12:25 +0200 Joe
-(3285) CHANGELOG.txt
- CHANGELOG.txt
-
-2013-08-01 12:23 +0200 Joe
-(3284) Release 2.3.17
- version.php
-
-2013-07-30 13:05 +0200 Janusz Dobrowolski
-(3283) Change password: added current password verification.
- admin/change_current_user_password.php
-
-2013-07-30 12:57 +0200 Janusz Dobrowolski
-(3282) Fixed CSRF warning after retrying password change.
- includes/ui/ui_controls.inc
-
-2013-06-23 21:22 +0100 Maxime Bourget
-(3281) Added get_dispatchable_quantity hook.
- includes/hooks.inc
- includes/ui/ui_controls.inc
- sales/customer_delivery.php
-
-2013-06-23 21:14 +0100 Maxime Bourget
-(3280) Updating sales order use UPDATE instead of DELETE/INSERT to preserve extra data added by extensions (if any)
- sales/includes/db/sales_order_db.inc
-
-2013-06-23 21:13 +0100 Maxime Bourget
-(3279) Added missing db_write_hook in update sales order.
- sales/includes/db/sales_order_db.inc
-
-2013-06-23 21:02 +0100 Maxime Bourget
-(3278) Improved db_pager widget sorting (now user column selection order is used).
- includes/db_pager.inc
-
-2013-06-23 20:58 +0100 Maxime Bourget
-(3277) Improved db_pager::set_sql to use array as well as query string.
- includes/db_pager.inc
-
-2013-06-23 20:54 +0100 Maxime Bourget
-(3276) Fixed qoh to return 0 instead of null when moves history is empty.
- includes/db/inventory_db.inc
-
-2013-06-27 23:22 +0200 Joe
-(3275) Touch by mistake
- .htaccess
-
-2013-06-27 22:59 +0200 Joe
-(3274) Fixed nested forms in Items tab.
- inventory/cost_update.php
- inventory/prices.php
- inventory/purchasing_data.php
- inventory/reorder_level.php
-
-2013-06-27 21:06 +0200 Janusz Dobrowolski
-(3273) Fixed bug in get_next_trans_no() resulting in invisibility of new stock movements entered after some transaction is voided (applies to location transfer and inventory adjustment).
- includes/systypes.inc
-
-2013-06-26 22:11 +0200 Janusz Dobrowolski
-(3272) Fixed session handling bug resulting in blank page on some pre-5.2 php versions.
- includes/session.inc
-
-2013-06-26 21:31 +0200 Janusz Dobrowolski
-(3271) Item Categories: categories table is now sorted by category description.
- inventory/includes/db/items_category_db.inc
-
-2013-06-26 21:24 +0200 Janusz Dobrowolski
-(3270) Fixed mysql 5.0 issue in Print Statements report
- reporting/rep108.php
-
-2013-06-10 20:47 +0200 Janusz Dobrowolski
-(3269) Fixed bug in voiding GRN/Purchase resulting in invalid average unit cost.
- includes/db/inventory_db.inc
- purchasing/includes/db/grn_db.inc
-
-2013-05-29 15:58 +0200 Janusz Dobrowolski
-(3268) Uniform display of exchange rate across aplication, added xr_provider_authoritative option, fixed bug in stored rate value.
- config.default.php
- gl/includes/db/gl_db_rates.inc
- gl/includes/ui/gl_bank_ui.inc
- includes/ui/ui_view.inc
- purchasing/includes/ui/grn_ui.inc
- purchasing/includes/ui/invoice_ui.inc
- purchasing/includes/ui/po_ui.inc
- sales/includes/ui/sales_credit_ui.inc
- sales/includes/ui/sales_order_ui.inc
-
-2013-05-27 19:36 +0200 Janusz Dobrowolski
-(3267) Customer Payment, Supplier Payment: payments can be done in any currency and properly allocated to invoices; exchange rate field removes (bank arte calculated automatically)
- js/payalloc.js
- purchasing/includes/db/supp_payment_db.inc
- purchasing/supplier_payment.php
- sales/customer_payments.php
- sales/includes/db/payment_db.inc
-
-2013-05-20 14:36 +0200 Janusz Dobrowolski
-(3266) Bank Transfer: additional field for target currency amount instead of exchange rate display.
- gl/bank_transfer.php
- gl/includes/db/gl_db_banking.inc
-
-2013-05-23 22:41 +0200 Janusz Dobrowolski
-(3265) Sales Delivery, Direct Invoice and Sales Credit: added exchange rate edition/storage on new transaction date.
- sales/includes/cart_class.inc
- sales/includes/db/sales_credit_db.inc
- sales/includes/db/sales_delivery_db.inc
- sales/includes/db/sales_invoice_db.inc
- sales/includes/ui/sales_order_ui.inc
- sales/sales_order_entry.php
-
-2013-05-23 15:18 +0200 Janusz Dobrowolski
-(3264) Direct GRN, GRN to PO, Direct Purchase Invoice: added exchange rate edition/storage on new transaction date.
- purchasing/includes/db/grn_db.inc
- purchasing/includes/db/invoice_db.inc
- purchasing/includes/po_class.inc
- purchasing/includes/supp_trans_class.inc
- purchasing/includes/ui/grn_ui.inc
- purchasing/includes/ui/invoice_ui.inc
- purchasing/includes/ui/po_ui.inc
- purchasing/po_entry_items.php
- purchasing/po_receive_items.php
-
-2013-05-23 13:07 +0200 Janusz Dobrowolski
-(3263) Fixed exchange rate ui to be editable for new rates only, bank payment/deposit use amount in supplier/customer currency instead of rate.
- gl/gl_bank.php
- gl/includes/db/gl_db_banking.inc
- gl/includes/db/gl_db_rates.inc
- gl/includes/ui/gl_bank_ui.inc
- includes/ui/ui_view.inc
-
-2013-05-20 14:41 +0200 Janusz Dobrowolski
-(3262) Fixing cookie.txt location during access to remote exchange rate server.
- gl/includes/db/gl_db_rates.inc
-
-2013-06-10 17:40 +0200 Janusz Dobrowolski
-(3261) Small fix in javascript routines to avoid naming conflicts for form.action object.
- js/utils.js
-
-2013-06-10 17:38 +0200 Janusz Dobrowolski
-(3260) faillog.php file moved to tmp subdir.
- includes/session.inc
-
-2013-05-24 10:41 +0200 Janusz Dobrowolski
-(3259) Fix to tax overrides (warning in add_supp_invoice()).
- purchasing/includes/db/invoice_db.inc
-
-2013-05-16 12:39 +0200 Janusz Dobrowolski
-(3258) Payments, Bank Transfer: Fixed payment limit checking bug.
- gl/bank_transfer.php
- gl/gl_bank.php
-
-2013-05-10 10:24 +0200 Janusz Dobrowolski
-(3257) Customer Credit Note: warning cleanup in write_credit_note().
- sales/includes/db/sales_credit_db.inc
-
-2013-05-09 10:52 +0200 Janusz Dobrowolski
-(3256) Supplier Invoices, Direct Invoice, Supplier Credit Notes: added editable tax totals fields to fix variations in tax calculations on supplier side.
- includes/ui/ui_view.inc
- purchasing/includes/db/invoice_db.inc
- purchasing/includes/po_class.inc
- purchasing/includes/supp_trans_class.inc
- purchasing/includes/ui/invoice_ui.inc
- purchasing/includes/ui/po_ui.inc
- purchasing/po_entry_items.php
-
-2013-05-09 10:43 +0200 Janusz Dobrowolski
-(3255) Fixed bug in cool theme renderer.php
- themes/cool/renderer.php
-
-2013-05-09 21:51 +0200 Joe Hunt
-(3253) Inventory Purchasing Report. Variable, $stock_dec, not in scope. Fixed.
- reporting/rep306.php
-
-2013-05-09 21:42 +0200 Joe Hunt
-(3252) Fixed a forgotton currency bug in GRN Valuation Report (rep305.php)
- reporting/rep305.php
-
-2013-05-08 15:51 +0200 Janusz Dobrowolski
-(3251) Updated empty.po template.
- lang/new_language_template/LC_MESSAGES/empty.po
-
-2013-05-08 14:42 +0200 Joe Hunt
-(3250) New language file, empty.po
- lang/new_language_template/LC_MESSAGES/empty.po
-
-2013-05-08 13:51 +0200 Joe Hunt
-(3249) CHANGELOG updated.
- CHANGELOG.txt
-
 2013-05-08 13:49 +0200 Joe Hunt
 (3248) Release 2.3.16
  update.html
index b75251d5feabc2cc0d3df5e95c29f1f061853660..9fd2e68c27adf2931ce65aeb9bb01586bd801526 100644 (file)
@@ -12,9 +12,9 @@
 /*
        Update main or gl company setup.
 */
-function update_company_prefs( $params, $pref = TB_PREF )
+function update_company_prefs($params)
 {
-       $sql = "UPDATE {$pref}sys_prefs SET value = ";
+       $sql = "UPDATE ".TB_PREF."sys_prefs SET value = ";
        foreach($params as $name => $value) {
                if (!db_query($sql. db_escape($value). " WHERE name=".db_escape($name),
                         "The company prefferences could not be updated "))
@@ -30,21 +30,15 @@ function update_company_prefs( $params, $pref = TB_PREF )
        $prefs can be preference name, array of names, or null for all preferences.
        
 */
-function get_company_pref($prefs = null, $tbpref = null)
+function get_company_pref($prefs = null)
 {
        global $SysPrefs, $db_version;
        
-       static $cached; // retrieve values from db once a request. Some values can't be cached between requests
-                                       // to ensure prefs integrity for all usrs (e.g. gl_close_date).
-       
-       if (!$cached || !isset($_SESSION['SysPrefs'])) { // cached preferences
+       if (!isset($_SESSION['SysPrefs']->prefs)) { // cached preferences
 
                $_SESSION['SysPrefs'] = new sys_prefs();
 
-               if (!isset($tbpref))
-                       $tbpref = TB_PREF;
-
-               $sql = "SELECT name, value FROM {$tbpref}sys_prefs";
+               $sql = "SELECT name, value FROM ".TB_PREF."sys_prefs";
                $result = @db_query($sql); // supress errors before 2.3 db structure upgrade
 
                if(!$result)
@@ -58,7 +52,6 @@ function get_company_pref($prefs = null, $tbpref = null)
 
                // update current db status for info in log file
                $SysPrefs->db_ok = $SysPrefs->prefs['version_id'] == $db_version;
-               $cached = true;
        }
 
        $all = $_SESSION['SysPrefs']->prefs;
@@ -75,15 +68,15 @@ function get_company_pref($prefs = null, $tbpref = null)
                return $ret;
 }
 
-function get_company_prefs($tbpref = TB_PREF)
+function get_company_prefs()
 {
-       return get_company_pref(null, $tbpref);
+       return get_company_pref(null);
 }
 
 function set_company_pref($pref, $category, $type, $length, $value)
 {
-       $sql = "REPLACE ".TB_PREF."sys_prefs SET name=".db_escape($pref).", category=".db_escape($category)
-               .", type=".db_escape($type).", length=".db_escape($length).", value=".db_escape($value);
+       $sql = "REPLACE `".TB_PREF."sys_prefs` SET `name`=".db_escape($pref).", `category`=".db_escape($category)
+               .", `type`=".db_escape($type).", `length`=".db_escape($length).", `value`=".db_escape($value);
        return db_query($sql, "cannot set company pref");
 }
 
index 29e826dc2cfde0cd65ca1ee835176a3551ae2d7f..a5a3aa040d95dec7a8a3c9e5b2ef2708e090c75f 100644 (file)
@@ -180,7 +180,7 @@ function open_year($year)
        $from = sql2date($myrow['begin']);
 
        begin_transaction();
-       open_transactions($from);
+       close_transactions(add_days($from, -1));
        commit_transaction();
 }
 
@@ -342,19 +342,26 @@ function delete_this_fiscalyear($selected_id)
        db_query($sql, "Could not delete exchange rates");
        $sql = "DELETE FROM ".TB_PREF."budget_trans WHERE tran_date <= '$to'";
        db_query($sql, "Could not delete exchange rates");
-       
-       $sql = "SELECT account, SUM(amount) AS amount FROM ".TB_PREF."gl_trans WHERE tran_date <= '$to' GROUP by account";
+       $sql = "SELECT account, SUM(amount) AS amount, person_type_id, person_id FROM "
+               .TB_PREF."gl_trans WHERE tran_date <= '$to' GROUP by account, person_type_id, person_id";
        $result = db_query($sql, "Could not retrieve gl trans");
        $trans_no = get_next_trans_no(ST_JOURNAL);
+
+       $last_account='';
        $new = false;
        while ($row = db_fetch($result))
        {
-               $sql = "DELETE FROM ".TB_PREF."gl_trans WHERE tran_date <= '$to' AND account = '{$row['account']}'";
-               db_query($sql, "Could not delete gl trans");
-               if (is_account_balancesheet($row['account']))
+               if ($last_account != $row['account']) // deletes all subledgers postings, so do it once for account
+               {
+                       $sql = "DELETE FROM ".TB_PREF."gl_trans WHERE tran_date <= '$to' AND account = '{$row['account']}'";
+                       db_query($sql, "Could not delete gl trans");
+                       $last_account = $row['account'];
+               }
+               if (is_account_balancesheet($row['account']) && $row['amount'])
                {
-                       $sql = "INSERT INTO ".TB_PREF."gl_trans (type, type_no, tran_date, account, memo_, amount) VALUES
-                               (".ST_JOURNAL.", $trans_no, '$to', '{$row['account']}', '$ref', {$row['amount']})";
+                       $sql = "INSERT INTO ".TB_PREF."gl_trans (type, type_no, tran_date, account, memo_, amount, person_type_id, person_id) VALUES
+                               (".ST_JOURNAL.", $trans_no, '$to', '{$row['account']}', '$ref', {$row['amount']}, "
+                               .db_escape($row['person_type_id'], true).", ".db_escape($row['person_id'], true).")";
                        db_query($sql, "Could not insert gl trans");
                        $new = true;
                }
index c9e07c57ad2d7f059075b8b66dcd6f19fe30d699..d2a726075076fff7f0196e2f1f081f048ade47fa 100644 (file)
@@ -252,8 +252,16 @@ function write_lang()
        }
        return true;
 }
-
-function db_import($filename, $connection, $force=true)
+/*
+       Database import:
+               $filename - sql file name
+               $connection - database connection
+               $force - ignore duplicate errors
+               $init - presume $filename is initialization file with '0_' prefix
+               $protect - protect users/roles 
+               $return_errors - return errors instead of display them
+*/
+function db_import($filename, $connection, $force=true, $init=true, $protect=false, $return_errors=false)
 {
        global $db, $go_debug, $sql_trail;
 
@@ -265,10 +273,17 @@ function db_import($filename, $connection, $force=true)
                "alter table" => 'table_queries', 
                "insert" => 'data_queries', 
                "update" => 'data_queries', 
+               "set names" => 'set_names',
                "drop table if exists" => 'drop_queries',
                "drop function if exists" => 'drop_queries',
                "drop trigger if exists" => 'drop_queries',
                );
+
+       $protected = array(
+               'security_roles',
+               'users'
+       );
+
        $ignored_mysql_errors = array( //errors ignored in normal (non forced) mode
                '1022', // duplicate key
                '1050', // Table %s already exists
@@ -277,11 +292,15 @@ function db_import($filename, $connection, $force=true)
                '1062', // duplicate key entry
                '1091'  // can't drop key/column check if exists
        );
+
+       $set_names = array();
        $data_queries = array();
        $drop_queries = array();
        $table_queries = array();
        $sql_errors = array();
 
+       $old_encoding = mysql_client_encoding();
+
        ini_set("max_execution_time", "180");
        db_query("SET foreign_key_checks=0");
        // uncrompress gziped backup files
@@ -295,11 +314,13 @@ function db_import($filename, $connection, $force=true)
        // parse input file
        $query_table = '';
        $delimiter = ';';
+
        foreach($lines as $line_no => $line)
        {
                $line = trim($line);
                
-               $line = str_replace("0_", $connection["tbpref"], $line);
+               if ($init)
+                       $line = str_replace("0_", $connection["tbpref"], $line);
 
                if ($query_table == '') 
                {       // check if line begins with one of allowed queries
@@ -312,7 +333,17 @@ function db_import($filename, $connection, $force=true)
                                                continue 2;
                                        }
                                        $query_table = $table;
-                                       ${$query_table}[] = array('', $line_no+1);
+                                       $skip = false;
+                                       if ($protect)
+                                       {
+                                               foreach($protected as $protbl)
+                                                       if (strpos($line, $connection["tbpref"].$protbl) !== false)
+                                                       {
+                                                               $skip = true; break;
+                                                       }
+                                       }
+                                       if (!$skip)
+                                               ${$query_table}[] = array('', $line_no+1);
                                        break;
                                }
                        }
@@ -326,20 +357,63 @@ function db_import($filename, $connection, $force=true)
                                $line = substr($line, 0, strlen($line) - strlen($delimiter)); // strip delimiter
                                $query_table = '';
                        }
-                       ${$table}[count(${$table}) - 1][0] .= $line . "\n";
+                       if (!$skip)
+                               ${$table}[count(${$table}) - 1][0] .= $line . "\n";
                }
-               
+
        }
-/*
-       {       // for debugging purposes
+
+       //
+       // 'set names' or equivalents should be used only on post 2.3 FA versions
+       // otherwise text encoding can be broken during import
+       //
+       $encoding = null; // UI encoding for default site language is the default
+       $new_db = $init || db_fixed();
+       $new_file = count($set_names);
+       if ($new_db)
+       {
+               if ($new_file)
+               {
+                       if (count($set_names)) // standard db restore
+                       {
+                               if (preg_match('/set\s*names\s*[\']?(\w*)[\']?/i', $set_names[0][0], $match))
+                                       $encoding = $match[1];
+                       }
+                       // otherwise use default site ui encoding
+               }
+       }
+       else
+       {
+               if ($new_file) // import on old db is forbidden: this would destroy db content unless latin1 was used before in UI
+               {
+                       $msg = _("This is new format backup file which cannot be restored on database not migrated to utf8.");
+                       if ($return_errors)
+                               return $msg;
+                       else
+                               display_error($msg);
+                       return false;
+               }
+                else   // backup restore during upgrade failure
+                       $encoding = 'latin1'; // standard encoding on mysql client
+       }
+
+       mysql_set_charset($encoding);
+
+/*/    {       // for debugging purposes
        global $path_to_root;
        $f = fopen($path_to_root.'/tmp/dbimport.txt', 'w+');
+       fwrite($f, print_r($set_names,true) ."\n");
        fwrite($f, print_r($drop_queries,true) ."\n");
        fwrite($f, print_r($table_queries,true) ."\n");
        fwrite($f, print_r($data_queries,true));
        fclose($f);
        }
-*/
+/*/
+       if ($return_errors)
+       {       // prevent errors display
+               $save_debug = $go_debug;
+               $go_debug = 0;
+       }
        // execute drop tables if exists queries
        if (is_array($drop_queries))
        {
@@ -380,10 +454,18 @@ function db_import($filename, $connection, $force=true)
                }
        }
 
+       if ($return_errors)
+               $go_debug = $save_debug;
+
        db_query("SET foreign_key_checks=1");
        if ($delimiter != ';') db_query("delimiter ;"); // just for any case
 
+       mysql_set_charset($old_encoding); // restore connection encoding
+
        if (count($sql_errors)) {
+               if ($return_errors)
+                       return $sql_errors;
+
                // display first failure message; the rest are probably derivative 
                $err = $sql_errors[0];
                display_error(sprintf(_("SQL script execution failed in line %d: %s"),
@@ -446,19 +528,22 @@ function db_unzip($mode, $path)
        return explode("\n", $file_data);
 }
 
-function db_backup($conn, $ext='no', $comm='', $tbpref = TB_PREF)
+function db_backup($conn, $ext='no', $comm='', $path=null)
 {
        if ($conn['tbpref'] != "")
                $filename = $conn['dbname'] . "_" . $conn['tbpref'] . date("Ymd_Hi") . ".sql";
        else
                $filename = $conn['dbname'] . "_" . date("Ymd_Hi") . ".sql";
 
-       return db_export($conn, clean_file_name($filename), $ext, $comm, $tbpref);
-}
+       if (!isset($path))
+               $path = BACKUP_PATH;
 
-// generates a dump of $db database
-// $drop and $zip tell if to include the drop table statement or dry to pack
-function db_export($conn, $filename, $zip='no', $comment='', $tbpref = TB_PREF, $no_default=false)
+       return db_export($conn, $path . clean_file_name($filename), $ext, $comm);
+}
+//
+// Generates a dump of $db database
+//
+function db_export($conn, $filename, $zip='no', $comment='')
 {
 
        global $app_title, $version, $power_url, $path_to_root;
@@ -477,7 +562,10 @@ function db_export($conn, $filename, $zip='no', $comment='', $tbpref = TB_PREF,
        $backupfile = $filename . ".zip";
     else
        $backupfile = $filename;
-    $company = get_company_pref('coy_name', $tbpref);
+    $company = $conn['name']; // get_company_pref('coy_name');
+
+       if (file_exists($backupfile))   // prevent appends
+               unlink($backupfile);
 
     //create comment
     $out="# MySQL dump of database '".$conn["dbname"]."' on host '".$conn["host"]."'\n";
@@ -486,6 +574,7 @@ function db_export($conn, $filename, $zip='no', $comment='', $tbpref = TB_PREF,
     $out.="# ".$power_url."\n";
     $out.="# Company: ". @html_entity_decode($company, ENT_QUOTES, $_SESSION['language']->encoding)."\n";
     $out.="# User: ".$_SESSION["wa_current_user"]->name."\n\n";
+    $out.="# Compatibility: ".get_company_pref('version_id')."\n\n";
 
        // write users comment
        if ($comment)
@@ -500,6 +589,12 @@ function db_export($conn, $filename, $zip='no', $comment='', $tbpref = TB_PREF,
 
     //$out.="use ".$db.";\n"; we don't use this option.
 
+       if (db_fixed())
+       {
+               db_set_encoding();
+               if ($mysql_enc = get_mysql_encoding_name($_SESSION['language']->encoding))
+                       $out .= "\nSET NAMES $mysql_enc;\n";
+       }
     // get auto_increment values and names of all tables
     $res = db_query("show table status");
     $all_tables = array();
@@ -549,8 +644,6 @@ function db_export($conn, $filename, $zip='no', $comment='', $tbpref = TB_PREF,
                        $out.="### Structure of table `".$tablename."` ###\n\n";
 
                        $out.="DROP TABLE IF EXISTS `".$tablename."`;\n\n";
-                       if ($no_default && ($def_pos = strpos($table_sql[$tablename], "DEFAULT CHARSET")) > 0)
-                               $table_sql[$tablename] = substr($table_sql[$tablename], 0, $def_pos);
                        $out.=$table_sql[$tablename];
 
                        // add auto_increment value
@@ -625,7 +718,7 @@ function db_export($conn, $filename, $zip='no', $comment='', $tbpref = TB_PREF,
                        }
                        elseif ($error)
                        {
-                               @unlink(BACKUP_PATH . $backupfile);
+                               @unlink($backupfile);
                                return false;
                        }
 
@@ -643,7 +736,7 @@ function db_export($conn, $filename, $zip='no', $comment='', $tbpref = TB_PREF,
        }
        else
        {
-               @unlink(BACKUP_PATH . $backupfile);
+               @unlink($backupfile);
                return false;
        }
 
@@ -655,7 +748,7 @@ function db_export($conn, $filename, $zip='no', $comment='', $tbpref = TB_PREF,
        }
        else
        {
-               @unlink(BACKUP_PATH . $backupfile);
+               @unlink($backupfile);
                return false;
        }
     return $backupfile;
@@ -712,13 +805,15 @@ function order_sql_tables($tables, $fks)
 
 // saves the string in $fileData to the file $backupfile as gz file or not ($zip)
 // returns backup file name if name has changed (zip), else TRUE. If saving failed, return value is FALSE
-function save_to_file($backupfile, $zip, $fileData)
+function save_to_file($path, $zip, $fileData)
 {
        global $path_to_root;
 
+       $backupfile = basename($path);
+
     if ($zip == "gzip")
     {
-        if ($zp = @gzopen(BACKUP_PATH . $backupfile, "a9"))
+        if ($zp = @gzopen($path, "a9"))
         {
                        @gzwrite($zp, $fileData);
                        @gzclose($zp);
@@ -795,7 +890,7 @@ function save_to_file($backupfile, $zip, $fileData)
         // total # of entries "on this disk", total # of entries overall, size of central dir, offset to start of central dir, .zip file comment length
         $fileData .= pack('v', 1) . pack('v', 1) . pack('V', strlen($cdrec)) . pack('V', strlen($fr)) . "\x00\x00";
 
-        if ($zp = @fopen(BACKUP_PATH . $backupfile, "a"))
+        if ($zp = @fopen($path, "w"))
         {
                        @fwrite($zp, $fileData);
                        @fclose($zp);
@@ -810,7 +905,7 @@ function save_to_file($backupfile, $zip, $fileData)
     }
     else
     {
-        if ($zp = @fopen(BACKUP_PATH . $backupfile, "a"))
+        if ($zp = @fopen($path, "a"))
         {
                        @fwrite($zp, $fileData);
                        @fclose($zp);
@@ -875,4 +970,27 @@ function check_table($pref, $table, $field=null, $properties=null)
        return 2; // field not found
 }
 
+/*
+       Update or create setting in simple php config file.
+*/
+function update_config_var($file, $variable, $value, $comment='')
+{
+       if (!is_file($file) || !is_writeable($file))
+               return false;
+       $content = file_get_contents($file);
+       $strvalue = '$'."$variable = ".var_export($value, true).';';
+       $pattern = '/'.preg_quote('$'.$variable).'\s*=\s*[^;]*;/m';
+       $content = preg_replace($pattern, $strvalue, $content, -1, $result);
+       if (!$result)
+       {
+               $strvalue = ($comment ? "// $comment" : '') ."\n$strvalue\n";
+               $content = preg_replace('/\?>\s*/m', $strvalue, $content, -1, $result);
+               if (!$result)
+                       $content .= $strvalue;
+       }
+
+       return file_put_contents($file, $content)!=false;
+}
+
+
 ?>
\ No newline at end of file
index 18946112da2888cdbcb4ba7148d4bef2b5c07d14..e4a69f75c456d51b57680523c7bad9b6199d128e 100644 (file)
@@ -42,7 +42,7 @@ if (isset($_POST['setprefs']))
                        'theme', 'page_size', 'language', 'startup_tab',
                        'show_gl' => 0, 'show_codes'=> 0, 'show_hints' => 0,
                        'rep_popup' => 0, 'graphic_links' => 0, 'sticky_doc_date' => 0,
-                       'query_size' => 10.0)));
+                       'query_size' => 10.0, 'transaction_days' => 30)));
 
                if ($chg_lang)
                        $_SESSION['language']->set_language($_POST['language']);
@@ -138,6 +138,8 @@ text_row_ex(_("Query page size:"), 'query_size',  5, 5, '', user_query_size());
 check_row(_("Remember last document date:"), 'sticky_doc_date', sticky_doc_date(),
        false, _('If set document date is remembered on subsequent documents, otherwise default is current date'));
 
+text_row_ex(_("Transaction days:"), 'transaction_days', 5, 5, '', user_transaction_days());
+
 end_outer_table(1);
 
 submit_center('setprefs', _("Update"), true, '',  'default');
index 26309baa2a8cef38189f1f909eb5d64a59cbb079..79cda9b9911aaabbdc52770a66f8f1ef9c65dcda 100644 (file)
@@ -67,12 +67,12 @@ function can_process()
 if (isset($_POST['submit']) && can_process())
 {
        update_company_prefs( get_post( array( 'retained_earnings_act', 'profit_loss_year_act',
-               'debtors_act', 'pyt_discount_act', 'creditors_act', 'freight_act',
+               'debtors_act', 'pyt_discount_act', 'creditors_act', 'freight_act', 'deferred_income_act',
                'exchange_diff_act', 'bank_charge_act', 'default_sales_act', 'default_sales_discount_act',
                'default_prompt_payment_act', 'default_inventory_act', 'default_cogs_act',
                'default_adj_act', 'default_inv_sales_act', 'default_assembly_act', 'legal_text',
-               'past_due_days', 'default_workorder_required', 'default_dim_required',
-               'default_delivery_required', 'grn_clearing_act',
+               'past_due_days', 'default_workorder_required', 'default_dim_required', 'default_receival_required',
+               'default_delivery_required', 'grn_clearing_act', 'tax_algorithm',
                'allow_negative_stock'=> 0, 'accumulate_shipping'=> 0,
                'po_over_receive' => 0.0, 'po_over_charge' => 0.0, 'default_credit_limit'=>0.0
 )));
@@ -93,6 +93,10 @@ if (get_company_pref('grn_clearing_act') === null) { // available from 2.3.1, ca
        set_company_pref('grn_clearing_act', 'glsetup.purchase', 'varchar', 15, 0);
        refresh_sys_prefs();
 }
+if (get_company_pref('default_receival_required') === null) { // new in 2.4 installations
+       set_company_pref('default_receival_required', 'glsetup.purchase', 'smallint', 6, '10');
+       refresh_sys_prefs();
+}
 
 $myrow = get_company_prefs();
 
@@ -101,10 +105,12 @@ $_POST['profit_loss_year_act']  = $myrow["profit_loss_year_act"];
 $_POST['debtors_act']  = $myrow["debtors_act"];
 $_POST['creditors_act']  = $myrow["creditors_act"];
 $_POST['freight_act'] = $myrow["freight_act"];
+$_POST['deferred_income_act'] = $myrow["deferred_income_act"];
 $_POST['pyt_discount_act']  = $myrow["pyt_discount_act"];
 
 $_POST['exchange_diff_act'] = $myrow["exchange_diff_act"];
 $_POST['bank_charge_act'] = $myrow["bank_charge_act"];
+$_POST['tax_algorithm'] = $myrow["tax_algorithm"];
 $_POST['default_sales_act'] = $myrow["default_sales_act"];
 $_POST['default_sales_discount_act']  = $myrow["default_sales_discount_act"];
 $_POST['default_prompt_payment_act']  = $myrow["default_prompt_payment_act"];
@@ -130,6 +136,7 @@ $_POST['accumulate_shipping'] = $myrow['accumulate_shipping'];
 $_POST['default_workorder_required'] = $myrow['default_workorder_required'];
 $_POST['default_dim_required'] = $myrow['default_dim_required'];
 $_POST['default_delivery_required'] = $myrow['default_delivery_required'];
+$_POST['default_receival_required'] = $myrow['default_receival_required'];
 
 //---------------
 
@@ -146,6 +153,8 @@ gl_all_accounts_list_row(_("Exchange Variances Account:"), 'exchange_diff_act',
 
 gl_all_accounts_list_row(_("Bank Charges Account:"), 'bank_charge_act', $_POST['bank_charge_act']);
 
+tax_algorithm_list_row(_("Tax Algorithm:"), 'tax_algorithm', $_POST['tax_algorithm']);
+
 //---------------
 
 table_section_title(_("Customers and Sales"));
@@ -154,10 +163,13 @@ text_row(_("Default Credit Limit:"), 'default_credit_limit', $_POST['default_cre
 
 check_row(_("Accumulate batch shipping:"), 'accumulate_shipping', null);
 
-textarea_row(_("Legal Text on Invoice:"), 'legal_text', $_POST['legal_text'], 32, 3);
+textarea_row(_("Legal Text on Invoice:"), 'legal_text', $_POST['legal_text'], 32, 4);
 
 gl_all_accounts_list_row(_("Shipping Charged Account:"), 'freight_act', $_POST['freight_act']);
 
+gl_all_accounts_list_row(_("Deferred Income Account:"), 'deferred_income_act', $_POST['deferred_income_act'], true, false,
+       _("Not used"), false, false, false);
+
 //---------------
 
 table_section_title(_("Customers and Sales Defaults"));
@@ -173,14 +185,15 @@ gl_all_accounts_list_row(_("Prompt Payment Discount Account:"), 'default_prompt_
 
 text_row(_("Delivery Required By:"), 'default_delivery_required', $_POST['default_delivery_required'], 6, 6, '', "", _("days"));
 
-//----------------
+//---------------
 
 table_section(2);
 
 table_section_title(_("Dimension Defaults"));
 
 text_row(_("Dimension Required By After:"), 'default_dim_required', $_POST['default_dim_required'], 6, 6, '', "", _("days"));
-//---------------
+
+//----------------
 
 table_section_title(_("Suppliers and Purchasing"));
 
@@ -196,6 +209,8 @@ gl_all_accounts_list_row(_("Purchase Discount Account:"), 'pyt_discount_act', $_
 
 gl_all_accounts_list_row(_("GRN Clearing Account:"), 'grn_clearing_act', get_post('grn_clearing_act'), true, false, _("No postings on GRN"));
 
+text_row(_("Receival Required By:"), 'default_receival_required', $_POST['default_receival_required'], 6, 6, '', "", _("days"));
+
 table_section_title(_("Inventory"));
 
 check_row(_("Allow Negative Inventory:"), 'allow_negative_stock', null);
index 9691b22e0eedeb4aa15bf0f1bf2958d09031b11f..e948d89823b6f0e4fd4d74391a6711fbec79724e 100644 (file)
@@ -52,7 +52,7 @@ function get_installers()
 //
 //     Apply one differential data set.
 //
-function upgrade_step($index, $conn) 
+function upgrade_step($index, $company, $conn) 
 {
        global $path_to_root, $installers;
 
@@ -71,14 +71,16 @@ function upgrade_step($index, $conn)
 
                        error_log(sprintf(_("Database upgrade for company '%s' (%s:%s*) started..."),
                                $conn['name'], $conn['dbname'], $conn['tbpref']));
-                               
+
                        if ($sql != '')
-                               $ret &= db_import($path_to_root.'/sql/'.$sql, $conn, $force);
+                               $ret &= db_import($path_to_root.'/sql/'.$sql, $conn, $force, true);
 
-                       $ret &= $inst->install($pref, $force);
+                       $ret &= $inst->install($company, $force);
 
-                       error_log(_("Database upgrade finished."));
+                       if (!$ret && is_callable(array($inst, 'post_fail')))
+                               $inst->post_fail($pref);
 
+                       error_log(_("Database upgrade finished."));
                } else
                        if ($state!==true) {
                                display_error(_("Upgrade cannot be done because database has been already partially upgraded. Please downgrade database to clean previous version or try forced upgrade."));
@@ -104,17 +106,19 @@ if (get_post('Upgrade'))
                        continue;
                }
        // create security backup       
-               db_backup($conn, 'no', 'Security backup before upgrade', $conn['tbpref']);
+               db_backup($conn, 'no', 'Security backup before upgrade');
        // apply all upgrade data
                foreach ($installers as $i => $inst) 
                {
-                       $ret = upgrade_step($i, $conn);
+                       $ret = upgrade_step($i, $comp, $conn);
                        if (!$ret)
+                       {
                                display_error(
                                sprintf(_("Database upgrade to version %s failed for company '%s'."),
                                        $inst->version, $conn['name'])
                                        .'<br>'
                                        ._('You should restore company database from latest backup file'));
+                       }
                }
 //             db_close($conn); ?
                if (!$ret) break;
index 8d35c207c7ef50a2e7f4e116862f483de06f6d68..474217a0c32a942cccea23ed0225b8d865884327 100644 (file)
@@ -122,7 +122,7 @@ function select_link($row)
        if (!isset($row['type']))
                $row['type'] = $_POST['filterType'];
        if (!is_date_in_fiscalyear($row['trans_date'], true))
-               return _("No");
+               return _("N/A");
        return button('Edit'.$row["trans_no"], _("Select"), _("Select"), ICON_EDIT);
 }
 
@@ -154,7 +154,7 @@ function voiding_controls()
     start_table(TABLESTYLE_NOBORDER);
        start_row();
 
-       systypes_list_cells(_("Type:"), 'filterType', null, true, $not_implemented);
+       systypes_list_cells(_("Transaction Type:"), 'filterType', null, true, $not_implemented);
        if (list_updated('filterType'))
                $selected_id = -1;
 
@@ -168,7 +168,7 @@ function voiding_controls()
     ref_cells(_("to #:"), 'ToTransNo');
 
     submit_cells('ProcessSearch', _("Search"), '', '', 'default');
-               
+
        end_row();
     end_table(1);
     
index eab888c05127d202064fba4f5df50c2b7ae3f472..5399c3975ce9fd2b63c8ead751c25ac145e5dd5d 100644 (file)
@@ -39,6 +39,8 @@ class customers_app extends application
                $this->add_rapp_function(0, "","");
                $this->add_rapp_function(0, _("Customer &Payments"),
                        "sales/customer_payments.php?", 'SA_SALESPAYMNT', MENU_TRANSACTION);
+               $this->add_lapp_function(0, _("Invoice &Prepaid Orders"),
+                       "sales/inquiry/sales_orders_view.php?PrepaidOrders=Yes", 'SA_SALESINVOICE', MENU_TRANSACTION);
                $this->add_rapp_function(0, _("Customer &Credit Notes"),
                        "sales/credit_note_entry.php?NewCredit=Yes", 'SA_SALESCREDIT', MENU_TRANSACTION);
                $this->add_rapp_function(0, _("&Allocate Customer Payments or Credit Notes"),
@@ -51,7 +53,6 @@ class customers_app extends application
                        "sales/inquiry/sales_orders_view.php?type=30", 'SA_SALESTRANSVIEW', MENU_INQUIRY);
                $this->add_lapp_function(1, _("Customer Transaction &Inquiry"),
                        "sales/inquiry/customer_inquiry.php?", 'SA_SALESTRANSVIEW', MENU_INQUIRY);
-               $this->add_lapp_function(1, "","");
                $this->add_lapp_function(1, _("Customer Allocation &Inquiry"),
                        "sales/inquiry/customer_allocation_inquiry.php?", 'SA_SALESALLOC', MENU_INQUIRY);
 
index c4c0522b4f3cd4296991c96a45c8a14837e70e89..351e2486d178001483f41216de32e73498bed4de 100644 (file)
@@ -71,7 +71,8 @@ class general_ledger_app extends application
                        "gl/manage/gl_account_types.php?", 'SA_GLACCOUNTGROUP', MENU_MAINTENANCE);
                $this->add_rapp_function(2, _("GL Account &Classes"),
                        "gl/manage/gl_account_classes.php?", 'SA_GLACCOUNTCLASS', MENU_MAINTENANCE);
-               $this->add_rapp_function(2, "","");
+               $this->add_rapp_function(2, _("&Closing GL Transactions"),
+                       "gl/manage/close_period.php?", 'SA_GLSETUP', MENU_MAINTENANCE);
                $this->add_rapp_function(2, _("&Revaluation of Currency Accounts"),
                        "gl/manage/revaluate_currencies.php?", 'SA_EXCHANGERATE', MENU_MAINTENANCE);
 
index b67c66608722c8e51af09ec49127af749a298a93..8bc5582ccbacbd008a20c94633c3af49e3bf0783 100644 (file)
@@ -40,7 +40,6 @@ class suppliers_app extends application
                        "purchasing/inquiry/po_search_completed.php?", 'SA_SUPPTRANSVIEW', MENU_INQUIRY);
                $this->add_lapp_function(1, _("Supplier Transaction &Inquiry"),
                        "purchasing/inquiry/supplier_inquiry.php?", 'SA_SUPPTRANSVIEW', MENU_INQUIRY);
-               $this->add_lapp_function(1, "","");
                $this->add_lapp_function(1, _("Supplier Allocation &Inquiry"),
                        "purchasing/inquiry/supplier_allocation_inquiry.php?", 'SA_SUPPLIERALLOC', MENU_INQUIRY);
 
index e3c3a6cf798580c79d75b0849de9ced8a6735dd0..df15f21f82a1e0b0f85df295e48670c4e580fac1 100644 (file)
@@ -96,7 +96,7 @@ if (!isset($path_to_root) || isset($_GET['path_to_root']) || isset($_POST['path_
 
        /* $show_voiced_gl_trans = 0, setting this to 1 will show the voided gl trans */
        $show_voided_gl_trans = 0;
-       
+
        /* use old style convert (income and expense in BS, PL) */
        $use_oldstyle_convert = 0;
 
@@ -145,7 +145,10 @@ if (!isset($path_to_root) || isset($_GET['path_to_root']) || isset($_POST['path_
 
        /* suppress tax rates on documents. 0 = no, 1 = yes. */
        $suppress_tax_rates = 0;
-       
+
+       /* allow reopening closed transactions */
+       $allow_gl_reopen = 0;
+
        $dateformats    = array("MMDDYYYY", "DDMMYYYY", "YYYYMMDD","MmmDDYYYY", "DDMmmYYYY", "YYYYMmmDD");
        $dateseps               = array("/", ".", "-", " ");
        $thoseps                = array(",", ".", " ");
@@ -177,7 +180,7 @@ if (!isset($path_to_root) || isset($_GET['path_to_root']) || isset($_POST['path_
        $allow_negative_prices = 1;
 
        /* Show menu category icons in core themes */
-       $show_menu_category_icons = 0;
+       $show_menu_category_icons = 1;
        
        // Internal configurable variables
        //-----------------------------------------------------------------------------------
index 9142ce273de8f5d9bee303b7ee21d32e11f45da0..b13420d99db4d71cae909fde7484411d0a94321e 100644 (file)
@@ -84,7 +84,7 @@ if (!isset($_POST['TransToDate']))
        $_POST['TransToDate'] = Today();
 date_cells(_("from:"), 'TransFromDate');
 date_cells(_("to:"), 'TransToDate');
-submit_cells('Show',_("Show"), '', false);
+submit_cells('Show',_("Show"), '', false, 'default');
 
 end_row();
 
diff --git a/doc/api_changes.txt b/doc/api_changes.txt
new file mode 100644 (file)
index 0000000..2f4c983
--- /dev/null
@@ -0,0 +1,71 @@
+Changes in framework API introduced in FrontAccounting 2.4
+----------------------------------------------------------
+The list does not contain changes made in user interface files.
+
+Changed functions:
+ company_db_inc: 
+       update_company_prefs($params)
+       get_company_pref($prefs = null)
+       get_company_prefs()
+ maintenance_db.inc:
+       db_backup($conn, $ext='no', $comm='', $path=null)
+       db_export($conn, $filename, $zip='no', $comment='', $no_default=false)
+       save_to_file($path, $zip, $fileData)
+ tax_types_db.inc:
+       get_tax_type_default_rate($type_id) => get_tax_type_rate($type_id)
+
+Before 2.4:
+       get_tax_type_default_rate($type_id)
+Now:
+       get_tax_type_rate($type_id)
+Description:
+       Misleading function name changed.
+
+Before 2.4:
+       update_company_prefs( $params, $pref = TB_PREF )
+Now:
+       update_company_prefs($params)
+Description:
+       $pref parameter has been removed. All calls should be done after switch to selected company database with 
+       set_global_connection($company).
+
+Before 2.4:
+       get_company_pref($prefs = null, $tbpref = null)
+Now:
+       get_company_pref($prefs = null)
+Description:
+       $tbpref parameter has been removed. All calls should be done after switch to selected company database with 
+       set_global_connection($company).
+
+Before 2.4:
+       get_company_prefs($tbpref = TB_PREF)
+Now:
+       get_company_prefs()
+Description:
+       $tbpref parameter has been removed. All calls should be done after switch to selected company database with 
+       set_global_connection($company).
+
+Before 2.4:
+       db_backup($conn, $ext='no', $comm='', $tbpref = TB_PREF)
+Now:
+       db_backup($conn, $ext='no', $comm='', $path=null)
+Description: 
+       $tbpref parameter has been removed. Calls should be done after switch to selected company database with 
+       set_global_connection($company).
+       $path parameter has been added: path to storage directory for generated backup file. If not set defaults to BACKUP_PATH.
+
+Before 2.4:
+       db_export($conn, $filename, $zip='no', $comment='', $tbpref = TB_PREF, $no_default=false)
+Now:
+       db_export($conn, $filename, $zip='no', $comment='')
+Description:
+       $tbpref parameter has been removed. Calls should be done after switch to selected company database with 
+       set_global_connection($company). Also removed obsolete $no_default parameter.
+       $filename now have to contain full path to target directory.
+
+Before 2.4:
+       save_to_file($backupfile, $zip, $fileData)
+Now:
+       save_to_file($path, $zip, $fileData)
+Description:
+       $path parameter have to contain full path to file, no assumptions to target folder is done inside function.
index 660c700395f4ccc9638eff8a31568249a88d60fd..4bfc923b10517901bb401cb78c08f8e5867262e1 100644 (file)
@@ -35,7 +35,7 @@ if (isset($_POST['go']) || isset($_POST['show']))
        }
        elseif (!is_date_in_fiscalyear($_POST['date_']))
        {
-               display_error(_("The entered date is not in fiscal year."));
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                set_focus('date_');
                $input_error = 1;
        }
@@ -57,6 +57,10 @@ if (isset($_POST['go']) || isset($_POST['show']))
                $per = $periods - 1;
                $date = $date_ = get_post('date_');
                $freq = get_post('freq');
+               if ($freq == 3 || $freq == 4) {
+                       $date_ = begin_month($date_); // avoid skip on shorter months
+                       $date  = end_month($date_); // avoid skip on shorter months
+               }
                $lastdate = ($freq == 1 ? add_days($date_, 7*$per)
                                : ($freq == 2 ? add_days($date_, 14*$per)
                                : ($freq == 3 ? add_months($date_, $per)
@@ -64,7 +68,7 @@ if (isset($_POST['go']) || isset($_POST['show']))
 
                if (!is_date_in_fiscalyears($lastdate, false))
                {
-                       display_error(_("Some of the period dates are outside the fiscal year. Create a new fiscal year first!"));
+                       display_error(_("Some of the period dates are outside the fiscal year or are closed for further data entry. Create a new fiscal year first!"));
                        set_focus('date_');
                        $input_error = 1;
                }
index 4fa56550696664b5d957fc36fdd3c86497908a50..eda80cd1454eebfaac3752e063279e5e9a15baad 100644 (file)
@@ -86,20 +86,18 @@ function fmt_credit($row)
        return $value>0 ? price_format($value) : '';
 }
 
-function fmt_person($row)
+function fmt_person($trans)
 {
-       return payment_person_name($row["person_type_id"],$row["person_id"]);
+       return get_counterparty_name($trans["type"], $trans["trans_no"]);
 }
 
-$update_pager = false;
 function update_data()
 {
-       global $Ajax, $update_pager;
+       global $Ajax;
        
        unset($_POST["beg_balance"]);
        unset($_POST["end_balance"]);
        $Ajax->activate('summary');
-       $update_pager = true;
 }
 //---------------------------------------------------------------------------------------------
 // Update db record if respective checkbox value has changed.
index d08952e2ad4c8e1de51cf0a7013514ae1abd2494..e56726f5eb005da7337e7ceec68b5ac59e31ad2c 100644 (file)
@@ -118,7 +118,7 @@ function check_valid_entries()
        }
        if (!is_date_in_fiscalyear($_POST['DatePaid']))
        {
-               display_error(_("The entered date is not in fiscal year."));
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                set_focus('DatePaid');
                return false;
        }
@@ -159,7 +159,7 @@ function check_valid_entries()
                set_focus('charge');
                return false;
        }
-       if (isset($_POST['charge']) && input_num('charge') > 0 && get_company_pref('bank_charge_act') == '') {
+       if (isset($_POST['charge']) && input_num('charge') > 0 && get_bank_charge_account($_POST['FromBankAccount']) == '') {
                display_error(_("The Bank Charge Account has not been set in System and General GL Setup."));
                set_focus('charge');
                return false;
index 788cf83b26595d16e943bfe1c1e7613f5ef36233..14a8518d1ecf81b00a2f37ebdbfa4c99f3dd641e 100644 (file)
@@ -48,6 +48,9 @@ page($_SESSION['page_title'], false, false, '', $js);
 //-----------------------------------------------------------------------------------------------
 check_db_has_bank_accounts(_("There are no bank accounts defined in the system."));
 
+if (isset($_GET['ModifyDeposit']) || isset($_GET['ModifyPayment']))
+       check_is_editable($_SESSION['pay_items']->trans_type, $_SESSION['pay_items']->order_id);
+
 //----------------------------------------------------------------------------------------
 if (list_updated('PersonDetailID')) {
        $br = get_branch(get_post('PersonDetailID'));
@@ -192,7 +195,7 @@ function create_cart($type, $trans_no)
                // apply exchange rate
                foreach($cart->gl_items as $line_no => $line)
                        $cart->gl_items[$line_no]->amount *= $ex_rate;
-               
+
        } else {
                $cart->reference = $Refs->get_next($cart->trans_type);
                $cart->tran_date = new_doc_date();
@@ -263,7 +266,7 @@ function check_trans()
        }
        elseif (!is_date_in_fiscalyear($_POST['date_']))
        {
-               display_error(_("The entered date is not in fiscal year."));
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                set_focus('date_');
                $input_error = 1;
        } 
index be1dc607c0c16a50c5055df236cfde030b1cfd83..063dd8aed39165f77e39d3f3ac6088cb69f27f31 100644 (file)
@@ -21,6 +21,7 @@ include_once($path_to_root . "/includes/data_checks.inc");
 include_once($path_to_root . "/gl/includes/ui/gl_journal_ui.inc");
 include_once($path_to_root . "/gl/includes/gl_db.inc");
 include_once($path_to_root . "/gl/includes/gl_ui.inc");
+include_once($path_to_root . "/taxes/db/tax_types_db.inc");
 
 $js = '';
 if ($use_popup_windows)
@@ -36,11 +37,13 @@ if (isset($_GET['ModifyGL'])) {
        $_SESSION['page_title'] = _($help_context = "Journal Entry");
 
 page($_SESSION['page_title'], false, false,'', $js);
+
 //--------------------------------------------------------------------------------------------------
 
 function line_start_focus() {
   global       $Ajax;
 
+  unset($_POST['Index']);
   $Ajax->activate('items_table');
   set_focus('_code_id_edit');
 }
@@ -79,14 +82,17 @@ if (isset($_GET['AddedID']))
 if (isset($_GET['NewJournal']))
 {
        create_cart(0,0);
-} 
+}
 elseif (isset($_GET['ModifyGL']))
 {
+       check_is_editable($_GET['trans_type'], $_GET['trans_no']);
+
        if (!isset($_GET['trans_type']) || $_GET['trans_type']!= 0) {
                display_error(_("You can edit directly only journal entries created via Journal Entry page."));
                hyperlink_params("$path_to_root/gl/gl_journal.php", _("Entry &New Journal Entry"), "NewJournal=Yes");
                display_footer_exit();
        }
+
        create_cart($_GET['trans_type'], $_GET['trans_no']);
 }
 
@@ -110,7 +116,7 @@ function create_cart($type=0, $trans_no=0)
                                if ($row['amount'] == 0) continue;
                                $date = $row['tran_date'];
                                $cart->add_gl_item($row['account'], $row['dimension_id'], 
-                                       $row['dimension2_id'], $row['amount'], $row['memo_']);
+                                       $row['dimension2_id'], $row['amount'], $row['memo_'], '', $row['person_id']);
                        }
                }
                $cart->memo_ = get_comments_string($type, $trans_no);
@@ -159,7 +165,7 @@ if (isset($_POST['Process']))
        } 
        elseif (!is_date_in_fiscalyear($_POST['date_'])) 
        {
-               display_error(_("The entered date is not in fiscal year."));
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                set_focus('date_');
                $input_error = 1;
        } 
@@ -267,7 +273,7 @@ function handle_update_item()
                $amount = -input_num('AmountCredit');
 
        $_SESSION['journal_items']->update_gl_item($_POST['Index'], $_POST['code_id'], 
-           $_POST['dimension_id'], $_POST['dimension2_id'], $amount, $_POST['LineMemo']);
+           $_POST['dimension_id'], $_POST['dimension2_id'], $amount, $_POST['LineMemo'], '', get_post('person_id'));
     }
        line_start_focus();
 }
@@ -293,7 +299,7 @@ function handle_new_item()
                $amount = -input_num('AmountCredit');
        
        $_SESSION['journal_items']->add_gl_item($_POST['code_id'], $_POST['dimension_id'],
-               $_POST['dimension2_id'], $amount, $_POST['LineMemo']);
+               $_POST['dimension2_id'], $amount, $_POST['LineMemo'], '', get_post('person_id'));
        line_start_focus();
 }
 
index a788604ac814541506f3af3fb2fc9c3c3385f518..ce11a325607e6bfb2807ec86cc991f371e714de0 100644 (file)
@@ -96,6 +96,7 @@ function gl_account_in_company_defaults($acc)
                OR name='profit_loss_year_act'
                OR name='retained_earnings_act'
                OR name='freight_act'
+               OR name='deferred_income_act'
                OR name='default_sales_act' 
                OR name='default_sales_discount_act'
                OR name='default_prompt_payment_act'
@@ -191,6 +192,31 @@ function gl_account_in_quick_entry_lines($acc)
        $myrow = db_fetch_row($result);
        return ($myrow[0] > 0); 
 }
+//
+//     Returns n>0 when account is AR, n<0 when account is AP
+//  (priority for AR accounts)
+//
+function is_subledger_account($account)
+{
+       $sql = "SELECT 1 FROM ".TB_PREF."cust_branch WHERE receivables_account=".db_escape($account)
+       ." UNION SELECT -1 FROM ".TB_PREF."suppliers WHERE payable_account=".db_escape($account);
+
+       $result = db_query($sql,"Couldn't test AR/AP account");
+       $myrow = db_fetch_row($result);
+       return $myrow[0];
+}
+
+function get_subaccount_name($code_id, $person_id)
+{
+       $sql = "SELECT debtor_ref as ref FROM ".TB_PREF."cust_branch branch LEFT JOIN ".TB_PREF."debtors_master d ON branch.debtor_no = d.debtor_no
+               WHERE branch.receivables_account=".db_escape($code_id)." AND d.debtor_no=".db_escape($person_id)
+               ." UNION SELECT supp_ref as ref FROM ".TB_PREF."suppliers supp
+               WHERE payable_account=".db_escape($code_id)." AND supplier_id=".db_escape($person_id);
+       $result = db_query($sql, 'cannot retrieve counterparty name');
+       $row = db_fetch($result);
+
+       return  $row ? $row['ref'] : '';
+}
 
 function gl_account_in_bank_accounts($acc)
 {
index d668dd7024f809ad8a598288bc4fedddab43f0ab..a4ffd9862665bf2837af43fb487619d47d0453c4 100644 (file)
@@ -18,18 +18,18 @@ function clear_dflt_curr_account($curr_code) {
 
 function add_bank_account($account_code, $account_type, $bank_account_name,
        $bank_name, $bank_account_number, $bank_address, $bank_curr_code, 
-       $dflt_curr_act)
+       $dflt_curr_act, $bank_charge_act)
 {
        if($dflt_curr_act)      // only one default account for any currency
          clear_dflt_curr_account($bank_curr_code);
 
        $sql = "INSERT INTO ".TB_PREF."bank_accounts (account_code, account_type, 
                bank_account_name, bank_name, bank_account_number, bank_address, 
-               bank_curr_code, dflt_curr_act)
+               bank_curr_code, dflt_curr_act, bank_charge_act)
                VALUES (".db_escape($account_code).", ".db_escape($account_type).", "
                .db_escape($bank_account_name).", ".db_escape($bank_name).", "
                .db_escape($bank_account_number).",".db_escape($bank_address).
-               ", ".db_escape($bank_curr_code).", ".db_escape($dflt_curr_act).")";
+               ", ".db_escape($bank_curr_code).", ".db_escape($dflt_curr_act).", ".db_escape($bank_charge_act).")";
 
        db_query($sql, "could not add a bank account for $account_code");
 }
@@ -37,7 +37,7 @@ function add_bank_account($account_code, $account_type, $bank_account_name,
 //---------------------------------------------------------------------------------------------
 
 function update_bank_account($id, $account_code, $account_type, $bank_account_name, 
-       $bank_name, $bank_account_number, $bank_address, $bank_curr_code, $dflt_curr_act)
+       $bank_name, $bank_account_number, $bank_address, $bank_curr_code, $dflt_curr_act, $bank_charge_act)
 {
        if($dflt_curr_act)      // only one default account for any currency
          clear_dflt_curr_account($bank_curr_code);
@@ -47,8 +47,8 @@ function update_bank_account($id, $account_code, $account_type, $bank_account_na
                bank_account_name=".db_escape($bank_account_name).", bank_name=".db_escape($bank_name).",
                bank_account_number=".db_escape($bank_account_number).", bank_curr_code=".db_escape($bank_curr_code).",
                bank_address=".db_escape($bank_address).",
-               dflt_curr_act=".db_escape($dflt_curr_act)
-               ." WHERE id = ".db_escape($id);
+               dflt_curr_act=".db_escape($dflt_curr_act).", bank_charge_act=".db_escape($bank_charge_act)." 
+               WHERE id = ".db_escape($id);
 
        db_query($sql, "could not update bank account for $account_code");
 }
@@ -102,6 +102,19 @@ function get_bank_gl_account($id)
 
 //---------------------------------------------------------------------------------------------
 
+function get_bank_charge_account($id)
+{
+       $sql = "SELECT bank_charge_act FROM ".TB_PREF."bank_accounts WHERE id=".db_escape($id);
+
+       $result = db_query($sql, "could not retreive bank account for $id");
+
+       $bank_account = db_fetch($result);
+
+       return $bank_account['bank_charge_act'];
+}
+
+//---------------------------------------------------------------------------------------------
+
 function add_quick_entry($description, $type, $base_amount, $base_desc, $bal_type)
 {
        $sql = "INSERT INTO ".TB_PREF."quick_entries (description, type, base_amount, base_desc, bal_type) 
@@ -347,5 +360,20 @@ function get_bank_account_limit($account, $date, $user=null)
                return null;
        return max(0, get_balance_before_for_bank_account($account, add_days($date,1))); // in case of manco made before the check was implemented
 }
+function identify_bank_account($account_number)
+{
+       $number = db_escape($account_number);
+       $sql = "(SELECT id AS id, ".BO_COMPANY." AS type FROM ".TB_PREF."bank_accounts WHERE REPLACE(bank_account_number,' ', '')=$number)";
+       $sql .= " UNION (SELECT supplier_id AS id, ".BO_SUPPLIER." AS type FROM ".TB_PREF."suppliers WHERE REPLACE(bank_account,' ', '')=$number)";
+       $sql .= " UNION (SELECT branch_code AS id, ".BO_CUSTBRANCH." AS type FROM ".TB_PREF."cust_branch WHERE REPLACE(bank_account,' ', '')=$number)";
+
+       $result = db_query($sql, 'bank account identification failed');
+
+       if (db_num_rows($result))
+               return db_fetch($result);
+       else
+               return null;
+}
 
 ?>
\ No newline at end of file
index e6d65d92d79af69f56869e2b806c9b182de42700..964eac0ce384556adff2f08714e0ceea5eb6a1dd 100644 (file)
@@ -117,7 +117,6 @@ function get_account_home_balance($person_id, $person_type, $rec_account, $to_da
 }
 //------------- New helper functions for revaluation of customer/supplier currencies 2011-05-08 Joe Hunt.
 
-
 function add_exchange_variation_all($date=null, $ref="", $memo)
 {
        global $Refs;
@@ -179,7 +178,7 @@ function add_exchange_variation_all($date=null, $ref="", $memo)
                }
        }
        //------------- END
-               
+
        commit_transaction();
        return array(($exchanged ? $trans_no : 0), $je);
 }
@@ -235,7 +234,7 @@ function add_bank_transfer($from_account, $to_account, $date_,
        if ($charge != 0)
        {
                /* Now Debit bank charge account with charges */
-               $charge_act = get_company_pref('bank_charge_act');
+               $charge_act = get_bank_charge_account($from_account);
                $total += add_gl_trans($trans_type, $trans_no, $date_,
                        $charge_act, 0, 0, $person_id, $charge, $currency);
        }
@@ -262,7 +261,6 @@ function add_bank_transfer($from_account, $to_account, $date_,
        if ($SysPrefs->auto_currency_revaluation())
        {
                $currency = get_bank_account_currency($to_account);
-       
                if (add_exchange_variation($trans_no1, $date_, $to_account, $to_gl_account,     
                        $currency, PT_MISC, $person_id))
                        $exchanged = true;
@@ -317,6 +315,7 @@ function write_bank_transaction($trans_type, $trans_no, $from_account, $items, $
                'person_type_id', 'person_id', 'person_detail_id', 'ref', 'memo_', 'use_transaction', 'settled_amount'),
                $args);
        hook_db_prewrite($args, $trans_type);
+
        $aid = 0;
        if ($trans_no) {
                $old_trans = $trans_no;
@@ -451,5 +450,3 @@ function write_bank_transaction($trans_type, $trans_no, $from_account, $items, $
 
        return array($trans_type, $trans_no);
 }
-
-?>
\ No newline at end of file
index 5b8c9c470e3fa78577898fec89c45e9cba2f8d0d..f9e270d9304653f069769cdbcea5c26d87e6686d 100644 (file)
@@ -42,6 +42,9 @@ function add_gl_trans($type, $trans_id, $date_, $account, $dimension, $dimension
                else
                        $memo_ = $_SESSION["wa_current_user"]->username . " - " . $memo_;
        }
+       if (!is_subledger_account($account) && $account==get_company_pref('deffered_income_act') || $account==get_company_pref('grn_clearing_act'))
+               $person_id = $person_type_id = null;
+
        $sql = "INSERT INTO ".TB_PREF."gl_trans ( type, type_no, tran_date,
                account, dimension_id, dimension2_id, memo_, amount";
 
@@ -164,17 +167,20 @@ function get_gl_trans($type, $trans_id)
 
 //--------------------------------------------------------------------------------
 
-function get_gl_wo_cost_trans($trans_id, $person_id=-1)
+function get_gl_wo_cost_trans($trans_id, $cost_type=-1)
 {
-       $sql = "SELECT ".TB_PREF."gl_trans.*, ".TB_PREF."chart_master.account_name FROM "
-               .TB_PREF."gl_trans, ".TB_PREF."chart_master
-               WHERE ".TB_PREF."chart_master.account_code=".TB_PREF."gl_trans.account
-               AND ".TB_PREF."gl_trans.type=".ST_WORKORDER
-               ." AND ".TB_PREF."gl_trans.type_no=".db_escape($trans_id)."
-               AND ".TB_PREF."gl_trans.person_type_id=".PT_WORKORDER;
-       if ($person_id != -1)
-               $sql .= " AND ".TB_PREF."gl_trans.person_id=".db_escape($person_id);
-       $sql .= " AND amount < 0";      
+       $sql = "SELECT costing.*, gl.*, chart.account_name, com.memo_ FROM "
+               .TB_PREF."wo_costing costing, "
+               .TB_PREF."gl_trans gl LEFT JOIN ".TB_PREF."comments com ON gl.type=com.type     AND gl.type_no=com.id,"
+               .TB_PREF."chart_master chart
+               WHERE 
+                       costing.workorder_id=".db_escape($trans_id)
+               ."      AND chart.account_code=gl.account
+                       AND gl.type=costing.trans_type
+                       AND gl.type_no=costing.trans_no";
+       if ($cost_type != -1)
+               $sql .= " AND costing.cost_type=".db_escape($cost_type);
+       $sql .= " AND amount < 0";
 
        return db_query($sql, "The gl transactions could not be retrieved");
 }
@@ -365,7 +371,7 @@ function add_gl_tax_details($gl_code, $trans_type, $trans_no, $amount, $ex_rate,
        }
        add_trans_tax_details($trans_type, $trans_no, $tax['id'], $tax['rate'], $included, 
                $amount, $net_amount, $ex_rate, $date, $memo);
-                       
+
 }
 
 //--------------------------------------------------------------------------------
@@ -498,9 +504,12 @@ function write_journal_entries(&$cart, $reverse, $use_transaction=true)
                // post to first found bank account using given gl acount code.
                $is_bank_to = is_bank_account($journal_item->code_id);
 
-               add_gl_trans($trans_type, $trans_id, $date_, $journal_item->code_id,
-                       $journal_item->dimension_id, $journal_item->dimension2_id,
-                       $journal_item->reference, $journal_item->amount);
+               add_gl_trans($trans_type, $trans_id, $date_, $journal_item->code_id,
+                       $journal_item->dimension_id, $journal_item->dimension2_id,
+                       $journal_item->reference, $journal_item->amount, null, 
+                       $journal_item->person_type_id, 
+                       $journal_item->person_id);
+
        if ($is_bank_to)
        {
                add_bank_trans($trans_type, $trans_id, $is_bank_to, $ref,
@@ -535,7 +544,9 @@ function write_journal_entries(&$cart, $reverse, $use_transaction=true)
 
                add_gl_trans($trans_type, $trans_id_reverse, $reversingDate,
                        $journal_item->code_id, $journal_item->dimension_id, $journal_item->dimension2_id,
-                       $journal_item->reference, -$journal_item->amount);
+                       $journal_item->reference, -$journal_item->amount, 
+                       null, $journal_item->person_type_id, $journal_item->person_id);
+
                if ($is_bank_to)
                {
                        add_bank_trans($trans_type, $trans_id_reverse, $is_bank_to, $ref,
@@ -589,6 +600,22 @@ function void_gl_trans($type, $trans_id, $nested=false)
 
 //----------------------------------------------------------------------------------------
 
+function clear_gl_trans($type, $trans_id, $nested=false)
+{
+       if (!$nested)
+               begin_transaction();
+
+       $sql = "DELETE FROM ".TB_PREF."gl_trans WHERE type=".db_escape($type)
+       ." AND type_no=".db_escape($trans_id);
+
+       db_query($sql, "could not clear gl transactions for type=$type and trans_no=$trans_id");
+
+       if (!$nested)
+               commit_transaction();
+}
+
+//----------------------------------------------------------------------------------------
+
 function void_journal_trans($type, $type_no, $use_transaction=true)
 {
        if ($use_transaction)
@@ -637,6 +664,9 @@ function get_sql_for_journal_inquiry($filter, $from, $to, $ref='', $memo='', $al
        if (!$alsoclosed) {
                $sql .= " AND gl_seq=0";
        }
+       else
+               $sql .= " AND NOT ISNULL(a.gl_seq)";
+
        $sql .= " GROUP BY gl.tran_date, a.gl_seq, gl.type, gl.type_no";
        return $sql;
 }
index 7d98271b88462c99ef6964fb9b668989caf915f7..7c411de00dc769101d5b47cffbe6ede094c0c643 100644 (file)
@@ -84,9 +84,9 @@ function display_bank_header(&$order)
                                $customer_error = true;
                                        display_error(_("This customer account is on hold."));
                        }
-                       else                    
+                       else
                                        display_warning(_("This customer account is on hold."));
-               }               
+               }
                break;
 
                case PT_QUICKENTRY :
index 8c4aec6ae44d2b27e7db29c0c6013add32e4a7b4..d68f09140bbb951795a7687dc129fc8f905fe647 100644 (file)
@@ -43,9 +43,9 @@ function display_order_header(&$Order)
        {
                table_section(3, "40%");
                start_row();
-               quick_entries_list_cells(_("Quick Entry").":", 'person_id', null, QE_JOURNAL, true);
-               $qid = get_quick_entry(get_post('person_id'));
-               if (list_updated('person_id')) {
+               quick_entries_list_cells(_("Quick Entry").":", 'quick', null, QE_JOURNAL, true);
+               $qid = get_quick_entry(get_post('quick'));
+               if (list_updated('quick')) {
                        unset($_POST['totamount']); // enable default
                $Ajax->activate('totamount');
                }
@@ -63,7 +63,7 @@ function display_order_header(&$Order)
                end_row();
 
        }
-               
+
        end_outer_table(1);
 }
 
@@ -77,6 +77,9 @@ function display_gl_items($title, &$order)
 
        $dim = get_company_pref('use_dimension');
 
+       $sub_type = is_subledger_account(get_post('code_id'));
+       $has_subaccounts = $order->has_sub_accounts();
+
     div_start('items_table');
        start_table(TABLESTYLE, "colspan=7 width=95%");
        if ($dim == 2)
@@ -90,19 +93,28 @@ function display_gl_items($title, &$order)
                        _("Debit"), _("Credit"), _("Memo"), "");
 
        if (count($order->gl_items)) $th[] = '';
+       if ($sub_type || $has_subaccounts)
+               array_insert($th, 2, _("Counterparty"));
 
-       table_header($th);      
+       table_header($th);
 
        $k = 0;
 
        $id = find_submit('Edit');
+       if ($id == -1) 
+               $id = get_post('Index', -1);
+
        foreach ($order->gl_items as $line => $item) 
        {
                if ($id != $line)
                {
                alt_table_row_color($k);
 
-                       label_cells($item->code_id, $item->description);
+                       $acc = $item->code_id . ($item->person_id ? sprintf(' %05d', $item->person_id) : '');
+                       label_cells($acc, $item->description);
+
+                       label_cell($item->person_name);
+
                if ($dim >= 1)
                                label_cell(get_dimension_string($item->dimension_id, true));
                if ($dim > 1)
@@ -111,7 +123,7 @@ function display_gl_items($title, &$order)
                {
                        amount_cell(abs($item->amount));
                        label_cell("");
-               }       
+               }
                else
                {
                        label_cell("");
@@ -127,12 +139,12 @@ function display_gl_items($title, &$order)
                } 
                else 
                {
-                       gl_edit_item_controls($order, $dim, $line);
+                       gl_edit_item_controls($order, $dim, $item->person_id, $line);
                }
        }
 
        if ($id == -1)
-               gl_edit_item_controls($order, $dim);
+               gl_edit_item_controls($order, $dim, $sub_type);
 
        if ($order->count_gl_items()) 
        {
@@ -151,35 +163,47 @@ function display_gl_items($title, &$order)
 
 //---------------------------------------------------------------------------------
 
-function gl_edit_item_controls(&$order, $dim, $Index=null)
+function gl_edit_item_controls(&$order, $dim, $sub_accounts, $Index=null)
 {
        global $Ajax;
        start_row();
 
        $id = find_submit('Edit');
+       if ($id == -1) 
+               $continue = $id = get_post('Index', -1);
+
        if ($Index != -1 && $Index == $id)
        {
            // Modifying an existing row
                $item = $order->gl_items[$Index];
-               $_POST['code_id'] = $item->code_id;
-               $_POST['dimension_id'] = $item->dimension_id;
-               $_POST['dimension2_id'] = $item->dimension2_id;
-               if ($item->amount > 0)
+               if (!isset($continue))
                {
-                       $_POST['AmountDebit'] = price_format($item->amount);
-                       $_POST['AmountCredit'] = "";
+                       $_POST['code_id'] = $item->code_id;
+                       $_POST['dimension_id'] = $item->dimension_id;
+                       $_POST['dimension2_id'] = $item->dimension2_id;
+                       $_POST['person_id'] = $item->person_id;
+                       if ($item->amount > 0)
+                       {
+                               $_POST['AmountDebit'] = price_format($item->amount);
+                               $_POST['AmountCredit'] = "";
+                       }
+                       else
+                       {
+                               $_POST['AmountDebit'] = "";
+                               $_POST['AmountCredit'] = price_format(abs($item->amount));
+                       }
+                       $_POST['description'] = $item->description;
+                       $_POST['LineMemo'] = $item->reference;
                }
-               else
-               {
-                       $_POST['AmountDebit'] = "";
-                       $_POST['AmountCredit'] = price_format(abs($item->amount));
-               }       
-               $_POST['description'] = $item->description;
-               $_POST['LineMemo'] = $item->reference;
-
                hidden('Index', $id);
                $skip_bank = !$_SESSION["wa_current_user"]->can_access('SA_BANKJOURNAL');
-               echo gl_all_accounts_list('code_id', null, $skip_bank, true);
+               echo gl_all_accounts_list('code_id', null, $skip_bank, true, _('[Select account]'), true, false, false);
+
+               if (is_subledger_account(get_post('code_id')))
+               {
+                       subledger_list_cells(null, 'person_id', get_post('code_id'));
+               } elseif ($order->has_sub_accounts())
+                       label_cell('');
                if ($dim >= 1) 
                        dimensions_list_cells(null, 'dimension_id', null, true, " ", false, 1);
                if ($dim > 1) 
@@ -188,20 +212,32 @@ function gl_edit_item_controls(&$order, $dim, $Index=null)
        }
        else
        {
-           // Adding a new row
-               $_POST['AmountDebit'] = '';  //price_format(0);
-               $_POST['AmountCredit'] = ''; //price_format(0);
-               $_POST['dimension_id'] = 0;
-               $_POST['dimension2_id'] = 0;
-               //$_POST['LineMemo'] = ""; // let memo go to next line Joe Hunt 2010-05-30
-               $_POST['_code_id_edit'] = "";
-               $_POST['code_id'] = "";
+
+               if (!list_updated('code_id'))
+               {
+                   // Adding a new row
+                       $_POST['AmountDebit'] = '';  //price_format(0);
+                       $_POST['AmountCredit'] = ''; //price_format(0);
+                       $_POST['dimension_id'] = 0;
+                       $_POST['dimension2_id'] = 0;
+                       //$_POST['LineMemo'] = ""; // let memo go to next line Joe Hunt 2010-05-30
+                       $_POST['_code_id_edit'] = "";
+                       $_POST['code_id'] = "";
+               }
                if(isset($_POST['_code_id_update'])) {
-                           $Ajax->activate('code_id');
+                   $Ajax->activate('code_id');
                }
-               
+
                $skip_bank = !$_SESSION["wa_current_user"]->can_access('SA_BANKJOURNAL');
-               echo gl_all_accounts_list('code_id', null, $skip_bank, true);
+               echo gl_all_accounts_list('code_id', null, $skip_bank, true, _('[Select account]'), true, false, false);
+
+               if ($sub_accounts)
+               {
+                       subledger_list_cells(null, 'person_id', get_post('code_id'));
+               }
+               elseif ($order->has_sub_accounts())
+                       label_cell('');
+
                if ($dim >= 1)
                        dimensions_list_cells(null, 'dimension_id', null, true, " ", false, 1);
                if ($dim > 1)
@@ -241,8 +277,3 @@ function gl_options_controls()
 
          echo "</table>";
 }
-
-
-//---------------------------------------------------------------------------------
-
-?>
\ No newline at end of file
index 3921f136c401eb4e08b5b061bdbeccce4c4053d7..c667c8873641321b2b36ddd685967189aa2fd4f9 100644 (file)
@@ -46,7 +46,7 @@ start_table(TABLESTYLE_NOBORDER);
 start_row();
 bank_accounts_list_cells(_("Account:"), 'bank_account', null);
 
-date_cells(_("From:"), 'TransAfterDate', '', null, -30);
+date_cells(_("From:"), 'TransAfterDate', '', null, -$_SESSION["wa_current_user"]->prefs->transaction_days());
 date_cells(_("To:"), 'TransToDate');
 
 submit_cells('Show',_("Show"),'','', 'default');
@@ -102,7 +102,7 @@ while ($myrow = db_fetch($result))
        label_cell($trandate);
        display_debit_or_credit_cells($myrow["amount"]);
        amount_cell($running_total);
-       label_cell(payment_person_name($myrow["person_type_id"],$myrow["person_id"]));
+       label_cell(get_counterparty_name($myrow["type"], $myrow["trans_no"]));
        label_cell(get_comments_string($myrow["type"], $myrow["trans_no"]));
        label_cell(get_gl_view_str($myrow["type"], $myrow["trans_no"]));
        end_row();
index a44b12ea49c72b8e9870538874f0b45a37a2104d..bf10abf055ccd51ec50c14ec1d259fad3264de25 100644 (file)
@@ -68,7 +68,7 @@ function gl_inquiry_controls()
     start_table(TABLESTYLE_NOBORDER);
        start_row();
     gl_all_accounts_list_cells(_("Account:"), 'account', null, false, false, _("All Accounts"));
-       date_cells(_("from:"), 'TransFromDate', '', null, -30);
+       date_cells(_("from:"), 'TransFromDate', '', null, -$_SESSION["wa_current_user"]->prefs->transaction_days());
        date_cells(_("to:"), 'TransToDate');
     end_row();
        end_table();
index 0ca22c2e5bc592f2f45e8ffd4cb4f98bf95b359b..bfb6a5477b2ba862a0c1361934c472a6304d1cc2 100644 (file)
@@ -47,10 +47,10 @@ function gl_inquiry_controls()
     start_table(TABLESTYLE_NOBORDER);
 
        $date = today();
-       if (!isset($_POST['TransFromDate']))
-               $_POST['TransFromDate'] = begin_month($date);
        if (!isset($_POST['TransToDate']))
                $_POST['TransToDate'] = end_month($date);
+       if (!isset($_POST['TransFromDate']))
+               $_POST['TransFromDate'] = add_days(end_month($date), -$_SESSION["wa_current_user"]->prefs->transaction_days());
     date_cells(_("From:"), 'TransFromDate');
        date_cells(_("To:"), 'TransToDate');
        if ($dim >= 1)
@@ -69,19 +69,17 @@ function gl_inquiry_controls()
 
 function display_trial_balance($type, $typename)
 {
-       global $path_to_root, $clear_trial_balance_opening;
-       
-       global $k, $pdeb, $pcre, $cdeb, $ccre, $tdeb, $tcre, $pbal, $cbal, $tbal;
-       $printtitle = 0; //Flag for printing type name          
+       global $path_to_root, $clear_trial_balance_opening,
+                $k, $pdeb, $pcre, $cdeb, $ccre, $tdeb, $tcre, $pbal, $cbal, $tbal;
+
+       $printtitle = 0; //Flag for printing type name
 
        $k = 0;
 
-       //$accounts = get_gl_accounts();
        //Get Accounts directly under this group/type
-       $accounts = get_gl_accounts(null, null, $type);         
-       
+       $accounts = get_gl_accounts(null, null, $type);
+
        $begin = get_fiscalyear_begin_for_date($_POST['TransFromDate']);
-       //$begin = begin_fiscalyear();
        if (date1_greater_date2($begin, $_POST['TransFromDate']))
                $begin = $_POST['TransFromDate'];
        $begin = add_days($begin, -1);
@@ -90,13 +88,13 @@ function display_trial_balance($type, $typename)
        {
                //Print Type Title if it has atleast one non-zero account       
                if (!$printtitle)
-               {       
+               {
                        start_row("class='inquirybg' style='font-weight:bold'");
                        label_cell(_("Group")." - ".$type ." - ".$typename, "colspan=8");
-                       end_row();              
-                       $printtitle = 1;                
-               }       
-       
+                       end_row();
+                       $printtitle = 1;
+               }
+
                // FA doesn't really clear the closed year, therefore the brought forward balance includes all the transactions from the past, even though the balance is null.
                // If we want to remove the balanced part for the past years, this option removes the common part from from the prev and tot figures.
                if (@$clear_trial_balance_opening)
@@ -122,7 +120,7 @@ function display_trial_balance($type, $typename)
                        display_debit_or_credit_cells($prev['balance']);
                        display_debit_or_credit_cells($curr['balance']);
                        display_debit_or_credit_cells($tot['balance']);
-                       
+
                }
                else
                {
@@ -154,8 +152,9 @@ function display_trial_balance($type, $typename)
                {
                        start_row("class='inquirybg' style='font-weight:bold'");
                        label_cell(_("Group")." - ".$type ." - ".$typename, "colspan=8");
-                       end_row();              
-                       $printtitle = 1;                
+                       end_row();
+                       $printtitle = 1;
+
                }
                display_trial_balance($accounttype["id"], $accounttype["name"].' ('.$typename.')');
        }
@@ -173,8 +172,8 @@ if (isset($_POST['TransFromDate']))
                display_error(_("The from date cannot be bigger than the fiscal year end."));
                set_focus('TransFromDate');
                return;
-       }       
-}      
+       }
+}
 div_start('balance_tbl');
 if (!isset($_POST['Dimension']))
        $_POST['Dimension'] = 0;
index 3e7a26f4ff55a58b199df4970a62bc6c013a6fd8..8d9144d61c12f624fd19079ae3eedd6e8d9f63d7 100644 (file)
@@ -161,10 +161,10 @@ function inquiry_controls()
     start_table(TABLESTYLE_NOBORDER);
     
        $date = today();
-       if (!isset($_POST['TransFromDate']))
-               $_POST['TransFromDate'] = begin_month($date);
        if (!isset($_POST['TransToDate']))
                $_POST['TransToDate'] = end_month($date);
+       if (!isset($_POST['TransFromDate']))
+               $_POST['TransFromDate'] = add_days(end_month($date), -$_SESSION["wa_current_user"]->prefs->transaction_days());
     date_cells(_("From:"), 'TransFromDate');
        date_cells(_("To:"), 'TransToDate');
        
index 6022fcd7211f67d8579c643566e1c0887f97e453..e1e7c853070f02c3eaa5f779c59f35c591a1364e 100644 (file)
@@ -58,7 +58,7 @@ function tax_inquiry_controls()
     start_table(TABLESTYLE_NOBORDER);
        start_row();
 
-       date_cells(_("from:"), 'TransFromDate', '', null, -30);
+       date_cells(_("from:"), 'TransFromDate', '', null, -$_SESSION["wa_current_user"]->prefs->transaction_days());
        date_cells(_("to:"), 'TransToDate');
        submit_cells('Show',_("Show"),'','', 'default');
 
index 9dda5cd367a1c4e452cfc600226feebd9ff620f8..b10c408e3f4aa9f72df146d96c73c4a43c585b40 100644 (file)
@@ -48,7 +48,7 @@ if ($Mode=='ADD_ITEM' || $Mode=='UPDATE_ITEM')
                                $_POST['account_type'], $_POST['bank_account_name'], 
                                $_POST['bank_name'], $_POST['bank_account_number'], 
                        $_POST['bank_address'], $_POST['BankAccountCurrency'],
-                       $_POST['dflt_curr_act']);
+                       $_POST['dflt_curr_act'], $_POST['bank_charge_act']);
                        display_notification(_('Bank account has been updated'));
        } 
        else 
@@ -57,7 +57,7 @@ if ($Mode=='ADD_ITEM' || $Mode=='UPDATE_ITEM')
                add_bank_account($_POST['account_code'], $_POST['account_type'], 
                                $_POST['bank_account_name'], $_POST['bank_name'], 
                        $_POST['bank_account_number'], $_POST['bank_address'], 
-                               $_POST['BankAccountCurrency'], $_POST['dflt_curr_act']);
+                               $_POST['BankAccountCurrency'], $_POST['dflt_curr_act'], $_POST['bank_charge_act']);
                        display_notification(_('New bank account has been added'));
        }
                $Mode = 'RESET';
@@ -94,7 +94,10 @@ if ($Mode == 'RESET')
        $selected_id = -1;
        $_POST['bank_name']  =  $_POST['bank_account_name']  = '';
        $_POST['bank_account_number'] = $_POST['bank_address'] = '';
+       $_POST['bank_charge_act'] = get_company_pref('bank_charge_act');
 }
+if (!isset($_POST['bank_charge_act']))
+       $_POST['bank_charge_act'] = get_company_pref('bank_charge_act');
 
 /* Always show the list of accounts */
 
@@ -152,6 +155,7 @@ if ($selected_id != -1)
        $_POST['bank_address'] = $myrow["bank_address"];
        $_POST['BankAccountCurrency'] = $myrow["bank_curr_code"];
        $_POST['dflt_curr_act'] = $myrow["dflt_curr_act"];
+       $_POST['bank_charge_act'] = $myrow["bank_charge_act"];
   }
        hidden('selected_id', $selected_id);
        hidden('account_code');
@@ -186,6 +190,7 @@ if($is_used)
 else 
        gl_all_accounts_list_row(_("Bank Account GL Code:"), 'account_code', null);
 
+gl_all_accounts_list_row(_("Bank Charges Account:"), 'bank_charge_act', null, true);
 text_row(_("Bank Name:"), 'bank_name', null, 50, 60);
 text_row(_("Bank Account Number:"), 'bank_account_number', null, 30, 60);
 textarea_row(_("Bank Address:"), 'bank_address', null, 40, 5);
diff --git a/gl/manage/close_period.php b/gl/manage/close_period.php
new file mode 100644 (file)
index 0000000..fc057c2
--- /dev/null
@@ -0,0 +1,109 @@
+<?php
+/**********************************************************************
+    Copyright (C) FrontAccounting, LLC.
+       Released under the terms of the GNU General Public License, GPL, 
+       as published by the Free Software Foundation, either version 3 
+       of the License, or (at your option) any later version.
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+    See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
+***********************************************************************/
+
+$page_security = 'SA_GLCLOSE';
+$path_to_root = "../..";
+include_once($path_to_root . "/includes/session.inc");
+
+include_once($path_to_root . "/includes/date_functions.inc");
+include_once($path_to_root . "/includes/ui.inc");
+include_once($path_to_root . "/includes/banking.inc");
+include_once($path_to_root . "/admin/db/fiscalyears_db.inc");
+
+$js = "";
+if ($use_date_picker)
+       $js .= get_js_date_picker();
+page(_($help_context = "Closing GL Transactions"), false, false, "", $js);
+
+//---------------------------------------------------------------------------------------------
+function check_data()
+{
+       global $Refs, $allow_gl_reopen;
+       
+       if (!is_date($_POST['date']) || date1_greater_date2($_POST['date'], Today()))
+       {
+               display_error( _("The entered date is invalid."));
+               set_focus('date');
+               return false;
+       }
+       if (!is_date_in_fiscalyears($_POST['date'], false))
+       {
+               display_error(_("Selected date is not in fiscal year or the year is closed."));
+               set_focus('date');
+               return false;
+       }
+       if (date1_greater_date2(sql2date(get_company_pref('gl_closing_date')), $_POST['date']))
+       {
+               if (!$allow_gl_reopen) {
+                       display_error(_("The entered date is earlier than date already selected as closing date."));
+                       set_focus('date');
+                       return false;
+               } elseif (!user_check_access('SA_GLREOPEN')) {
+                       display_error(_("You are not allowed to reopen already closed transactions."));
+                       set_focus('date');
+                       return false;
+               }
+       }
+       return true;
+}
+
+//---------------------------------------------------------------------------------------------
+
+function handle_submit()
+{
+       if (!check_data())
+               return;
+
+       if (!close_transactions($_POST['date']))
+       {
+               display_notification(
+                       sprintf( _("All transactions resulting in GL accounts changes up to %s has been closed for further edition."),
+                       sql2date(get_company_pref('gl_closing_date'))) );
+       }
+
+}
+
+
+//---------------------------------------------------------------------------------------------
+
+function clear_data()
+{
+       unset($_POST['date_']);
+}
+
+//---------------------------------------------------------------------------------------------
+
+if (get_post('submit'))
+       handle_submit();
+else
+       display_note(_("Using this feature you can prevent entering new transactions <br>
+       and disable edition of already entered transactions up to specified date.<br>
+       Only transactions which can generate GL postings are subject to the constraint."));
+
+//---------------------------------------------------------------------------------------------
+
+br(1);
+start_form();
+start_table(TABLESTYLE2);
+if (!isset($_POST['date'])) {
+       $cdate = sql2date(get_company_pref('gl_closing_date'));
+       $_POST['date'] = $cdate ;// ? end_month(add_months($cdate, 1)) : Today();
+}
+date_row(_("End date of closing period:"), 'date');
+end_table(1);
+
+submit_center('submit', _("Close Transactions"), true, false);
+end_form();
+
+end_page();
+
+?>
index d211a491798cbbc7d0f60efa4f972ff9de54dfb1..99d2a8aba073f3c8ebb60f56222217dbc1100bb7 100644 (file)
@@ -12,7 +12,7 @@
 $page_security = 'SA_GLACCOUNT';
 $path_to_root = "../..";
 include($path_to_root . "/includes/session.inc");
+
 page(_($help_context = "Chart of Accounts"));
 
 include($path_to_root . "/includes/ui.inc");
@@ -78,7 +78,7 @@ if (isset($_POST['add']) || isset($_POST['update']))
                        if (get_post('inactive') == 1 && is_bank_account($_POST['account_code']))
                        {
                                display_error(_("The account belongs to a bank account and cannot be inactivated."));
-                       }       
+                       }
                elseif (update_gl_account($_POST['account_code'], $_POST['account_name'], 
                                $_POST['account_type'], $_POST['account_code2'])) {
                                update_record_status($_POST['account_code'], $_POST['inactive'],
@@ -128,32 +128,31 @@ function can_delete($selected_account)
        {
                display_error(_("Cannot delete this account because it is used by a bank account."));
                return false;
-       }       
+       }
 
        if (gl_account_in_stock_category($selected_account))
        {
                display_error(_("Cannot delete this account because it is used by one or more Item Categories."));
                return false;
-       }       
-       
+       }
+
        if (gl_account_in_stock_master($selected_account))
        {
                display_error(_("Cannot delete this account because it is used by one or more Items."));
                return false;
-       }       
-       
+       }
+
        if (gl_account_in_tax_types($selected_account))
        {
                display_error(_("Cannot delete this account because it is used by one or more Taxes."));
                return false;
-       }       
-       
+       }
+
        if (gl_account_in_cust_branch($selected_account))
        {
                display_error(_("Cannot delete this account because it is used by one or more Customer Branches."));
                return false;
-       }               
-       
+       }
        if (gl_account_in_suppliers($selected_account))
        {
                display_error(_("Cannot delete this account because it is used by one or more suppliers."));
index a35c4a91e177a99db8964bdedb32085354d01509..050637d5f26cfee6b9646dc0420bec6a28a24130 100644 (file)
@@ -56,7 +56,7 @@ function check_data()
        }
        if (!is_date_in_fiscalyear($_POST['date']))
        {
-               display_error(_("The entered date is not in fiscal year."));
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                set_focus('date');
                return false;
        }
index 6d1d360dde84fea009ca178cb12a32a8efe4cc63..9289c737793e663f37331aa6f1fc485355f9490f 100644 (file)
@@ -64,7 +64,7 @@ $th = array_merge($first_cols, $dim_cols, $remaining_cols);
 table_header($th);
 $end = $_GET['date'];
 $account = $_GET['act'];
-$begin = add_days($end, -30);
+$begin = add_days($end, -$_SESSION["wa_current_user"]->prefs->transaction_days());
 
 $result = get_gl_transactions($begin, $end, -1,        $account, 0, 0, null);
 $j = 0;
index 88d315aa1743038d198db0e4a11113e69c1e5533..21dfcc3234c4cd674889bb688925b0e70e0dcd4f 100644 (file)
@@ -68,7 +68,7 @@ label_cells(_("Amount"), number_format2($to_trans['amount'], user_price_dec()),
 label_cells(_("Date"), sql2date($to_trans['trans_date']), "class='tableheader2'");
 end_row();
 start_row();
-label_cells(_("From"), payment_person_name($to_trans['person_type_id'], $to_trans['person_id']), "class='tableheader2'", "colspan=$colspan1");
+label_cells(_("From"), get_counterparty_name(BT_BANKDEPOSIT, $to_trans['trans_no']), "class='tableheader2'", "colspan=$colspan1");
 if ($show_currencies)
 {
        label_cells(_("Settle currency"), $to_trans['settle_curr'], "class='tableheader2'");
index 344eec358e1c37490983e8999a8b02480107fd14..b349064161f92699a68dc6b344cd6ceb98efae29 100644 (file)
@@ -66,7 +66,7 @@ label_cells(_("Amount"), number_format2(-$from_trans['amount'], user_price_dec()
 label_cells(_("Date"), sql2date($from_trans['trans_date']), "class='tableheader2'");
 end_row();
 start_row();
-label_cells(_("Pay To"), payment_person_name($from_trans['person_type_id'], $from_trans['person_id']), "class='tableheader2'", "colspan=$colspan1");
+label_cells(_("Pay To"), get_counterparty_name(ST_BANKPAYMENT, $from_trans['trans_no']), "class='tableheader2'", "colspan=$colspan1");
 if ($show_currencies)
 {
        label_cells(_("Settle currency"), $from_trans['settle_curr'], "class='tableheader2'");
index 4e61fef91349cf9967a12ef5815ccb6a07bacdfa..5d54c72f6210c91bc6a5138e2c3d985173b08ba4 100644 (file)
@@ -33,14 +33,19 @@ function display_gl_heading($myrow)
        $trans_name = $systypes_array[$_GET['type_id']];
     start_table(TABLESTYLE, "width=95%");
     $th = array(_("General Ledger Transaction Details"), _("Reference"),
-       _("Date"), _("Person/Item"));
-    table_header($th); 
-    start_row();       
+       _("Date"));
+
+       if ($_GET['type_id'] != ST_JOURNAL)
+               $th[] = _("Counterparty");
+
+    table_header($th);
+    start_row();
     label_cell("$trans_name #" . $_GET['trans_no']);
     label_cell($myrow["reference"]);
        label_cell(sql2date($myrow["tran_date"]));
-       label_cell(payment_person_name($myrow["person_type_id"],$myrow["person_id"]));
-       
+       if ($_GET['type_id'] != ST_JOURNAL)
+               label_cell(get_counterparty_name($_GET['type_id'],$_GET['trans_no']));
+
        end_row();
 
        comments_display_row($_GET['type_id'], $_GET['trans_no']);
@@ -68,6 +73,7 @@ else if ($dim == 1)
 else           
        $th = array(_("Account Code"), _("Account Name"),
                _("Debit"), _("Credit"), _("Memo"));
+
 $k = 0; //row colour counter
 $heading_shown = false;
 
@@ -81,12 +87,15 @@ while ($myrow = db_fetch($result))
                start_table(TABLESTYLE, "width=95%");
                table_header($th);
                $heading_shown = true;
-       }       
+       }
 
        alt_table_row_color($k);
-       
-    label_cell($myrow['account']);
-       label_cell($myrow['account_name']);
+
+       $counterpartyname = get_subaccount_name($myrow["account"], $myrow["person_id"]);
+       $counterparty_id = $counterpartyname ? sprintf(' %05d', $myrow["person_id"]) : '';
+
+    label_cell($myrow['account'].$counterparty_id);
+       label_cell($myrow['account_name'] . ($counterpartyname ? ': '.$counterpartyname : ''));
        if ($dim >= 1)
                label_cell(get_dimension_string($myrow['dimension_id'], true));
        if ($dim > 1)
index 38d78abf6c755457f2fa19ffcb444882f24534d5..815a0b1a72b6b8efc4d0782bac7d068519ab3a09 100644 (file)
@@ -118,9 +118,9 @@ $security_areas =array(
        'SA_BACKUP' => array(SS_SPEC|2, _("Database backup/restore")),
        'SA_VIEWPRINTTRANSACTION' => array(SS_SPEC|3, _("Common view/print transactions interface")),
        'SA_ATTACHDOCUMENT' => array(SS_SPEC|4, _("Attaching documents")),
-       'SA_SETUPDISPLAY' => array(SS_SPEC|5, _("Display preferences")), //???
-       'SA_CHGPASSWD' => array(SS_SPEC|6, _("Password changes")), //???
-
+       'SA_SETUPDISPLAY' => array(SS_SPEC|5, _("Display preferences")),
+       'SA_CHGPASSWD' => array(SS_SPEC|6, _("Password changes")),
+       'SA_EDITOTHERSTRANS' => array(SS_SPEC|7, _("Edit other users transactions")),
 //
 // Sales related functionality
 //
@@ -227,6 +227,8 @@ $security_areas =array(
        'SA_FISCALYEARS' => array(SS_GL_C|9, _("Fiscal years maintenance")),
        'SA_GLSETUP' => array(SS_GL_C|10, _("Company GL setup")),
        'SA_GLACCOUNTTAGS' => array(SS_GL_C|11, _("GL Account tags")),
+       'SA_GLCLOSE' => array(SS_GL_C|14, _("Closing GL transactions")),
+       'SA_GLREOPEN' => array(SS_GL_C|15, _("Reopening GL transactions")), // see below
        'SA_MULTIFISCALYEARS' => array(SS_GL_C|13, _("Allow entry on non closed Fiscal years")),
 
        'SA_BANKTRANSVIEW' => array(SS_GL|1, _("Bank transactions view")),
@@ -247,6 +249,9 @@ $security_areas =array(
        'SA_BANKREP' => array(SS_GL_A|3, _("Bank reports and inquiries")),
        'SA_GLREP' => array(SS_GL_A|4, _("GL reports and inquiries")),
 );
+
+if (!@$allow_gl_reopen)
+       unset($security_areas['SA_GLREOPEN']);
 /*
        This function should be called whenever we want to extend core access level system
        with new security areas and/or sections i.e.: 
diff --git a/includes/app_entries.inc b/includes/app_entries.inc
new file mode 100644 (file)
index 0000000..1fa7bb7
--- /dev/null
@@ -0,0 +1,54 @@
+<?php
+/**********************************************************************
+    Copyright (C) FrontAccounting, LLC.
+       Released under the terms of the GNU General Public License, GPL, 
+       as published by the Free Software Foundation, either version 3 
+       of the License, or (at your option) any later version.
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+    See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
+***********************************************************************/
+/*
+       This file contains all application entry points.
+*/
+
+/*
+       Transaction editors. First paraneter is transaction number, second (optional) transaction type.
+*/
+$trans_editors = array(
+
+       ST_JOURNAL => "/gl/gl_journal.php?ModifyGL=Yes&trans_no=%d&trans_type=%d",
+       ST_BANKPAYMENT => "/gl/gl_bank.php?ModifyPayment=Yes&trans_no=%d&trans_type=%d",
+       ST_BANKDEPOSIT => "/gl/gl_bank.php?ModifyDeposit=Yes&trans_no=%d&trans_type=%d",
+       //ST_BANKTRANSFER => ,
+
+       ST_SALESINVOICE => "/sales/customer_invoice.php?ModifyInvoice=%d",
+//   11=>
+// free hand (debtors_trans.order_==0)
+//     "/sales/credit_note_entry.php?ModifyCredit=%d"
+// credit invoice
+//     "/sales/customer_credit_invoice.php?ModifyCredit=%d"
+       ST_CUSTCREDIT =>  "/sales/customer_credit_invoice.php?ModifyCredit=%s",
+       ST_CUSTPAYMENT =>  "/sales/customer_payments.php?trans_no=%d",
+       ST_CUSTDELIVERY => "/sales/customer_delivery.php?ModifyDelivery=%d",
+
+       //ST_LOCTRANSFER =>  ,
+       //ST_INVADJUST =>  ,
+
+       ST_PURCHORDER =>  "/purchasing/po_entry_items.php?ModifyOrderNumber=%d",
+       ST_SUPPINVOICE => "/purchasing/supplier_invoice.php?ModifyInvoice=%d",
+
+       //ST_SUPPCREDIT =>  ,
+       //ST_SUPPAYMENT =>  ,
+       //ST_SUPPRECEIVE => ,
+
+       //ST_WORKORDER =>  ,
+       //ST_MANUISSUE =>  ,
+       //ST_MANURECEIVE =>  ,
+
+       ST_SALESORDER => "/sales/sales_order_entry.php?ModifyOrderNumber=%d",
+       ST_SALESQUOTE => "/sales/sales_order_entry.php?ModifyQuotationNumber=%d",
+       //ST_COSTUPDATE =>  ,
+       //ST_DIMENSION =>  ,
+);
index cc75e5e87cbef51969b18c35921f667b09200c7e..5dd2c197e02a52587af77ce1fd31b78b8feff9d4 100644 (file)
@@ -59,12 +59,15 @@ class current_user
 
        function login($company, $loginname, $password)
        {
-               global $security_areas, $security_groups, $security_headings, $path_to_root, $login_delay;
+               global $security_areas, $security_groups, $security_headings, $path_to_root, $dflt_lang, $login_delay;
 
                $this->set_company($company);
            $this->logged = false;
 
-               set_global_connection();
+               set_global_connection($company);
+               $lang = &$_SESSION['language'];
+               $lang->set_language($_SESSION['language']->code);
+               db_set_encoding($_SESSION['language']->encoding);
 
                // Use external authentication source if any.
                // Keep in mind you need to have user data set for $loginname
@@ -80,6 +83,13 @@ class current_user
                if ($Auth_Result)
                {
                        $myrow = get_user_by_login($loginname);
+                       if ($myrow['language'] != $dflt_lang)
+                       {        // refresh language and user data
+                               $lang->set_language($myrow['language']);
+                               db_set_encoding($_SESSION['language']->encoding);
+                               $myrow = get_user_by_login($loginname);
+                       }
+
                        $this->old_db = isset($myrow["full_access"]);
                        if (! @$myrow["inactive"]) {
                                if ($this->old_db) { 
@@ -167,20 +177,20 @@ class current_user
                        return !isset($security_groups) && is_array($this->role_set);
        }
 
-       function can_access($page_level)
+       function can_access($sec_area)
        {
                global $security_groups, $security_areas;
                if (isset($security_groups)) {
-                       return $this->company == 0 &&
+                       return is_admin_company() &&
                                in_array(20, $security_groups[$this->access]);
                }
 
-               if ($page_level === 'SA_OPEN') 
+               if ($sec_area === 'SA_OPEN') 
                        return true;
-               if ($page_level === 'SA_DENIED' || $page_level === '') 
+               if ($sec_area === 'SA_DENIED' || $sec_area === '') 
                        return false;
 
-               $code = $security_areas[$page_level][0];
+               $code = $security_areas[$sec_area][0];
 
                // only first registered company has site admin privileges
                return $code && in_array($code, $this->role_set)
@@ -532,6 +542,17 @@ function user_startup_tab()
        return $_SESSION["wa_current_user"]->prefs->start_up_tab();
 }
 
+function user_transaction_days()
+{
+    return $_SESSION["wa_current_user"]->prefs->transaction_days();
+}
+
+
+function user_check_access($sec_area)
+{
+       return $_SESSION["wa_current_user"]->can_access($sec_area);
+}
+
 function set_user_prefs($prefs)
 {
        $_SESSION["wa_current_user"]->update_prefs($prefs);
@@ -651,6 +672,7 @@ function flush_dir($path, $wipe = false)
        $dir = opendir($path);
        if(!$dir)
                return;
+
        while(false !== ($fname = readdir($dir))) {
                if($fname=='.' || $fname=='..' || $fname=='CVS' || (!$wipe && $fname=='index.php')) continue;
                if(is_dir($path.'/'.$fname)) {
@@ -676,5 +698,9 @@ function company_path($comp=null)
                        . '/'.$comp;
 }
 
+function is_admin_company()
+{
+       return $this->company == 0;
+}
 
 ?>
\ No newline at end of file
index 67768b937df6d1f3eff7662b8258b76fa71e7ece..272584c3270c7b0e0ccee3d78d5757bf829efb4f 100644 (file)
@@ -498,5 +498,45 @@ function check_num($postname, $min=null, $max=null, $dflt=0) {
     return 1;
 }
 
+function check_is_closed($type, $type_no, $msg=null)
+{
+       global $systypes_array;
+
+    if (($type_no > 0) && is_closed_trans($type, $type_no))
+    {
+       if (!$msg)
+               $msg = sprintf(_("%s #%s is closed for further edition."), $systypes_array[$type], $type_no);
+               display_error($msg, true);
+               display_footer_exit();
+       }
+}
+
+function check_deferred_income_act($msg)
+{
+       global $path_to_root;
+
+    if (!get_company_pref('deferred_income_act')) 
+    {
+       display_error($msg, true);
+               display_footer_exit();
+    }
+}
+
+function check_is_editable($trans_type, $trans_no, $msg=null)
+{
+       if (!$_SESSION['wa_current_user']->can_access('SA_EDITOTHERSTRANS'))
+       {
+               $audit = get_audit_trail_last($trans_type, $trans_no);
+
+               if ($_SESSION['wa_current_user']->user != $audit['user'])
+               {
+               if (!$msg)
+                       $msg = '<b>'._("You have no edit access to transactions created by other users.").'</b>';
+                       display_note($msg);
+                       display_footer_exit();
+               }
+       }
+       if (!in_array($trans_type, array(ST_SALESORDER, ST_SALESQUOTE, ST_PURCHORDER, ST_WORKORDER)))
+               check_is_closed($trans_type, $trans_no, $msg);
+}
 
-?>
\ No newline at end of file
index 96ecb31bcdcf2967a2e90c6cb4173410f1da88bb..795b96e25ccf1d9107859c8bbb8b84537d599159 100644 (file)
@@ -194,26 +194,29 @@ function is_date_in_fiscalyear($date, $convert=false)
        global $path_to_root;
        include_once($path_to_root . "/admin/db/fiscalyears_db.inc");
 
-    //Chaitanya
-    if ($convert)
-        $date2 = sql2date($date);
-    else
-        $date2 = $date;
-
-    if ($_SESSION["wa_current_user"]->can_access('SA_MULTIFISCALYEARS')) // allow all open years for this one
-        return is_date_in_fiscalyears($date2, false); 
-
-    $myrow = get_current_fiscalyear();
-    if ($myrow['closed'] == 1)
-        return 0;
-    
-    $begin = sql2date($myrow['begin']);
-    $end = sql2date($myrow['end']);
-    if (date1_greater_date2($begin, $date2) || date1_greater_date2($date2, $end))
-    {
-        return 0;
-    }
-    return 1;
+       if ($convert)
+               $date2 = sql2date($date);
+       else
+               $date2 = $date;
+
+       if (user_check_access('SA_MULTIFISCALYEARS')) // allow all open years for this one
+               return is_date_in_fiscalyears($date2, false);
+
+       if (is_date_closed($date2))
+               return 0;
+       $myrow = get_current_fiscalyear();
+       $begin = sql2date($myrow['begin']);
+       $end = sql2date($myrow['end']);
+       if (date1_greater_date2($begin, $date2) || date1_greater_date2($date2, $end))
+       {
+               return 0;
+       }
+       return 1;
+}
+
+function is_date_closed($date)
+{
+       return !date1_greater_date2($date, sql2date(get_company_pref('gl_closing_date')));
 }
 
 function begin_fiscalyear()
diff --git a/includes/db/allocations_db.inc b/includes/db/allocations_db.inc
new file mode 100644 (file)
index 0000000..8e28432
--- /dev/null
@@ -0,0 +1,117 @@
+<?php
+/**********************************************************************
+       Copyright (C) FrontAccounting, LLC.
+       Released under the terms of the GNU General Public License, GPL, 
+       as published by the Free Software Foundation, either version 3 
+       of the License, or (at your option) any later version.
+       This program is distributed in the hope that it will be useful,
+       but WITHOUT ANY WARRANTY; without even the implied warranty of
+       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+       See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
+***********************************************************************/
+//
+// Functions below are unified interface to allocations (should supersede currently separate cust/supp allocations in a future)
+//
+//----------------------------------------------------------------------------------------
+//
+//     Returns table of payments currently allocated to selected transaction.
+//
+function get_payments_for($trans_no, $trans_type)
+{
+       $allocations = array();
+
+       $sql = "(SELECT * FROM ".TB_PREF."cust_allocations
+                       WHERE (trans_type_to=".db_escape($trans_type)." AND trans_no_to=".db_escape($trans_no)."))
+               UNION
+                       (SELECT * FROM ".TB_PREF."supp_allocations
+                       WHERE (trans_type_to=".db_escape($trans_type)." AND trans_no_to=".db_escape($trans_no)."))";
+       $result = db_query($sql, "error reading current allocations");
+
+       while($dat = db_fetch($result))
+       {
+               $allocations[] = $dat;
+       }
+
+       return $allocations;
+}
+
+//
+//     Unified inteface to (re)allocate payments to supp/cust/transaction
+//
+function allocate_payment($type_from, $no_from, $type_to, $no_to, $amount, $date)
+{
+       $date = date2sql($date); // FIXME types
+       if (in_array($type_to, array(ST_SALESORDER, ST_CUSTCREDIT, ST_CUSTDELIVERY, ST_SALESINVOICE)))
+       {
+               $allocations = 'cust_allocations';
+               $payments='debtor_trans';
+               $transactions = $type_to == ST_SALESORDER ? 'sales_orders' : 'debtor_trans';
+               $where = $type_to == ST_SALESORDER ? "order_no=".db_escape($no_to) : "type=".db_escape($type_to)." AND trans_no=".db_escape($no_to);
+       }
+       else
+       {
+               $allocations = 'supp_allocations';
+               $payments='supp_trans';
+               $transactions = $type_to == ST_PURCHORDER ? 'purch_orders' : 'supp_trans';
+               $where = $type_to == ST_PURCHORDER ? "order_no=".db_escape($no_to) : "type=".db_escape($type_to)." AND trans_no=".db_escape($no_to);
+       }
+
+       // add/update/delete allocation
+       if (floatcmp($amount, 0) != 0)
+       {
+               $sql = "REPLACE ".TB_PREF.$allocations." SET amt = ". db_escape($amount).",date_alloc='$date'"
+                       .",trans_type_from=".db_escape($type_from).",trans_no_from=".db_escape($no_from)
+                       .",trans_type_to=".db_escape($type_to).",trans_no_to=".db_escape($no_to);
+       }
+       else {
+               $sql = "DELETE FROM ".TB_PREF.$allocations."
+                       WHERE trans_type_from=".db_escape($type_from)." AND trans_no_from=".db_escape($no_from)
+               ." AND trans_type_to=".db_escape($type_to)." AND trans_no_to=".db_escape($no_to);
+       }
+       db_query($sql, "The existing allocations could not be updated");
+
+       // referesh allocation summaries
+       $sql = "UPDATE ".TB_PREF.$transactions." trans,
+                               (SELECT SUM(amt) amt FROM ".TB_PREF.$allocations." WHERE trans_type_to=".db_escape($type_to)." AND trans_no_to=".db_escape($no_to).") paym
+                        SET alloc = paym.amt
+                        WHERE $where";
+       db_query($sql, "The transaction allocations could not be updated");
+
+       $sql = "UPDATE ".TB_PREF.$payments." trans,
+                               (SELECT SUM(amt) amt FROM ".TB_PREF.$allocations." WHERE trans_type_from=".db_escape($type_from)." AND trans_no_from=".db_escape($no_from).") paym
+                        SET alloc = paym.amt
+                        WHERE type=".db_escape($type_from)." AND trans_no=".db_escape($no_from);
+
+       return db_query($sql, "The payment allocations could not be updated");
+}
+
+//----------------------------------------------------------------------------------------
+//
+//     Reallocates allocations to selected transaction.
+//  $allocs is table of payments which should be reallocated
+//  $free_remainder should be true if old allacations should be freed when not allocated to new transaction.
+//
+function reallocate_payments($trans_no, $trans_type, $alloc_date, $max_alloc, $allocs, $free_remainder=true)
+{
+
+       foreach($allocs as $alloc)
+       {
+               $amount = min($alloc['amt'], $max_alloc);
+               $remainder = $alloc['amt'] - $amount;
+
+               $max_alloc = floatcmp($max_alloc, $amount) > 0 ? $max_alloc-$amount : 0;
+
+               $same_to =  $trans_type == $alloc['trans_type_to'] && $trans_no == $alloc['trans_no_to'];
+               if (!$same_to || ($remainder > 0))
+               {
+                       allocate_payment($alloc['trans_type_from'], $alloc['trans_no_from'], $trans_type, $trans_no, $amount, $alloc_date);
+               }
+               if (!$same_to && ($remainder > 0 || $free_remainder))
+               {
+                       allocate_payment($alloc['trans_type_from'], $alloc['trans_no_from'], 
+                               $alloc['trans_type_to'], $alloc['trans_no_to'], $free_remainder ? 0 : $remainder, $alloc_date);
+               }
+               if (!$free_remainder && $max_alloc==0)
+                       break;
+       }
+}
index f9efe9a01861a2d3016dbdbf21e7c4d1fcec4904..c25fdc5111526228c42f858afa8ed8756123b524 100644 (file)
 
 function add_audit_trail($trans_type, $trans_no, $trans_date, $descr='')
 {
+       $date = date2sql($trans_date);
        $sql = "INSERT INTO ".TB_PREF."audit_trail"
-               . " (type, trans_no, user, fiscal_year, gl_date, description, gl_seq)
+               . " (type, trans_no, user, gl_date, description)
                        VALUES(".db_escape($trans_type).", ".db_escape($trans_no).","
-                       . $_SESSION["wa_current_user"]->user. ","
-                       . get_company_pref('f_year') .","
-                       . "'". date2sql($trans_date) ."',"
-                       . db_escape($descr). ", 0)";
+                       . $_SESSION["wa_current_user"]->user . ","
+                       . "'$date',". db_escape($descr). ")";
 
        db_query($sql, "Cannot add audit info");
-       
-       // all audit records beside latest one should have gl_seq set to NULL
+       // all audit records beside just inserted one should have gl_seq set to NULL
        // to avoid need for subqueries (not existing in MySQL 3) all over the code
-       $sql = "UPDATE ".TB_PREF."audit_trail SET gl_seq = NULL"
+       $sql = "UPDATE ".TB_PREF."audit_trail audit LEFT JOIN ".TB_PREF."fiscal_year year ON year.begin<='$date' AND year.end>='$date'
+               SET audit.gl_seq = IF(audit.id=".db_insert_id().", 0, NULL),"
+               ."audit.fiscal_year=year.id"
                . " WHERE type=".db_escape($trans_type)." AND trans_no="
-               .db_escape($trans_no)." AND id!=".db_insert_id();
+               . db_escape($trans_no);
 
        db_query($sql, "Cannot update audit gl_seq");
 }
@@ -58,14 +58,18 @@ function get_audit_trail_last($trans_type, $trans_no)
        and reindex     journal.
 */
 function close_transactions($todate) {
+
+       begin_transaction();
+
        $errors = 0;
-       $sql = "SELECT DISTINCT a.id, a.gl_date, a.fiscal_year"
+       // select only those audit trail records which produce any GL postings
+       $sql = "SELECT a.id, gl.tran_date, a.fiscal_year, a.gl_seq,
+                gl.tran_date <= '". date2sql($todate) ."' as closed"
                ." FROM ".TB_PREF."gl_trans gl"
                ." LEFT JOIN ". TB_PREF."audit_trail a ON 
                        (gl.type=a.type AND gl.type_no=a.trans_no)"
-               . " WHERE gl_date<='". date2sql($todate) ."'"
-               . " AND NOT ISNULL(gl_seq)"
-               . " ORDER BY a.fiscal_year, a.gl_date, a.id";
+               . " WHERE NOT ISNULL(a.gl_seq) AND gl.amount!=0"        // skip old audit records and voided transactions
+               . " GROUP BY  a.id, gl.tran_date, a.fiscal_year, a.gl_seq ORDER BY a.fiscal_year, gl.tran_date, a.id";
 
        $result = db_query($sql, "Cannot select transactions for closing");
 
@@ -78,59 +82,44 @@ function close_transactions($todate) {
                        }
                        if ($last_year != $row['fiscal_year']) {
                                $last_year = $row['fiscal_year'];
-                               $counter = 1; // reset counter on fiscal year change
-                       } else
-                               $counter++;
-                       $sql2 = "UPDATE ".TB_PREF."audit_trail SET"
-                               . " gl_seq=$counter"
-                               . " WHERE id=".$row['id'];
-                                                                                       
-                       db_query($sql2, "Cannot reindex journal");
+                               $counter = 0; // reset counter on fiscal year change
+                       }
+
+                       $seq = $row['closed'] ? ++$counter : 0;
+                       if ($row['gl_seq'] != $seq)     { // update transaction status only when gl_seq has changed
+                               $sql2 = "UPDATE ".TB_PREF."audit_trail SET"
+                                       . " gl_seq=$seq"
+                                       . " WHERE id=".$row['id'];
+                               db_query($sql2, "Cannot reindex journal");
+                       }
                }
        }
-       
+
        if ($errors) 
                display_warning(_("Some transactions journal GL postings were not indexed due to lack of audit trail record."));
-}
-
-/*
-       Reopen all transactions for edition up from date $fromdate
-*/
-function open_transactions($fromdate) {
-
-       $sql = "SELECT a.id, a.gl_date, a.fiscal_year"
-               ." FROM ".TB_PREF."gl_trans gl"
-               ." LEFT JOIN ". TB_PREF."audit_trail a ON 
-                       (gl.type=a.type AND gl.type_no=a.trans_no)"
-               . " WHERE gl_date>='". date2sql($fromdate) ."'"
-               . " AND !ISNULL(gl_seq)"
-               . " ORDER BY a.fiscal_year, a.gl_date, a.id";
-
-       $result = db_query($sql, "Cannot select transactions for openning");
+       else
+               update_company_prefs(array('gl_closing_date'=> date2sql($todate)));
+       commit_transaction();
 
-       if (db_num_rows($result)) {
-               $last_year = 0;
-
-               while ($row = db_fetch($result)) {
-                       if ($row['fiscal_year'] == null) {
-                               continue;
-                       }
-                       $sql2 = "UPDATE ".TB_PREF."audit_trail SET"
-                               . " gl_seq=0"
-                               . " WHERE id=".$row['id'];
-                                                                                       
-                       db_query($sql2, "Cannot clear journal order");
-               }
-       }
+       return $errors;
 }
+
 /*
        Closed transactions have gl_seq number assigned.
 */
 function is_closed_trans($type, $trans_no) {
+
+       $cdate = get_company_pref('gl_closing_date');
+       if (!$cdate)
+               return false;
+
+// FIXME: gl_date can be badly entered for some transactions due to bug in previous FA versions 
        $sql = "SELECT  gl_seq  FROM ".TB_PREF."audit_trail"
                . " WHERE type=".db_escape($type)
                ." AND trans_no=".db_escape($trans_no)
-               ." AND gl_seq>0";
+               ." AND gl_date<='$cdate'"; // date is stored in sql format
+//             ." AND (gl_date<='$cdate'" // some transaction can be not sequenced due to 0 amount, however after edition this could change
+//             ." OR gl_seq>0)";
 
        $res = db_query($sql, "Cannot check transaction");
 
index 5b4293eb10ed8d001b803fd2e6ef5a7b4426cba1..e899eac786553a8d1abcb7036c3809d246111855 100644 (file)
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
 ***********************************************************************/
-
-function set_global_connection($company=-1)
-{
-       global $db, $transaction_level, $db_connections;
-
-       cancel_transaction(); // cancel all aborted transactions if any
-       $transaction_level = 0;
-
-       if ($company == -1) 
-               $company = $_SESSION["wa_current_user"]->company;
-
-       $_SESSION["wa_current_user"]->cur_con = $company;
-
-       $connection = $db_connections[$company];
-
-       $db = mysql_connect($connection["host"], $connection["dbuser"], $connection["dbpassword"]);
-               mysql_select_db($connection["dbname"], $db);
-       ///// From MySql release 5.6.6 the sql_mode is no longer empty as it was prior to
-       ///// this release. Just for safety we set it empty for all 5.6 release and higher.
-       ///// This non empty sql_mode values can interphere with FA, so all is set empty during
-       ///// our sessions.
-       ///// We are, however, investigating the existing code to be compatible in the future.
-       ///// We are also working on a mysql/mysqli solution to go to release 2.4.
-       if (strncmp(mysql_get_server_info(), "5.6", 3) >= 0) 
-               db_query("SET sql_mode = ''");
-       /////
-       return $db;
-}
-
-$db_duplicate_error_code = 1062;
-
-//DB wrapper functions to change only once for whole application
-
-function db_query($sql, $err_msg=null)
-{
-       global $db, $show_sql, $sql_trail, $select_trail, $go_debug, $sql_queries, $Ajax,
-               $db_connections, $db_last_inserted_id;
-       
-       // set current db prefix
-       $cur_prefix = $db_connections[$_SESSION["wa_current_user"]->cur_con]['tbpref'];
-       $sql = str_replace(TB_PREF, $cur_prefix, $sql);
-
-       if ($show_sql)
-       {
-               $Ajax->activate('footer_debug');
-               $sql_queries .= "<pre>$sql</pre>\n<hr>";
-       }
-
-       $result = mysql_query($sql, $db);
-       
-       if($sql_trail) {
-               $db_last_inserted_id = mysql_insert_id($db);    // preserve in case trail insert is done
-               if ($select_trail || (strstr($sql, 'SELECT') === false)) {
-                       mysql_query(
-                       "INSERT INTO ".$cur_prefix."sql_trail
-                               (`sql`, `result`, `msg`)
-                               VALUES(".db_escape($sql).",".($result ? 1 : 0).",
-                               ".db_escape($err_msg).")", $db);
-               }
-       }
-
-       if ($err_msg != null || $go_debug) {
-               $exit = $err_msg != null;
-               if (function_exists('xdebug_call_file'))
-                       check_db_error('<br>At file '.xdebug_call_file().':'.xdebug_call_line().':<br>'.$err_msg, $sql, $exit);
-               else
-                       check_db_error($err_msg, $sql, $exit);
-       }
-       return $result;
-}
-
-function db_fetch_row ($result)
-{
-
-       return mysql_fetch_row($result);
-}
-
-function db_fetch_assoc ($result)
-{
-
-       return mysql_fetch_assoc($result);
-}
-
-function db_fetch ($result)
-{
-
-       return mysql_fetch_array($result);
-}
-
-function db_seek (&$result,$record)
-{
-       return mysql_data_seek($result, $record);
-}
-
-function db_free_result ($result)
-{
-       if ($result)
-               mysql_free_result($result);
-}
-
-function db_num_rows ($result)
-{
-       return mysql_num_rows($result);
-}
-
-function db_num_fields ($result)
-{
-       return mysql_num_fields($result);
-}
-
-function db_escape($value = "", $nullify = false)
-{
-       $value = @html_entity_decode($value, ENT_QUOTES, $_SESSION['language']->encoding);
-       $value = @htmlspecialchars($value, ENT_QUOTES, $_SESSION['language']->encoding);
-
-       //reset default if second parameter is skipped
-       $nullify = ($nullify === null) ? (false) : ($nullify);
-
-       //check for null/unset/empty strings
-       if ((!isset($value)) || (is_null($value)) || ($value === "")) {
-               $value = ($nullify) ? ("NULL") : ("''");
-       } else {
-               if (is_string($value)) {
-               //value is a string and should be quoted; determine best method based on available extensions
-                       if (function_exists('mysql_real_escape_string')) {
-                               $value = "'" . mysql_real_escape_string($value) . "'";
-                       } else {
-                         $value = "'" . mysql_escape_string($value) . "'";
-                       }
-               } else if (!is_numeric($value)) {
-                       //value is not a string nor numeric
-                       display_error("ERROR: incorrect data type send to sql query");
-                       echo '<br><br>';
-                       exit();
-               }
-       }
-       return $value;
-}
-
-function db_error_no ()
-{
-       global $db;
-       return mysql_errno($db);
-}
-
-function db_error_msg($conn)
-{
-       return mysql_error($conn);
-}
-
-function db_insert_id()
-{
-       global $db_last_inserted_id, $sql_trail, $db;
-
-       return $sql_trail ? $db_last_inserted_id : mysql_insert_id($db);
-}
-
-function db_num_affected_rows()
-{
-       global $db;
-       return mysql_affected_rows($db);
-}
-
-function db_field_name($result, $n)
-{
-       return mysql_field_name($result, $n);
-}
-
-function db_create_db($connection)
-{
-       $db = mysql_connect($connection["host"] ,
-               $connection["dbuser"], $connection["dbpassword"]);
-       if (!mysql_select_db($connection["dbname"], $db))
-       {
-               $sql = "CREATE DATABASE IF NOT EXISTS " . $connection["dbname"] . "";
-               if (!mysql_query($sql) || !mysql_select_db($connection["dbname"], $db))
-                       return 0;
-       }
-       return $db;
+//$path_to_root="..";
+
+
+if (strncmp(phpversion(), "5.4", 3) >= 0) // mysql_... functions deprecated from php 5.5
+       include_once("connect_db_mysqli.inc");
+else   
+       include_once("connect_db_mysql.inc");
+
+function db_get_version()
+{
+       $result = db_query("SELECT VERSION()");
+       $row = db_fetch($result);
+       return $row[0];
+}
+
+/*
+       Converts encoding name to mysql standard.
+*/
+function get_mysql_encoding_name($encoding)
+{
+       $db_encoding = array(
+               'UTF-8' => 'utf8',
+               'ISO-8859-1' => 'latin1',
+               'ISO-8859-2' => 'latin2',
+               'ISO-8859-7' => 'greek',
+               'ISO-8859-8' => 'hebrew',
+               'ISO-8859-9' => 'latin5',
+               'ISO-8859-13' => 'latin7',
+               'KOI8-R' => 'koi8r',
+               'KOI8-U' => 'koi8u',
+               'CP850' => 'cp850',
+               'CP866' => 'cp866',
+               'CP932' => 'cp932',
+               'CP1250' => 'cp1250',
+               'CP1251' => 'cp1251',
+               'CP1252' => 'latin1',
+               'CP1256' => 'cp1256',
+               'CP1257' => 'cp1257',
+               'GB2312' => 'gb2312',
+               'EUC-JP' => 'ujis',
+               'EUC-KR' => 'euckr',
+               'BIG5' => 'big5',
+               'GBK' => 'gbk',
+               'SHIFT_JIS' => 'sjis',
+               'TIS-620' => 'tis620',
+               'ASCII' => 'ascii',
+       );
+       $encoding = strtoupper($encoding);
+
+       return isset($db_encoding[$encoding]) ? $db_encoding[$encoding] : null;
+}
+
+/*
+       Returns 'best' collation for various locale language codes
+*/
+function get_mysql_collation($lang=null)
+{
+       if (!$lang)
+               $lang = substr($_SESSION['language']->code, 0, 2);
+
+       $db_collation = array(
+               'is' => 'icelandic',
+               'lv' => 'latvian',
+               'ro' => 'romanian',
+               'sl' => 'slovenian',
+               'pl' => 'polish',
+               'et' => 'estonian',
+               'es' => 'spanish', // or 'spanish2',
+               'sw' => 'swedish',
+               'tr' => 'turkish',
+               'cs' => 'czech',
+               'da' => 'danish',
+               'lt' => 'lithuanian',
+               'sk' => 'slovak',
+               'sp' => 'spanish2',
+               'fa' => 'persian',
+               'hu' => 'hungarian',
+               'fr' => 'roman',
+               'it' => 'roman',
+       );
+
+       return 'utf8_'.(isset($db_collation[$lang]) ? $db_collation[$lang] : 'general').'_ci';
+}
+
+/*
+       Later we assume that database with version less than 2.4 is old database, 
+       which is subject to invalid encodings on text columns,
+       so no SET NAMES or equivalent should be used.
+*/
+function db_fixed()
+{
+       $result = db_query("SELECT value FROM ".TB_PREF."sys_prefs WHERE name='version_id'");
+       $data = db_fetch($result);
+       return !db_num_rows($result) // new database is fixed by default 
+               || ($data[0] > "2.3rc");
+}
+
+/*
+       Check database default charset.
+*/
+function db_get_charset()
+{
+       $result = db_query("SELECT @@character_set_database");
+       $var = db_fetch($result);
+       return $var[0];
 }
 
-function db_drop_db($connection)
-{
-
-       if ($connection["tbpref"] == "")
-       {
-               $sql = "DROP DATABASE IF EXISTS " . $connection["dbname"] . "";
-               return mysql_query($sql);
-       }
-       else
-       {
-       $res = db_query("show table status");
-       $all_tables = array();
-       while($row = db_fetch($res))
-               $all_tables[] = $row;
-        // get table structures
-               foreach ($all_tables as $table)
-               {
-                       if (strpos($table['Name'], $connection["tbpref"]) === 0)
-                               db_query("DROP TABLE `".$table['Name'] . "`");
-               }
-               //deleting the tables, how??
-               return true;
-       }
-}
-
-function db_close($dbase = null)
-{
-       global $db;
        
-       if (!$dbase)
-               $dbase = $db;
-       return mysql_close($dbase);
-}
-
 ?>
\ No newline at end of file
diff --git a/includes/db/connect_db_mysql.inc b/includes/db/connect_db_mysql.inc
new file mode 100644 (file)
index 0000000..4c22579
--- /dev/null
@@ -0,0 +1,267 @@
+<?php
+/**********************************************************************
+    Copyright (C) FrontAccounting, LLC.
+       Released under the terms of the GNU General Public License, GPL, 
+       as published by the Free Software Foundation, either version 3 
+       of the License, or (at your option) any later version.
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+    See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
+***********************************************************************/
+
+function set_global_connection($company=-1)
+{
+       global $db, $transaction_level, $path_to_root, $db_connections;
+
+       include ($path_to_root . "/config_db.php");
+       if ($company == -1) 
+               $company = $_SESSION["wa_current_user"]->company;
+
+       cancel_transaction(); // cancel all aborted transactions if any
+       $transaction_level = 0;
+
+       $_SESSION["wa_current_user"]->cur_con = $company;
+
+       $connection = $db_connections[$company];
+
+       $db = mysql_connect($connection["host"], $connection["dbuser"], $connection["dbpassword"]);
+               mysql_select_db($connection["dbname"], $db);
+       ///// From MySql release 5.6.6 the sql_mode is no longer empty as it was prior to
+       ///// this release. Just for safety we make it empty for all 5.6 release and higher.
+       ///// This non empty sql_mode values can interphere with FA, so all is set empty during
+       ///// our sessions.
+       ///// We are, however, investigating the existing code to be compatible in the future.
+       if (strncmp(db_get_version(), "5.6", 3) >= 0) 
+               db_query("SET sql_mode = ''");
+       /////
+       return $db;
+}
+
+$db_duplicate_error_code = 1062;
+
+//DB wrapper functions to change only once for whole application
+
+function db_query($sql, $err_msg=null)
+{
+       global $db, $show_sql, $sql_trail, $select_trail, $go_debug, $sql_queries, $Ajax,
+               $db_connections, $db_last_inserted_id;
+       
+       // set current db prefix
+       $comp = isset($_SESSION["wa_current_user"]->cur_con) ? $_SESSION["wa_current_user"]->cur_con : 0;
+       $cur_prefix = $db_connections[$comp]['tbpref'];
+       $sql = str_replace(TB_PREF, $cur_prefix, $sql);
+
+       if ($show_sql)
+       {
+               $Ajax->activate('footer_debug');
+               $sql_queries .= "<pre>$sql</pre>\n<hr>";
+       }
+
+       // mysql profiling
+       global $profile_sql;
+       if (@$profile_sql) 
+               get_usec();
+       $result = mysql_query($sql, $db);
+       if (@$profile_sql)
+       {
+               $profile_sql= false;
+               _vd($sql.'<br>:'.db_num_rows($result).'rows, '.get_usec());
+       }
+       
+       if($sql_trail) {
+               $db_last_inserted_id = mysql_insert_id($db);    // preserve in case trail insert is done
+               if ($select_trail || (strstr($sql, 'SELECT') === false)) {
+                       mysql_query(
+                       "INSERT INTO ".$cur_prefix."sql_trail
+                               (`sql`, `result`, `msg`)
+                               VALUES(".db_escape($sql).",".($result ? 1 : 0).",
+                               ".db_escape($err_msg).")", $db);
+               }
+       }
+
+       if ($err_msg != null || $go_debug) {
+               $exit = $err_msg != null;
+               if (function_exists('xdebug_call_file'))
+                       check_db_error('<br>At file '.xdebug_call_file().':'.xdebug_call_line().':<br>'.$err_msg, $sql, $exit);
+               else
+                       check_db_error($err_msg, $sql, $exit);
+       }
+       return $result;
+}
+
+function db_fetch_row ($result)
+{
+
+       return mysql_fetch_row($result);
+}
+
+function db_fetch_assoc ($result)
+{
+
+       return mysql_fetch_assoc($result);
+}
+
+function db_fetch ($result)
+{
+
+       return mysql_fetch_array($result);
+}
+
+function db_seek (&$result,$record)
+{
+       return mysql_data_seek($result, $record);
+}
+
+function db_free_result ($result)
+{
+       if ($result)
+               mysql_free_result($result);
+}
+
+function db_num_rows ($result)
+{
+       return mysql_num_rows($result);
+}
+
+function db_num_fields ($result)
+{
+       return mysql_num_fields($result);
+}
+
+function db_escape($value = "", $nullify = false)
+{
+       $value = @html_entity_decode($value, ENT_QUOTES, $_SESSION['language']->encoding);
+       $value = @htmlspecialchars($value, ENT_QUOTES, $_SESSION['language']->encoding);
+
+       //reset default if second parameter is skipped
+       $nullify = ($nullify === null) ? (false) : ($nullify);
+
+       //check for null/unset/empty strings
+       if ((!isset($value)) || (is_null($value)) || ($value === "")) {
+               $value = ($nullify) ? ("NULL") : ("''");
+       } else {
+               if (is_string($value)) {
+               //value is a string and should be quoted; determine best method based on available extensions
+                       if (function_exists('mysql_real_escape_string')) {
+                               $value = "'" . mysql_real_escape_string($value) . "'";
+                       } else {
+                         $value = "'" . mysql_escape_string($value) . "'";
+                       }
+               } else if (!is_numeric($value)) {
+                       //value is not a string nor numeric
+                       display_error("ERROR: incorrect data type send to sql query");
+                       echo '<br><br>';
+                       exit();
+               }
+       }
+       return $value;
+}
+
+function db_error_no ()
+{
+       global $db;
+       return mysql_errno($db);
+}
+
+function db_error_msg($conn)
+{
+       return mysql_error($conn);
+}
+
+function db_insert_id()
+{
+       global $db_last_inserted_id, $sql_trail, $db;
+
+       return $sql_trail ? $db_last_inserted_id : mysql_insert_id($db);
+}
+
+function db_num_affected_rows()
+{
+       global $db;
+       return mysql_affected_rows($db);
+}
+
+function db_field_name($result, $n)
+{
+       return mysql_field_name($result, $n);
+}
+
+function db_create_db($connection)
+{
+       $db = mysql_connect($connection["host"] ,
+               $connection["dbuser"], $connection["dbpassword"]);
+       if (strncmp(db_get_version(), "5.6", 3) >= 0) 
+               db_query("SET sql_mode = ''");
+       if (!mysql_select_db($connection["dbname"], $db))
+       {
+               $sql = "CREATE DATABASE IF NOT EXISTS " . $connection["dbname"] . "";
+               if (!mysql_query($sql) || !mysql_select_db($connection["dbname"], $db))
+                       return 0;
+       }
+       return $db;
+}
+
+function db_drop_db($connection)
+{
+
+       if ($connection["tbpref"] == "")
+       {
+               $sql = "DROP DATABASE IF EXISTS " . $connection["dbname"] . "";
+               return mysql_query($sql);
+       }
+       else
+       {
+       $res = db_query("show table status");
+       $all_tables = array();
+       while($row = db_fetch($res))
+               $all_tables[] = $row;
+        // get table structures
+               foreach ($all_tables as $table)
+               {
+                       if (strpos($table['Name'], $connection["tbpref"]) === 0)
+                               db_query("DROP TABLE `".$table['Name'] . "`");
+               }
+               //deleting the tables, how??
+               return true;
+       }
+}
+
+function db_close($dbase = null)
+{
+       global $db;
+       
+       if (!$dbase)
+               $dbase = $db;
+       return mysql_close($dbase);
+}
+
+function db_extension_exists()
+{
+       return function_exists('mysql_connect');
+}
+
+function db_escape_function($string)
+{
+       return (function_exists('mysql_real_escape_string') ? mysql_real_escape_string($string) : mysql_escape_string($string));
+}
+
+/*
+       Set mysql client encoding.
+       Default is is encoding used by default language.
+*/
+function db_set_encoding($ui_encoding=null)
+{
+       global $dflt_lang, $installed_languages;
+
+       if (!isset($ui_encoding))
+       {
+               $lang = array_search_value($dflt_lang, $installed_languages, 'code');
+               $ui_encoding = strtoupper($lang['encoding']);
+       }
+
+       if ($mysql_enc = get_mysql_encoding_name($ui_encoding))
+               mysql_set_charset($mysql_enc);
+}
+
+?>
\ No newline at end of file
diff --git a/includes/db/connect_db_mysqli.inc b/includes/db/connect_db_mysqli.inc
new file mode 100644 (file)
index 0000000..e8f5395
--- /dev/null
@@ -0,0 +1,267 @@
+<?php
+/**********************************************************************
+    Copyright (C) FrontAccounting, LLC.
+       Released under the terms of the GNU General Public License, GPL, 
+       as published by the Free Software Foundation, either version 3 
+       of the License, or (at your option) any later version.
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+    See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
+***********************************************************************/
+
+function set_global_connection($company=-1)
+{
+       global $db, $transaction_level, $path_to_root, $db_connections;
+
+       include ($path_to_root . "/config_db.php");
+       if ($company == -1) 
+               $company = $_SESSION["wa_current_user"]->company;
+
+       cancel_transaction(); // cancel all aborted transactions if any
+       $transaction_level = 0;
+
+       $_SESSION["wa_current_user"]->cur_con = $company;
+
+       $connection = $db_connections[$company];
+
+       $db = mysqli_connect($connection["host"], $connection["dbuser"], $connection["dbpassword"]);
+               mysqli_select_db($db, $connection["dbname"]);
+       ///// From mysqli release 5.6.6 the sql_mode is no longer empty as it was prior to
+       ///// this release. Just for safety we make it empty for all 5.6 release and higher.
+       ///// This non empty sql_mode values can interphere with FA, so all is set empty during
+       ///// our sessions.
+       ///// We are, however, investigating the existing code to be compatible in the future.
+       if (strncmp(db_get_version(), "5.6", 3) >= 0) 
+               db_query("SET sql_mode = ''");
+       /////
+       return $db;
+}
+
+$db_duplicate_error_code = 1062;
+
+//DB wrapper functions to change only once for whole application
+
+function db_query($sql, $err_msg=null)
+{
+       global $db, $show_sql, $sql_trail, $select_trail, $go_debug, $sql_queries, $Ajax,
+               $db_connections, $db_last_inserted_id;
+       
+       // set current db prefix
+       $comp = isset($_SESSION["wa_current_user"]->cur_con) ? $_SESSION["wa_current_user"]->cur_con : 0;
+       $cur_prefix = $db_connections[$comp]['tbpref'];
+       $sql = str_replace(TB_PREF, $cur_prefix, $sql);
+
+       if ($show_sql)
+       {
+               $Ajax->activate('footer_debug');
+               $sql_queries .= "<pre>$sql</pre>\n<hr>";
+       }
+
+       // mysql profiling
+       global $profile_sql;
+       if (@$profile_sql) 
+               get_usec();
+       $result = mysqli_query($db, $sql);
+       if (@$profile_sql)
+       {
+               $profile_sql= false;
+               _vd($sql.'<br>:'.db_num_rows($result).'rows, '.get_usec());
+       }
+       
+       if($sql_trail) {
+               $db_last_inserted_id = mysqli_insert_id($db);   // preserve in case trail insert is done
+               if ($select_trail || (strstr($sql, 'SELECT') === false)) {
+                       mysqli_query($db, "INSERT INTO ".$cur_prefix."sql_trail
+                               (`sql`, `result`, `msg`)
+                               VALUES(".db_escape($sql).",".($result ? 1 : 0).",
+                               ".db_escape($err_msg).")");
+               }
+       }
+
+       if ($err_msg != null || $go_debug) {
+               $exit = $err_msg != null;
+               if (function_exists('xdebug_call_file'))
+                       check_db_error('<br>At file '.xdebug_call_file().':'.xdebug_call_line().':<br>'.$err_msg, $sql, $exit);
+               else
+                       check_db_error($err_msg, $sql, $exit);
+       }
+       return $result;
+}
+
+function db_fetch_row ($result)
+{
+       $ret = mysqli_fetch_row($result);
+       return ($ret === null ? false : $ret);
+}
+
+function db_fetch_assoc ($result)
+{
+       $ret = mysqli_fetch_assoc($result);
+       return ($ret === null ? false : $ret);
+}
+
+function db_fetch ($result)
+{
+       $ret = mysqli_fetch_array($result);
+       return ($ret === null ? false : $ret);
+}
+
+function db_seek (&$result,$record)
+{
+       return mysqli_data_seek($result, $record);
+}
+
+function db_free_result ($result)
+{
+       if ($result)
+               mysqli_free_result($result);
+}
+
+function db_num_rows ($result)
+{
+       return mysqli_num_rows($result);
+}
+
+function db_num_fields ($result)
+{
+       return mysqli_num_fields($result);
+}
+
+function db_escape($value = "", $nullify = false)
+{
+       global $db;
+       
+       $value = @html_entity_decode($value, ENT_QUOTES, $_SESSION['language']->encoding);
+       $value = @htmlspecialchars($value, ENT_QUOTES, $_SESSION['language']->encoding);
+
+       //reset default if second parameter is skipped
+       $nullify = ($nullify === null) ? (false) : ($nullify);
+
+       //check for null/unset/empty strings
+       if ((!isset($value)) || (is_null($value)) || ($value === "")) {
+               $value = ($nullify) ? ("NULL") : ("''");
+       } else {
+               if (is_string($value)) {
+                       $value = "'" . mysqli_real_escape_string($db, $value) . "'";
+               //value is a string and should be quoted; 
+               } else if (!is_numeric($value)) {
+                       //value is not a string nor numeric
+                       display_error("ERROR: incorrect data type send to sql query");
+                       echo '<br><br>';
+                       exit();
+               }
+       }
+       return $value;
+}
+
+function db_error_no ()
+{
+       global $db;
+    return mysqli_errno($db);
+}
+
+function db_error_msg($conn)
+{
+       return mysqli_error($conn);
+}
+
+function db_insert_id()
+{
+       global $db_last_inserted_id, $sql_trail, $db;
+
+       return $sql_trail ? $db_last_inserted_id : mysqli_insert_id($db);
+}
+
+function db_num_affected_rows()
+{
+       global $db;
+       return mysqli_affected_rows($db);
+}
+
+function db_field_name($result, $n)
+{
+    $fieldinfo = mysqli_fetch_field_direct($result, $n);
+    return $fieldinfo->name;
+}
+
+function db_create_db($connection)
+{
+       $db = mysqli_connect($connection["host"], $connection["dbuser"], $connection["dbpassword"]);
+       if (strncmp(db_get_version(), "5.6", 3) >= 0) 
+               db_query("SET sql_mode = ''");
+       if (!mysqli_select_db($db, $connection["dbname"]))
+       {
+               $sql = "CREATE DATABASE IF NOT EXISTS " . $connection["dbname"] . "";
+               if (!mysqli_query($db, $sql) || !mysqli_select_db($db, $connection["dbname"]))
+                       return 0;
+       }
+       return $db;
+}
+
+function db_drop_db($connection)
+{
+
+       if ($connection["tbpref"] == "")
+       {
+               global $db;
+               $sql = "DROP DATABASE IF EXISTS " . $connection["dbname"] . "";
+               return mysqli_query($db, $sql);
+       }
+       else
+       {
+       $res = db_query("show table status");
+       $all_tables = array();
+       while($row = db_fetch($res))
+               $all_tables[] = $row;
+        // get table structures
+               foreach ($all_tables as $table)
+               {
+                       if (strpos($table['Name'], $connection["tbpref"]) === 0)
+                               db_query("DROP TABLE `".$table['Name'] . "`");
+               }
+               //deleting the tables, how??
+               return true;
+       }
+}
+
+function db_close($dbase = null)
+{
+       global $db;
+       
+       if (!$dbase)
+               $dbase = $db;
+       return mysqli_close($dbase);
+}
+
+function db_extension_exists()
+{
+       return function_exists('mysqli_connect');
+}
+
+function db_escape_function($string)
+{
+       global $db;
+       
+       return (mysqli_real_escape_string($db, $string));
+}
+
+/*
+       Set mysql client encoding.
+       Default is is encoding used by default language.
+*/
+function db_set_encoding($ui_encoding=null)
+{
+       global $db, $dflt_lang, $installed_languages;
+
+       if (!isset($ui_encoding))
+       {
+               $lang = array_search_value($dflt_lang, $installed_languages, 'code');
+               $ui_encoding = strtoupper($lang['encoding']);
+       }
+
+       if ($mysql_enc = get_mysql_encoding_name($ui_encoding))
+               mysqli_set_charset($db, $mysql_enc);
+}
+
+?>
\ No newline at end of file
index e8f8e3c28888c4cc07b0c3d8d91e9eb4dd6742ca..2960d567b8823350d4c5f18ace5345a1543d6851 100644 (file)
@@ -141,9 +141,9 @@ function last_negative_stock_trans_id($stock_id, $to)
                        $negative_trans_id = $myrow['trans_id'];
                }
                if ($qty >= 0)
-                       $flag = 0;      
+                       $flag = 0;
        }
-               
+
        if ($flag == 1)
                return $negative_trans_id;
        else 
@@ -181,14 +181,14 @@ function get_deliveries_from_trans($stock_id, $from)
             ." AND trans_id ='$from'";
     $result = db_query($sql, "The deliveries could not be updated");
     $cost = db_fetch_row($result);
-       
+
        // Adjusting QOH valuation 
        $sql = "SELECT SUM(qty) FROM ".TB_PREF."stock_moves
                WHERE stock_id=".db_escape($stock_id)." AND
                        trans_id<'$from' GROUP BY stock_id";
        $result = db_query($sql, "The deliveries could not be updated");
        $qoh = db_fetch_row($result);
-       
+
        $qty = $row[0] - $qoh[0]; //QOH prior to -ve stock is subtracted
        $final_cost = $row[1] - $qoh[0]*$cost[0];
        
@@ -235,7 +235,7 @@ function adjust_deliveries($stock_id, $material_cost, $to)
                $new_purchase_cost = $row[0] * $material_cost;
                $purchase_diff = $new_purchase_cost - $old_purchase_cost;
        }
-       
+
        $diff =  $sales_diff - $purchase_diff;
        
        if ($diff != 0)
@@ -384,6 +384,7 @@ function get_stock_moves($type, $type_no, $visible=false)
 function void_stock_move($type, $type_no)
 {
     $sql = "SELECT * from ".TB_PREF."stock_moves WHERE type=".db_escape($type)." AND trans_no=".db_escape($type_no);
+
     $result = db_query($sql, "Could not void stock moves");
     while ($row = db_fetch($result))
     {
@@ -425,8 +426,3 @@ function get_location_name($loc_code)
 
        display_db_error("could not retreive the location name for $loc_code", $sql, true);
 }
-
-//--------------------------------------------------------------------------------------------------
-
-
-?>
index 598d6964273fc5fff937a37e979fe9a27524842b..2806d2f6a1382f00e73f04885dc8b04c2042ffc9 100644 (file)
@@ -57,7 +57,12 @@ class db_pager {
        var $key;       // key field name
        
        //  db_pager constructor
-       //  accepts $sql like 'SELECT ...[FROM ...][WHERE ...][GROUP ...][ORDER ...]'
+       //  accepts $sql query either as:
+       //  a. string in form 'SELECT field_list FROM table_joins [WHERE conditions [GROUP group_list [ORDER order_list]]]'
+       //              - if WHERE keyword is used in table_joins, WHERE conditions is obligatory
+       //  b. associative array using select, where, group and order keys ex :
+       //      array('select' => 'SUM(quantity)', 'from' => TB_PREF."stock_moves", 'group' => 'location')
+       //
        //      $name is base name for pager controls
        function db_pager($sql, $name, $table = null, $page_len=0) 
        {
@@ -68,12 +73,8 @@ class db_pager {
                $this->set_sql($sql);
        }
        //
-       //      Parse base sql select query.
-       //      or use an associative array.
-       //  Usefull is the query can't be split correctly (using subquery for example).
-       //  The associative array shouldn't contain the keyword itself.
-       //  ex :
-       //  array('select' => 'SUM(quantity)', 'from' => TB_PREF."stock_moves", 'group' => 'location')
+       //      Parse base sql select query     or use an associative array.
+       //
        function set_sql($sql)
        {
                if ($sql != $this->sql) {
@@ -88,29 +89,39 @@ class db_pager {
                                }
                                else {
                                        // parse the query
-                                               $parts = preg_split('/\sORDER\s*BY\s/si', $sql, 2);
-                                       if(count($parts) == 2) {
-                                               $sql = $parts[0];
-                                               $this->order = $parts[1];
-                                       }
-                                               $parts = preg_split('/\sGROUP\s*BY\s/si', $sql, 2);
-                                       if(count($parts) == 2) {
-                                               $sql = $parts[0];
-                                               $this->group = $parts[1];
+                                       $parts = preg_split('/\sFROM\s/si', $sql, 2);
+                                       if (count($parts) == 2) {
+                                               $this->select = $parts[0];
+                                               $sql = $parts[1];
+                                       } else {
+                                               if ($go_debug)
+                                                       display_error("Invalid sql input for db_pager");
                                        }
-                                               $parts = preg_split('/\sWHERE\s/si', $sql, 2);
-                                       if(count($parts) == 2) {
-                                               $sql = $parts[0];
-                                               $this->where = $parts[1];
-                                       }
-                                               $parts = preg_split('/\sFROM\s/si', $sql, 2);
+
+                                       $parts = preg_split('/\sWHERE(?!.*WHERE.*)\s/si', $sql, 2); // last occurence
                                        if(count($parts) == 2) {
-                                               $sql = $parts[0];
-                                               $this->from = $parts[1];
+                                               $this->from = $parts[0];
+                                               $sql = $parts[1];
+
+                                               $parts = preg_split('/\sORDER\s*BY\s/si', $sql, 2);
+                                               if(count($parts) == 2) {
+                                                       $sql = $parts[0];
+                                                       $this->order = $parts[1];
+                                               }
+                                               $parts = preg_split('/\sGROUP\s*BY\s/si', $sql, 2);
+                                               if(count($parts) == 2) {
+                                                       $sql = $parts[0];
+                                                       $this->group = $parts[1];
+                                               }
+                                               $this->where = $sql;
                                        }
-                                       $this->select = $sql;
                        }
                }
+               //_vd($this->select);
+               //_vd($this->from);
+               //_vd($this->where);
+               //_vd($this->group);
+               //_vd($this->order);
        }
        //
        //      Set additional constraint on record set
@@ -197,7 +208,7 @@ class db_pager {
                } else 
                  return false;
                return true;
-       }           
+       }
        //
        //      Calculates page numbers for html controls.
        //
@@ -315,8 +326,7 @@ class db_pager {
            }
                                
            if (count($ord)) {
-                       $ord = array_map(function_exists('mysql_real_escape_string') ? 
-                               'mysql_real_escape_string': 'mysql_escape_string', $ord);
+                       $ord = array_map('db_escape_function', $ord);
                        $sql .= " ORDER BY " . implode(',', $ord);
                } else {
                        if($order)
@@ -355,7 +365,7 @@ class db_pager {
                                if (isset($col['ord']) && $col['ord'] != '' 
                                                &&  !isset($col['name'])) {
                                                        display_warning("Result field names must be set
-                                                               for all intially ordered db_pager columns.");
+                                                               for all initially ordered db_pager columns.");
                                }
                                }
                }
index e59e14b059294715b172ca9775ca010bd1320d8e..86bfac2b0cd3fee9641c0c8bc188a2041e103a61 100644 (file)
@@ -93,7 +93,7 @@ function error_handler($errno, $errstr, $file, $line) {
 // FIX center is unused now
 function fmt_errors($center=false) {
     global $messages, $path_to_root, $go_debug;
-  
+
   $msg_class = array(
        E_USER_ERROR => 'err_msg',
        E_USER_WARNING =>'warn_msg', 
@@ -119,7 +119,7 @@ function fmt_errors($center=false) {
                                        $content = '';                  // clean other messages
                        }
                }
-               
+
            $str = $msg[1];
                if (!in_array($msg[0], array(E_USER_NOTICE, E_USER_ERROR, E_USER_WARNING)) && $msg[2] != null)
                  $str .= ' '._('in file').': '.$msg[2].' '._('at line ').$msg[3];
index 71717fc154202a4071612a4060bb428b3f371e6b..cb5cddfa9db3e604635b80a3ab52023cb0dd3cbb 100644 (file)
@@ -116,6 +116,7 @@ class hooks {
        function price_in_words($amount, $doc_type)
        {
        }
+
        //
        // Exchange rate currency $curr as on date $date.
        // Keep in mind FA has internally implemented 3 exrate providers
@@ -249,7 +250,7 @@ function install_hooks()
 function activate_hooks($ext, $comp)
 {
        global $Hooks;
-       
+
        $hooks = @$Hooks[$ext];
        if (!$hooks) {
                $hookclass = 'hooks_'.$ext;
@@ -312,7 +313,7 @@ function hook_invoke_first($method, &$data, $opts=null)
 {
 
        global $Hooks;
-       
+
        $result = null;
        foreach($Hooks as $ext => $hook) {
                if (method_exists($hook, $method)) {
index 5b0509258b109e3271478b2197c5d929053ffe45..c090f1fc1e3d4b18903e0abe89a5d23671da8980 100644 (file)
@@ -74,7 +74,7 @@ class language
                // version set globally in php.ini
                ini_set('default_charset', $this->encoding);
 
-               if (isset($_SESSION['App']) && $changed)
+               if (isset($_SESSION['wa_current_user']) && $_SESSION['wa_current_user']->logged_in() && isset($_SESSION['App']) && $changed)
                        $_SESSION['App']->init(); // refresh menu
        }
 }
index db1576bf50d748ad38b2b0bdd7b1b160dfcba57d..8ef038ca1f06e63e39959c250889781cebee05f1 100644 (file)
@@ -22,21 +22,24 @@ include_once($path_to_root . "/includes/db/audit_trail_db.inc");
 include_once($path_to_root . "/admin/db/users_db.inc");
 include_once($path_to_root . "/includes/ui/ui_view.inc");
 include_once($path_to_root . "/includes/ui/ui_controls.inc");
-       
+
+$page_nested = -1;
+
 function page($title, $no_menu=false, $is_index=false, $onload="", $js="", $script_only=false, $css='')
 {
 
-       global $path_to_root, $page_security;
+       global $path_to_root, $page_security, $page_nested;
 
+       if (++$page_nested) return;
 
        $hide_menu = $no_menu;
 
-       include($path_to_root . "/includes/page/header.inc");
+       include_once($path_to_root . "/includes/page/header.inc");
 
        page_header($title, $no_menu, $is_index, $onload, $js, $css);
        check_page_security($page_security);
 //     error_box();
-       if($script_only) {              
+       if($script_only) {
                echo '<noscript>';
                echo display_heading(_('This page is usable only with javascript enabled browsers.'));
                echo '</noscript>';
@@ -48,13 +51,15 @@ function page($title, $no_menu=false, $is_index=false, $onload="", $js="", $scri
 
 function end_page($no_menu=false, $is_index=false, $final_screen=false, $type_no=0, $trans_no=0)
 {
-       global $path_to_root;
+       global $path_to_root, $page_nested;
+
+       if ($page_nested-- > 0) return;
 
        if (!$is_index && function_exists('hyperlink_back'))
                hyperlink_back(true, $no_menu, $type_no, $trans_no, $final_screen);
        div_end();      // end of _page_body section
 
-       include($path_to_root . "/includes/page/footer.inc");
+       include_once($path_to_root . "/includes/page/footer.inc");
        page_footer($no_menu, $is_index);
 }
 
index f930f85da3229029cc2792755dcc43b33017633d..3c8613cb4a8323bfd1c811b145503b2d3ffa9d96 100644 (file)
@@ -61,6 +61,11 @@ class sys_prefs
                return $this->prefs['default_delivery_required'];
        }
 
+       function default_receival_required_by() 
+       {
+               return $this->prefs['default_receival_required'];
+       }
+
        function default_dimension_required_by() 
        {
                return $this->prefs['default_dim_required'];
index e14c08b5cf06bea77bb93e0578507d73e93cb23f..bd72d6670627c4a2725eb7dd9071fda3bc03a2b0 100644 (file)
@@ -35,7 +35,8 @@ class user_prefs
        var $graphic_links; // use graphic links
        var $sticky_date;       // save date on subsequent document entry
        var $startup_tab;  // default start-up menu tab
-       
+       var $transaction_days; // transaction days in inquiries.
+
        function user_prefs($user=null)
        {
                if ($user == null) { 
@@ -49,7 +50,8 @@ class user_prefs
                        $this->price_dec = 2;
                        $this->language = $dflt_lang;
                        $this->theme = 'default';
-                       
+                       $this->transaction_days = -30;
+
                } else {
                        global $path_to_root;
                        $this->language = $user["language"];
@@ -83,6 +85,8 @@ class user_prefs
                                $this->sticky_date = 0;
                                $this->startup_tab = "orders";
                        }
+                       $this->transaction_days = $user['transaction_days'];
+
                        if (!file_exists("$path_to_root/themes/$this->theme"))
                                $this->theme = "default";
                }
@@ -231,6 +235,11 @@ class user_prefs
                return $this->startup_tab;
        }
 
+    function transaction_days() 
+    {
+        return $this->transaction_days;
+    }
+
        function set_dec($price_dec, $qty_dec, $exrate_dec, $percent_dec, $showgl, $showcodes) 
        {
                $this->price_dec = $price_dec;
index 7f79fbc7157901fc954712e5f7cf370bcf4060e9..cd01ab6c67386032182dbda57e5a962390f1bea2 100644 (file)
@@ -101,8 +101,10 @@ class references
 }
 
 //----------------------------------------------------------------------------
-
-function is_new_reference($ref, $type)
+//
+//     Check if reference was not used so far (for other transaction than $trans_no)
+//
+function is_new_reference($ref, $type, $trans_no=0)
 {
        $db_info = get_systype_db_info($type);
        $db_name = $db_info[0];
@@ -121,17 +123,19 @@ function is_new_reference($ref, $type)
        }
 
        if ($db_type != null) {
-               $sql = "SELECT $db_ref FROM $db_name 
+               $sql = "SELECT $db_ref FROM $db_name tbl
                        LEFT JOIN ".TB_PREF."voided v ON 
-                               $db_name.$db_type=v.type AND $db_name.$db_trans=v.id
-                       WHERE $db_name.$db_ref=$ref AND ISNULL(v.id)
-                               AND $db_name.$db_type=$type";
+                               tbl.$db_type=v.type AND tbl.$db_trans=v.id
+                       WHERE $db_ref=$ref AND ISNULL(v.id)
+                               AND tbl.$db_type=$type";
        } else {
-               $sql = "SELECT $db_ref FROM $db_name 
+               $sql = "SELECT $db_ref ref FROM $db_name tbl
                        LEFT JOIN ".TB_PREF."voided v ON 
-                               v.type=$type AND $db_name.$db_trans=v.id
+                               v.type=$type AND tbl.$db_trans=v.id
                        WHERE $db_ref=$ref AND ISNULL(v.id)";
        }
+       if ($trans_no)
+                       $sql .= " AND tbl.`$db_trans` != ".db_escape($trans_no);
 
        $result = db_query($sql, "could not test for unique reference");
 
index 1b9c5ce2daa48631079f207014ee2882f22f8cb3..04518e7b7a12040e6560b4a0da8edcebf1bbbec9 100644 (file)
@@ -388,6 +388,8 @@ foreach ($installed_extensions as $ext)
 
 ini_set('session.gc_maxlifetime', 36000); // 10hrs
 
+hook_session_start(@$_POST["company_login_name"]);
+
 $Session_manager = new SessionManager();
 $Session_manager->sessionStart('FA'.md5(dirname(__FILE__)));
 
@@ -401,7 +403,8 @@ if ($login_delay > 0)
        @include_once($path_to_root . "/tmp/faillog.php");
 
 // Page Initialisation
-if (!isset($_SESSION['language']) || !method_exists($_SESSION['language'], 'set_language')) 
+if (!isset($_SESSION['wa_current_user']) || !$_SESSION['wa_current_user']->logged_in()
+       || !isset($_SESSION['language']) || !method_exists($_SESSION['language'], 'set_language'))
 {
        $l = array_search_value($dflt_lang, $installed_languages,  'code');
        $_SESSION['language'] = new language($l['name'], $l['code'], $l['encoding'],
@@ -414,6 +417,7 @@ $_SESSION['language']->set_language($_SESSION['language']->code);
 include_once($path_to_root . "/includes/access_levels.inc");
 include_once($path_to_root . "/version.php");
 include_once($path_to_root . "/includes/main.inc");
+include_once($path_to_root . "/includes/app_entries.inc");
 
 // Ajax communication object
 $Ajax = new Ajax();
@@ -523,7 +527,10 @@ if (!defined('FA_LOGOUT_PHP_FILE')){
                        $lang->set_language($_SESSION['language']->code);
                }
        } else
-               set_global_connection();
+       {       set_global_connection();
+                       if (db_fixed())
+                               db_set_encoding($_SESSION['language']->encoding);
+       }
 
        if (!isset($_SESSION["App"])) {
                $_SESSION["App"] = new front_accounting();
@@ -536,5 +543,3 @@ $SysPrefs = &$_SESSION['SysPrefs'];
 // POST vars cleanup needed for direct reuse.
 // We quote all values later with db_escape() before db update.
 $_POST = strip_quotes($_POST);
-
-?>
index 440ff528bda86b88d0ba9de6724cb6e2c4f4230e..52f96c64b95a288a23498259281bbd4ebff44a56 100644 (file)
@@ -16,7 +16,7 @@
 //
 global $systypes_array, $bank_account_types, $bank_transfer_types, 
        $payment_person_types, $wo_types_array, $wo_cost_types, $class_types,
-       $quick_actions, $quick_entry_types, $stock_types, $tag_types;
+       $quick_actions, $quick_entry_types, $stock_types, $tag_types, $bank_owner;
 
 $systypes_array = array (
        ST_JOURNAL => _("Journal Entry"),
@@ -110,6 +110,7 @@ $wo_types_array = array (
 $wo_cost_types = array(
        WO_LABOUR => _("Labour Cost"),
        WO_OVERHEAD => _("Overhead Cost"),
+       WO_MATERIALS => _("Materials")
 );
 
 //----------------------------------------------------------------------------------
@@ -182,7 +183,19 @@ $pterm_types = array(
        PTT_FOLLOWING => _("Day In Following Month")
 );
 
+$tax_algorithms = array( 
+       TCA_LINES => _("Sum per line taxes"), 
+       TCA_TOTALS => _("Taxes from totals")
+);
 //----------------------------------------------------------------------------------
+
+$bank_owner_types = array(
+       BO_UNKNOWN => _("Unknown"),
+       BO_COMPANY => _("Company"),
+       BO_CUSTBRANCH => _("Customer"),
+       BO_SUPPLIER => _("Supplier")
+);
+
 // This month array is for use with the last 3 dateformats. 
 $tmonths = array("", _("Jan"),_("Feb"),_("Mar"),_("Apr"),_("May"),_("Jun"),_("Jul"),_("Aug"),_("Sep"),_("Oct"),_("Nov"),_("Dec"));
 
index 0729ec432c7de90b2a144e08423f73746690573c..dca83e51c4858245c54fcc536d815769cd76ab6b 100644 (file)
@@ -23,7 +23,7 @@ function tst_mysql()
 {
        $test['descr'] = _('MySQL version'). ' >=4.1';
        $test['type'] = 3;
-       $test['test'] = mysql_get_server_info();
+       $test['test'] = db_get_version();
        $test['result'] = $test['test']>='4.1';
        $test['comments'] = _('Upgrade MySQL server to version at least 4.1');
 
@@ -34,7 +34,7 @@ function tst_phpmysql()
 {
        $test['descr'] = _('PHP MySQL extension');
        $test['type'] = 3;
-       $test['result'] = function_exists('mysql_connect');
+       $test['result'] = db_extension_exists();
        $test['test'] = $test['result'] ? _('Yes'): _('No');
        
        $test['comments'] = _('Your PHP has to have MySQL extension enabled.');
@@ -229,7 +229,7 @@ function tst_tmpdir()
 function tst_langs($install)
 {
        global $installed_languages, $path_to_root, $GetText;
-       
+
        $test['descr'] = _('Language configuration consistency');
        $test['type'] = 3;
        $test['result'] = true;
index 37ec321cf4d2352aeed1938e8f6072da4b657665..cd4e3dc3d18fd055c040c9177c033dbf2634c244 100644 (file)
@@ -137,6 +137,79 @@ function payment_person_name($type, $person_id, $full=true) {
        }
 }
 
+//
+//     Returns counterparty (supplier/customer) name for selected transaction.
+//
+function get_counterparty_name($trans_type, $trans_no, $full=true)
+{
+       switch($trans_type)
+       {
+               case ST_SALESORDER:
+               case ST_SALESQUOTE:
+                       $sql = "SELECT order.customer_id as person_id, debtor.name as name
+                       FROM ".TB_PREF."sales_orders order, ".TB_PREF."debtors_master debtor
+                       WHERE order_no=".db_escape($trans_no)." AND trans_type=".db_escape($trans_type)
+                       ." AND order.debtor_no=debtor.debtor_no";
+                       break;
+               case ST_SALESINVOICE :
+               case ST_CUSTCREDIT :
+               case ST_CUSTPAYMENT :
+               case ST_CUSTDELIVERY :
+                       $sql = "SELECT trans.debtor_no as person_id, debtor.name as name
+                       FROM ".TB_PREF."debtor_trans trans, ".TB_PREF."debtors_master debtor
+                       WHERE trans_no=".db_escape($trans_no)." AND type=".db_escape($trans_type)
+                       ." AND trans.debtor_no=debtor.debtor_no";
+                       break;
+
+               case ST_PURCHORDER :
+                       $sql = "SELECT order.supplier_id as person_id, supp.supp_name as name
+                       FROM ".TB_PREF."purch_orders order, ".TB_PREF."suppliers supp
+                       WHERE order_no=".db_escape($trans_no)
+                       ." AND order.supplier_id=supp.supplier_id";
+                       break;
+
+               case ST_SUPPINVOICE :
+               case ST_SUPPCREDIT :
+               case ST_SUPPAYMENT :
+                       $sql = "SELECT trans.supplier_id as person_id, supp.supp_name as name
+                       FROM ".TB_PREF."supp_trans trans, ".TB_PREF."suppliers supp
+                       WHERE trans_no=".db_escape($trans_no)." AND type=".db_escape($trans_type)
+                       ." AND trans.supplier_id=supp.supplier_id";
+                       break;
+
+               case ST_SUPPRECEIVE :
+                       $sql = "SELECT trans.supplier_id as person_id, supp.supp_name as name
+                       FROM ".TB_PREF."grn_batch trans, ".TB_PREF."suppliers supp
+                       WHERE id=".db_escape($trans_no)
+                       ." AND trans.supplier_id=supp.supplier_id";
+                       break;
+
+               case ST_JOURNAL:        // FIXME - this one can have multiply counterparties of various types depending on person_type_id
+
+               default: 
+               /*      // internal operations
+               case ST_WORKORDER :
+               case ST_INVADJUST : // GRN/DN returns ?
+               case ST_BANKTRANSFER :
+               case ST_LOCTRANSFER :
+               case ST_MANUISSUE :
+               case ST_MANURECEIVE :
+               case ST_COSTUPDATE :
+               case ST_BANKPAYMENT :   // generic bank transactions
+               case ST_BANKDEPOSIT :*/
+                       return null;
+       }
+
+       $result = db_query($sql, 'cannot retrieve counterparty name');
+       if (db_num_rows($result))
+       {
+               $row = db_fetch($result);
+               return sprintf("[%05s] %s", $row['person_id'], $row['name']);
+       }
+
+       return '';
+}
+
 function payment_person_has_items($type) {
        switch ($type)
        {
@@ -171,6 +244,7 @@ define('WO_ADVANCED', 2);
 
 define('WO_LABOUR', 0);
 define('WO_OVERHEAD', 1);
+define('WO_MATERIALS', 2);
 
 //----------------------------------------------------------------------------------
 //     GL account classes
@@ -226,6 +300,19 @@ define('PTT_CASH', 2);
 define('PTT_DAYS', 3);
 define('PTT_FOLLOWING', 4);
 
+//----------------------------------------------------------------------------------
+// Tax calculation algorithms used in als and purchase (depends on supplier's invoicing software)
+
+define('TCA_TOTALS', 1); // taxes are calculated from respective net totals for all lines
+define('TCA_LINES', 2); // taxes calculated for every line, then summed
+//
+//     Bank account owner types
+//
+define('BO_UNKNOWN', 0);
+define('BO_COMPANY', 1);
+define('BO_CUSTBRANCH', 2);
+define('BO_SUPPLIER', 3);
+
 include_once($path_to_root . '/includes/sysnames.inc');
 
 //---------------------------------------------------------------------------------
index 2821fe5fe7874786443bb72f0a65ea0e50c669c7..9ecbf597895c09e26d78ba0804e2405bdce53709 100644 (file)
@@ -172,6 +172,7 @@ class allocation
 
                while ($myrow = db_fetch($trans_items))
                {
+//_vd($myrow);
                        $this->add_or_update_item ($myrow["type"], $myrow["trans_no"],
                                sql2date($myrow["tran_date"]),
                                sql2date($myrow["due_date"]),
@@ -189,7 +190,7 @@ class allocation
                if ($this->person_type == PT_SUPPLIER)
                        clear_supp_alloctions($this->type, $this->trans_no, $this->date_);
                else
-                       clear_cust_alloctions($this->type, $this->trans_no, $this->date_);
+                       clear_cust_alloctions($this->type, $this->trans_no);
 
                // now add the new allocations
                $total_allocated = 0;
@@ -214,7 +215,8 @@ class allocation
                                        update_debtor_trans_allocation($alloc_item->type, $alloc_item->type_no);
                                }
                                // Exchange Variations Joe Hunt 2008-09-20 ////////////////////
-                               exchange_variation($this->type, $this->trans_no,
+                               if (!in_array($alloc_item->type, array(ST_SALESQUOTE, ST_SALESORDER, ST_PURCHORDER)))
+                                exchange_variation($this->type, $this->trans_no,
                                        $alloc_item->type, $alloc_item->type_no, $this->date_,
                                        $amount, $this->person_type);
 
@@ -358,6 +360,7 @@ function check_allocations()
        for ($counter = 0; $counter < get_post("TotalNumberOfAllocs"); $counter++)
        {
                if (!isset($_POST['amount'.$counter])) continue;
+
                if (!check_num('amount' . $counter, 0))
                {
                        display_error(_("The entry for one or more amounts is invalid or negative."));
index a5e15fdbf4a524d1c7ded60d06f48ed4b6a75372..25101807d61c6b26b04448e5ce2a7b3b1e871edc 100644 (file)
@@ -26,7 +26,6 @@ class items_cart
        var $transfer_type;
        var $increase;
        var $memo_;
-       var $person_id;
        var $branch_id;
        var $reference;
        var $original_amount;
@@ -95,12 +94,12 @@ class items_cart
 
        // ----------- GL item functions
 
-       function add_gl_item($code_id, $dimension_id, $dimension2_id, $amount, $reference, $description=null)
+       function add_gl_item($code_id, $dimension_id, $dimension2_id, $amount, $reference, $description=null, $person_id=null)
        {
                if (isset($code_id) && $code_id != "" && isset($amount) && isset($dimension_id)  &&
                        isset($dimension2_id))
                {
-                       $this->gl_items[] = new gl_item($code_id, $dimension_id, $dimension2_id, $amount, $reference, $description);
+                       $this->gl_items[] = new gl_item($code_id, $dimension_id, $dimension2_id, $amount, $reference, $description, $person_id);
                        return true;
                }
                else
@@ -112,9 +111,20 @@ class items_cart
                return false;
        }
 
-       function update_gl_item($index, $code_id, $dimension_id, $dimension2_id, $amount, $reference, $description=null)
+       function update_gl_item($index, $code_id, $dimension_id, $dimension2_id, $amount, $reference, $description=null, $person_id=null)
        {
            $this->gl_items[$index]->code_id = $code_id;
+           $this->gl_items[$index]->person_id = $person_id;
+
+               $gl_type = is_subledger_account($code_id, $person_id);
+               if ($gl_type)
+               {
+                       $this->gl_items[$index]->person_type_id = $gl_type > 0 ? PT_CUSTOMER : PT_SUPPLIER;
+                       $this->gl_items[$index]->person_name = get_subaccount_name($code_id, $person_id);
+               } else
+               {
+                       $this->gl_items[$index]->person_type_id = $this->gl_items[$index]->person_name = '';
+               }
                $this->gl_items[$index]->dimension_id = $dimension_id;
                $this->gl_items[$index]->dimension2_id = $dimension2_id;
                $this->gl_items[$index]->amount = $amount;
@@ -177,6 +187,18 @@ class items_cart
                $this->gl_items = array();
 
        }
+       //
+       //      Check if cart contains virtual subaccount (AP/AR) postings
+       //
+       function has_sub_accounts()
+       {
+               foreach ($this->gl_items as $gl_item)
+               {
+                       if ($gl_item->person_id)
+                               return true;
+               }
+               return false;
+       }
 }
 
 //--------------------------------------------------------------------------------------------
@@ -256,9 +278,12 @@ class gl_item
        var $amount;
        var $reference;
        var $description;
+       var $person_id;
+       var $person_type_id;
+       var $person_name;
 
        function gl_item($code_id, $dimension_id, $dimension2_id, $amount, $reference,
-               $description=null)
+               $description=null, $person_id=null)
        {
                //echo "adding $index, $code_id, $dimension_id, $amount, $reference<br>";
 
@@ -268,6 +293,13 @@ class gl_item
                        $this->description = $description;
 
                $this->code_id = $code_id;
+               $this->person_id = $person_id;
+               $gl_type = is_subledger_account($code_id, $person_id);
+               if ($gl_type)
+               {
+                       $this->person_type_id = $gl_type > 0 ? PT_CUSTOMER : PT_SUPPLIER;
+                       $this->person_name = get_subaccount_name($code_id, $person_id);
+               }
                $this->dimension_id = $dimension_id;
                $this->dimension2_id = $dimension2_id;
                $this->amount = $amount;
index 6250620528e2d4b153d00de2f8fa5f4114cd67ac..e184277f6ce0d06ff01f3855c21ea43f79b067af 100644 (file)
@@ -32,10 +32,15 @@ function get_post($name, $dflt='')
                                ((!isset($_POST[$name]) || $_POST[$name] === '') ? $dflt : $_POST[$name]);
 }
 //---------------------------------------------------------------------------------
+$form_nested = -1;
 
 function start_form($multi=false, $dummy=false, $action="", $name="")
 {
        // $dummy - leaved for compatibility with 2.0 API
+       global $form_nested;
+
+       if (++$form_nested) return;
+
 
        if ($name != "")
                $name = "name='$name'";
@@ -53,7 +58,9 @@ function start_form($multi=false, $dummy=false, $action="", $name="")
 
 function end_form($breaks=0)
 {
-       global $Ajax;
+       global $Ajax, $form_nested;
+
+       if ($form_nested-- > 0) return;
 
        $_SESSION['csrf_token'] = hash('sha256', uniqid(mt_rand(), true));
        if ($breaks)
@@ -472,7 +479,7 @@ function set_editor($type, $input, $caller=true)
 
        $Editors[$key] = array( $path_to_root . $popup_editors[$type][0], $input, 
                $popup_editors[$type][3], $popup_editors[$type][4]);
-       
+
        $help = 'F' . ($key - 111) . ' - ';
        $help .= $popup_editors[$type][2];
        $Pagehelp[] = $help;
index 5c0cacd163818dde63bb504fb98c88d990357d2e..a6537a83c8bd2a06ae407c980154ecaf1a6f3a6a 100644 (file)
@@ -114,6 +114,7 @@ function hidden($name, $value=null, $echo=true)
                'cancel'  - cancel form entry on Escape press; dflt ICON_CANCEL
                'process' - displays progress bar during call; optional icon
                'nonajax' - ditto, non-ajax submit
+
        $atype can contain also multiply type selectors separated by space, 
        however make sense only combination of 'process' and one of defualt/selector/cancel
 */
@@ -942,10 +943,30 @@ function supplier_credit_row($supplier, $credit, $parms='')
                ."</a>", $parms);
 }
 
+/*
+       Edit transaction link to be used in transaction inquires
+*/
+function edit_trans_link($trans_type, $trans_no, $url='')
+{
+       global $path_to_root, $trans_editors;
+
+       if (!$url) $url = @$trans_editors[$trans_type];
+
+       if (!$trans_no || !$url)
+               return '';
+
+       if (is_closed_trans($trans_type, $trans_no)) {
+               return set_icon(ICON_CLOSED, _('Closed'));
+       } else {
+               $link_text = user_graphic_links() ? set_icon(ICON_EDIT, _('Edit')) : _('Edit');
+               return "<a href='".$path_to_root . sprintf($url, $trans_no, $trans_type)."'>$link_text</a>";
+       }
+}
+
 function bank_balance_row($bank_acc, $parms='')
 {
        global $path_to_root;
-       
+
        $to = add_days(Today(), 1);
        $bal = get_balance_before_for_bank_account($bank_acc, $to);
        label_row( _("Bank Balance:"),
index f3a68ea403cfd34f5ace23e317a4afffb9d9e82c..42644a98339e698150e4af0c7338ac4c0bc76d88 100644 (file)
@@ -443,7 +443,7 @@ function supplier_list($name, $selected_id=null, $spec_option=false, $submit_on_
 
        if ($editkey)
                set_editor('supplier', $name, $editkey);
-               
+
        $ret = combo_input($name, $selected_id, $sql, 'supplier_id', 'supp_name',
        array(
                'format' => '_format_add_curr',
@@ -529,7 +529,6 @@ function customer_list_cells($label, $name, $selected_id=null, $all_option=false
 function customer_list_row($label, $name, $selected_id=null, $all_option = false, 
        $submit_on_change=false, $show_inactive=false, $editkey = false)
 {
-       global $path_to_root;
 
        echo "<tr><td class='label'>$label</td><td nowrap>";
        echo customer_list($name, $selected_id, $all_option, $submit_on_change,
@@ -563,7 +562,7 @@ function customer_branches_list($customer_id, $name, $selected_id=null,
        if ($editkey)
        {
                $ret .= add_edit_combo('branch');
-       }       
+       }
        return $ret;
 }
 //------------------------------------------------------------------------------------------------
@@ -761,9 +760,8 @@ function stock_items_list($name, $selected_id=null, $all_option=false,
                'order' => array('c.description','stock_id')
          ), $opts) );
        if ($editkey)
-               $ret .= add_edit_combo('item');         
+               $ret .= add_edit_combo('item');
        return $ret;
-         
 }
 
 function _format_stock_items($row)
@@ -927,7 +925,7 @@ function stock_purchasable_items_list($name, $selected_id=null,
        $all_option=false, $submit_on_change=false, $all=false, $editkey=false)
 {
        return stock_items_list($name, $selected_id, $all_option, $submit_on_change,
-               array('where'=>array("mb_flag!= 'M'"), 
+               array('where'=>array("NOT no_purchase"), 
                        'show_inactive'=>$all), $editkey);
 }
 //
@@ -939,7 +937,7 @@ function stock_purchasable_items_list_cells($label, $name, $selected_id=null,
        if ($label != null)
                echo "<td>$label</td>\n";
        echo stock_items_list($name, $selected_id, $all_option, $submit_on_change,
-               array('where'=>array("mb_flag!= 'M'"), 
+               array('where'=>array("NOT no_purchase"), 
                         'editable' => 30,
                         'cells'=>true), $editkey);
 }
@@ -1444,8 +1442,10 @@ function bank_accounts_list_row($label, $name, $selected_id=null, $submit_on_cha
 }
 //-----------------------------------------------------------------------------------------------
 
-function cash_accounts_list_row($label, $name, $selected_id=null, $submit_on_change=false)
+function cash_accounts_list_row($label, $name, $selected_id=null, $submit_on_change=false, $all_option=false)
 {
+       global $all_items;
+
        $sql = "SELECT ".TB_PREF."bank_accounts.id, bank_account_name, bank_curr_code, inactive
                FROM ".TB_PREF."bank_accounts
                WHERE ".TB_PREF."bank_accounts.account_type=".BT_CASH;
@@ -1455,6 +1455,8 @@ function cash_accounts_list_row($label, $name, $selected_id=null, $submit_on_cha
        echo "<td>";
        echo combo_input($name, $selected_id, $sql, 'id', 'bank_account_name',
        array(
+               'spec_option' => $all_option,
+               'spec_id' => $all_items,
                'format' => '_format_add_curr',
                'select_submit'=> $submit_on_change,
                'async' => true
@@ -1487,14 +1489,16 @@ function pos_list_row($label, $name, $selected_id=null, $spec_option=false, $sub
 //-----------------------------------------------------------------------------------------------
 // Payment type selector for current user.
 //
-function sale_payment_list($name, $category, $selected_id=null, $submit_on_change=true)
+function sale_payment_list($name, $category, $selected_id=null, $submit_on_change=true, $prepayments=true)
 {
        $sql = "SELECT terms_indicator, terms, inactive FROM ".TB_PREF."payment_terms";
-       
+
        if ($category == PM_CASH) // only cash
                        $sql .= " WHERE days_before_due=0 AND day_in_following_month=0";
-       if ($category == PM_CREDIT) // only delayed payments
-                       $sql .= " WHERE days_before_due!=0 OR day_in_following_month!=0";
+       elseif ($category == PM_CREDIT) // only delayed payments
+                       $sql .= " WHERE days_before_due".($prepayments ? '!=': '>')."0 OR day_in_following_month!=0";
+       elseif (!$prepayments)
+                       $sql .= " WHERE days_before_due>=0";
 
        return combo_input($name, $selected_id, $sql, 'terms_indicator', 'terms',
        array(
@@ -1504,13 +1508,13 @@ function sale_payment_list($name, $category, $selected_id=null, $submit_on_chang
 
 }
 
-function sale_payment_list_cells($label, $name, $category, $selected_id=null, $submit_on_change=true)
+function sale_payment_list_cells($label, $name, $category, $selected_id=null, $submit_on_change=true, $prepayments=true)
 {
        if ($label != null)
                echo "<td class='label'>$label</td>\n";
        echo "<td>";
 
-       echo sale_payment_list($name, $category, $selected_id, $submit_on_change);
+       echo sale_payment_list($name, $category, $selected_id, $submit_on_change, $prepayments);
 
        echo "</td>\n";
 }
@@ -2370,4 +2374,78 @@ function payment_services($name)
                ));
 }
 
-?>
+function tax_algorithm_list($name, $value=null, $submit_on_change = false)
+{
+       global $tax_algorithms;
+       
+       return array_selector($name, $value, $tax_algorithms, 
+               array( 
+                       'select_submit'=> $submit_on_change,
+                       'async' => true,
+                       )
+       );
+}
+
+function tax_algorithm_list_cells($label, $name, $value=null, $submit_on_change=false)
+{
+       if ($label != null)
+               echo "<td>$label</td>\n";
+       echo "<td>";
+       echo tax_algorithm_list($name, $value, $submit_on_change);
+       echo "</td>\n";
+}
+
+function tax_algorithm_list_row($label, $name, $value=null, $submit_on_change=false)
+{
+       echo "<tr><td class='label'>$label</td>";
+       tax_algorithm_list_cells(null, $name, $value, $submit_on_change);
+       echo "</tr>\n";
+}
+//----------------------------------------------------------------------------------------------
+
+function subledger_list($name, $account, $selected_id=null)
+{
+       global $all_items;
+
+       $type = is_subledger_account($account);
+       if (!$type)
+               return '';
+
+       if($type > 0)
+               $sql = "SELECT DISTINCT d.debtor_no as id, debtor_ref as name 
+               FROM "
+               .TB_PREF."debtors_master d,"
+               .TB_PREF."cust_branch c
+               WHERE d.debtor_no=c.debtor_no AND c.receivables_account=".db_escape($account);
+       else
+               $sql = "SELECT supplier_id as id, supp_ref as name 
+               FROM "
+               .TB_PREF."suppliers s
+               WHERE s.payable_account=".db_escape($account);
+
+       $mode = get_company_pref('no_customer_list');
+
+       return combo_input($name, $selected_id, $sql, 'id', 'name',
+       array(
+               'type' => 1,
+               'size' => 20,
+               'async' => false,
+       ) );
+}
+
+function subledger_list_cells($label, $name, $account, $selected_id=null)
+{
+       if ($label != null)
+               echo "<td>$label</td>\n";
+       echo "<td nowrap>";
+       echo subledger_list($name, $account, $selected_id);
+       echo "</td>\n";
+}
+
+function subledger_list_row($label, $name, $selected_id=null, $all_option = false, 
+       $submit_on_change=false, $show_inactive=false, $editkey = false)
+{
+       echo "<tr><td class='label'>$label</td><td nowrap>";
+       echo subledger_list($name, $account, $selected_id);
+       echo "</td>\n</tr>\n";
+}
index 9a9eb0932ed8988373c844462bed9c19c9a641d7..f16e72f7cd809c585bed941447b3ddee9c87735d 100644 (file)
@@ -50,11 +50,11 @@ function get_gl_view_str($type, $trans_no, $label="", $force=false, $class='', $
        {
                $label = _("GL");
                $icon = ICON_GL;
-       }       
+       }
+       $url = ($type == ST_WORKORDER && !work_order_is_closed($trans_no)) ? "manufacturing/view/wo_costs_view.php?trans_no=$trans_no"
+               : "gl/view/gl_trans_view.php?type_id=$type&trans_no=$trans_no";
 
-       return viewer_link($label, 
-               "gl/view/gl_trans_view.php?type_id=$type&trans_no=$trans_no", 
-               $class, $id, $icon);
+       return viewer_link($label, $url, $class, $id, $icon);
 }
 
 //--------------------------------------------------------------------------------------
@@ -386,10 +386,10 @@ function view_stock_status($stock_id, $description=null, $echo=true)
        global $path_to_root;
        if ($description)
                //hyperlink_params_separate($path_to_root . "/inventory/inquiry/stock_status.php", (user_show_codes()?$stock_id . " - ":"") . $description, "stock_id=$stock_id");
-               $preview_str = "<a target='_blank' href='$path_to_root/inventory/inquiry/stock_status.php?stock_id=$stock_id' onclick=\"javascript:openWindow(this.href,this.target); return false;\" >". (user_show_codes()?$stock_id . " - ":"") . $description."</a>";
+               $preview_str = "<a target='_blank' href='$path_to_root/inventory/inquiry/stock_status.php?stock_id=$stock_id&popup=1' onclick=\"javascript:openWindow(this.href,this.target); return false;\" >". (user_show_codes()?$stock_id . " - ":"") . $description."</a>";
        else
                //hyperlink_params_separate($path_to_root . "/inventory/inquiry/stock_status.php", $stock_id, "stock_id=$stock_id");
-               $preview_str = "<a target='_blank' href='$path_to_root/inventory/inquiry/stock_status.php?stock_id=$stock_id' onclick=\"javascript:openWindow(this.href,this.target); return false;\" >$stock_id</a>";
+               $preview_str = "<a target='_blank' href='$path_to_root/inventory/inquiry/stock_status.php?stock_id=$stock_id&popup=1' onclick=\"javascript:openWindow(this.href,this.target); return false;\" >$stock_id</a>";
        if($echo)
                echo $preview_str;
        return $preview_str;
@@ -533,14 +533,14 @@ function display_footer_exit($space=2)
 
 //--------------------------------------------------------------------------------------
 
-function display_allocations($alloc_result, $total, $payments=false)
+function display_allocations($alloc_result, $total, $title, $show_summary=true)
 {
        global $systypes_array;
 
        if (!$alloc_result || db_num_rows($alloc_result) == 0)
                return;
 
-    display_heading2(($payments ? _("Payments") : _("Allocations")));
+    display_heading2($title);
 
     start_table(TABLESTYLE, "width=80%");
 
@@ -551,7 +551,6 @@ function display_allocations($alloc_result, $total, $payments=false)
 
     while ($alloc_row = db_fetch($alloc_result))
     {
-
        alt_table_row_color($k);
 
        label_cell($systypes_array[$alloc_row['type']]);
@@ -559,7 +558,7 @@ function display_allocations($alloc_result, $total, $payments=false)
        label_cell(sql2date($alloc_row['tran_date']));
        $alloc_row['Total'] = round2($alloc_row['Total'], user_price_dec());
        $alloc_row['amt'] = round2($alloc_row['amt'], user_price_dec());
-       if ($payments && ($alloc_row['type'] == ST_SUPPAYMENT || $alloc_row['type'] == ST_BANKPAYMENT || $alloc_row['type'] == ST_SUPPCREDIT))
+       if ($alloc_row['type'] == ST_SUPPAYMENT || $alloc_row['type'] == ST_BANKPAYMENT || $alloc_row['type'] == ST_SUPPCREDIT)
                $alloc_row['Total'] = -$alloc_row['Total'];
        amount_cell($alloc_row['Total']);
                amount_cell($alloc_row['Total'] - $alloc_row['amt']);
@@ -572,12 +571,14 @@ function display_allocations($alloc_result, $total, $payments=false)
        label_cell(_("Total Allocated:"), "align=right colspan=5");
        amount_cell($total_allocated);
        end_row();
-       start_row();
-    label_cell(_("Left to Allocate:"), "align=right colspan=5");
-    $total = round2($total, user_price_dec());
-    amount_cell($total - $total_allocated);
-    end_row();
-
+       if ($show_summary)
+       {
+               start_row();
+           label_cell(_("Left to Allocate:"), "align=right colspan=5");
+           $total = round2($total, user_price_dec());
+       amount_cell($total - $total_allocated);
+       end_row();
+       }
     end_table(1);
 }
 
@@ -589,11 +590,11 @@ function display_allocations_from($person_type, $person_id, $type, $type_no, $to
        {
                case PT_CUSTOMER :
                        $alloc_result = get_allocatable_to_cust_transactions($person_id, $type_no, $type);
-                       display_allocations($alloc_result, $total);
+                       display_allocations($alloc_result, $total, _("Allocations"));
                        return;
                case PT_SUPPLIER :
                        $alloc_result = get_allocatable_to_supp_transactions($person_id, $type_no, $type);
-                       display_allocations($alloc_result, $total);
+                       display_allocations($alloc_result, $total, _("Allocations"));
                        return;
        }
 }
@@ -606,11 +607,11 @@ function display_allocations_to($person_type, $person_id, $type, $type_no, $tota
        {
                case PT_CUSTOMER :
                        $alloc_result = get_allocatable_from_cust_transactions($person_id, $type_no, $type);
-                       display_allocations($alloc_result, $total, true);
+                       display_allocations($alloc_result, $total, $type == ST_SALESORDER ? _("Pre-Payments") : _("Payments"), false);
                        return;
                case PT_SUPPLIER :
                        $alloc_result = get_allocatable_from_supp_transactions($person_id, $type_no, $type);
-                       display_allocations($alloc_result, $total, true);
+                       display_allocations($alloc_result, $total, $type == ST_PURCHORDER ? _("Pre-Payments") : _("Payments"), false);
                        return;
        }
 }
@@ -646,9 +647,9 @@ function display_quick_entries(&$cart, $id, $base, $type, $descr='')
                                        $begin = "";
                                else
                                        $begin = begin_fiscalyear(); // from fiscalyear begin
-                       }               
+                       }
                        $base = get_gl_trans_from_to($begin, $cart->tran_date, $qe['base_desc']);
-                               
+
                }
                if ($descr != '') $qe['description'] .= ': '.$descr;
                $result = get_quick_entry_lines($id);
@@ -657,7 +658,7 @@ function display_quick_entries(&$cart, $id, $base, $type, $descr='')
                        display_error( _("No Quick Entry lines are defined."));
                        set_focus('totamount');
                        return 0;
-               }       
+               }
                $totrate = 0;
                while ($row = db_fetch($result))
                {
@@ -668,7 +669,7 @@ function display_quick_entries(&$cart, $id, $base, $type, $descr='')
                                case "t+": // ditto & increase base amount
                                case "t-": // ditto & reduce base amount
                                        if (substr($row['action'],0,1) != 'T') 
-                                               $totrate += get_tax_type_default_rate($row['dest_id']);
+                                               $totrate += get_tax_type_rate($row['dest_id']);
                        }
                }
                $first = true;
@@ -842,7 +843,7 @@ function price_in_words($amount, $document=0)
     else
        $frac = "";
     return _number_to_words(intval($amount)) . $frac;
-}    
+}
 
 function get_js_open_window($width, $height)
 {
@@ -1430,5 +1431,3 @@ function payment_link($name, $options)
 
        return strtr($link, $patterns);
 }
-
-?>
\ No newline at end of file
index e4df8d03fd17383d221467a8f0aa8296037a7212..5f646539fdf3778f610abada884d9191af9f978e 100644 (file)
@@ -5,10 +5,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE TEAM\n"
+"Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-31 10:54+0200\n"
-"PO-Revision-Date: 2011-03-31 19:30+0100\n"
+"POT-Creation-Date: 2010-08-08 12:50+0200\n"
+"PO-Revision-Date: 2010-08-13 09:13+0100\n"
 "Last-Translator: Translation Team <info@frontaccounting.net>\n"
 "Language-Team: infotechaccountants.com <hameed@infotechaccountants.com>\n"
 "MIME-Version: 1.0\n"
@@ -16,485 +16,449 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Poedit-Language: Arabic\n"
 "X-Poedit-Country: EGYPT\n"
-"X-Poedit-SourceCharset: iso-8859-1\n"
 
-#: install/index.php:20
-#: install/index.php:40
+#: /var/www/fa2.3/devel/../install/index.php:20
+#: /var/www/fa2.3/devel/../install/index.php:40
 msgid "FrontAccouting ERP Installation Wizard"
 msgstr "معالج التثبيت الخاص بالحل المالي لإدارة موارد المؤسسات \"FrontAccounting\""
 
-#: install/index.php:41
+#: /var/www/fa2.3/devel/../install/index.php:41
 #, php-format
 msgid "Step %d: %s"
 msgstr "الخطوة %d: %s "
 
-#: install/index.php:48
+#: /var/www/fa2.3/devel/../install/index.php:48
 msgid "Chart of accounts"
 msgstr "خريطة الحسابات"
 
-#: install/index.php:48
-#: install/index.php:75
+#: /var/www/fa2.3/devel/../install/index.php:48
+#: /var/www/fa2.3/devel/../install/index.php:75
 msgid "Encoding"
 msgstr "الترميز"
 
-#: install/index.php:48
-#: install/index.php:75
+#: /var/www/fa2.3/devel/../install/index.php:48
+#: /var/www/fa2.3/devel/../install/index.php:75
 msgid "Description"
 msgstr "الوصف"
 
-#: install/index.php:48
-#: install/index.php:75
+#: /var/www/fa2.3/devel/../install/index.php:48
+#: /var/www/fa2.3/devel/../install/index.php:75
 msgid "Install"
 msgstr "التثبيت"
 
-#: install/index.php:65
-#: install/index.php:93
+#: /var/www/fa2.3/devel/../install/index.php:65
+#: /var/www/fa2.3/devel/../install/index.php:93
 msgid "Installed"
 msgstr "تم تثبيته"
 
-#: install/index.php:75
+#: /var/www/fa2.3/devel/../install/index.php:75
 msgid "Language"
 msgstr "اللغة"
 
-#: install/index.php:123
-msgid "Cannot connect to database. User or password is invalid or you have no permittions to create database."
-msgstr ""
-
-#: install/index.php:159
+#: /var/www/fa2.3/devel/../install/index.php:156
 msgid "Cannot save system configuration file 'config.php'."
 msgstr "لا يمكن حفظ ملف التوصيف الخاص بالنظام  'config.php'"
 
-#: install/index.php:166
+#: /var/www/fa2.3/devel/../install/index.php:173
 msgid "Cannot open 'config_db.php' configuration file."
 msgstr "لا يمكن فتح ملف التوصيف 'config_db.php'"
 
-#: install/index.php:169
+#: /var/www/fa2.3/devel/../install/index.php:176
 msgid "Cannot write to the 'config_db.php' configuration file."
 msgstr "لا يمكن الكتابة على ملف التوصيف 'config_db.php'"
 
-#: install/index.php:172
+#: /var/www/fa2.3/devel/../install/index.php:179
 msgid "Configuration file 'config_db.php' is not writable. Change its permissions so it is, then re-run installation step."
 msgstr "ملف التوصيف 'config_db.php' غير قابل للكتابة ، الرجاء تغيير صلاحيات الأستخدام و بعد ذلك أعد تشغيل خطوة التثبيت مرة أخرى"
 
-#: install/index.php:211
+#: /var/www/fa2.3/devel/../install/index.php:217
 msgid "Host name cannot be empty."
 msgstr "أسم المضيف لا يمكن تركه فارغاً "
 
-#: install/index.php:215
+#: /var/www/fa2.3/devel/../install/index.php:221
 msgid "Database user name cannot be empty."
 msgstr "أسم مستخدم قاعدة البيانات لا يمكن تركه فارغاً"
 
-#: install/index.php:219
+#: /var/www/fa2.3/devel/../install/index.php:225
 msgid "Database name cannot be empty."
 msgstr "لا يمكن ترك أسم قاعدة البيانات فارغاً"
 
-#: install/index.php:272
+#: /var/www/fa2.3/devel/../install/index.php:277
 msgid "Company name cannot be empty."
 msgstr "لا يمكن ترك أسم الشركة فارغاً"
 
-#: install/index.php:276
+#: /var/www/fa2.3/devel/../install/index.php:281
 msgid "Company admin name cannot be empty."
 msgstr "لا يمكن ترك أسم مدير النظام فارغاً"
 
-#: install/index.php:280
+#: /var/www/fa2.3/devel/../install/index.php:285
 msgid "Company admin password cannot be empty."
 msgstr "لا يمكن ترك كلمة مرور مدير النظام فارغاً"
 
-#: install/index.php:284
+#: /var/www/fa2.3/devel/../install/index.php:289
 msgid "Company admin passwords differ."
 msgstr "كلمات مرور مدير النظام مختلفة"
 
-#: install/index.php:316
+#: /var/www/fa2.3/devel/../install/index.php:320
 msgid "System Diagnostics"
 msgstr "تشخيص النظام"
 
-#: install/index.php:318
+#: /var/www/fa2.3/devel/../install/index.php:323
 msgid "Select install wizard language:"
 msgstr "أختيار لغة معالج التثبيت"
 
-#: install/index.php:324
+#: /var/www/fa2.3/devel/../install/index.php:329
 msgid "All application preliminary requirements seems to be correct. Please press Continue button below."
 msgstr "جميع المتطلبات التمهيدية الخاصة بالتطبيق تبدو صحيحة ، الرجاء الضغط على زر الأستمرار في الأسفل"
 
-#: install/index.php:325
-#: install/index.php:351
-#: install/index.php:358
-#: install/index.php:365
-#: install/index.php:384
+#: /var/www/fa2.3/devel/../install/index.php:330
+#: /var/www/fa2.3/devel/../install/index.php:356
+#: /var/www/fa2.3/devel/../install/index.php:363
+#: /var/www/fa2.3/devel/../install/index.php:370
+#: /var/www/fa2.3/devel/../install/index.php:389
 msgid "Continue >>"
 msgstr "<< الاستمرار"
 
-#: install/index.php:327
+#: /var/www/fa2.3/devel/../install/index.php:332
 msgid "Application cannot be installed. Please fix problems listed below in red, and press Refresh button."
 msgstr "لا يمكن تثبيت التطبيق ، الرجاء إصلاح المشاكل الملونة باللون الأحمر و المدرجة بالأسف ثم الضغط على زر التنشيط"
 
-#: install/index.php:328
+#: /var/www/fa2.3/devel/../install/index.php:333
 msgid "Refresh"
 msgstr "تنشيط"
 
-#: install/index.php:338
+#: /var/www/fa2.3/devel/../install/index.php:343
 msgid "Database Server Settings"
 msgstr "إعدادات خادم قاعدة البيانات"
 
-#: install/index.php:340
+#: /var/www/fa2.3/devel/../install/index.php:345
 msgid "Server Host:"
 msgstr "الخادم المستضيف :"
 
-#: install/index.php:341
+#: /var/www/fa2.3/devel/../install/index.php:346
 msgid "Database User:"
 msgstr "مستخدم قاعدة البيانات:"
 
-#: install/index.php:342
+#: /var/www/fa2.3/devel/../install/index.php:347
 msgid "Database Password:"
 msgstr "كلمة مرور قاعدة البيانات:"
 
-#: install/index.php:343
+#: /var/www/fa2.3/devel/../install/index.php:348
 msgid "Database Name:"
 msgstr "أسم قاعدة البيانات:"
 
-#: install/index.php:344
+#: /var/www/fa2.3/devel/../install/index.php:349
 msgid "Use '0_' Table Prefix:"
 msgstr "استخدام '0_' كبادئة جدول"
 
-#: install/index.php:344
-#: includes/system_tests.inc:38
-#: includes/system_tests.inc:113
-#: includes/system_tests.inc:126
+#: /var/www/fa2.3/devel/../install/index.php:349
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:38
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:113
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:126
 msgid "Yes"
 msgstr "نعم"
 
-#: install/index.php:344
-#: includes/system_tests.inc:38
-#: includes/system_tests.inc:113
-#: includes/system_tests.inc:126
+#: /var/www/fa2.3/devel/../install/index.php:349
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:38
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:113
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:126
 msgid "No"
 msgstr "لا"
 
-#: install/index.php:345
+#: /var/www/fa2.3/devel/../install/index.php:350
 msgid "Install Additional Language Packs from FA Repository:"
 msgstr "تثبيت حزم لغات إضافية من مستودع التطبيق :"
 
-#: install/index.php:346
+#: /var/www/fa2.3/devel/../install/index.php:351
 msgid "Install Additional COAs from FA Repository:"
 msgstr "تثبيت خرائط حسابات أضافية من مستودع التطبيق :"
 
-#: install/index.php:348
+#: /var/www/fa2.3/devel/../install/index.php:353
 msgid "Use table prefix if you share selected database for more than one FA company."
 msgstr "أستخدم بادئة جدول إذا كنت تريد أن تحتوي قاعدة البيانات الواحدة على أكثر من شركة واحدة"
 
-#: install/index.php:349
+#: /var/www/fa2.3/devel/../install/index.php:354
 msgid "Do not select additional langs nor COAs if you have no working internet connection right now. You can install them later."
 msgstr "لا تختار لغات إضافية أو خرائط حسابات إضافية إذا لم يكن لديك الآن توصيلة أنترنت تعمل بكفاءة ، يمكنك أن تثبت اللغات و خرائط الحسابات في وقت لاحق"
 
-#: install/index.php:350
-#: install/index.php:357
-#: install/index.php:364
-#: install/index.php:383
+#: /var/www/fa2.3/devel/../install/index.php:355
+#: /var/www/fa2.3/devel/../install/index.php:362
+#: /var/www/fa2.3/devel/../install/index.php:369
+#: /var/www/fa2.3/devel/../install/index.php:388
 msgid "<< Back"
 msgstr "للخلف >>"
 
-#: install/index.php:355
+#: /var/www/fa2.3/devel/../install/index.php:360
 msgid "User Interface Languages Selection"
 msgstr "اختيار لغات واجهة المستخدم"
 
-#: install/index.php:362
+#: /var/www/fa2.3/devel/../install/index.php:367
 msgid "Charts of Accounts Selection"
 msgstr "أختيار خرائط الحسابات"
 
-#: install/index.php:374
+#: /var/www/fa2.3/devel/../install/index.php:379
 msgid "Company Settings"
 msgstr "إعدادات الشركة"
 
-#: install/index.php:376
+#: /var/www/fa2.3/devel/../install/index.php:381
 msgid "Company Name:"
 msgstr "أسم الشركة :"
 
-#: install/index.php:377
+#: /var/www/fa2.3/devel/../install/index.php:382
 msgid "Admin Login:"
 msgstr "أسم الدخول لمدير النظام :"
 
-#: install/index.php:378
+#: /var/www/fa2.3/devel/../install/index.php:383
 msgid "Admin Password:"
 msgstr "كلمة مرور مدير النظام :"
 
-#: install/index.php:379
+#: /var/www/fa2.3/devel/../install/index.php:384
 msgid "Reenter Password:"
 msgstr "إعادة أدخال كلمة المرور :"
 
-#: install/index.php:380
+#: /var/www/fa2.3/devel/../install/index.php:385
 msgid "Select Chart of Accounts:"
 msgstr "اختيار خريطة الحسابات :"
 
-#: install/index.php:381
+#: /var/www/fa2.3/devel/../install/index.php:386
 msgid "Select Default Language:"
 msgstr "اختيار اللغة الأفتراضية :"
 
-#: install/index.php:388
+#: /var/www/fa2.3/devel/../install/index.php:393
 msgid "FrontAccounting ERP has been installed successsfully."
 msgstr "تمت عملية تثبيت FrontAccounting ERP بنجاح"
 
-#: install/index.php:389
+#: /var/www/fa2.3/devel/../install/index.php:394
 msgid "Please do not forget to remove install wizard folder."
 msgstr "الرجاء لا تنسى أن تزيل مجلد معالج التثبيت"
 
-#: install/index.php:392
+#: /var/www/fa2.3/devel/../install/index.php:396
 msgid "Click here to start."
 msgstr "الضغط هنا للبدء"
 
-#: includes/system_tests.inc:15
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:15
 msgid "Info"
 msgstr "معلومات"
 
-#: includes/system_tests.inc:16
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:16
 msgid "Optional"
 msgstr "اختياري"
 
-#: includes/system_tests.inc:17
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:17
 msgid "Recommended"
 msgstr "يوصى به"
 
-#: includes/system_tests.inc:18
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:18
 msgid "Required "
 msgstr "مطلوب"
 
-#: includes/system_tests.inc:24
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:24
 msgid "MySQL version"
 msgstr "إصدار MySQL"
 
-#: includes/system_tests.inc:28
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:28
 msgid "Upgrade MySQL server to version at least 4.1"
 msgstr "ترقية خادم MySQL إلى الإصدار 4.1 على الأقل"
 
-#: includes/system_tests.inc:35
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:35
 msgid "PHP MySQL extension"
 msgstr "رابط برمجي بين PHP و MySQL"
 
-#: includes/system_tests.inc:40
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:40
 msgid "Your PHP has to have MySQL extension enabled."
 msgstr "الـ PHP الخاص بك يجب أن يحتوي على رابط برمجي لـ MySQL مفعل"
 
-#: includes/system_tests.inc:46
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:46
 msgid "PHP version"
 msgstr "إصدار PHP"
 
-#: includes/system_tests.inc:50
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:50
 msgid "Upgrade PHP to version at least 4.3.3"
 msgstr "ترقية PHP إلى الإصدار رقم 4.3.3 على الأقل"
 
-#: includes/system_tests.inc:57
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:57
 msgid "Server system"
 msgstr "نظام الخادم"
 
-#: includes/system_tests.inc:67
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:67
 msgid "Session save path"
 msgstr "مسار حفظ جلسة الأستخدام"
 
-#: includes/system_tests.inc:79
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:79
 msgid "Removed install wizard folder"
 msgstr "مجلد معالج التثبيت الذي تمت إزالته"
 
-#: includes/system_tests.inc:82
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:82
 msgid "Not removed"
 msgstr "لم يتم إزالته"
 
-#: includes/system_tests.inc:83
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:83
 msgid "Remove or rename install wizard folder for security reasons."
 msgstr "قم بإزالة أو قم بإعادة تسمية مجلد معالج التثبيت و ذلك لأسباب أمنية"
 
-#: includes/system_tests.inc:90
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:90
 msgid "Browser type"
 msgstr "نوع المتصفح"
 
-#: includes/system_tests.inc:94
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:94
 msgid "Any browser is supported"
 msgstr "أي مستصفح تم دعمه"
 
-#: includes/system_tests.inc:101
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:101
 msgid "Http server type"
 msgstr "نوع خادم Http"
 
-#: includes/system_tests.inc:105
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:105
 msgid "Any server is supported"
 msgstr "أي خادم تم دعمه"
 
-#: includes/system_tests.inc:112
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:112
 msgid "Native gettext"
 msgstr "جيتيكس الطبيعية"
 
-#: includes/system_tests.inc:116
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:116
 msgid "In case of no gettext support, php emulation is used"
 msgstr "في حالة عدم دعم جيتيكس ، فإن محاكي PHP سوف يستخدم "
 
-#: includes/system_tests.inc:124
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:124
 msgid "Debugging mode"
 msgstr "بيئة تصحيح الأخطاء"
 
-#: includes/system_tests.inc:128
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:128
 msgid "To switch debugging on set $go_debug>0 in config.php file"
 msgstr "لتفعيل بيئة تصحيح الأخطاء يجب أن يتم ضبط $go_debug>0 في الملف config.php"
 
-#: includes/system_tests.inc:137
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:137
 msgid "Error logging"
 msgstr "سجل وقائع الأخطاء"
 
-#: includes/system_tests.inc:145
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:145
 msgid "Disabled"
 msgstr "غير مفعل"
 
-#: includes/system_tests.inc:148
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:148
 msgid "To switch error logging set $error_logging in config.php file"
 msgstr "لتفعيل سجل وقائع الأخطاء يجب أن يتم ضبط $error_logging في ملف config.php"
 
-#: includes/system_tests.inc:151
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:151
 msgid "Log file is not writeable"
 msgstr "ملف سجل الوقائع غير قابل للكتابة عليه"
 
-#: includes/system_tests.inc:161
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:161
 msgid "Current database version"
 msgstr "إصدار قاعدة البيانات الحالي"
 
-#: includes/system_tests.inc:165
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:165
 msgid "Database structure seems to be not upgraded to current version"
 msgstr "يبدو أن هيكل قاعدة البيانات لم تتم ترقيته إلى الإصدار الحالي"
 
-#: includes/system_tests.inc:180
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:180
 msgid "Company subdirectories consistency"
 msgstr "اتساق الفهارس الفرعية للشركة"
 
-#: includes/system_tests.inc:193
-#: includes/system_tests.inc:200
-#: includes/system_tests.inc:208
-#: includes/system_tests.inc:225
-#: includes/system_tests.inc:340
-#: includes/system_tests.inc:349
-#: includes/system_tests.inc:358
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:193
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:200
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:208
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:225
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:345
 #, php-format
 msgid "'%s' is not writeable"
 msgstr "'%s' غير قابل للكتابة عليه"
 
-#: includes/system_tests.inc:221
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:221
 msgid "Temporary directory"
 msgstr "الفهرس المؤقت"
 
-#: includes/system_tests.inc:233
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:233
 msgid "Language configuration consistency"
 msgstr "اتساق توصيف اللغة"
 
-#: includes/system_tests.inc:242
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:242
 msgid "Languages folder should be writeable."
 msgstr "مجلد اللغات يجب أن يكون قابل للكتابة عليه"
 
-#: includes/system_tests.inc:251
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:250
 msgid "Languages configuration file should be writeable."
 msgstr "ملف توصيف اللغات يجب أن يكون قابل للكتابة عليه"
 
-#: includes/system_tests.inc:270
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:268
 #, php-format
 msgid "Missing %s translation file."
 msgstr "ملف الترجمة %s مفقود"
 
-#: includes/system_tests.inc:275
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:273
 #, php-format
 msgid "Missing system locale: %s"
 msgstr "مسار النظام المفقود : %s"
 
-#: includes/system_tests.inc:288
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:286
 msgid "Main config file"
 msgstr "ملف التوصيف الرئيسي"
 
-#: includes/system_tests.inc:295
-#: includes/system_tests.inc:317
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:293
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:315
 #, php-format
 msgid "Can't write '%s' file. Check FA directory write permissions."
 msgstr "لا يمكن الكتابة على الملف  '%s' ، قم بفحص صلاحيات الكتابة على مجلد التطبيق"
 
-#: includes/system_tests.inc:296
-#: includes/system_tests.inc:318
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:294
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:316
 #, php-format
 msgid "'%s' file exists."
 msgstr "ملف  '%s' موجود"
 
-#: includes/system_tests.inc:300
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:298
 #, php-format
 msgid "'%s' file should be read-only"
 msgstr "الملف  '%s' يجب أن يكون للقراءة فقط "
 
-#: includes/system_tests.inc:309
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:307
 msgid "Database auth file"
 msgstr "ملف اعتماد قاعدة البيانات"
 
-#: includes/system_tests.inc:322
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:320
 #, php-format
 msgid "'%s' file should be read-only if you do not plan to add or change companies"
 msgstr "الملف  '%s' يجب أن يكون للقراءة فقط ، إذا كنت تخطط أن تضيف أو تغير الشركات"
 
-#: includes/system_tests.inc:333
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:331
 msgid "Extensions system"
 msgstr "نظام الإضافات البرمجية"
 
-#: includes/system_tests.inc:363
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:366
 msgid "Extensions configuration files and directories should be writeable"
 msgstr "ملفات توصيف الإضافات البرمجية و المجلدات يجب أن تكون قابلة للكتابة"
 
-#: includes/system_tests.inc:375
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:378
 #, php-format
 msgid "Non-standard theme directory '%s' is not writable"
 msgstr "مجلد الشكل الغير معياري  '%s' يجب أن يكون غير قابل للكتابة"
 
-#: includes/system_tests.inc:385
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:388
 msgid "OpenSSL PHP extension have to be enabled to use extension repository system."
 msgstr "نظام الروابط البرمجية OpenSSL لـ PHP يجب أن يكون مفعل لأستخدام مستودع الإضافات البرمجية للنظام"
 
-#: includes/system_tests.inc:388
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:391
 msgid "OpenSSL have to be available on your server to use extension repository system."
 msgstr "OpenSSL يجب أن يكون متاح على الخادم حتى يمكنك أستخدام مستودع الإضافات البرمجية للنظام"
 
-#: includes/system_tests.inc:411
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:414
 msgid "Test"
 msgstr "اختبار"
 
-#: includes/system_tests.inc:411
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:414
 msgid "Test type"
 msgstr "نوع الاختبار"
 
-#: includes/system_tests.inc:411
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:414
 msgid "Value"
 msgstr "القيمة"
 
-#: includes/system_tests.inc:411
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:414
 msgid "Comments"
 msgstr "الملاحظات"
 
-#: includes/system_tests.inc:435
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:438
 msgid "Ok"
 msgstr "موافق"
 
-#: includes/packages.inc:190
-#, php-format
-msgid "No key field '%s' in file '%s'"
-msgstr ""
-
-#: includes/packages.inc:295
-msgid "Release file in repository is invalid, or public key is outdated."
-msgstr ""
-
-#: includes/packages.inc:311
-msgid "Repository version does not match application version."
-msgstr ""
-
-#: includes/packages.inc:325
-#, php-format
-msgid "Security alert: broken index file in repository '%s'. Please inform repository administrator about this issue."
-msgstr ""
-
-#: includes/packages.inc:358
-#, php-format
-msgid "Security alert: broken package '%s' in repository. Please inform repository administrator about this issue."
-msgstr ""
-
-#: includes/packages.inc:613
-#: includes/packages.inc:664
-#, php-format
-msgid "Package '%s' not found."
-msgstr ""
-
index 22a75372d9fcc2b19532b5b694edd1210264f456..6466405abe0b23f3e133a1143301ae21a98c6e15 100644 (file)
Binary files a/install/lang/fr_FR/LC_MESSAGES/fr_FR.mo and b/install/lang/fr_FR/LC_MESSAGES/fr_FR.mo differ
index 19af11db2f0ed597139c94a0738c542092ff55a7..9d296a4c88c5ce5619b24d05c1ecc429867ab836 100644 (file)
@@ -7,491 +7,456 @@ msgid ""
 msgstr ""
 "Project-Id-Version: FrontAccounting 2.3.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: 2011-03-31 19:39+0100\n"
-"Last-Translator: Translation Team <info@frontaccounting.net>\n"
-"Language-Team: Language <LL@li.org>\n"
+"POT-Creation-Date: 2010-08-08 12:50+0200\n"
+"PO-Revision-Date: 2010-08-08 12:48-0500\n"
+"Last-Translator: Gaston <gaston.huot@videotron.ca>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: install/index.php:20
-#: install/index.php:40
+#: /var/www/fa2.3/devel/../install/index.php:20
+#: /var/www/fa2.3/devel/../install/index.php:40
 msgid "FrontAccouting ERP Installation Wizard"
 msgstr "Outil d'installation assistée de FrontAccounting"
 
-#: install/index.php:41
+#: /var/www/fa2.3/devel/../install/index.php:41
 #, php-format
 msgid "Step %d: %s"
 msgstr "Étape %d: %s"
 
-#: install/index.php:48
+#: /var/www/fa2.3/devel/../install/index.php:48
 msgid "Chart of accounts"
 msgstr "Charte des postes comptables"
 
-#: install/index.php:48
-#: install/index.php:75
+#: /var/www/fa2.3/devel/../install/index.php:48
+#: /var/www/fa2.3/devel/../install/index.php:75
 msgid "Encoding"
 msgstr "Codage des caractères"
 
-#: install/index.php:48
-#: install/index.php:75
+#: /var/www/fa2.3/devel/../install/index.php:48
+#: /var/www/fa2.3/devel/../install/index.php:75
 msgid "Description"
 msgstr "Description"
 
-#: install/index.php:48
-#: install/index.php:75
+#: /var/www/fa2.3/devel/../install/index.php:48
+#: /var/www/fa2.3/devel/../install/index.php:75
 msgid "Install"
 msgstr "Installer"
 
-#: install/index.php:65
-#: install/index.php:93
+#: /var/www/fa2.3/devel/../install/index.php:65
+#: /var/www/fa2.3/devel/../install/index.php:93
 msgid "Installed"
 msgstr "Installé"
 
-#: install/index.php:75
+#: /var/www/fa2.3/devel/../install/index.php:75
 msgid "Language"
 msgstr "Langue"
 
-#: install/index.php:123
-msgid "Cannot connect to database. User or password is invalid or you have no permittions to create database."
-msgstr ""
-
-#: install/index.php:159
+#: /var/www/fa2.3/devel/../install/index.php:156
 msgid "Cannot save system configuration file 'config.php'."
 msgstr "Impossible d'enregistrer le fichier 'config.php'"
 
-#: install/index.php:166
+#: /var/www/fa2.3/devel/../install/index.php:173
 msgid "Cannot open 'config_db.php' configuration file."
 msgstr "Impossible d'ouvrir le fichier 'config_db.php'"
 
-#: install/index.php:169
+#: /var/www/fa2.3/devel/../install/index.php:176
 msgid "Cannot write to the 'config_db.php' configuration file."
 msgstr "Impossible d'écrire dans le fichier 'config_db.php'"
 
-#: install/index.php:172
+#: /var/www/fa2.3/devel/../install/index.php:179
 msgid "Configuration file 'config_db.php' is not writable. Change its permissions so it is, then re-run installation step."
 msgstr "Il n'est pas possible d'écrire dans le fichier de configuration 'config_db.php'. Svp revoir les permissions et recommencer le processus d'installation."
 
-#: install/index.php:211
+#: /var/www/fa2.3/devel/../install/index.php:217
 msgid "Host name cannot be empty."
 msgstr "Le nom du Host ne peut être vide."
 
-#: install/index.php:215
+#: /var/www/fa2.3/devel/../install/index.php:221
 msgid "Database user name cannot be empty."
 msgstr "Svp un code d'utilisateur pour cette BD"
 
-#: install/index.php:219
+#: /var/www/fa2.3/devel/../install/index.php:225
 msgid "Database name cannot be empty."
 msgstr "Svp préciser le nom de la BD"
 
-#: install/index.php:272
+#: /var/www/fa2.3/devel/../install/index.php:277
 msgid "Company name cannot be empty."
 msgstr "SVP préciser le nom de la compagnie"
 
-#: install/index.php:276
+#: /var/www/fa2.3/devel/../install/index.php:281
 msgid "Company admin name cannot be empty."
 msgstr "SVP préciser le nom de l'administrateur "
 
-#: install/index.php:280
+#: /var/www/fa2.3/devel/../install/index.php:285
 msgid "Company admin password cannot be empty."
 msgstr "SVP préciser le mot de passe de l'administrateur"
 
-#: install/index.php:284
+#: /var/www/fa2.3/devel/../install/index.php:289
 msgid "Company admin passwords differ."
 msgstr "Les 2 entrées de mot de passe diffèrent."
 
-#: install/index.php:316
+#: /var/www/fa2.3/devel/../install/index.php:320
 msgid "System Diagnostics"
 msgstr "Diagnostique du système"
 
-#: install/index.php:318
+#: /var/www/fa2.3/devel/../install/index.php:323
 msgid "Select install wizard language:"
 msgstr "Svp choisir la langue d'installation."
 
-#: install/index.php:324
+#: /var/www/fa2.3/devel/../install/index.php:329
 msgid "All application preliminary requirements seems to be correct. Please press Continue button below."
 msgstr "Tous les pré-requis semblent corrects. Svp appuyez sur le bouton Continuer situé ci-après"
 
-#: install/index.php:325
-#: install/index.php:351
-#: install/index.php:358
-#: install/index.php:365
-#: install/index.php:384
+#: /var/www/fa2.3/devel/../install/index.php:330
+#: /var/www/fa2.3/devel/../install/index.php:356
+#: /var/www/fa2.3/devel/../install/index.php:363
+#: /var/www/fa2.3/devel/../install/index.php:370
+#: /var/www/fa2.3/devel/../install/index.php:389
 msgid "Continue >>"
 msgstr "Continuer >>"
 
-#: install/index.php:327
+#: /var/www/fa2.3/devel/../install/index.php:332
 msgid "Application cannot be installed. Please fix problems listed below in red, and press Refresh button."
 msgstr "L'application n'a pu être installée. Svp résoudre le problème libellé en rouge et appuyez sur le bouton Actualiser"
 
-#: install/index.php:328
+#: /var/www/fa2.3/devel/../install/index.php:333
 msgid "Refresh"
 msgstr "Actualiser"
 
-#: install/index.php:338
+#: /var/www/fa2.3/devel/../install/index.php:343
 msgid "Database Server Settings"
 msgstr "Réglages de la BD"
 
-#: install/index.php:340
+#: /var/www/fa2.3/devel/../install/index.php:345
 msgid "Server Host:"
 msgstr "Nom du serveur:"
 
-#: install/index.php:341
+#: /var/www/fa2.3/devel/../install/index.php:346
 msgid "Database User:"
 msgstr "ID de l'utilisateur de la BD:"
 
-#: install/index.php:342
+#: /var/www/fa2.3/devel/../install/index.php:347
 msgid "Database Password:"
 msgstr "Mot de passe :"
 
-#: install/index.php:343
+#: /var/www/fa2.3/devel/../install/index.php:348
 msgid "Database Name:"
 msgstr "Nom de la BD:"
 
-#: install/index.php:344
+#: /var/www/fa2.3/devel/../install/index.php:349
 msgid "Use '0_' Table Prefix:"
 msgstr "Utilisez le préfix de table '0_':"
 
-#: install/index.php:344
-#: includes/system_tests.inc:38
-#: includes/system_tests.inc:113
-#: includes/system_tests.inc:126
+#: /var/www/fa2.3/devel/../install/index.php:349
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:38
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:113
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:126
 msgid "Yes"
 msgstr "Oui"
 
-#: install/index.php:344
-#: includes/system_tests.inc:38
-#: includes/system_tests.inc:113
-#: includes/system_tests.inc:126
+#: /var/www/fa2.3/devel/../install/index.php:349
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:38
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:113
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:126
 msgid "No"
 msgstr "Non"
 
-#: install/index.php:345
+#: /var/www/fa2.3/devel/../install/index.php:350
 msgid "Install Additional Language Packs from FA Repository:"
 msgstr "Installer d'autres langues:"
 
-#: install/index.php:346
+#: /var/www/fa2.3/devel/../install/index.php:351
 msgid "Install Additional COAs from FA Repository:"
 msgstr "Installer d'autres COAs à partir du dépôt de FA:"
 
-#: install/index.php:348
+#: /var/www/fa2.3/devel/../install/index.php:353
 msgid "Use table prefix if you share selected database for more than one FA company."
 msgstr "Svp utiliser un préfixe de table si vous partagez la BD pour plus d'une compagnie."
 
-#: install/index.php:349
+#: /var/www/fa2.3/devel/../install/index.php:354
 msgid "Do not select additional langs nor COAs if you have no working internet connection right now. You can install them later."
 msgstr "Ne pas sélectionner d'autres langues (ni COA) si votre connection internet n'est pas active en ce moment. Vous pourrez le faire plus tard."
 
-#: install/index.php:350
-#: install/index.php:357
-#: install/index.php:364
-#: install/index.php:383
+#: /var/www/fa2.3/devel/../install/index.php:355
+#: /var/www/fa2.3/devel/../install/index.php:362
+#: /var/www/fa2.3/devel/../install/index.php:369
+#: /var/www/fa2.3/devel/../install/index.php:388
 msgid "<< Back"
 msgstr "<< Retour"
 
-#: install/index.php:355
+#: /var/www/fa2.3/devel/../install/index.php:360
 msgid "User Interface Languages Selection"
 msgstr "Sélection de la langue :"
 
-#: install/index.php:362
+#: /var/www/fa2.3/devel/../install/index.php:367
 msgid "Charts of Accounts Selection"
 msgstr "Sélection de la charte des postes comptables"
 
-#: install/index.php:374
+#: /var/www/fa2.3/devel/../install/index.php:379
 msgid "Company Settings"
 msgstr "Réglages systèmes de la compagnie"
 
-#: install/index.php:376
+#: /var/www/fa2.3/devel/../install/index.php:381
 msgid "Company Name:"
 msgstr "Nom de la compagnie:"
 
-#: install/index.php:377
+#: /var/www/fa2.3/devel/../install/index.php:382
 msgid "Admin Login:"
 msgstr "Identifiant d'administrateur:"
 
-#: install/index.php:378
+#: /var/www/fa2.3/devel/../install/index.php:383
 msgid "Admin Password:"
 msgstr "Mot de passe de l'administrateur:"
 
-#: install/index.php:379
+#: /var/www/fa2.3/devel/../install/index.php:384
 msgid "Reenter Password:"
 msgstr "Saisir de nouveau le mot de passe:"
 
-#: install/index.php:380
+#: /var/www/fa2.3/devel/../install/index.php:385
 msgid "Select Chart of Accounts:"
 msgstr "Sélectionner la charte de postes comptables:"
 
-#: install/index.php:381
+#: /var/www/fa2.3/devel/../install/index.php:386
 msgid "Select Default Language:"
 msgstr "Sélectionner la langue par défaut:"
 
-#: install/index.php:388
+#: /var/www/fa2.3/devel/../install/index.php:393
 msgid "FrontAccounting ERP has been installed successsfully."
 msgstr "L'installation de FrontAccounting est un succès."
 
-#: install/index.php:389
+#: /var/www/fa2.3/devel/../install/index.php:394
 msgid "Please do not forget to remove install wizard folder."
 msgstr "Svp ne pas oublier de retirer le répertoire d'installation."
 
-#: install/index.php:392
+#: /var/www/fa2.3/devel/../install/index.php:396
 msgid "Click here to start."
 msgstr "Appuyez ici pour démarrer."
 
-#: includes/system_tests.inc:15
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:15
 msgid "Info"
 msgstr "Information"
 
-#: includes/system_tests.inc:16
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:16
 msgid "Optional"
 msgstr "Optionnel"
 
-#: includes/system_tests.inc:17
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:17
 msgid "Recommended"
 msgstr "Recommandé"
 
-#: includes/system_tests.inc:18
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:18
 msgid "Required "
 msgstr "Requis"
 
-#: includes/system_tests.inc:24
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:24
 msgid "MySQL version"
 msgstr "Version de MySQL"
 
-#: includes/system_tests.inc:28
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:28
 msgid "Upgrade MySQL server to version at least 4.1"
 msgstr "Mettre à niveau MySQL à la vesion 4.1 et plus"
 
-#: includes/system_tests.inc:35
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:35
 msgid "PHP MySQL extension"
 msgstr "Extension MySQL de PHP"
 
-#: includes/system_tests.inc:40
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:40
 msgid "Your PHP has to have MySQL extension enabled."
 msgstr "SVP activer l'extension MySQL de votre PHP"
 
-#: includes/system_tests.inc:46
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:46
 msgid "PHP version"
 msgstr "Version de PHP"
 
-#: includes/system_tests.inc:50
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:50
 msgid "Upgrade PHP to version at least 4.3.3"
 msgstr "Mettre à niveau PHP à la version 4.3.3 et plus"
 
-#: includes/system_tests.inc:57
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:57
 msgid "Server system"
 msgstr "Système serveur"
 
-#: includes/system_tests.inc:67
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:67
 msgid "Session save path"
 msgstr "Chemin d'accès à la sauvegarde de la session"
 
-#: includes/system_tests.inc:79
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:79
 msgid "Removed install wizard folder"
 msgstr "Le répertoire d'installation a été retiré."
 
-#: includes/system_tests.inc:82
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:82
 msgid "Not removed"
 msgstr "Non retiré"
 
-#: includes/system_tests.inc:83
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:83
 msgid "Remove or rename install wizard folder for security reasons."
 msgstr "Pour des raisons de sécurité, vous devez retirer ou renommer le répertoire d'installation."
 
-#: includes/system_tests.inc:90
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:90
 msgid "Browser type"
 msgstr "Type de navigateur"
 
-#: includes/system_tests.inc:94
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:94
 msgid "Any browser is supported"
 msgstr "Tous les navigateurs sont supportés"
 
-#: includes/system_tests.inc:101
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:101
 msgid "Http server type"
 msgstr "Type de serveur Http"
 
-#: includes/system_tests.inc:105
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:105
 msgid "Any server is supported"
 msgstr "Tous les serveurs sont supportés"
 
-#: includes/system_tests.inc:112
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:112
 msgid "Native gettext"
 msgstr "Gettext natif"
 
-#: includes/system_tests.inc:116
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:116
 msgid "In case of no gettext support, php emulation is used"
 msgstr "Si gettext est non supporté, l'émulation php sera utilisée"
 
-#: includes/system_tests.inc:124
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:124
 msgid "Debugging mode"
 msgstr "Mode de débuggage"
 
-#: includes/system_tests.inc:128
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:128
 msgid "To switch debugging on set $go_debug>0 in config.php file"
 msgstr "Pour activer le code de débug, modifier $go_debug>0 dans le fichier config.php"
 
-#: includes/system_tests.inc:137
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:137
 msgid "Error logging"
 msgstr "Enregistrement des erreurs"
 
-#: includes/system_tests.inc:145
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:145
 msgid "Disabled"
 msgstr "Désactivé"
 
-#: includes/system_tests.inc:148
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:148
 msgid "To switch error logging set $error_logging in config.php file"
 msgstr "Pour activer l'enregistrement des erreurs, modifiez $error_logging dans le fichier de configuration config.php"
 
-#: includes/system_tests.inc:151
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:151
 msgid "Log file is not writeable"
 msgstr "Impossible d'écrire dans le fichier de log"
 
-#: includes/system_tests.inc:161
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:161
 msgid "Current database version"
 msgstr "Version de la BD"
 
-#: includes/system_tests.inc:165
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:165
 msgid "Database structure seems to be not upgraded to current version"
 msgstr "La structure de la BD ne semble pas être de niveau avec la version actuelle"
 
-#: includes/system_tests.inc:180
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:180
 msgid "Company subdirectories consistency"
 msgstr "Cohérence des sous-répertoire de la compagnie"
 
-#: includes/system_tests.inc:193
-#: includes/system_tests.inc:200
-#: includes/system_tests.inc:208
-#: includes/system_tests.inc:225
-#: includes/system_tests.inc:340
-#: includes/system_tests.inc:349
-#: includes/system_tests.inc:358
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:193
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:200
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:208
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:225
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:345
 #, php-format
 msgid "'%s' is not writeable"
 msgstr "Il est impossible d'écrire dans '%s' "
 
-#: includes/system_tests.inc:221
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:221
 msgid "Temporary directory"
 msgstr "Répertoire temporaire"
 
-#: includes/system_tests.inc:233
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:233
 msgid "Language configuration consistency"
 msgstr "Cohérence de la configuration de la langue"
 
-#: includes/system_tests.inc:242
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:242
 msgid "Languages folder should be writeable."
 msgstr "Les répertoires de langue doivent avoir un accès en écriture"
 
-#: includes/system_tests.inc:251
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:250
 msgid "Languages configuration file should be writeable."
 msgstr "Le fichier de configuration de langues doit être accessible en écriture"
 
-#: includes/system_tests.inc:270
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:268
 #, php-format
 msgid "Missing %s translation file."
 msgstr "Le fichier de traduction '%s' est manquant"
 
-#: includes/system_tests.inc:275
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:273
 #, php-format
 msgid "Missing system locale: %s"
 msgstr "Il manque '%s'"
 
-#: includes/system_tests.inc:288
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:286
 msgid "Main config file"
 msgstr "Fichier de configuration"
 
-#: includes/system_tests.inc:295
-#: includes/system_tests.inc:317
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:293
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:315
 #, php-format
 msgid "Can't write '%s' file. Check FA directory write permissions."
 msgstr "Impossible d'écrire '%s'. Svp vérifier les permissions d'écriture sur le répertoire de FA"
 
-#: includes/system_tests.inc:296
-#: includes/system_tests.inc:318
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:294
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:316
 #, php-format
 msgid "'%s' file exists."
 msgstr "Fichier '%s' existant."
 
-#: includes/system_tests.inc:300
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:298
 #, php-format
 msgid "'%s' file should be read-only"
 msgstr "'%s' doit être en lecture seule."
 
-#: includes/system_tests.inc:309
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:307
 msgid "Database auth file"
 msgstr "Fichier d'autorisation de la BD"
 
-#: includes/system_tests.inc:322
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:320
 #, php-format
 msgid "'%s' file should be read-only if you do not plan to add or change companies"
 msgstr "Le fichier '%s' devrait être en lecture seule si vous ne prévoyez pas ajouter ou changer les compagnies."
 
-#: includes/system_tests.inc:333
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:331
 msgid "Extensions system"
 msgstr "Système des extensions"
 
-#: includes/system_tests.inc:363
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:366
 msgid "Extensions configuration files and directories should be writeable"
 msgstr "Les répertoires et fichiers de configuration des extensions doivent accepter les écritures"
 
-#: includes/system_tests.inc:375
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:378
 #, php-format
 msgid "Non-standard theme directory '%s' is not writable"
 msgstr "Le répertoire de thèmes non-standards '%s' n'accepte pas les écritures"
 
-#: includes/system_tests.inc:385
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:388
 msgid "OpenSSL PHP extension have to be enabled to use extension repository system."
 msgstr "Les extensions OpenSSL de PHP doivent être activées pour utiliser le système de dépôt des extensions"
 
-#: includes/system_tests.inc:388
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:391
 msgid "OpenSSL have to be available on your server to use extension repository system."
 msgstr "Les extensions OpenSSL de PHP doivent être disponibles pour utiliser le système de dépôt des extensions"
 
-#: includes/system_tests.inc:411
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:414
 msgid "Test"
 msgstr "Test"
 
-#: includes/system_tests.inc:411
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:414
 msgid "Test type"
 msgstr "Type de test"
 
-#: includes/system_tests.inc:411
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:414
 msgid "Value"
 msgstr "Valeur"
 
-#: includes/system_tests.inc:411
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:414
 msgid "Comments"
 msgstr "Commentaires"
 
-#: includes/system_tests.inc:435
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:438
 msgid "Ok"
 msgstr "Ok"
 
-#: includes/packages.inc:190
-#, php-format
-msgid "No key field '%s' in file '%s'"
-msgstr ""
-
-#: includes/packages.inc:295
-msgid "Release file in repository is invalid, or public key is outdated."
-msgstr ""
-
-#: includes/packages.inc:311
-msgid "Repository version does not match application version."
-msgstr ""
-
-#: includes/packages.inc:325
-#, php-format
-msgid "Security alert: broken index file in repository '%s'. Please inform repository administrator about this issue."
-msgstr ""
-
-#: includes/packages.inc:358
-#, php-format
-msgid "Security alert: broken package '%s' in repository. Please inform repository administrator about this issue."
-msgstr ""
-
-#: includes/packages.inc:613
-#: includes/packages.inc:664
-#, php-format
-msgid "Package '%s' not found."
-msgstr ""
-
index e0fac6cf10bbc6bfeaa49308a49cb549bde4959c..d35d3c27aab6e7a955d5c183c401c9636c811ed5 100644 (file)
 # This file is distributed under the same license as the PACKAGE package.
 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
 #
+#, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-07 20:46+0100\n"
-"PO-Revision-Date: 2013-01-17 11:34+0100\n"
-"Last-Translator: Translation Team <info@frontaccounting.net>\n"
+"POT-Creation-Date: 2013-10-27 18:01+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: \n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: install/index.php:20
-#: install/index.php:41
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:20
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:41
 msgid "FrontAccouting ERP Installation Wizard"
 msgstr ""
 
-#: install/index.php:42
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:42
 #, php-format
 msgid "Step %d: %s"
 msgstr ""
 
-#: install/index.php:49
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:49
 msgid "Chart of accounts"
 msgstr ""
 
-#: install/index.php:49
-#: install/index.php:76
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:49
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:76
 msgid "Encoding"
 msgstr ""
 
-#: install/index.php:49
-#: install/index.php:76
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:49
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:76
 msgid "Description"
 msgstr ""
 
-#: install/index.php:49
-#: install/index.php:76
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:49
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:76
 msgid "Install"
 msgstr ""
 
-#: install/index.php:66
-#: install/index.php:94
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:66
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:94
 msgid "Installed"
 msgstr ""
 
-#: install/index.php:76
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:76
 msgid "Language"
 msgstr ""
 
-#: install/index.php:124
-msgid "Cannot connect to database. User or password is invalid or you have no permittions to create database."
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:124
+msgid ""
+"Cannot connect to database. User or password is invalid or you have no "
+"permittions to create database."
 msgstr ""
 
-#: install/index.php:160
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:160
 msgid "Cannot save system configuration file 'config.php'."
 msgstr ""
 
-#: install/index.php:167
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:167
 msgid "Cannot open 'config_db.php' configuration file."
 msgstr ""
 
-#: install/index.php:170
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:170
 msgid "Cannot write to the 'config_db.php' configuration file."
 msgstr ""
 
-#: install/index.php:173
-msgid "Configuration file 'config_db.php' is not writable. Change its permissions so it is, then re-run installation step."
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:173
+msgid ""
+"Configuration file 'config_db.php' is not writable. Change its permissions "
+"so it is, then re-run installation step."
 msgstr ""
 
-#: install/index.php:211
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:211
 msgid "Host name cannot be empty."
 msgstr ""
 
-#: install/index.php:215
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:215
 msgid "Database user name cannot be empty."
 msgstr ""
 
-#: install/index.php:219
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:219
 msgid "Database name cannot be empty."
 msgstr ""
 
-#: install/index.php:272
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:272
 msgid "Company name cannot be empty."
 msgstr ""
 
-#: install/index.php:276
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:276
 msgid "Company admin name cannot be empty."
 msgstr ""
 
-#: install/index.php:280
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:280
 msgid "Company admin password cannot be empty."
 msgstr ""
 
-#: install/index.php:284
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:284
 msgid "Company admin passwords differ."
 msgstr ""
 
-#: install/index.php:316
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:316
 msgid "System Diagnostics"
 msgstr ""
 
-#: install/index.php:318
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:318
 msgid "Select install wizard language:"
 msgstr ""
 
-#: install/index.php:324
-msgid "All application preliminary requirements seems to be correct. Please press Continue button below."
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:324
+msgid ""
+"All application preliminary requirements seems to be correct. Please press "
+"Continue button below."
 msgstr ""
 
-#: install/index.php:325
-#: install/index.php:351
-#: install/index.php:358
-#: install/index.php:365
-#: install/index.php:389
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:325
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:351
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:358
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:365
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:389
 msgid "Continue >>"
 msgstr ""
 
-#: install/index.php:327
-msgid "Application cannot be installed. Please fix problems listed below in red, and press Refresh button."
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:327
+msgid ""
+"Application cannot be installed. Please fix problems listed below in red, "
+"and press Refresh button."
 msgstr ""
 
-#: install/index.php:328
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:328
 msgid "Refresh"
 msgstr ""
 
-#: install/index.php:338
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:338
 msgid "Database Server Settings"
 msgstr ""
 
-#: install/index.php:340
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:340
 msgid "Server Host:"
 msgstr ""
 
-#: install/index.php:341
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:341
 msgid "Database User:"
 msgstr ""
 
-#: install/index.php:342
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:342
 msgid "Database Password:"
 msgstr ""
 
-#: install/index.php:343
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:343
 msgid "Database Name:"
 msgstr ""
 
-#: install/index.php:344
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:344
 msgid "Use '0_' Table Prefix:"
 msgstr ""
 
-#: install/index.php:344
-#: includes/system_tests.inc:38
-#: includes/system_tests.inc:113
-#: includes/system_tests.inc:126
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:344
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:38
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:113
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:126
 msgid "Yes"
 msgstr ""
 
-#: install/index.php:344
-#: includes/system_tests.inc:38
-#: includes/system_tests.inc:113
-#: includes/system_tests.inc:126
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:344
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:38
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:113
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:126
 msgid "No"
 msgstr ""
 
-#: install/index.php:345
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:345
 msgid "Install Additional Language Packs from FA Repository:"
 msgstr ""
 
-#: install/index.php:346
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:346
 msgid "Install Additional COAs from FA Repository:"
 msgstr ""
 
-#: install/index.php:348
-msgid "Use table prefix if you share selected database for more than one FA company."
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:348
+msgid ""
+"Use table prefix if you share selected database for more than one FA company."
 msgstr ""
 
-#: install/index.php:349
-msgid "Do not select additional langs nor COAs if you have no working internet connection right now. You can install them later."
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:349
+msgid ""
+"Do not select additional langs nor COAs if you have no working internet "
+"connection right now. You can install them later."
 msgstr ""
 
-#: install/index.php:350
-#: install/index.php:357
-#: install/index.php:364
-#: install/index.php:388
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:350
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:357
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:364
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:388
 msgid "<< Back"
 msgstr ""
 
-#: install/index.php:355
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:355
 msgid "User Interface Languages Selection"
 msgstr ""
 
-#: install/index.php:362
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:362
 msgid "Charts of Accounts Selection"
 msgstr ""
 
-#: install/index.php:379
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:379
 msgid "Company Settings"
 msgstr ""
 
-#: install/index.php:381
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:381
 msgid "Company Name:"
 msgstr ""
 
-#: install/index.php:382
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:382
 msgid "Admin Login:"
 msgstr ""
 
-#: install/index.php:383
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:383
 msgid "Admin Password:"
 msgstr ""
 
-#: install/index.php:384
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:384
 msgid "Reenter Password:"
 msgstr ""
 
-#: install/index.php:385
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:385
 msgid "Select Chart of Accounts:"
 msgstr ""
 
-#: install/index.php:386
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:386
 msgid "Select Default Language:"
 msgstr ""
 
-#: install/index.php:393
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:393
 msgid "FrontAccounting ERP has been installed successsfully."
 msgstr ""
 
-#: install/index.php:394
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:394
 msgid "Please do not forget to remove install wizard folder."
 msgstr ""
 
-#: install/index.php:397
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:397
 msgid "Click here to start."
 msgstr ""
 
-#: includes/system_tests.inc:15
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:15
 msgid "Info"
 msgstr ""
 
-#: includes/system_tests.inc:16
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:16
 msgid "Optional"
 msgstr ""
 
-#: includes/system_tests.inc:17
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:17
 msgid "Recommended"
 msgstr ""
 
-#: includes/system_tests.inc:18
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:18
 msgid "Required "
 msgstr ""
 
-#: includes/system_tests.inc:24
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:24
 msgid "MySQL version"
 msgstr ""
 
-#: includes/system_tests.inc:28
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:28
 msgid "Upgrade MySQL server to version at least 4.1"
 msgstr ""
 
-#: includes/system_tests.inc:35
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:35
 msgid "PHP MySQL extension"
 msgstr ""
 
-#: includes/system_tests.inc:40
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:40
 msgid "Your PHP has to have MySQL extension enabled."
 msgstr ""
 
-#: includes/system_tests.inc:46
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:46
 msgid "PHP version"
 msgstr ""
 
-#: includes/system_tests.inc:50
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:50
 msgid "Upgrade PHP to version at least 4.3.3"
 msgstr ""
 
-#: includes/system_tests.inc:57
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:57
 msgid "Server system"
 msgstr ""
 
-#: includes/system_tests.inc:67
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:67
 msgid "Session save path"
 msgstr ""
 
-#: includes/system_tests.inc:79
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:79
 msgid "Removed install wizard folder"
 msgstr ""
 
-#: includes/system_tests.inc:82
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:82
 msgid "Not removed"
 msgstr ""
 
-#: includes/system_tests.inc:83
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:83
 msgid "Remove or rename install wizard folder for security reasons."
 msgstr ""
 
-#: includes/system_tests.inc:90
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:90
 msgid "Browser type"
 msgstr ""
 
-#: includes/system_tests.inc:94
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:94
 msgid "Any browser is supported"
 msgstr ""
 
-#: includes/system_tests.inc:101
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:101
 msgid "Http server type"
 msgstr ""
 
-#: includes/system_tests.inc:105
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:105
 msgid "Any server is supported"
 msgstr ""
 
-#: includes/system_tests.inc:112
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:112
 msgid "Native gettext"
 msgstr ""
 
-#: includes/system_tests.inc:116
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:116
 msgid "In case of no gettext support, php emulation is used"
 msgstr ""
 
-#: includes/system_tests.inc:124
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:124
 msgid "Debugging mode"
 msgstr ""
 
-#: includes/system_tests.inc:128
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:128
 msgid "To switch debugging on set $go_debug>0 in config.php file"
 msgstr ""
 
-#: includes/system_tests.inc:137
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:137
 msgid "Error logging"
 msgstr ""
 
-#: includes/system_tests.inc:145
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:145
 msgid "Disabled"
 msgstr ""
 
-#: includes/system_tests.inc:148
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:148
 msgid "To switch error logging set $error_logging in config.php file"
 msgstr ""
 
-#: includes/system_tests.inc:151
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:151
 msgid "Log file is not writeable"
 msgstr ""
 
-#: includes/system_tests.inc:161
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:161
 msgid "Current database version"
 msgstr ""
 
-#: includes/system_tests.inc:165
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:165
 msgid "Database structure seems to be not upgraded to current version"
 msgstr ""
 
-#: includes/system_tests.inc:180
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:180
 msgid "Company subdirectories consistency"
 msgstr ""
 
-#: includes/system_tests.inc:193
-#: includes/system_tests.inc:200
-#: includes/system_tests.inc:208
-#: includes/system_tests.inc:225
-#: includes/system_tests.inc:340
-#: includes/system_tests.inc:349
-#: includes/system_tests.inc:358
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:193
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:200
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:208
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:225
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:340
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:349
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:358
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:366
 #, php-format
 msgid "'%s' is not writeable"
 msgstr ""
 
-#: includes/system_tests.inc:221
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:221
 msgid "Temporary directory"
 msgstr ""
 
-#: includes/system_tests.inc:233
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:233
 msgid "Language configuration consistency"
 msgstr ""
 
-#: includes/system_tests.inc:242
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:242
 msgid "Languages folder should be writeable."
 msgstr ""
 
-#: includes/system_tests.inc:251
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:251
 msgid "Languages configuration file should be writeable."
 msgstr ""
 
-#: includes/system_tests.inc:270
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:270
 #, php-format
 msgid "Missing %s translation file."
 msgstr ""
 
-#: includes/system_tests.inc:275
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:275
 #, php-format
 msgid "Missing system locale: %s"
 msgstr ""
 
-#: includes/system_tests.inc:288
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:288
 msgid "Main config file"
 msgstr ""
 
-#: includes/system_tests.inc:295
-#: includes/system_tests.inc:317
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:295
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:317
 #, php-format
 msgid "Can't write '%s' file. Check FA directory write permissions."
 msgstr ""
 
-#: includes/system_tests.inc:296
-#: includes/system_tests.inc:318
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:296
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:318
 #, php-format
 msgid "'%s' file exists."
 msgstr ""
 
-#: includes/system_tests.inc:300
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:300
 #, php-format
 msgid "'%s' file should be read-only"
 msgstr ""
 
-#: includes/system_tests.inc:309
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:309
 msgid "Database auth file"
 msgstr ""
 
-#: includes/system_tests.inc:322
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:322
 #, php-format
-msgid "'%s' file should be read-only if you do not plan to add or change companies"
+msgid ""
+"'%s' file should be read-only if you do not plan to add or change companies"
 msgstr ""
 
-#: includes/system_tests.inc:333
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:333
 msgid "Extensions system"
 msgstr ""
 
-#: includes/system_tests.inc:363
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:371
 msgid "Extensions configuration files and directories should be writeable"
 msgstr ""
 
-#: includes/system_tests.inc:375
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:384
 #, php-format
 msgid "Non-standard theme directory '%s' is not writable"
 msgstr ""
 
-#: includes/system_tests.inc:385
-msgid "OpenSSL PHP extension have to be enabled to use extension repository system."
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:394
+msgid ""
+"OpenSSL PHP extension have to be enabled to use extension repository system."
 msgstr ""
 
-#: includes/system_tests.inc:388
-msgid "OpenSSL have to be available on your server to use extension repository system."
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:397
+msgid ""
+"OpenSSL have to be available on your server to use extension repository "
+"system."
 msgstr ""
 
-#: includes/system_tests.inc:411
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:420
 msgid "Test"
 msgstr ""
 
-#: includes/system_tests.inc:411
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:420
 msgid "Test type"
 msgstr ""
 
-#: includes/system_tests.inc:411
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:420
 msgid "Value"
 msgstr ""
 
-#: includes/system_tests.inc:411
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:420
 msgid "Comments"
 msgstr ""
 
-#: includes/system_tests.inc:435
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:444
 msgid "Ok"
 msgstr ""
 
-#: includes/packages.inc:190
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:189
 #, php-format
 msgid "No key field '%s' in file '%s'"
 msgstr ""
 
-#: includes/packages.inc:295
-#: includes/packages.inc:329
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:294
+msgid "Cannot download repo index file."
+msgstr ""
+
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:306
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:343
 #, php-format
 msgid "Cannot delete outdated '%s' file."
 msgstr ""
 
-#: includes/packages.inc:299
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:310
 msgid "Release file in repository is invalid, or public key is outdated."
 msgstr ""
 
-#: includes/packages.inc:316
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:327
 msgid "Repository version does not match application version."
 msgstr ""
 
-#: includes/packages.inc:333
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:335
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:377
 #, php-format
-msgid "Security alert: broken index file in repository '%s'. Please inform repository administrator about this issue."
+msgid "Cannot download '%s' file."
 msgstr ""
 
-#: includes/packages.inc:366
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:347
 #, php-format
-msgid "Security alert: broken package '%s' in repository. Please inform repository administrator about this issue."
+msgid ""
+"Security alert: broken index file in repository '%s'. Please inform "
+"repository administrator about this issue."
 msgstr ""
 
-#: includes/packages.inc:621
-#: includes/packages.inc:672
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:383
 #, php-format
-msgid "Package '%s' not found."
+msgid ""
+"Security alert: broken package '%s' in repository. Please inform repository "
+"administrator about this issue."
 msgstr ""
 
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:638
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:699
+#, php-format
+msgid "Package '%s' not found."
+msgstr ""
index 702f65affabaff9f0555393af8878a196462841f..37a630a0c0886a3de0b1959fb07b1272db1cecc2 100644 (file)
Binary files a/install/lang/pl_PL/LC_MESSAGES/pl_PL.mo and b/install/lang/pl_PL/LC_MESSAGES/pl_PL.mo differ
index 3ad76a1b74e5d70c925e9f714038b604fd4f5e25..b7f573c6e9ee52cd6411795e251f68f0afb4efb0 100644 (file)
@@ -7,492 +7,545 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-31 10:54+0200\n"
+"POT-Creation-Date: 2013-10-27 18:01+0100\n"
 "PO-Revision-Date: \n"
-"Last-Translator: Translation Team <info@frontaccounting.net>\n"
+"Last-Translator: Janusz Dobrowolski <janusz@iron.from.pl>\n"
 "Language-Team: \n"
 "Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-2\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: install/index.php:20
-#: install/index.php:40
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:20
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:41
 msgid "FrontAccouting ERP Installation Wizard"
 msgstr "Instalator FrontAccounting ERP"
 
-#: install/index.php:41
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:42
 #, php-format
 msgid "Step %d: %s"
 msgstr "Krok %d: %s"
 
-#: install/index.php:48
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:49
 msgid "Chart of accounts"
 msgstr "Plan kont"
 
-#: install/index.php:48
-#: install/index.php:75
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:49
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:76
 msgid "Encoding"
 msgstr "Kodowanie"
 
-#: install/index.php:48
-#: install/index.php:75
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:49
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:76
 msgid "Description"
 msgstr "Opis"
 
-#: install/index.php:48
-#: install/index.php:75
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:49
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:76
 msgid "Install"
 msgstr "Zainstaluj"
 
-#: install/index.php:65
-#: install/index.php:93
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:66
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:94
 msgid "Installed"
 msgstr "Zainstalowany"
 
-#: install/index.php:75
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:76
 msgid "Language"
 msgstr "Jêzyk"
 
-#: install/index.php:123
-msgid "Cannot connect to database. User or password is invalid or you have no permittions to create database."
-msgstr "Nie mo¿na po³aæzyæ siê z baz± danych. Login lub has³o jest niepoprawne, lub brak uprawnieñ do tworzenia bazy danych."
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:124
+msgid ""
+"Cannot connect to database. User or password is invalid or you have no "
+"permittions to create database."
+msgstr ""
 
-#: install/index.php:159
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:160
 msgid "Cannot save system configuration file 'config.php'."
 msgstr "Nie mo¿na zapisaæ pliku konfiguracyjnego 'config.php'."
 
-#: install/index.php:166
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:167
 msgid "Cannot open 'config_db.php' configuration file."
 msgstr "Nie mo¿na utworzyæ pliku konfiguracji 'config_db.php'."
 
-#: install/index.php:169
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:170
 msgid "Cannot write to the 'config_db.php' configuration file."
 msgstr "Nie mo¿na zapisaæ pliku konfiguracji  'config_db.php'."
 
-#: install/index.php:172
-msgid "Configuration file 'config_db.php' is not writable. Change its permissions so it is, then re-run installation step."
-msgstr "Plik konfiguracji 'config_db.php' jest zabezpieczony przed zapisem. Zmieñ prawa dostêpu i powtórz krok instalacji."
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:173
+msgid ""
+"Configuration file 'config_db.php' is not writable. Change its permissions "
+"so it is, then re-run installation step."
+msgstr ""
+"Plik konfiguracji 'config_db.php' jest zabezpieczony przed zapisem. Zmieñ "
+"prawa dostêpu i powtórz krok instalacji."
 
-#: install/index.php:211
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:211
 msgid "Host name cannot be empty."
 msgstr "Adres serwera nie mo¿e byæ pusty."
 
-#: install/index.php:215
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:215
 msgid "Database user name cannot be empty."
 msgstr "Nazwa u¿ytkownika nie mo¿e by pusta."
 
-#: install/index.php:219
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:219
 msgid "Database name cannot be empty."
 msgstr "Nazwa bazy danych nie mo¿e byæ pusta."
 
-#: install/index.php:272
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:272
 msgid "Company name cannot be empty."
 msgstr "Nazwa firmy nie mo¿e by pusta."
 
-#: install/index.php:276
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:276
 msgid "Company admin name cannot be empty."
 msgstr "Nazwa administratora nie mo¿e byæ pusta."
 
-#: install/index.php:280
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:280
 msgid "Company admin password cannot be empty."
 msgstr "Has³o administratora nie mo¿e by puste."
 
-#: install/index.php:284
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:284
 msgid "Company admin passwords differ."
 msgstr "Wprowadzone has³a ró¿ni± siê."
 
-#: install/index.php:316
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:316
 msgid "System Diagnostics"
 msgstr "Diagnostyka Systemu"
 
-#: install/index.php:318
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:318
 msgid "Select install wizard language:"
 msgstr "Wybierz jêzyk u¿ywany przy instalacji:"
 
-#: install/index.php:324
-msgid "All application preliminary requirements seems to be correct. Please press Continue button below."
-msgstr "Wszystkie wymagania systemu wydaj± siê byæ spe³nione. Kliknij klawisz poni¿ej aby rozpocz±æ instalacjê."
-
-#: install/index.php:325
-#: install/index.php:351
-#: install/index.php:358
-#: install/index.php:365
-#: install/index.php:384
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:324
+msgid ""
+"All application preliminary requirements seems to be correct. Please press "
+"Continue button below."
+msgstr ""
+"Wszystkie wymagania systemu wydaj± siê byæ spe³nione. Kliknij klawisz "
+"poni¿ej aby rozpocz±æ instalacjê."
+
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:325
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:351
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:358
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:365
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:389
 msgid "Continue >>"
 msgstr "Kontynuuj >>"
 
-#: install/index.php:327
-msgid "Application cannot be installed. Please fix problems listed below in red, and press Refresh button."
-msgstr "Aplikacja nie mo¿e byæ zainstalowana. Usuñ wskazane problemy i kliknij klawisz 'Od¶wie¿'."
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:327
+msgid ""
+"Application cannot be installed. Please fix problems listed below in red, "
+"and press Refresh button."
+msgstr ""
+"Aplikacja nie mo¿e byæ zainstalowana. Usuñ wskazane problemy i kliknij "
+"klawisz 'Od¶wie¿'."
 
-#: install/index.php:328
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:328
 msgid "Refresh"
 msgstr "Od¶wierz"
 
-#: install/index.php:338
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:338
 msgid "Database Server Settings"
 msgstr "Ustawienia Serwera Bazy Danych"
 
-#: install/index.php:340
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:340
 msgid "Server Host:"
 msgstr "Adres Serwera:"
 
-#: install/index.php:341
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:341
 msgid "Database User:"
 msgstr "Nazwa U¿ytkownika:"
 
-#: install/index.php:342
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:342
 msgid "Database Password:"
 msgstr "Has³o:"
 
-#: install/index.php:343
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:343
 msgid "Database Name:"
 msgstr "Nazwa Bazy Danych:"
 
-#: install/index.php:344
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:344
 msgid "Use '0_' Table Prefix:"
 msgstr "Prefiks '0_' dla Nazw Tablic:"
 
-#: install/index.php:344
-#: includes/system_tests.inc:38
-#: includes/system_tests.inc:113
-#: includes/system_tests.inc:126
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:344
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:38
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:113
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:126
 msgid "Yes"
 msgstr "Tak"
 
-#: install/index.php:344
-#: includes/system_tests.inc:38
-#: includes/system_tests.inc:113
-#: includes/system_tests.inc:126
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:344
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:38
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:113
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:126
 msgid "No"
 msgstr "Nie"
 
-#: install/index.php:345
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:345
 msgid "Install Additional Language Packs from FA Repository:"
 msgstr "Instalacja Dodatkowych Jêzyków z Repozytorium FA:"
 
-#: install/index.php:346
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:346
 msgid "Install Additional COAs from FA Repository:"
 msgstr "Instalacja Dodatkowych Planów Kont z Repozytorium FA:"
 
-#: install/index.php:348
-msgid "Use table prefix if you share selected database for more than one FA company."
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:348
+msgid ""
+"Use table prefix if you share selected database for more than one FA company."
 msgstr "U¿yj prefiksu je¶li ta sama baza danych bêdzie u¿ywana dla kilku firm."
 
-#: install/index.php:349
-msgid "Do not select additional langs nor COAs if you have no working internet connection right now. You can install them later."
-msgstr "Nie zaznaczaj wyboru dodatkowych jêzyków ani planów kont je¶li w tej chwili nie masz dostêpu do internetu. Bêdziesz je móg³ zainstalowaæ równie¿ pó¼niej."
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:349
+msgid ""
+"Do not select additional langs nor COAs if you have no working internet "
+"connection right now. You can install them later."
+msgstr ""
+"Nie zaznaczaj wyboru dodatkowych jêzyków ani planów kont je¶li w tej chwili "
+"nie masz dostêpu do internetu. Bêdziesz je móg³ zainstalowaæ równie¿ pó¼niej."
 
-#: install/index.php:350
-#: install/index.php:357
-#: install/index.php:364
-#: install/index.php:383
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:350
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:357
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:364
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:388
 msgid "<< Back"
 msgstr "<< Wróæ"
 
-#: install/index.php:355
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:355
 msgid "User Interface Languages Selection"
 msgstr "Wybór Jêzyków Interfejsu U¿ytkownika"
 
-#: install/index.php:362
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:362
 msgid "Charts of Accounts Selection"
 msgstr "Wybór Planów Kont"
 
-#: install/index.php:374
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:379
 msgid "Company Settings"
 msgstr "Ustawienia Firmy"
 
-#: install/index.php:376
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:381
 msgid "Company Name:"
 msgstr "Nazwa Firmy:"
 
-#: install/index.php:377
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:382
 msgid "Admin Login:"
 msgstr "Login Administratora:"
 
-#: install/index.php:378
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:383
 msgid "Admin Password:"
 msgstr "Has³o Administratora:"
 
-#: install/index.php:379
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:384
 msgid "Reenter Password:"
 msgstr "Powtórz Has³o:"
 
-#: install/index.php:380
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:385
 msgid "Select Chart of Accounts:"
 msgstr "Wybierz Planów Kont:"
 
-#: install/index.php:381
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:386
 msgid "Select Default Language:"
 msgstr "Wybierz Jêzyk Domy¶lny:"
 
-#: install/index.php:388
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:393
 msgid "FrontAccounting ERP has been installed successsfully."
 msgstr "Aplikacja FrontAccounting ERP zosta³a zainstalowana pomy¶lnie."
 
-#: install/index.php:389
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:394
 msgid "Please do not forget to remove install wizard folder."
 msgstr "Nie zapomnij usun±æ folderu instalatora."
 
-#: install/index.php:392
+#: /home/janusz/FA/fa_unstable/devel/../install/index.php:397
 msgid "Click here to start."
 msgstr "Kliknij tutaj, aby rozpocz±æ pracê."
 
-#: includes/system_tests.inc:15
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:15
 msgid "Info"
 msgstr "Informacja"
 
-#: includes/system_tests.inc:16
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:16
 msgid "Optional"
 msgstr "Opcjonalne"
 
-#: includes/system_tests.inc:17
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:17
 msgid "Recommended"
 msgstr "Zalecane"
 
-#: includes/system_tests.inc:18
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:18
 msgid "Required "
 msgstr "Wymagane"
 
-#: includes/system_tests.inc:24
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:24
 msgid "MySQL version"
 msgstr "Wersja MySQL"
 
-#: includes/system_tests.inc:28
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:28
 msgid "Upgrade MySQL server to version at least 4.1"
 msgstr "U¿yj wersji serwera MySQL minimum 4.1"
 
-#: includes/system_tests.inc:35
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:35
 msgid "PHP MySQL extension"
 msgstr "Rozszerzenie PHP MySQL"
 
-#: includes/system_tests.inc:40
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:40
 msgid "Your PHP has to have MySQL extension enabled."
 msgstr "PHP musi mieæ w³±czone rozszerzenie MySQL."
 
-#: includes/system_tests.inc:46
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:46
 msgid "PHP version"
 msgstr "Wersja PHP"
 
-#: includes/system_tests.inc:50
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:50
 msgid "Upgrade PHP to version at least 4.3.3"
 msgstr "Zainstaluj PHP w wersji co najmniej 4.3.3"
 
-#: includes/system_tests.inc:57
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:57
 msgid "Server system"
 msgstr "System serwera"
 
-#: includes/system_tests.inc:67
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:67
 msgid "Session save path"
 msgstr "Katalog zapisu pliku sesji"
 
-#: includes/system_tests.inc:79
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:79
 msgid "Removed install wizard folder"
 msgstr "Folder instalatora usuniêty"
 
-#: includes/system_tests.inc:82
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:82
 msgid "Not removed"
 msgstr "Nie usuniêty"
 
-#: includes/system_tests.inc:83
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:83
 msgid "Remove or rename install wizard folder for security reasons."
 msgstr "Ze wzglêdów bezpieczeñstwa usuñ lub zmieñ nazwê folderu instalatora."
 
-#: includes/system_tests.inc:90
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:90
 msgid "Browser type"
 msgstr "Typ przegl±darki"
 
-#: includes/system_tests.inc:94
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:94
 msgid "Any browser is supported"
 msgstr "Mo¿e byæ u¿yty dowolny typ przegl±darki"
 
-#: includes/system_tests.inc:101
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:101
 msgid "Http server type"
 msgstr "Serwer http"
 
-#: includes/system_tests.inc:105
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:105
 msgid "Any server is supported"
 msgstr "Dowolny"
 
-#: includes/system_tests.inc:112
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:112
 msgid "Native gettext"
 msgstr "Biblioteka Gettext "
 
-#: includes/system_tests.inc:116
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:116
 msgid "In case of no gettext support, php emulation is used"
 msgstr "W przypadku braku wsparcia systemu,  gettext jest emulowany."
 
-#: includes/system_tests.inc:124
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:124
 msgid "Debugging mode"
 msgstr "Tryb debug"
 
-#: includes/system_tests.inc:128
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:128
 msgid "To switch debugging on set $go_debug>0 in config.php file"
 msgstr "Aby w³±czyæ tryb debug ustaw $go_debug>0 in config.php file"
 
-#: includes/system_tests.inc:137
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:137
 msgid "Error logging"
 msgstr "Logowanie b³êdów"
 
-#: includes/system_tests.inc:145
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:145
 msgid "Disabled"
 msgstr "Wy³±czony"
 
-#: includes/system_tests.inc:148
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:148
 msgid "To switch error logging set $error_logging in config.php file"
-msgstr "Aby w³±czyæ logowanie b³êdów ustaw zmienn± $error_logging w pliku config.php"
+msgstr ""
+"Aby w³±czyæ logowanie b³êdów ustaw zmienn± $error_logging w pliku config.php"
 
-#: includes/system_tests.inc:151
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:151
 msgid "Log file is not writeable"
 msgstr "Logfile jest niezapisywalny"
 
-#: includes/system_tests.inc:161
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:161
 msgid "Current database version"
 msgstr "Aktualna wersja bazy danych"
 
-#: includes/system_tests.inc:165
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:165
 msgid "Database structure seems to be not upgraded to current version"
 msgstr "Struktura bazy danych nie jest zaktualizowana do bie¿±cej wersji"
 
-#: includes/system_tests.inc:180
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:180
 msgid "Company subdirectories consistency"
 msgstr "Prawid³owa struktura folderów firmowych"
 
-#: includes/system_tests.inc:193
-#: includes/system_tests.inc:200
-#: includes/system_tests.inc:208
-#: includes/system_tests.inc:225
-#: includes/system_tests.inc:340
-#: includes/system_tests.inc:349
-#: includes/system_tests.inc:358
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:193
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:200
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:208
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:225
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:340
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:349
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:358
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:366
 #, php-format
 msgid "'%s' is not writeable"
 msgstr "'%s' jest niezapisywalny"
 
-#: includes/system_tests.inc:221
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:221
 msgid "Temporary directory"
 msgstr "Katalog plików tymczasowych"
 
-#: includes/system_tests.inc:233
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:233
 msgid "Language configuration consistency"
 msgstr "Konfiguracja jêzykowa"
 
-#: includes/system_tests.inc:242
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:242
 msgid "Languages folder should be writeable."
 msgstr "Folder jêzyków musi byæ zapisywalny"
 
-#: includes/system_tests.inc:251
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:251
 msgid "Languages configuration file should be writeable."
 msgstr "Pliki konfiguracyjny jêzyków musi byæ zapisywalny."
 
-#: includes/system_tests.inc:270
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:270
 #, php-format
 msgid "Missing %s translation file."
 msgstr "Brak pliku t³umaczeñ %s"
 
-#: includes/system_tests.inc:275
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:275
 #, php-format
 msgid "Missing system locale: %s"
 msgstr "Lokalizacja '%s' nie jest zainstalowana w systemie"
 
-#: includes/system_tests.inc:288
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:288
 msgid "Main config file"
 msgstr "G³ówny plik konfiguracyjny "
 
-#: includes/system_tests.inc:295
-#: includes/system_tests.inc:317
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:295
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:317
 #, php-format
 msgid "Can't write '%s' file. Check FA directory write permissions."
 msgstr "Nie mo¿na zapisaæ pliku '%s'. Sprawd¼ prawa zapisu do foderu FA."
 
-#: includes/system_tests.inc:296
-#: includes/system_tests.inc:318
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:296
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:318
 #, php-format
 msgid "'%s' file exists."
 msgstr "Plik '%s' istnieje."
 
-#: includes/system_tests.inc:300
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:300
 #, php-format
 msgid "'%s' file should be read-only"
 msgstr "Plik '%s powinien byæ zabezpieczony przed zapisem"
 
-#: includes/system_tests.inc:309
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:309
 msgid "Database auth file"
 msgstr "Pik configuracyjny bazy danych"
 
-#: includes/system_tests.inc:322
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:322
 #, php-format
-msgid "'%s' file should be read-only if you do not plan to add or change companies"
-msgstr "Plik '%s' powinien byæ zabezpieczony przed zapisem je¶li nie planujesz dodawania ani zmiany firm"
+msgid ""
+"'%s' file should be read-only if you do not plan to add or change companies"
+msgstr ""
+"Plik '%s' powinien byæ zabezpieczony przed zapisem je¶li nie planujesz "
+"dodawania ani zmiany firm"
 
-#: includes/system_tests.inc:333
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:333
 msgid "Extensions system"
 msgstr "System rozszerzeñ"
 
-#: includes/system_tests.inc:363
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:371
 msgid "Extensions configuration files and directories should be writeable"
 msgstr "Pliki konfiguracyjne i foldery rozszerzeñ powinny byæ zapisywalne"
 
-#: includes/system_tests.inc:375
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:384
 #, php-format
 msgid "Non-standard theme directory '%s' is not writable"
 msgstr "Niestandardowy folder tematu '%s' jest zazpieczony przed zapisem"
 
-#: includes/system_tests.inc:385
-msgid "OpenSSL PHP extension have to be enabled to use extension repository system."
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:394
+msgid ""
+"OpenSSL PHP extension have to be enabled to use extension repository system."
 msgstr "System pakietów wymaga zaisnatlowanego rozszerzenia PHP OpenSSL."
 
-#: includes/system_tests.inc:388
-msgid "OpenSSL have to be available on your server to use extension repository system."
-msgstr "Serwer musi mieæ zainstalowane OpenSSL ¿eby mo¿na by³o korzystaæ z repozytorium pakietów rozszerzeñ FA."
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:397
+msgid ""
+"OpenSSL have to be available on your server to use extension repository "
+"system."
+msgstr ""
+"Serwer musi mieæ zainstalowane OpenSSL ¿eby mo¿na by³o korzystaæ z "
+"repozytorium pakietów rozszerzeñ FA."
 
-#: includes/system_tests.inc:411
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:420
 msgid "Test"
 msgstr "Test"
 
-#: includes/system_tests.inc:411
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:420
 msgid "Test type"
 msgstr "Typ testu"
 
-#: includes/system_tests.inc:411
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:420
 msgid "Value"
 msgstr "Warto¶æ"
 
-#: includes/system_tests.inc:411
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:420
 msgid "Comments"
 msgstr "Komentarz"
 
-#: includes/system_tests.inc:435
+#: /home/janusz/FA/fa_unstable/devel/../includes/system_tests.inc:444
 msgid "Ok"
 msgstr "Ok"
 
-#: includes/packages.inc:190
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:189
 #, php-format
 msgid "No key field '%s' in file '%s'"
-msgstr "Brak pola '%s' w pliku '%s'"
+msgstr ""
+
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:294
+msgid "Cannot download repo index file."
+msgstr ""
+
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:306
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:343
+#, fuzzy, php-format
+msgid "Cannot delete outdated '%s' file."
+msgstr "Nie mo¿na usun±æ pliku."
 
-#: includes/packages.inc:295
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:310
 msgid "Release file in repository is invalid, or public key is outdated."
-msgstr "Plik kontrolny wydania jest uszkodzony, lub klucz publiczny jest nieaktualny."
+msgstr ""
+"Plik kontrolny wydania jest uszkodzony, lub klucz publiczny jest nieaktualny."
 
-#: includes/packages.inc:311
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:327
 msgid "Repository version does not match application version."
 msgstr "Wersja repozytorium nie zgadza siê z wersj± aplikacji."
 
-#: includes/packages.inc:325
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:335
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:377
+#, fuzzy, php-format
+msgid "Cannot download '%s' file."
+msgstr "Nie mo¿na usun±æ pliku."
+
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:347
 #, php-format
-msgid "Security alert: broken index file in repository '%s'. Please inform repository administrator about this issue."
-msgstr "Alarm bezpieczeñstwa: uszkodzony plik indeksu repozytorium '%s'. Poinformuj administratora repozytorium o tym problemie."
+msgid ""
+"Security alert: broken index file in repository '%s'. Please inform "
+"repository administrator about this issue."
+msgstr ""
+"Alarm bezpieczeñstwa: uszkodzony plik indeksu repozytorium '%s'. Poinformuj "
+"administratora repozytorium o tym problemie."
 
-#: includes/packages.inc:358
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:383
 #, php-format
-msgid "Security alert: broken package '%s' in repository. Please inform repository administrator about this issue."
-msgstr "Alarm bezpieczeñstwa: uszkodzony plik '%s' w repozytorium. Poinformuj administratora repozytorium o tym problemie."
+msgid ""
+"Security alert: broken package '%s' in repository. Please inform repository "
+"administrator about this issue."
+msgstr ""
+"Alarm bezpieczeñstwa: uszkodzony plik '%s' w repozytorium. Poinformuj "
+"administratora repozytorium o tym problemie."
 
-#: includes/packages.inc:613
-#: includes/packages.inc:664
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:638
+#: /home/janusz/FA/fa_unstable/devel/../includes/packages.inc:699
 #, php-format
 msgid "Package '%s' not found."
 msgstr "Pakiet '%s' nie zosta³ znaleziony."
-
index 0f09527fce42c6efb062bf89bbee0cd895266a5a..c58a8c509fa082e6d3631cedbef40c37cf1e0b4d 100644 (file)
 # This file is distributed under the same license as the PACKAGE package.
 # InterConnect Brasil Ltda. <info@inter.bz>, 2010.
 #
+#, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE Version\n"
+"Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: \n"
-"PO-Revision-Date: 2011-03-31 22:44+0100\n"
-"Last-Translator: Translation Team <info@frontaccounting.net>\n"
+"POT-Creation-Date: 2010-08-08 12:50+0200\n"
+"PO-Revision-Date: 2010-08-12 12:50+0200\n"
+"Last-Translator: InterConnect Brasil <info@inter.bz>\n"
 "Language-Team: PT-BR <>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: install/index.php:20
-#: install/index.php:40
+#: /var/www/fa2.3/devel/../install/index.php:20
+#: /var/www/fa2.3/devel/../install/index.php:40
 msgid "FrontAccouting ERP Installation Wizard"
 msgstr "Assistente de Instalação do FrontAccouting ERP"
 
-#: install/index.php:41
+#: /var/www/fa2.3/devel/../install/index.php:41
 #, php-format
 msgid "Step %d: %s"
 msgstr "%do. passo:  %s"
 
-#: install/index.php:48
+#: /var/www/fa2.3/devel/../install/index.php:48
 msgid "Chart of accounts"
 msgstr "Plano de contas"
 
-#: install/index.php:48
-#: install/index.php:75
+#: /var/www/fa2.3/devel/../install/index.php:48
+#: /var/www/fa2.3/devel/../install/index.php:75
 msgid "Encoding"
 msgstr "Codificação"
 
-#: install/index.php:48
-#: install/index.php:75
+#: /var/www/fa2.3/devel/../install/index.php:48
+#: /var/www/fa2.3/devel/../install/index.php:75
 msgid "Description"
 msgstr "Descrição"
 
-#: install/index.php:48
-#: install/index.php:75
+#: /var/www/fa2.3/devel/../install/index.php:48
+#: /var/www/fa2.3/devel/../install/index.php:75
 msgid "Install"
 msgstr "Instalar"
 
-#: install/index.php:65
-#: install/index.php:93
+#: /var/www/fa2.3/devel/../install/index.php:65
+#: /var/www/fa2.3/devel/../install/index.php:93
 msgid "Installed"
 msgstr "Instalado"
 
-#: install/index.php:75
+#: /var/www/fa2.3/devel/../install/index.php:75
 msgid "Language"
 msgstr "Idioma"
 
-#: install/index.php:123
-msgid "Cannot connect to database. User or password is invalid or you have no permittions to create database."
-msgstr ""
-
-#: install/index.php:159
+#: /var/www/fa2.3/devel/../install/index.php:156
 msgid "Cannot save system configuration file 'config.php'."
 msgstr "Não é possível gravar o arquivo de configuração do sistema 'config.php'."
 
-#: install/index.php:166
+#: /var/www/fa2.3/devel/../install/index.php:173
 msgid "Cannot open 'config_db.php' configuration file."
 msgstr "Não é possível abrir o arquivo de configuração 'config_db.php'."
 
-#: install/index.php:169
+#: /var/www/fa2.3/devel/../install/index.php:176
 msgid "Cannot write to the 'config_db.php' configuration file."
 msgstr "Não é possível escrever no arquivo de configuração 'config_db.php'."
 
-#: install/index.php:172
-msgid "Configuration file 'config_db.php' is not writable. Change its permissions so it is, then re-run installation step."
-msgstr "Arquivo de configuração 'config_db.php' não é gravável. Mudar suas permissões para gravável, então reinstale passo a passo."
+#: /var/www/fa2.3/devel/../install/index.php:179
+msgid ""
+"Configuration file 'config_db.php' is not writable. Change its permissions "
+"so it is, then re-run installation step."
+msgstr ""
+"Arquivo de configuração 'config_db.php' não é gravável. Mudar suas permissões "
+"para gravável, então reinstale passo a passo."
 
-#: install/index.php:211
+#: /var/www/fa2.3/devel/../install/index.php:217
 msgid "Host name cannot be empty."
 msgstr "O nome da máquina deve ser preenchido."
 
-#: install/index.php:215
+#: /var/www/fa2.3/devel/../install/index.php:221
 msgid "Database user name cannot be empty."
 msgstr "O nome do usuário do banco de dados deve ser preenchido."
 
-#: install/index.php:219
+#: /var/www/fa2.3/devel/../install/index.php:225
 msgid "Database name cannot be empty."
 msgstr "O nome do banco de dados deve ser preenchido."
 
-#: install/index.php:272
+#: /var/www/fa2.3/devel/../install/index.php:277
 msgid "Company name cannot be empty."
 msgstr "O nome da empresa deve ser preenchido."
 
-#: install/index.php:276
+#: /var/www/fa2.3/devel/../install/index.php:281
 msgid "Company admin name cannot be empty."
 msgstr "O nome do admin da empresa deve ser preenchido."
 
-#: install/index.php:280
+#: /var/www/fa2.3/devel/../install/index.php:285
 msgid "Company admin password cannot be empty."
 msgstr "A senha do admin da empresa deve ser preenchida."
 
-#: install/index.php:284
+#: /var/www/fa2.3/devel/../install/index.php:289
 msgid "Company admin passwords differ."
 msgstr "As senhas do administrador da empresa diferem"
 
-#: install/index.php:316
+#: /var/www/fa2.3/devel/../install/index.php:320
 msgid "System Diagnostics"
 msgstr "Diagnóstico do Sistema"
 
-#: install/index.php:318
+#: /var/www/fa2.3/devel/../install/index.php:323
 msgid "Select install wizard language:"
 msgstr "Selecione o idioma do assistente de instalação:"
 
-#: install/index.php:324
-msgid "All application preliminary requirements seems to be correct. Please press Continue button below."
-msgstr "Todos os requisitos de aplicação preliminar parece esta correto. Por favor pressione o botão Continuar."
-
-#: install/index.php:325
-#: install/index.php:351
-#: install/index.php:358
-#: install/index.php:365
-#: install/index.php:384
+#: /var/www/fa2.3/devel/../install/index.php:329
+msgid ""
+"All application preliminary requirements seems to be correct. Please press "
+"Continue button below."
+msgstr ""
+"Todos os requisitos de aplicação preliminar parece esta correto. Por favor "
+"pressione o botão Continuar."
+
+#: /var/www/fa2.3/devel/../install/index.php:330
+#: /var/www/fa2.3/devel/../install/index.php:356
+#: /var/www/fa2.3/devel/../install/index.php:363
+#: /var/www/fa2.3/devel/../install/index.php:370
+#: /var/www/fa2.3/devel/../install/index.php:389
 msgid "Continue >>"
 msgstr "Continuar >>"
 
-#: install/index.php:327
-msgid "Application cannot be installed. Please fix problems listed below in red, and press Refresh button."
-msgstr "O aplicativo não pode ser instalad0. Por favor corrija os problemas listados abaixo em vermelho, e pressione o botão Atualizar."
+#: /var/www/fa2.3/devel/../install/index.php:332
+msgid ""
+"Application cannot be installed. Please fix problems listed below in red, "
+"and press Refresh button."
+msgstr ""
+"O aplicativo não pode ser instalad0. Por favor corrija os problemas listados abaixo em vermelho, "
+"e pressione o botão Atualizar."
 
-#: install/index.php:328
+#: /var/www/fa2.3/devel/../install/index.php:333
 msgid "Refresh"
 msgstr "Atualizar"
 
-#: install/index.php:338
+#: /var/www/fa2.3/devel/../install/index.php:343
 msgid "Database Server Settings"
 msgstr "Configuração do Banco de Dados"
 
-#: install/index.php:340
+#: /var/www/fa2.3/devel/../install/index.php:345
 msgid "Server Host:"
 msgstr "Servidor do Banco de Dados:"
 
-#: install/index.php:341
+#: /var/www/fa2.3/devel/../install/index.php:346
 msgid "Database User:"
 msgstr "Usuário do Banco de Dados:"
 
-#: install/index.php:342
+#: /var/www/fa2.3/devel/../install/index.php:347
 msgid "Database Password:"
 msgstr "Senha do Banco de Dados:"
 
-#: install/index.php:343
+#: /var/www/fa2.3/devel/../install/index.php:348
 msgid "Database Name:"
 msgstr "Nome do Banco de Dados:"
 
-#: install/index.php:344
+#: /var/www/fa2.3/devel/../install/index.php:349
 msgid "Use '0_' Table Prefix:"
 msgstr "Usar Prefixo de Tabela '0_':"
 
-#: install/index.php:344
-#: includes/system_tests.inc:38
-#: includes/system_tests.inc:113
-#: includes/system_tests.inc:126
+#: /var/www/fa2.3/devel/../install/index.php:349
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:38
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:113
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:126
 msgid "Yes"
 msgstr "Sim"
 
-#: install/index.php:344
-#: includes/system_tests.inc:38
-#: includes/system_tests.inc:113
-#: includes/system_tests.inc:126
+#: /var/www/fa2.3/devel/../install/index.php:349
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:38
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:113
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:126
 msgid "No"
 msgstr "Não"
 
-#: install/index.php:345
+#: /var/www/fa2.3/devel/../install/index.php:350
 msgid "Install Additional Language Packs from FA Repository:"
 msgstr "Instalar Suporte de Idiomas Adicionais do Repositório do FA:"
 
-#: install/index.php:346
+#: /var/www/fa2.3/devel/../install/index.php:351
 msgid "Install Additional COAs from FA Repository:"
 msgstr "Instalar Plano de Contas do Repositório do FA:"
 
-#: install/index.php:348
-msgid "Use table prefix if you share selected database for more than one FA company."
-msgstr "Use o prefixo da tabela se você for utilizar o banco de dados para mais de uma empresa."
+#: /var/www/fa2.3/devel/../install/index.php:353
+msgid ""
+"Use table prefix if you share selected database for more than one FA company."
+msgstr ""
+"Use o prefixo da tabela se você for utilizar o banco de dados para mais de uma empresa."
 
-#: install/index.php:349
-msgid "Do not select additional langs nor COAs if you have no working internet connection right now. You can install them later."
-msgstr "Não selecione Idiomas Adicionais nem Plano de Contas se você não tem uma conexão com a internet agora. Você poderá instalar mais tarde."
+#: /var/www/fa2.3/devel/../install/index.php:354
+msgid ""
+"Do not select additional langs nor COAs if you have no working internet "
+"connection right now. You can install them later."
+msgstr ""
+"Não selecione Idiomas Adicionais nem Plano de Contas se você não tem uma "
+"conexão com a internet agora. Você poderá instalar mais tarde."
 
-#: install/index.php:350
-#: install/index.php:357
-#: install/index.php:364
-#: install/index.php:383
+#: /var/www/fa2.3/devel/../install/index.php:355
+#: /var/www/fa2.3/devel/../install/index.php:362
+#: /var/www/fa2.3/devel/../install/index.php:369
+#: /var/www/fa2.3/devel/../install/index.php:388
 msgid "<< Back"
 msgstr "<< Voltar"
 
-#: install/index.php:355
+#: /var/www/fa2.3/devel/../install/index.php:360
 msgid "User Interface Languages Selection"
 msgstr "Seleção da Idioma da Interface"
 
-#: install/index.php:362
+#: /var/www/fa2.3/devel/../install/index.php:367
 msgid "Charts of Accounts Selection"
 msgstr "Seleção do Plano de Contas"
 
-#: install/index.php:374
+#: /var/www/fa2.3/devel/../install/index.php:379
 msgid "Company Settings"
 msgstr "Configuração da Empresa"
 
-#: install/index.php:376
+#: /var/www/fa2.3/devel/../install/index.php:381
 msgid "Company Name:"
 msgstr "Nome da Empresa:"
 
-#: install/index.php:377
+#: /var/www/fa2.3/devel/../install/index.php:382
 msgid "Admin Login:"
 msgstr "Login do Administrador:"
 
-#: install/index.php:378
+#: /var/www/fa2.3/devel/../install/index.php:383
 msgid "Admin Password:"
 msgstr "Senha do Administrador:"
 
-#: install/index.php:379
+#: /var/www/fa2.3/devel/../install/index.php:384
 msgid "Reenter Password:"
 msgstr "Digitar a Senha Novamente:"
 
-#: install/index.php:380
+#: /var/www/fa2.3/devel/../install/index.php:385
 msgid "Select Chart of Accounts:"
 msgstr "Selecionar Plano de Contas:"
 
-#: install/index.php:381
+#: /var/www/fa2.3/devel/../install/index.php:386
 msgid "Select Default Language:"
 msgstr "Selecionar Idioma Padrão:"
 
-#: install/index.php:388
+#: /var/www/fa2.3/devel/../install/index.php:393
 msgid "FrontAccounting ERP has been installed successsfully."
 msgstr "O FrontAccounting ERP foi instalado com sucesso."
 
-#: install/index.php:389
+#: /var/www/fa2.3/devel/../install/index.php:394
 msgid "Please do not forget to remove install wizard folder."
 msgstr "Por favor não se esqueça de remover a pasta de instalação do assistente."
 
-#: install/index.php:392
+#: /var/www/fa2.3/devel/../install/index.php:396
 msgid "Click here to start."
 msgstr "Clique aqui para iniciar."
 
-#: includes/system_tests.inc:15
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:15
 msgid "Info"
 msgstr "Info"
 
-#: includes/system_tests.inc:16
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:16
 msgid "Optional"
 msgstr "Opcional"
 
-#: includes/system_tests.inc:17
-#, fuzzy
-msgid "Recommended"
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:17
+msgid "Recomended"
 msgstr "Recomendado"
 
-#: includes/system_tests.inc:18
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:18
 msgid "Required "
 msgstr "Requerido "
 
-#: includes/system_tests.inc:24
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:24
 msgid "MySQL version"
 msgstr "Versão do MySQL"
 
-#: includes/system_tests.inc:28
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:28
 msgid "Upgrade MySQL server to version at least 4.1"
 msgstr "Atualize o servidor MySQL para versão 4.1 ou superior"
 
-#: includes/system_tests.inc:35
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:35
 msgid "PHP MySQL extension"
 msgstr "Extensão PHP MySQL"
 
-#: includes/system_tests.inc:40
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:40
 msgid "Your PHP has to have MySQL extension enabled."
 msgstr "Seu PHP deve ter extensão de MySQL habilitada."
 
-#: includes/system_tests.inc:46
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:46
 msgid "PHP version"
 msgstr "Versão do PHP"
 
-#: includes/system_tests.inc:50
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:50
 msgid "Upgrade PHP to version at least 4.3.3"
 msgstr "Atualize o PHP para versão 4.3.3 ou superior"
 
-#: includes/system_tests.inc:57
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:57
 msgid "Server system"
 msgstr "Sistema do Servidor"
 
-#: includes/system_tests.inc:67
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:67
 msgid "Session save path"
 msgstr "Endereço de gravação da seção"
 
-#: includes/system_tests.inc:79
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:79
 msgid "Removed install wizard folder"
 msgstr "Removida a pasta do assistente de instalação"
 
-#: includes/system_tests.inc:82
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:82
 msgid "Not removed"
 msgstr "Não removido"
 
-#: includes/system_tests.inc:83
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:83
 msgid "Remove or rename install wizard folder for security reasons."
 msgstr "Remover ou renomear a pasta do assistente de instalação por motivos de segurança."
 
-#: includes/system_tests.inc:90
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:90
 msgid "Browser type"
 msgstr "Tipo do navegador"
 
-#: includes/system_tests.inc:94
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:94
 msgid "Any browser is supported"
 msgstr "Qualquer navegador é compatível"
 
-#: includes/system_tests.inc:101
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:101
 msgid "Http server type"
 msgstr "Tipo de servidor Http"
 
-#: includes/system_tests.inc:105
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:105
 msgid "Any server is supported"
 msgstr "Qualquer servidor é compatível"
 
-#: includes/system_tests.inc:112
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:112
 msgid "Native gettext"
 msgstr "gettext nativo"
 
-#: includes/system_tests.inc:116
-#, fuzzy
-msgid "In case of no gettext support, php emulation is used"
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:116
+msgid "In case of no getext support, php emulation is used"
 msgstr "Na falta de suporte getext, a emulação php será usada"
 
-#: includes/system_tests.inc:124
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:124
 msgid "Debugging mode"
 msgstr "Modo de depuração (debug)"
 
-#: includes/system_tests.inc:128
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:128
 msgid "To switch debugging on set $go_debug>0 in config.php file"
 msgstr "Para ativar depuração (debug) inclua $go_debug>0 no arquivo config.php"
 
-#: includes/system_tests.inc:137
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:137
 msgid "Error logging"
 msgstr "Log de erros"
 
-#: includes/system_tests.inc:145
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:145
 msgid "Disabled"
 msgstr "Desabilitado"
 
-#: includes/system_tests.inc:148
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:148
 msgid "To switch error logging set $error_logging in config.php file"
 msgstr "Para logar erros inclua $error_logging no arquivo config.php"
 
-#: includes/system_tests.inc:151
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:151
 msgid "Log file is not writeable"
 msgstr "Arquivo de log não é gravável"
 
-#: includes/system_tests.inc:161
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:161
 msgid "Current database version"
 msgstr "Versão do banco de dados atual"
 
-#: includes/system_tests.inc:165
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:165
 msgid "Database structure seems to be not upgraded to current version"
 msgstr "A estrutura do banco de dados não foi atualizada para a versão atual"
 
-#: includes/system_tests.inc:180
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:180
 msgid "Company subdirectories consistency"
 msgstr "Consistência de subdiretórios da empresa"
 
-#: includes/system_tests.inc:193
-#: includes/system_tests.inc:200
-#: includes/system_tests.inc:208
-#: includes/system_tests.inc:225
-#: includes/system_tests.inc:340
-#: includes/system_tests.inc:349
-#: includes/system_tests.inc:358
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:193
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:200
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:208
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:225
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:345
 #, php-format
 msgid "'%s' is not writeable"
 msgstr "'%s' não é gravável"
 
-#: includes/system_tests.inc:221
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:221
 msgid "Temporary directory"
 msgstr "Diretório temporário"
 
-#: includes/system_tests.inc:233
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:233
 msgid "Language configuration consistency"
 msgstr "Consistência de configuração de idioma"
 
-#: includes/system_tests.inc:242
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:242
 msgid "Languages folder should be writeable."
 msgstr "Diretório de idiomas deveria ser gravável."
 
-#: includes/system_tests.inc:251
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:250
 msgid "Languages configuration file should be writeable."
 msgstr "O arquivo de configuração de idiomas deve ser gravável."
 
-#: includes/system_tests.inc:270
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:268
 #, php-format
 msgid "Missing %s translation file."
 msgstr "Falta o arquivo de tradução %s."
 
-#: includes/system_tests.inc:275
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:273
 #, php-format
 msgid "Missing system locale: %s"
 msgstr "Falta localidade (locale) do sistema: %s"
 
-#: includes/system_tests.inc:288
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:286
 msgid "Main config file"
 msgstr "Arquivo de configuração principal"
 
-#: includes/system_tests.inc:295
-#: includes/system_tests.inc:317
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:293
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:315
 #, php-format
 msgid "Can't write '%s' file. Check FA directory write permissions."
 msgstr "Não é possível escrever no arquivo '%s'. Verifique a permissõe de escrita do diretório FA"
 
-#: includes/system_tests.inc:296
-#: includes/system_tests.inc:318
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:294
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:316
 #, php-format
 msgid "'%s' file exists."
 msgstr "O arquivo '%s' existente."
 
-#: includes/system_tests.inc:300
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:298
 #, php-format
 msgid "'%s' file should be read-only"
 msgstr "O arquivo '%s' deve ser somente leitura"
 
-#: includes/system_tests.inc:309
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:307
 msgid "Database auth file"
 msgstr "Arquivo de autorização da base de dados"
 
-#: includes/system_tests.inc:322
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:320
 #, php-format
-msgid "'%s' file should be read-only if you do not plan to add or change companies"
-msgstr "O arquivo '%s' deve ser somente leitura se você não planeja adicionar ou alterar empresas"
+msgid ""
+"'%s' file should be read-only if you do not plan to add or change companies"
+msgstr ""
+"O arquivo '%s' deve ser somente leitura se você não planeja adicionar ou alterar empresas"
 
-#: includes/system_tests.inc:333
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:331
 msgid "Extensions system"
 msgstr "Sistema de extensões"
 
-#: includes/system_tests.inc:363
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:366
 msgid "Extensions configuration files and directories should be writeable"
 msgstr "Extensões de arquivos de configuração e diretórios devem ser graváveis"
 
-#: includes/system_tests.inc:375
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:378
 #, php-format
 msgid "Non-standard theme directory '%s' is not writable"
 msgstr "Descrição de diretório sem-padrão '%s' não é gravável"
 
-#: includes/system_tests.inc:385
-msgid "OpenSSL PHP extension have to be enabled to use extension repository system."
-msgstr "A extensão OpenSSL PHP tem que estar habilitada para usar o repositório de extensão."
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:388
+msgid ""
+"OpenSSL PHP extension have to be enabled to use extension repository system."
+msgstr ""
+"A extensão OpenSSL PHP tem que estar habilitada para usar o repositório de extensão."
 
-#: includes/system_tests.inc:388
-msgid "OpenSSL have to be available on your server to use extension repository system."
-msgstr "OpenSSL deve estar disponível no seu servidor para utilizar o repositório de extensão."
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:391
+msgid ""
+"OpenSSL have to be available on your server to use extension repository "
+"system."
+msgstr ""
+"OpenSSL deve estar disponível no seu servidor para utilizar o repositório "
+"de extensão."
 
-#: includes/system_tests.inc:411
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:414
 msgid "Test"
 msgstr "Teste"
 
-#: includes/system_tests.inc:411
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:414
 msgid "Test type"
 msgstr "Tipo de teste"
 
-#: includes/system_tests.inc:411
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:414
 msgid "Value"
 msgstr "Valor"
 
-#: includes/system_tests.inc:411
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:414
 msgid "Comments"
 msgstr "Comentários"
 
-#: includes/system_tests.inc:435
+#: /var/www/fa2.3/devel/../includes/system_tests.inc:438
 msgid "Ok"
 msgstr "Ok"
-
-#: includes/packages.inc:190
-#, php-format
-msgid "No key field '%s' in file '%s'"
-msgstr ""
-
-#: includes/packages.inc:295
-msgid "Release file in repository is invalid, or public key is outdated."
-msgstr ""
-
-#: includes/packages.inc:311
-msgid "Repository version does not match application version."
-msgstr ""
-
-#: includes/packages.inc:325
-#, php-format
-msgid "Security alert: broken index file in repository '%s'. Please inform repository administrator about this issue."
-msgstr ""
-
-#: includes/packages.inc:358
-#, php-format
-msgid "Security alert: broken package '%s' in repository. Please inform repository administrator about this issue."
-msgstr ""
-
-#: includes/packages.inc:613
-#: includes/packages.inc:664
-#, php-format
-msgid "Package '%s' not found."
-msgstr ""
-
index ea6d41ba20479b8336ab50c901cff150b5637869..18f26096f98c27f8fdad4536f12d5f8042fa120e 100644 (file)
@@ -111,7 +111,7 @@ function can_process()
        } 
        elseif (!is_date_in_fiscalyear($_POST['AdjDate'])) 
        {
-               display_error(_("The entered date is not in fiscal year."));
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                set_focus('AdjDate');
                return false;
        } else {
index 75f04a0e055fd833c4fd63c5d367d613c28b2fb3..7f314facc5d2797e3f80a5efa8ad9d7ea653cc79 100644 (file)
@@ -23,13 +23,10 @@ include_once($path_to_root . "/includes/manufacturing.inc");
 include_once($path_to_root . "/includes/data_checks.inc");
 include_once($path_to_root . "/inventory/includes/inventory_db.inc");
 
-if (!@$_GET['popup'])
-{
-       $js = "";
-       if ($use_popup_windows)
-               $js .= get_js_open_window(900, 500);
-       page(_($help_context = "Inventory Item Cost Update"), false, false, "", $js);
-}
+$js = "";
+if ($use_popup_windows)
+       $js .= get_js_open_window(900, 500);
+page(_($help_context = "Inventory Item Cost Update"), false, false, "", $js);
 
 //--------------------------------------------------------------------------------------
 
@@ -45,7 +42,7 @@ if (isset($_POST['UpdateData']))
 {
 
        $old_cost = get_standard_cost($_POST['stock_id']);
-     
+
        $new_cost = input_num('material_cost') + input_num('labour_cost')
             + input_num('overhead_cost');
 
@@ -84,13 +81,15 @@ if (list_updated('stock_id'))
        $Ajax->activate('cost_table');
 //-----------------------------------------------------------------------------------------
 
-if (!@$_GET['popup'])
-       start_form();
+$action = $_SERVER['PHP_SELF'];
+if ($page_nested)
+       $action .= "?stock_id=".get_post('stock_id');
+start_form(false, false, $action);
 
 if (!isset($_POST['stock_id']))
        $_POST['stock_id'] = get_global_stock_item();
 
-if (!@$_GET['popup'])
+if (!$page_nested)
 {
        echo "<center>" . _("Item:"). "&nbsp;";
        //echo stock_costable_items_list('stock_id', $_POST['stock_id'], false, true);
@@ -115,9 +114,8 @@ $_POST['overhead_cost'] = price_decimal_format($myrow["overhead_cost"], $dec3);
 
 amount_row(_("Standard Material Cost Per Unit"), "material_cost", null, "class='tableheader2'", null, $dec1);
 
-if (@$_GET['popup'])
+if ($page_nested)
 {
-       hidden('_tabs_sel', get_post('_tabs_sel'));
        hidden('popup', @$_GET['popup']);
 }
 if ($myrow["mb_flag"]=='M')
@@ -135,9 +133,6 @@ end_table(1);
 div_end();
 submit_center('UpdateData', _("Update"), true, false, 'default');
 
-if (!@$_GET['popup'])
-{
-       end_form();
-       end_page(@$_GET['popup'], false, false);
-}
+end_form();
+end_page();
 ?>
index fc474d5e88034c5d1d8e3149c0d86c30952f7fc1..b32d472e6b15acc7ccf247e8f223e3e3f74b59a6 100644 (file)
 ***********************************************************************/
 function add_item_category($description, $tax_type_id, $sales_account, 
        $cogs_account, $inventory_account, $adjustment_account, $assembly_account, 
-       $units, $mb_flag, $dim1, $dim2, $no_sale)
+       $units, $mb_flag, $dim1, $dim2, $no_sale, $no_purchase)
 {
        $sql = "INSERT INTO ".TB_PREF."stock_category (description, dflt_tax_type,
                        dflt_units, dflt_mb_flag, dflt_sales_act, dflt_cogs_act, 
                        dflt_inventory_act, dflt_adjustment_act, dflt_assembly_act, 
-                       dflt_dim1, dflt_dim2, dflt_no_sale)
+                       dflt_dim1, dflt_dim2, dflt_no_sale, dflt_no_purchase)
                VALUES ("
                .db_escape($description).","
                .db_escape($tax_type_id).","
@@ -29,14 +29,15 @@ function add_item_category($description, $tax_type_id, $sales_account,
                .db_escape($assembly_account).","
                .db_escape($dim1).","
                .db_escape($dim2).","
-               .db_escape($no_sale).")";
+               .db_escape($no_sale).","
+               .db_escape($no_purchase).")";
 
        db_query($sql,"an item category could not be added");
 }
 
 function update_item_category($id, $description, $tax_type_id, 
        $sales_account, $cogs_account, $inventory_account, $adjustment_account, 
-       $assembly_account, $units, $mb_flag, $dim1, $dim2, $no_sale)
+       $assembly_account, $units, $mb_flag, $dim1, $dim2, $no_sale, $no_purchase)
 
 {
        $sql = "UPDATE ".TB_PREF."stock_category SET "
@@ -51,7 +52,8 @@ function update_item_category($id, $description, $tax_type_id,
                ."dflt_assembly_act = ".db_escape($assembly_account).","
                ."dflt_dim1 = ".db_escape($dim1).","
                ."dflt_dim2 = ".db_escape($dim2).","
-               ."dflt_no_sale = ".db_escape($no_sale)
+               ."dflt_no_sale = ".db_escape($no_sale).","
+               ."dflt_no_purchase = ".db_escape($no_purchase)
         ."WHERE category_id = ".db_escape($id);
 
        db_query($sql,"an item category could not be updated");
index b4666edbd184063ac21d8793c176664e1fe183ac..260f4e0bce6cf0987e3d6758515d2fe84e595944 100644 (file)
@@ -12,7 +12,7 @@
 function update_item($stock_id, $description, $long_description, $category_id, 
        $tax_type_id, $units='', $mb_flag='', $sales_account, $inventory_account, 
        $cogs_account,  $adjustment_account, $assembly_account, $dimension_id, 
-       $dimension2_id, $no_sale, $editable)
+       $dimension2_id, $no_sale, $editable, $no_purchase)
 {
        $sql = "UPDATE ".TB_PREF."stock_master SET long_description=".db_escape($long_description).",
                description=".db_escape($description).",
@@ -26,6 +26,7 @@ function update_item($stock_id, $description, $long_description, $category_id,
                dimension2_id=".db_escape($dimension2_id).",
                tax_type_id=".db_escape($tax_type_id).",
                no_sale=".db_escape($no_sale).",
+               no_purchase=".db_escape($no_purchase).",
                editable=".db_escape($editable);
 
        if ($units != '')
@@ -44,7 +45,7 @@ function update_item($stock_id, $description, $long_description, $category_id,
 function add_item($stock_id, $description, $long_description, $category_id, 
        $tax_type_id, $units, $mb_flag, $sales_account, $inventory_account, 
        $cogs_account, $adjustment_account,     $assembly_account, $dimension_id, 
-       $dimension2_id, $no_sale, $editable)
+       $dimension2_id, $no_sale, $editable, $no_purchase)
 {
        $sql = "INSERT INTO ".TB_PREF."stock_master (stock_id, description, long_description, category_id,
                tax_type_id, units, mb_flag, sales_account, inventory_account, cogs_account,
@@ -57,6 +58,7 @@ function add_item($stock_id, $description, $long_description, $category_id,
                .", ".db_escape($assembly_account).", "
                .db_escape($dimension_id).", ".db_escape($dimension2_id).","
                .db_escape($no_sale).","
+               .db_escape($no_purchase).","
                .db_escape($editable).")";
 
        db_query($sql, "The item could not be added");
index a7591dd3d30f66ebc4a7b4bd3857f1cc3319dfda..b54c1980748d8e7e06e4076c4789d3c416d9ad87 100644 (file)
@@ -51,6 +51,12 @@ function stock_cost_update($stock_id, $material_cost, $labour_cost, $overhead_co
        {
                $new_cost = $material_cost + $labour_cost + $overhead_cost;
 
+               $value_of_change = $qoh * ($new_cost - $last_cost);
+
+               $memo_ = "Cost was " . $last_cost . " changed to " . $new_cost . " x quantity on hand of $qoh";
+               add_gl_trans_std_cost(ST_COSTUPDATE, $update_no, $date_, $stock_gl_code["adjustment_account"], 
+                       $stock_gl_code["dimension_id"], $stock_gl_code["dimension2_id"], $memo_, (-$value_of_change));     
+
                $value_of_change = round2($qoh * ($new_cost - $last_cost), user_price_dec());
 
                if ($value_of_change != 0)
@@ -64,7 +70,7 @@ function stock_cost_update($stock_id, $material_cost, $labour_cost, $overhead_co
 
                        add_gl_trans_std_cost(ST_COSTUPDATE, $update_no, $date_, $stock_gl_code["inventory_account"], 0, 0, $memo_, 
                                $value_of_change);
-               }               
+               }
        }
 
        if ($update_no != -1)
index df25e10208c2be5c8d7bfe5a5f4bcd77756b3880..2c2e0974225965cbc2764b141a2835308c051a17 100644 (file)
@@ -18,15 +18,12 @@ include_once($path_to_root . "/includes/banking.inc");
 include_once($path_to_root . "/sales/includes/sales_db.inc");
 
 include_once($path_to_root . "/includes/ui.inc");
-if (!@$_GET['popup'])
-{
-       $js = "";
-       if ($use_popup_windows)
-               $js .= get_js_open_window(800, 500);
-       if ($use_date_picker)
-               $js .= get_js_date_picker();
-       page(_($help_context = "Inventory Item Movement"), @$_GET['popup'], false, "", $js);
-}      
+$js = "";
+if ($use_popup_windows)
+       $js .= get_js_open_window(800, 500);
+if ($use_date_picker)
+       $js .= get_js_date_picker();
+page(_($help_context = "Inventory Item Movement"), @$_GET['popup'], false, "", $js);
 //------------------------------------------------------------------------------------------------
 
 check_db_has_stock_items(_("There are no items defined in the system."));
@@ -41,15 +38,14 @@ if (isset($_GET['stock_id']))
        $_POST['stock_id'] = $_GET['stock_id'];
 }
 
-if (!@$_GET['popup'])
-       start_form();
+start_form();
 
 if (!isset($_POST['stock_id']))
        $_POST['stock_id'] = get_global_stock_item();
 
 start_table(TABLESTYLE_NOBORDER);
 start_row();
-if (!@$_GET['popup'])
+if (!$page_nested)
        stock_costable_items_list_cells(_("Item:"), 'stock_id', $_POST['stock_id']);
 end_row();
 end_table();
@@ -59,7 +55,7 @@ start_row();
 
 locations_list_cells(_("From Location:"), 'StockLocation', null, true);
 
-date_cells(_("From:"), 'AfterDate', '', null, -30);
+date_cells(_("From:"), 'AfterDate', '', null, -$_SESSION["wa_current_user"]->prefs->transaction_days());
 date_cells(_("To:"), 'BeforeDate');
 
 submit_cells('ShowMoves',_("Show Movements"),'',_('Refresh Inquiry'), 'default');
@@ -197,7 +193,6 @@ end_row();
 
 end_table(1);
 div_end();
-if (!@$_GET['popup'])
-       end_page(@$_GET['popup'], false, false);
+end_page();
 
 ?>
index b6965d2961c78602852f29db014ef7ac9d65eb5b..d0307d5a94cb4c35db859ec0f29f6ee912e269fe 100644 (file)
@@ -13,16 +13,11 @@ $page_security = 'SA_ITEMSSTATVIEW';
 $path_to_root = "../..";
 include_once($path_to_root . "/includes/session.inc");
 
-if (!@$_GET['popup'])
-{
-       if (isset($_GET['stock_id'])){
-               page(_($help_context = "Inventory Item Status"), true);
-       } else {
-               page(_($help_context = "Inventory Item Status"));
-       }
-}
+page(_($help_context = "Inventory Item Status"), @$_GET['popup']);
+
 if (isset($_GET['stock_id']))
        $_POST['stock_id'] = $_GET['stock_id'];
+
 include_once($path_to_root . "/includes/date_functions.inc");
 include_once($path_to_root . "/includes/ui.inc");
 include_once($path_to_root . "/includes/manufacturing.inc");
@@ -36,17 +31,16 @@ if (list_updated('stock_id'))
 
 check_db_has_stock_items(_("There are no items defined in the system."));
 
-if (!@$_GET['popup'])
-       start_form();
+start_form();
 
 if (!isset($_POST['stock_id']))
        $_POST['stock_id'] = get_global_stock_item();
 
-if (!@$_GET['popup'])
+if (!$page_nested)
 {
        echo "<center> " . _("Item:"). " ";
        echo stock_costable_items_list('stock_id', $_POST['stock_id'], false, true);
-}      
+}
 echo "<br>";
 
 echo "<hr></center>";
@@ -122,10 +116,7 @@ while ($myrow = db_fetch($loc_details))
 
 end_table();
 div_end();
-if (!@$_GET['popup'])
-{
-       end_form();
-       end_page(@$_GET['popup'], false, false);
-}      
+end_form();
+end_page();
 
 ?>
index b52d67c812b27497a42eb5f4a54258bd37086148..7ec99d391e2d03de29e6cac12cd59a8631c910b4 100644 (file)
@@ -44,7 +44,7 @@ if ($Mode=='ADD_ITEM' || $Mode=='UPDATE_ITEM')
                                $_POST['cogs_account'], $_POST['inventory_account'], 
                                $_POST['adjustment_account'], $_POST['assembly_account'],
                                $_POST['units'], $_POST['mb_flag'],     $_POST['dim1'], $_POST['dim2'],
-                               check_value('no_sale'));
+                               check_value('no_sale'), check_value('no_purchase'));
                        display_notification(_('Selected item category has been updated'));
        } 
        else 
@@ -54,7 +54,7 @@ if ($Mode=='ADD_ITEM' || $Mode=='UPDATE_ITEM')
                                $_POST['cogs_account'], $_POST['inventory_account'], 
                                $_POST['adjustment_account'], $_POST['assembly_account'], 
                                $_POST['units'], $_POST['mb_flag'],     $_POST['dim1'], 
-                               $_POST['dim2'], check_value('no_sale'));
+                               $_POST['dim2'], check_value('no_sale'), check_value('no_purchase'));
                        display_notification(_('New item category has been added'));
        }
                $Mode = 'RESET';
@@ -150,6 +150,7 @@ if ($selected_id != -1)
                $_POST['dim1']  = $myrow["dflt_dim1"];
                $_POST['dim2']  = $myrow["dflt_dim2"];
                $_POST['no_sale']  = $myrow["dflt_no_sale"];
+               $_POST['no_purchase']  = $myrow["dflt_no_purchase"];
        } 
        hidden('selected_id', $selected_id);
        hidden('category_id');
@@ -157,6 +158,7 @@ if ($selected_id != -1)
                $_POST['long_description'] = '';
                $_POST['description'] = '';
                $_POST['no_sale']  = 0;
+               $_POST['no_purchase']  = 0;
 
                $company_record = get_company_prefs();
 
@@ -189,6 +191,8 @@ stock_units_list_row(_("Units of Measure:"), 'units', null);
 
 check_row(_("Exclude from sales:"), 'no_sale');
 
+check_row(_("Exclude from purchases:"), 'no_purchase');
+
 gl_all_accounts_list_row(_("Sales Account:"), 'sales_account', $_POST['sales_account']);
 
 if (is_service($_POST['mb_flag']))
index ea83125144d8db62d5cf5f90bf7e85805be55f45..71e2f2b9e623b61a37285244d101c40eee731adf 100644 (file)
 $page_security = 'SA_ITEM';
 $path_to_root = "../..";
 include($path_to_root . "/includes/session.inc");
+
 $js = "";
 if ($use_popup_windows)
        $js .= get_js_open_window(900, 500);
 if ($use_date_picker)
        $js .= get_js_date_picker();
-       
+
 page(_($help_context = "Items"), @$_REQUEST['popup'], false, "", $js);
 
 include_once($path_to_root . "/includes/date_functions.inc");
@@ -85,6 +86,11 @@ if (isset($_FILES['pic']) && $_FILES['pic']['name'] != '')
                display_warning(_('The file size is over the maximum allowed. The maximum size allowed in KB is') . ' ' . $max_image_size);
                $upload_file ='No';
        } 
+       elseif ( $_FILES['pic']['type'] == "text/plain" ) 
+       {  //File type Check
+               display_warning( _('Only graphics files can be uploaded'));
+               $upload_file ='No';
+       } 
        elseif (file_exists($filename))
        {
                $result = unlink($filename);
@@ -119,6 +125,7 @@ function clear_data()
        unset($_POST['dimension_id']);
        unset($_POST['dimension2_id']);
        unset($_POST['no_sale']);
+       unset($_POST['no_purchase']);
 }
 
 //------------------------------------------------------------------------------------
@@ -175,7 +182,7 @@ if (isset($_POST['addupdate']))
                                $_POST['inventory_account'], $_POST['cogs_account'],
                                $_POST['adjustment_account'], $_POST['assembly_account'], 
                                $_POST['dimension_id'], $_POST['dimension2_id'],
-                               check_value('no_sale'), check_value('editable'));
+                               check_value('no_sale'), check_value('editable'), check_value('no_purchase'));
                        update_record_status($_POST['NewStockID'], $_POST['inactive'],
                                'stock_master', 'stock_id');
                        update_record_status($_POST['NewStockID'], $_POST['inactive'],
@@ -193,12 +200,12 @@ if (isset($_POST['addupdate']))
                                $_POST['inventory_account'], $_POST['cogs_account'],
                                $_POST['adjustment_account'], $_POST['assembly_account'], 
                                $_POST['dimension_id'], $_POST['dimension2_id'],
-                               check_value('no_sale'), check_value('editable'));
+                               check_value('no_sale'), check_value('editable'), check_value('no_purchase'));
 
                        display_notification(_("A new item has been added."));
                        $_POST['stock_id'] = $_POST['NewStockID'] = 
                        $_POST['description'] = $_POST['long_description'] = '';
-                       $_POST['no_sale'] = $_POST['editable'] = 0;
+                       $_POST['no_sale'] = $_POST['editable'] = $_POST['no_purchase'] =0;
                        set_focus('NewStockID');
                }
                $Ajax->activate('_page_body');
@@ -287,7 +294,8 @@ function item_settings(&$stock_id)
                        $_POST['dimension_id']  = $myrow['dimension_id'];
                        $_POST['dimension2_id'] = $myrow['dimension2_id'];
                        $_POST['no_sale']       = $myrow['no_sale'];
-                       $_POST['del_image'] = 0;        
+                       $_POST['no_purchase']   = $myrow['no_purchase'];
+                       $_POST['del_image'] = 0;
                        $_POST['inactive'] = $myrow["inactive"];
                        $_POST['editable'] = $myrow["editable"];
                }
@@ -317,6 +325,7 @@ function item_settings(&$stock_id)
                $_POST['dimension_id'] = $category_record["dflt_dim1"];
                $_POST['dimension2_id'] = $category_record["dflt_dim2"];
                $_POST['no_sale'] = $category_record["dflt_no_sale"];
+               $_POST['no_purchase'] = $category_record["dflt_no_purchase"];
                $_POST['editable'] = 0;
 
        }
@@ -333,6 +342,8 @@ function item_settings(&$stock_id)
 
        check_row(_("Exclude from sales:"), 'no_sale');
 
+       check_row(_("Exclude from purchases:"), 'no_purchase');
+
        table_section(2);
 
        $dim = get_company_pref('use_dimension');
@@ -505,7 +516,6 @@ tabbed_content_end();
 
 div_end();
 
-
 hidden('popup', @$_REQUEST['popup']);
 end_form();
 
index 66d3bee099482041a449b56a27ddec6f9c900918..2851ecd82b6a321d905d43caea6278103ffc10e8 100644 (file)
@@ -22,8 +22,7 @@ include_once($path_to_root . "/includes/ui.inc");
 include_once($path_to_root . "/includes/data_checks.inc");
 include_once($path_to_root . "/inventory/includes/inventory_db.inc");
 
-if (!@$_GET['popup'])
-       page(_($help_context = "Inventory Item Sales prices"));
+page(_($help_context = "Inventory Item Sales prices"));
 
 //---------------------------------------------------------------------------------------------------
 
@@ -50,13 +49,15 @@ if (!isset($_POST['curr_abrev']))
 }
 
 //---------------------------------------------------------------------------------------------------
-if (!@$_GET['popup'])
-       start_form();
+$action = $_SERVER['PHP_SELF'];
+if ($page_nested)
+       $action .= "?stock_id=".get_post('stock_id');
+start_form(false, false, $action);
 
 if (!isset($_POST['stock_id']))
        $_POST['stock_id'] = get_global_stock_item();
 
-if (!@$_GET['popup'])
+if (!$page_nested)
 {
        echo "<center>" . _("Item:"). "&nbsp;";
        echo sales_items_list('stock_id', $_POST['stock_id'], false, true, '', array('editable' => false));
@@ -181,9 +182,8 @@ if ($Mode == 'Edit')
 }
 
 hidden('selected_id', $selected_id);
-if (@$_GET['popup'])
+if ($page_nested)
 {
-       hidden('_tabs_sel', get_post('_tabs_sel'));
        hidden('popup', @$_GET['popup']);
 }
 div_start('price_details');
@@ -208,9 +208,6 @@ if ($calculated)
 submit_add_or_update_center($selected_id == -1, '', 'both');
 div_end();
 
-if (!@$_GET['popup'])
-{
-       end_form();
-       end_page(@$_GET['popup'], false, false);
-}      
+end_form();
+end_page();
 ?>
index d0b1685d8f5e0acbb5134d660aa2468532dab29b..4b7717d546cc90d89a3d1e2219b6ee8f3bbb8376 100644 (file)
@@ -21,8 +21,7 @@ include_once($path_to_root . "/includes/ui.inc");
 include_once($path_to_root . "/includes/manufacturing.inc");
 include_once($path_to_root . "/includes/data_checks.inc");
 
-if (!@$_GET['popup'])
-       page(_($help_context = "Supplier Purchasing Data"));
+page(_($help_context = "Supplier Purchasing Data"));
 
 check_db_has_purchasable_items(_("There are no purchasable inventory items defined in the system."));
 check_db_has_suppliers(_("There are no suppliers defined in the system."));
@@ -106,13 +105,15 @@ if (list_updated('stock_id'))
        $Ajax->activate('price_table');
 //--------------------------------------------------------------------------------------------------
 
-if (!@$_GET['popup'])
-       start_form();
+$action = $_SERVER['PHP_SELF'];
+if ($page_nested)
+       $action .= "?stock_id=".get_post('stock_id');
+start_form(false, false, $action);
 
 if (!isset($_POST['stock_id']))
        $_POST['stock_id'] = get_global_stock_item();
 
-if (!@$_GET['popup'])
+if (!$page_nested)
 {
        echo "<center>" . _("Item:"). "&nbsp;";
        //Chaitanya : All items can be purchased
@@ -194,9 +195,8 @@ if ($Mode =='Edit')
 
 br();
 hidden('selected_id', $selected_id);
-if (@$_GET['popup'])
+if ($page_nested)
 {
-       hidden('_tabs_sel', get_post('_tabs_sel'));
        hidden('popup', @$_GET['popup']);
 }
 
@@ -227,9 +227,6 @@ end_table(1);
 
 submit_add_or_update_center($selected_id == -1, '', 'both');
 
-if (!@$_GET['popup'])
-{
-       end_form();
-       end_page(@$_GET['popup'], false, false);
-}
+end_form();
+end_page();
 ?>
index bd517f251221a18e5a762835ad5c2177c36bc665..f071b5225d49db8ae1552e229629667f30ba12c5 100644 (file)
@@ -21,8 +21,7 @@ include_once($path_to_root . "/includes/ui.inc");
 include_once($path_to_root . "/includes/data_checks.inc");
 include_once($path_to_root . "/inventory/includes/inventory_db.inc");
 
-if (!@$_GET['popup'])
-       page(_($help_context = "Reorder Levels"));
+page(_($help_context = "Reorder Levels"));
 
 check_db_has_costable_items(_("There are no inventory items defined in the system (Purchased or manufactured items)."));
 
@@ -37,13 +36,16 @@ if (list_updated('stock_id'))
        $Ajax->activate('reorders');
 }
 //------------------------------------------------------------------------------------
-if (!@$_GET['popup'])
-       start_form();
+
+$action = $_SERVER['PHP_SELF'];
+if ($page_nested)
+       $action .= "?stock_id=".get_post('stock_id');
+start_form(false, false, $action);
 
 if (!isset($_POST['stock_id']))
        $_POST['stock_id'] = get_global_stock_item();
 
-if (!@$_GET['popup'])
+if (!$page_nested)
 {
        echo "<center>" . _("Item:"). "&nbsp;";
        echo stock_costable_items_list('stock_id', $_POST['stock_id'], false, true);
@@ -70,9 +72,8 @@ $k=0; //row colour counter
 
 $result = get_loc_details($_POST['stock_id']);
 
-if (@$_GET['popup'])
+if ($page_nested)
 {
-       hidden('_tabs_sel', get_post('_tabs_sel'));
        hidden('popup', @$_GET['popup']);
 }
 
@@ -110,9 +111,5 @@ end_table(1);
 div_end();
 submit_center('UpdateData', _("Update"), true, false, 'default');
 
-if (!@$_GET['popup'])
-{
-       end_form();
-       end_page(@$_GET['popup'], false, false);
-}
-?>
+end_form();
+end_page();
index 4ad32ea2451e739b29cfb856f0853a098923cb59..874d7bff79b344e9a8e61e67d6fd3dc8b7274f36 100644 (file)
@@ -106,7 +106,7 @@ if (isset($_POST['Process']))
        } 
        elseif (!is_date_in_fiscalyear($_POST['AdjDate'])) 
        {
-               display_error(_("The entered date is not in fiscal year."));
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                set_focus('AdjDate');
                $input_error = 1;
        } 
index 1bbb85f69822f33551940d03612e8ec8e742ba1f..adf356d540d6dfbd89db98de6641b9121084e1c8 100644 (file)
@@ -8,1538 +8,1857 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-03-10 10:17+0100\n"
+"POT-Creation-Date: 2014-05-31 13:29+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: \n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: frontaccounting.php:73 frontaccounting.php:74
+#: ../frontaccounting.php:73
+#: ../frontaccounting.php:74
 msgid "Main  Menu"
 msgstr ""
 
-#: frontaccounting.php:75 access/logout.php:18 themes/default/renderer.php:70
-#: themes/default/renderer.php:83
+#: ../frontaccounting.php:75
+#: ../access/logout.php:21
+#: ../themes/default/renderer.php:70
+#: ../themes/default/renderer.php:83
 msgid "Logout"
 msgstr ""
 
-#: access/login.php:13
+#: ../access/login.php:13
+#: ../access/password_reset.php:13
 msgid "Restricted access"
 msgstr ""
 
-#: access/login.php:27
+#: ../access/login.php:27
 msgid "Login as user: demouser and password: password"
 msgstr ""
 
-#: access/login.php:31
+#: ../access/login.php:31
 msgid "Please login here"
 msgstr ""
 
-#: access/login.php:36
+#: ../access/login.php:33
+msgid "or"
+msgstr ""
+
+#: ../access/login.php:33
+msgid "request new password"
+msgstr ""
+
+#: ../access/login.php:39
 msgid "Too many failed login attempts.<br>Please wait a while or try later."
 msgstr ""
 
-#: access/login.php:49 access/login.php:80
+#: ../access/login.php:52
+#: ../access/login.php:83
 msgid "Authorization timeout"
 msgstr ""
 
-#: access/login.php:49 access/login.php:87
+#: ../access/login.php:52
+#: ../access/login.php:90
 msgid "Login"
 msgstr ""
 
-#: access/login.php:87 admin/inst_upgrade.php:137
+#: ../access/login.php:90
+#: ../access/password_reset.php:61
+#: ../admin/inst_upgrade.php:141
 msgid "Version"
 msgstr ""
 
-#: access/login.php:90
+#: ../access/login.php:93
 msgid "User name"
 msgstr ""
 
-#: access/login.php:94 admin/users.php:191
+#: ../access/login.php:97
+#: ../admin/users.php:191
 msgid "Password:"
 msgstr ""
 
-#: access/login.php:104 access/login.php:111 admin/create_coy.php:253
-#: admin/create_coy.php:336
+#: ../access/login.php:107
+#: ../access/login.php:114
+#: ../access/password_reset.php:70
+#: ../access/password_reset.php:77
+#: ../admin/create_coy.php:253
+#: ../admin/create_coy.php:336
+#: ../includes/sysnames.inc:194
 msgid "Company"
 msgstr ""
 
-#: access/login.php:118
+#: ../access/login.php:121
 msgid "Login -->"
 msgstr ""
 
-#: access/login.php:149 admin/display_prefs.php:112
-#: themes/default/renderer.php:129
+#: ../access/login.php:152
+#: ../access/password_reset.php:108
+#: ../admin/display_prefs.php:112
+#: ../themes/default/renderer.php:129
 msgid "Theme:"
 msgstr ""
 
-#: access/logout.php:29
+#: ../access/logout.php:32
 msgid "Thank you for using"
 msgstr ""
 
-#: access/logout.php:40
+#: ../access/logout.php:43
 msgid "Click here to Login Again."
 msgstr ""
 
-#: admin/attachments.php:74
+#: ../access/password_reset.php:31
+#: ../access/password_reset.php:61
+msgid "Password reset"
+msgstr ""
+
+#: ../access/password_reset.php:63
+#: ../reporting/rep103.php:277
+#: ../reporting/rep106.php:88
+#: ../reporting/rep205.php:195
+#: ../reporting/includes/header2.inc:110
+#: ../sales/manage/sales_people.php:99
+msgid "Email"
+msgstr ""
+
+#: ../access/password_reset.php:83
+msgid "Send password -->"
+msgstr ""
+
+#: ../admin/attachments.php:74
 msgid "Attach Documents"
 msgstr ""
 
-#: admin/attachments.php:86
+#: ../admin/attachments.php:86
 msgid "Selected transaction does not exists."
 msgstr ""
 
-#: admin/attachments.php:88
+#: ../admin/attachments.php:88
 msgid "Select attachment file."
 msgstr ""
 
-#: admin/attachments.php:128
+#: ../admin/attachments.php:128
 msgid "Attachment has been inserted."
 msgstr ""
 
-#: admin/attachments.php:134
+#: ../admin/attachments.php:134
 msgid "Attachment has been updated."
 msgstr ""
 
-#: admin/attachments.php:149
+#: ../admin/attachments.php:149
 msgid "Attachment has been deleted."
 msgstr ""
 
-#: admin/attachments.php:167 admin/view_print_transaction.php:72
-#: admin/void_transaction.php:157 gl/inquiry/journal_inquiry.php:47
-#: inventory/includes/item_adjustments_ui.inc:47
-#: manufacturing/work_order_add_finished.php:203
-#: manufacturing/work_order_costs.php:150
-#: manufacturing/work_order_entry.php:379
-#: manufacturing/work_order_entry.php:387
-#: manufacturing/includes/work_order_issue_ui.inc:161
-#: sales/inquiry/customer_allocation_inquiry.php:47
+#: ../admin/attachments.php:167
+#: ../admin/view_print_transaction.php:72
+#: ../gl/inquiry/journal_inquiry.php:47
+#: ../inventory/includes/item_adjustments_ui.inc:47
+#: ../manufacturing/work_order_add_finished.php:203
+#: ../manufacturing/work_order_costs.php:136
+#: ../manufacturing/work_order_entry.php:379
+#: ../manufacturing/work_order_entry.php:387
+#: ../manufacturing/includes/work_order_issue_ui.inc:161
+#: ../sales/inquiry/customer_allocation_inquiry.php:47
 msgid "Type:"
 msgstr ""
 
-#: admin/attachments.php:183 admin/create_coy.php:277
-#: admin/crm_categories.php:115 admin/fiscalyears.php:164
-#: admin/inst_lang.php:100 admin/payment_terms.php:142 admin/printers.php:96
-#: admin/shipping_companies.php:106 admin/tags.php:140 admin/users.php:144
-#: dimensions/inquiry/search_dimensions.php:120
-#: gl/inquiry/journal_inquiry.php:118 gl/manage/bank_accounts.php:130
-#: gl/manage/currencies.php:164 gl/manage/exchange_rates.php:94
-#: gl/manage/gl_account_classes.php:132 gl/manage/gl_account_types.php:154
-#: gl/manage/gl_quick_entries.php:196 gl/manage/gl_quick_entries.php:295
-#: gl/includes/ui/gl_bank_ui.inc:186 gl/includes/ui/gl_journal_ui.inc:122
-#: includes/ui/contacts_view.inc:64 includes/ui/simple_crud_class.inc:52
-#: inventory/prices.php:158 inventory/purchasing_data.php:164
-#: inventory/includes/item_adjustments_ui.inc:87
-#: inventory/includes/stock_transfers_ui.inc:79
-#: inventory/manage/item_categories.php:121
-#: inventory/manage/item_codes.php:140 inventory/manage/item_units.php:110
-#: inventory/manage/locations.php:161 inventory/manage/movement_types.php:106
-#: inventory/manage/sales_kits.php:55 manufacturing/search_work_orders.php:109
-#: manufacturing/manage/bom_edit.php:86
-#: manufacturing/manage/work_centres.php:114
-#: manufacturing/includes/work_order_issue_ui.inc:58
-#: purchasing/includes/ui/invoice_ui.inc:533
-#: purchasing/includes/ui/po_ui.inc:263
-#: purchasing/inquiry/po_search_completed.php:106
-#: purchasing/inquiry/po_search.php:87 sales/manage/credit_status.php:119
-#: sales/manage/customer_branches.php:159
-#: sales/manage/recurrent_invoices.php:130 sales/manage/sales_areas.php:103
-#: sales/manage/sales_groups.php:99 sales/manage/sales_people.php:119
-#: sales/manage/sales_points.php:99 sales/manage/sales_types.php:121
-#: sales/inquiry/customer_inquiry.php:192
-#: sales/inquiry/sales_deliveries_view.php:154
-#: sales/inquiry/sales_orders_view.php:128
-#: sales/includes/ui/sales_credit_ui.inc:197
-#: sales/includes/ui/sales_order_ui.inc:208 taxes/item_tax_types.php:139
-#: taxes/tax_groups.php:142 taxes/tax_types.php:132
+#: ../admin/attachments.php:183
+#: ../admin/create_coy.php:277
+#: ../admin/crm_categories.php:115
+#: ../admin/fiscalyears.php:164
+#: ../admin/inst_lang.php:100
+#: ../admin/payment_terms.php:142
+#: ../admin/printers.php:96
+#: ../admin/shipping_companies.php:106
+#: ../admin/tags.php:140
+#: ../admin/users.php:144
+#: ../dimensions/inquiry/search_dimensions.php:120
+#: ../gl/inquiry/journal_inquiry.php:118
+#: ../gl/manage/bank_accounts.php:133
+#: ../gl/manage/currencies.php:164
+#: ../gl/manage/exchange_rates.php:94
+#: ../gl/manage/gl_account_classes.php:132
+#: ../gl/manage/gl_account_types.php:154
+#: ../gl/manage/gl_quick_entries.php:196
+#: ../gl/manage/gl_quick_entries.php:295
+#: ../gl/includes/ui/gl_bank_ui.inc:186
+#: ../gl/includes/ui/gl_journal_ui.inc:134
+#: ../includes/ui/contacts_view.inc:64
+#: ../includes/ui/simple_crud_class.inc:52
+#: ../includes/ui/ui_input.inc:961
+#: ../inventory/prices.php:159
+#: ../inventory/purchasing_data.php:165
+#: ../inventory/includes/item_adjustments_ui.inc:87
+#: ../inventory/includes/stock_transfers_ui.inc:79
+#: ../inventory/manage/item_categories.php:121
+#: ../inventory/manage/item_codes.php:140
+#: ../inventory/manage/item_units.php:110
+#: ../inventory/manage/locations.php:161
+#: ../inventory/manage/movement_types.php:106
+#: ../inventory/manage/sales_kits.php:55
+#: ../manufacturing/search_work_orders.php:109
+#: ../manufacturing/manage/bom_edit.php:86
+#: ../manufacturing/manage/work_centres.php:114
+#: ../manufacturing/includes/work_order_issue_ui.inc:58
+#: ../purchasing/includes/ui/invoice_ui.inc:557
+#: ../purchasing/includes/ui/po_ui.inc:275
+#: ../purchasing/inquiry/po_search_completed.php:105
+#: ../purchasing/inquiry/po_search.php:87
+#: ../sales/manage/credit_status.php:119
+#: ../sales/manage/customer_branches.php:159
+#: ../sales/manage/recurrent_invoices.php:130
+#: ../sales/manage/sales_areas.php:103
+#: ../sales/manage/sales_groups.php:99
+#: ../sales/manage/sales_people.php:119
+#: ../sales/manage/sales_points.php:99
+#: ../sales/manage/sales_types.php:121
+#: ../sales/inquiry/sales_deliveries_view.php:154
+#: ../sales/inquiry/sales_orders_view.php:136
+#: ../sales/includes/ui/sales_credit_ui.inc:197
+#: ../sales/includes/ui/sales_order_ui.inc:209
+#: ../taxes/item_tax_types.php:139
+#: ../taxes/sav.tax_types.php:211
+#: ../taxes/sav.tax_types.php:262
+#: ../taxes/tax_groups.php:137
+#: ../taxes/tax_types.php:132
 msgid "Edit"
 msgstr ""
 
-#: admin/attachments.php:188 gl/inquiry/journal_inquiry.php:135
+#: ../admin/attachments.php:188
+#: ../gl/inquiry/journal_inquiry.php:135
 msgid "View"
 msgstr ""
 
-#: admin/attachments.php:193
+#: ../admin/attachments.php:193
 msgid "Download"
 msgstr ""
 
-#: admin/attachments.php:198 admin/create_coy.php:278
-#: admin/crm_categories.php:119 admin/fiscalyears.php:166
-#: admin/inst_chart.php:80 admin/inst_lang.php:109 admin/inst_module.php:143
-#: admin/inst_theme.php:102 admin/payment_terms.php:143 admin/printers.php:97
-#: admin/shipping_companies.php:107 admin/tags.php:141 admin/users.php:146
-#: gl/gl_budget.php:137 gl/manage/bank_accounts.php:131
-#: gl/manage/currencies.php:166 gl/manage/exchange_rates.php:99
-#: gl/manage/gl_account_classes.php:133 gl/manage/gl_account_types.php:155
-#: gl/manage/gl_quick_entries.php:197 gl/manage/gl_quick_entries.php:296
-#: gl/includes/ui/gl_bank_ui.inc:188 gl/includes/ui/gl_journal_ui.inc:124
-#: includes/ui/contacts_view.inc:67 includes/ui/simple_crud_class.inc:54
-#: includes/ui/ui_input.inc:285 inventory/prices.php:159
-#: inventory/purchasing_data.php:165
-#: inventory/includes/item_adjustments_ui.inc:89
-#: inventory/includes/stock_transfers_ui.inc:81
-#: inventory/manage/item_categories.php:122
-#: inventory/manage/item_codes.php:141 inventory/manage/item_units.php:111
-#: inventory/manage/locations.php:162 inventory/manage/movement_types.php:107
-#: inventory/manage/sales_kits.php:56 manufacturing/manage/bom_edit.php:87
-#: manufacturing/manage/work_centres.php:115
-#: manufacturing/includes/work_order_issue_ui.inc:60
-#: purchasing/includes/ui/invoice_ui.inc:297
-#: purchasing/includes/ui/po_ui.inc:265 sales/manage/credit_status.php:120
-#: sales/manage/customer_branches.php:163
-#: sales/manage/recurrent_invoices.php:131 sales/manage/sales_areas.php:104
-#: sales/manage/sales_groups.php:100 sales/manage/sales_people.php:120
-#: sales/manage/sales_points.php:100 sales/manage/sales_types.php:122
-#: sales/includes/ui/sales_credit_ui.inc:199
-#: sales/includes/ui/sales_order_ui.inc:210 taxes/item_tax_types.php:140
-#: taxes/tax_groups.php:143 taxes/tax_types.php:133
+#: ../admin/attachments.php:198
+#: ../admin/create_coy.php:278
+#: ../admin/crm_categories.php:119
+#: ../admin/fiscalyears.php:166
+#: ../admin/inst_chart.php:80
+#: ../admin/inst_lang.php:109
+#: ../admin/inst_module.php:143
+#: ../admin/inst_theme.php:102
+#: ../admin/payment_terms.php:143
+#: ../admin/printers.php:97
+#: ../admin/shipping_companies.php:107
+#: ../admin/tags.php:141
+#: ../admin/users.php:146
+#: ../gl/gl_budget.php:137
+#: ../gl/manage/bank_accounts.php:134
+#: ../gl/manage/currencies.php:166
+#: ../gl/manage/exchange_rates.php:99
+#: ../gl/manage/gl_account_classes.php:133
+#: ../gl/manage/gl_account_types.php:155
+#: ../gl/manage/gl_quick_entries.php:197
+#: ../gl/manage/gl_quick_entries.php:296
+#: ../gl/includes/ui/gl_bank_ui.inc:188
+#: ../gl/includes/ui/gl_journal_ui.inc:136
+#: ../includes/ui/contacts_view.inc:67
+#: ../includes/ui/simple_crud_class.inc:54
+#: ../includes/ui/ui_input.inc:286
+#: ../inventory/prices.php:160
+#: ../inventory/purchasing_data.php:166
+#: ../inventory/includes/item_adjustments_ui.inc:89
+#: ../inventory/includes/stock_transfers_ui.inc:81
+#: ../inventory/manage/item_categories.php:122
+#: ../inventory/manage/item_codes.php:141
+#: ../inventory/manage/item_units.php:111
+#: ../inventory/manage/locations.php:162
+#: ../inventory/manage/movement_types.php:107
+#: ../inventory/manage/sales_kits.php:56
+#: ../manufacturing/manage/bom_edit.php:87
+#: ../manufacturing/manage/work_centres.php:115
+#: ../manufacturing/includes/work_order_issue_ui.inc:60
+#: ../purchasing/includes/ui/invoice_ui.inc:319
+#: ../purchasing/includes/ui/po_ui.inc:277
+#: ../sales/manage/credit_status.php:120
+#: ../sales/manage/customer_branches.php:163
+#: ../sales/manage/recurrent_invoices.php:131
+#: ../sales/manage/sales_areas.php:104
+#: ../sales/manage/sales_groups.php:100
+#: ../sales/manage/sales_people.php:120
+#: ../sales/manage/sales_points.php:100
+#: ../sales/manage/sales_types.php:122
+#: ../sales/includes/ui/sales_credit_ui.inc:199
+#: ../sales/includes/ui/sales_order_ui.inc:211
+#: ../taxes/item_tax_types.php:140
+#: ../taxes/sav.tax_types.php:212
+#: ../taxes/tax_groups.php:138
+#: ../taxes/tax_types.php:133
 msgid "Delete"
 msgstr ""
 
-#: admin/attachments.php:205 admin/view_print_transaction.php:126
-#: admin/void_transaction.php:181 dimensions/inquiry/search_dimensions.php:127
-#: dimensions/view/view_dimension.php:55 gl/bank_account_reconcile.php:234
-#: gl/inquiry/bank_inquiry.php:70 gl/inquiry/gl_account_inquiry.php:126
-#: gl/inquiry/journal_inquiry.php:127 gl/inquiry/journal_inquiry.php:140
-#: includes/ui/allocation_cart.inc:288 includes/ui/mk.allocation_cart.inc:288
-#: inventory/inquiry/stock_movements.php:82
-#: manufacturing/search_work_orders.php:159
-#: manufacturing/includes/manufacturing_ui.inc:157
-#: manufacturing/includes/manufacturing_ui.inc:200
-#: manufacturing/includes/manufacturing_ui.inc:236
-#: manufacturing/includes/manufacturing_ui.inc:276
-#: manufacturing/includes/manufacturing_ui.inc:280
-#: manufacturing/includes/manufacturing_ui.inc:331
-#: purchasing/view/view_po.php:115 purchasing/view/view_po.php:140
-#: purchasing/inquiry/po_search_completed.php:121
-#: purchasing/inquiry/po_search.php:130
-#: purchasing/inquiry/supplier_allocation_inquiry.php:127
-#: purchasing/inquiry/supplier_inquiry.php:169
-#: purchasing/allocations/supplier_allocation_main.php:95
-#: reporting/rep101.php:118 reporting/rep201.php:110 reporting/rep203.php:93
-#: reporting/rep306.php:141 reporting/rep601.php:79 reporting/rep704.php:83
-#: reporting/rep704.php:86 reporting/rep704.php:89 reporting/rep710.php:78
-#: reporting/includes/doctext.inc:145 reporting/includes/doctext.inc:186
-#: reporting/includes/doctext.inc:224
-#: sales/allocations/customer_allocation_main.php:94
-#: sales/view/view_sales_order.php:96 sales/view/view_sales_order.php:129
-#: sales/view/view_sales_order.php:161
-#: sales/inquiry/customer_allocation_inquiry.php:145
-#: sales/inquiry/customer_inquiry.php:218
+#: ../admin/attachments.php:205
+#: ../admin/view_print_transaction.php:126
+#: ../admin/void_transaction.php:181
+#: ../dimensions/inquiry/search_dimensions.php:127
+#: ../dimensions/view/view_dimension.php:55
+#: ../gl/bank_account_reconcile.php:232
+#: ../gl/inquiry/bank_inquiry.php:70
+#: ../gl/inquiry/gl_account_inquiry.php:126
+#: ../gl/inquiry/journal_inquiry.php:127
+#: ../gl/inquiry/journal_inquiry.php:140
+#: ../includes/ui/allocation_cart.inc:290
+#: ../inventory/inquiry/stock_movements.php:78
+#: ../manufacturing/search_work_orders.php:159
+#: ../manufacturing/includes/manufacturing_ui.inc:157
+#: ../manufacturing/includes/manufacturing_ui.inc:200
+#: ../manufacturing/includes/manufacturing_ui.inc:236
+#: ../manufacturing/includes/manufacturing_ui.inc:276
+#: ../manufacturing/includes/manufacturing_ui.inc:280
+#: ../manufacturing/includes/manufacturing_ui.inc:331
+#: ../purchasing/view/view_po.php:115
+#: ../purchasing/view/view_po.php:140
+#: ../purchasing/inquiry/po_search_completed.php:120
+#: ../purchasing/inquiry/po_search.php:130
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:127
+#: ../purchasing/inquiry/supplier_inquiry.php:174
+#: ../purchasing/allocations/supplier_allocation_main.php:95
+#: ../reporting/rep101.php:118
+#: ../reporting/rep201.php:110
+#: ../reporting/rep203.php:93
+#: ../reporting/rep306.php:141
+#: ../reporting/rep601.php:79
+#: ../reporting/rep602.php:80
+#: ../reporting/rep704.php:83
+#: ../reporting/rep704.php:86
+#: ../reporting/rep704.php:89
+#: ../reporting/rep710.php:78
+#: ../reporting/includes/doctext.inc:167
+#: ../reporting/includes/doctext.inc:208
+#: ../reporting/includes/doctext.inc:246
+#: ../sales/allocations/customer_allocation_main.php:94
+#: ../sales/view/view_sales_order.php:109
+#: ../sales/view/view_sales_order.php:142
+#: ../sales/view/view_sales_order.php:179
+#: ../sales/inquiry/customer_allocation_inquiry.php:145
+#: ../sales/inquiry/customer_inquiry.php:201
 msgid "#"
 msgstr ""
 
-#: admin/attachments.php:206 admin/attachments.php:250
-#: admin/crm_categories.php:97 admin/inst_upgrade.php:137
-#: admin/payment_terms.php:127 admin/printers.php:84
-#: admin/print_profiles.php:148 gl/inquiry/tax_inquiry.php:82
-#: gl/manage/gl_quick_entries.php:186 gl/manage/gl_quick_entries.php:224
-#: includes/ui/view_package.php:32 inventory/manage/item_codes.php:125
-#: inventory/manage/item_units.php:94 inventory/manage/movement_types.php:95
-#: inventory/manage/sales_kits.php:40 inventory/view/view_adjustment.php:56
-#: inventory/view/view_transfer.php:56 manufacturing/manage/bom_edit.php:70
-#: manufacturing/includes/manufacturing_ui.inc:28
-#: purchasing/includes/ui/invoice_ui.inc:484
-#: purchasing/includes/ui/invoice_ui.inc:496
-#: purchasing/po_receive_items.php:62 reporting/rep104.php:111
-#: reporting/rep105.php:114 reporting/rep204.php:84 reporting/rep303.php:121
-#: reporting/rep303.php:127 reporting/rep304.php:114 reporting/rep305.php:101
-#: reporting/rep306.php:141 reporting/rep307.php:117 reporting/rep308.php:149
-#: reporting/rep309.php:98 reporting/rep401.php:71
-#: sales/create_recurrent_invoices.php:134 sales/manage/credit_status.php:97
-#: sales/manage/recurrent_invoices.php:102
-#: sales/inquiry/sales_orders_view.php:295
-#: sales/inquiry/sales_orders_view.php:299 taxes/tax_groups.php:124
-#: taxes/tax_types.php:115
+#: ../admin/attachments.php:206
+#: ../admin/attachments.php:250
+#: ../admin/crm_categories.php:97
+#: ../admin/inst_upgrade.php:141
+#: ../admin/payment_terms.php:127
+#: ../admin/printers.php:84
+#: ../admin/print_profiles.php:148
+#: ../gl/inquiry/tax_inquiry.php:82
+#: ../gl/manage/gl_quick_entries.php:186
+#: ../gl/manage/gl_quick_entries.php:224
+#: ../includes/ui/view_package.php:32
+#: ../inventory/manage/item_codes.php:125
+#: ../inventory/manage/item_units.php:94
+#: ../inventory/manage/movement_types.php:95
+#: ../inventory/manage/sales_kits.php:40
+#: ../inventory/view/view_adjustment.php:56
+#: ../inventory/view/view_transfer.php:56
+#: ../manufacturing/manage/bom_edit.php:70
+#: ../manufacturing/includes/manufacturing_ui.inc:28
+#: ../purchasing/includes/ui/invoice_ui.inc:507
+#: ../purchasing/includes/ui/invoice_ui.inc:519
+#: ../purchasing/po_receive_items.php:62
+#: ../reporting/rep104.php:111
+#: ../reporting/rep105.php:114
+#: ../reporting/rep204.php:84
+#: ../reporting/rep303.php:121
+#: ../reporting/rep303.php:127
+#: ../reporting/rep304.php:114
+#: ../reporting/rep305.php:101
+#: ../reporting/rep306.php:141
+#: ../reporting/rep307.php:117
+#: ../reporting/rep308.php:149
+#: ../reporting/rep309.php:98
+#: ../reporting/rep401.php:71
+#: ../sales/create_recurrent_invoices.php:134
+#: ../sales/manage/credit_status.php:97
+#: ../sales/manage/recurrent_invoices.php:102
+#: ../sales/inquiry/sales_orders_view.php:318
+#: ../sales/inquiry/sales_orders_view.php:322
+#: ../taxes/sav.tax_types.php:190
+#: ../taxes/tax_groups.php:123
+#: ../taxes/tax_types.php:115
 msgid "Description"
 msgstr ""
 
-#: admin/attachments.php:207 admin/backups.php:63 admin/backups.php:149
+#: ../admin/attachments.php:207
+#: ../admin/backups.php:63
+#: ../admin/backups.php:149
 msgid "Filename"
 msgstr ""
 
-#: admin/attachments.php:208
+#: ../admin/attachments.php:208
 msgid "Size"
 msgstr ""
 
-#: admin/attachments.php:209
+#: ../admin/attachments.php:209
 msgid "Filetype"
 msgstr ""
 
-#: admin/attachments.php:210
+#: ../admin/attachments.php:210
 msgid "Date Uploaded"
 msgstr ""
 
-#: admin/attachments.php:244 admin/attachments.php:249
+#: ../admin/attachments.php:244
+#: ../admin/attachments.php:249
 msgid "Transaction #"
 msgstr ""
 
-#: admin/attachments.php:251
+#: ../admin/attachments.php:251
 msgid "Attached File"
 msgstr ""
 
-#: admin/backups.php:21 admin/backups.php:40 admin/backups.php:114
-#: admin/backups.php:142 admin/backups.php:155 admin/backups.php:173
+#: ../admin/backups.php:21
+#: ../admin/backups.php:40
+#: ../admin/backups.php:114
+#: ../admin/backups.php:142
+#: ../admin/backups.php:155
+#: ../admin/backups.php:173
 msgid "Select backup file first."
 msgstr ""
 
-#: admin/backups.php:43
+#: ../admin/backups.php:43
 msgid "Backup and Restore Database"
 msgstr ""
 
-#: admin/backups.php:50
+#: ../admin/backups.php:50
 msgid "Backup paths have not been set correctly."
 msgstr ""
 
-#: admin/backups.php:51
+#: ../admin/backups.php:51
 msgid "Please contact System Administrator."
 msgstr ""
 
-#: admin/backups.php:52
+#: ../admin/backups.php:52
 msgid "cannot find backup directory"
 msgstr ""
 
-#: admin/backups.php:62
+#: ../admin/backups.php:62
 msgid "Backup successfully generated."
 msgstr ""
 
-#: admin/backups.php:65
+#: ../admin/backups.php:65
 msgid "Database backup failed."
 msgstr ""
 
-#: admin/backups.php:98 admin/create_coy.php:265 admin/fiscalyears.php:155
-#: admin/inst_lang.php:85 admin/inst_lang.php:97
-#: admin/void_transaction.php:125 dimensions/inquiry/search_dimensions.php:107
-#: gl/manage/bank_accounts.php:127 gl/manage/currencies.php:162
-#: gl/manage/gl_account_classes.php:127 gl/manage/gl_quick_entries.php:230
-#: includes/system_tests.inc:38 includes/system_tests.inc:113
-#: includes/system_tests.inc:126 includes/ui/ui_lists.inc:1675
-#: purchasing/manage/suppliers.php:120 reporting/rep101.php:114
-#: reporting/rep102.php:114 reporting/rep102.php:116 reporting/rep104.php:105
-#: reporting/rep106.php:75 reporting/rep114.php:74 reporting/rep201.php:106
-#: reporting/rep202.php:118 reporting/rep202.php:120 reporting/rep203.php:89
-#: reporting/rep303.php:113 reporting/rep303.php:117 reporting/rep501.php:113
-#: sales/manage/sales_points.php:94 sales/manage/sales_points.php:95
-#: sales/manage/sales_types.php:119 taxes/item_tax_types.php:129
-#: taxes/tax_groups.php:139
+#: ../admin/backups.php:98
+#: ../admin/create_coy.php:265
+#: ../admin/fiscalyears.php:155
+#: ../admin/inst_lang.php:85
+#: ../admin/inst_lang.php:97
+#: ../dimensions/inquiry/search_dimensions.php:107
+#: ../gl/manage/bank_accounts.php:130
+#: ../gl/manage/currencies.php:162
+#: ../gl/manage/gl_account_classes.php:127
+#: ../gl/manage/gl_quick_entries.php:230
+#: ../includes/system_tests.inc:38
+#: ../includes/system_tests.inc:113
+#: ../includes/system_tests.inc:126
+#: ../includes/ui/ui_lists.inc:1679
+#: ../purchasing/manage/suppliers.php:123
+#: ../reporting/rep101.php:114
+#: ../reporting/rep102.php:114
+#: ../reporting/rep102.php:116
+#: ../reporting/rep104.php:105
+#: ../reporting/rep106.php:75
+#: ../reporting/rep114.php:74
+#: ../reporting/rep201.php:106
+#: ../reporting/rep202.php:118
+#: ../reporting/rep202.php:120
+#: ../reporting/rep203.php:89
+#: ../reporting/rep303.php:113
+#: ../reporting/rep303.php:117
+#: ../reporting/rep501.php:113
+#: ../sales/manage/sales_points.php:94
+#: ../sales/manage/sales_points.php:95
+#: ../sales/manage/sales_types.php:119
+#: ../taxes/item_tax_types.php:129
 msgid "No"
 msgstr ""
 
-#: admin/backups.php:139
+#: ../admin/backups.php:139
 msgid "Restore backup completed."
 msgstr ""
 
-#: admin/backups.php:148
+#: ../admin/backups.php:148
 msgid "File successfully deleted."
 msgstr ""
 
-#: admin/backups.php:153
+#: ../admin/backups.php:153
 msgid "Can't delete backup file."
 msgstr ""
 
-#: admin/backups.php:165
+#: ../admin/backups.php:165
 msgid "You can only upload *.sql backup files"
 msgstr ""
 
-#: admin/backups.php:168
+#: ../admin/backups.php:168
 msgid "File uploaded to backup directory"
 msgstr ""
 
-#: admin/backups.php:171
+#: ../admin/backups.php:171
 msgid "File was not uploaded into the system."
 msgstr ""
 
-#: admin/backups.php:180
+#: ../admin/backups.php:180
 msgid "Create backup"
 msgstr ""
 
-#: admin/backups.php:181 sales/includes/ui/sales_order_ui.inc:594
-#: sales/includes/ui/sales_order_ui.inc:642
+#: ../admin/backups.php:181
+#: ../sales/includes/ui/sales_order_ui.inc:595
+#: ../sales/includes/ui/sales_order_ui.inc:651
 msgid "Comments:"
 msgstr ""
 
-#: admin/backups.php:182
+#: ../admin/backups.php:182
 msgid "Compression:"
 msgstr ""
 
-#: admin/backups.php:184
+#: ../admin/backups.php:184
 msgid "Create Backup"
 msgstr ""
 
-#: admin/backups.php:186
+#: ../admin/backups.php:186
 msgid "Backup scripts maintenance"
 msgstr ""
 
-#: admin/backups.php:192
+#: ../admin/backups.php:192
 msgid "View Backup"
 msgstr ""
 
-#: admin/backups.php:193
+#: ../admin/backups.php:193
 msgid "Download Backup"
 msgstr ""
 
-#: admin/backups.php:194
+#: ../admin/backups.php:194
 msgid "Restore Backup"
 msgstr ""
 
-#: admin/backups.php:195
+#: ../admin/backups.php:195
 msgid ""
 "You are about to restore database from backup file.\n"
 "Do you want to continue?"
 msgstr ""
 
-#: admin/backups.php:197
+#: ../admin/backups.php:197
 msgid "Delete Backup"
 msgstr ""
 
-#: admin/backups.php:199
+#: ../admin/backups.php:199
 #, php-format
 msgid ""
 "You are about to remove selected backup file.\n"
 "Do you want to continue ?"
 msgstr ""
 
-#: admin/backups.php:205
+#: ../admin/backups.php:205
 msgid "Upload file"
 msgstr ""
 
-#: admin/change_current_user_password.php:16
-#: admin/change_current_user_password.php:99 themes/default/renderer.php:77
+#: ../admin/change_current_user_password.php:16
+#: ../admin/change_current_user_password.php:99
+#: ../themes/default/renderer.php:77
 msgid "Change password"
 msgstr ""
 
-#: admin/change_current_user_password.php:33
+#: ../admin/change_current_user_password.php:33
 msgid "Invalid password entered."
 msgstr ""
 
-#: admin/change_current_user_password.php:40 admin/users.php:40
+#: ../admin/change_current_user_password.php:40
+#: ../admin/users.php:40
 msgid "The password entered must be at least 4 characters long."
 msgstr ""
 
-#: admin/change_current_user_password.php:47 admin/users.php:47
+#: ../admin/change_current_user_password.php:47
+#: ../admin/users.php:47
 msgid "The password cannot contain the user login."
 msgstr ""
 
-#: admin/change_current_user_password.php:54
+#: ../admin/change_current_user_password.php:54
 msgid "The passwords entered are not the same."
 msgstr ""
 
-#: admin/change_current_user_password.php:68
+#: ../admin/change_current_user_password.php:68
 msgid "Password cannot be changed in demo mode."
 msgstr ""
 
-#: admin/change_current_user_password.php:73
+#: ../admin/change_current_user_password.php:73
 msgid "Your password has been updated."
 msgstr ""
 
-#: admin/change_current_user_password.php:85 admin/users.php:180
+#: ../admin/change_current_user_password.php:85
+#: ../admin/users.php:180
 msgid "User login:"
 msgstr ""
 
-#: admin/change_current_user_password.php:91
+#: ../admin/change_current_user_password.php:91
 msgid "Current Password:"
 msgstr ""
 
-#: admin/change_current_user_password.php:92
+#: ../admin/change_current_user_password.php:92
 msgid "New Password:"
 msgstr ""
 
-#: admin/change_current_user_password.php:93
+#: ../admin/change_current_user_password.php:93
 msgid "Repeat New Password:"
 msgstr ""
 
-#: admin/change_current_user_password.php:95
+#: ../admin/change_current_user_password.php:95
 msgid "Enter your new password in the fields."
 msgstr ""
 
-#: admin/company_preferences.php:16 applications/setup.php:18
+#: ../admin/company_preferences.php:16
+#: ../applications/setup.php:18
 msgid "Company Setup"
 msgstr ""
 
-#: admin/company_preferences.php:31
+#: ../admin/company_preferences.php:31
 msgid "Login timeout must be positive number not less than 10."
 msgstr ""
 
-#: admin/company_preferences.php:38
+#: ../admin/company_preferences.php:38
 msgid "The company name must be entered."
 msgstr ""
 
-#: admin/company_preferences.php:54
+#: ../admin/company_preferences.php:54
 msgid ""
 "Only jpg and png files are supported - a file extension of .jpg or .png is "
 "expected"
 msgstr ""
 
-#: admin/company_preferences.php:59 inventory/manage/items.php:85
+#: ../admin/company_preferences.php:59
+#: ../inventory/manage/items.php:86
 msgid ""
 "The file size is over the maximum allowed. The maximum size allowed in KB is"
 msgstr ""
 
-#: admin/company_preferences.php:64 inventory/manage/items.php:75
+#: ../admin/company_preferences.php:64
+#: ../inventory/manage/items.php:76
+#: ../inventory/manage/items.php:91
 msgid "Only graphics files can be uploaded"
 msgstr ""
 
-#: admin/company_preferences.php:72 admin/company_preferences.php:93
-#: inventory/manage/items.php:93
+#: ../admin/company_preferences.php:72
+#: ../admin/company_preferences.php:93
+#: ../inventory/manage/items.php:99
 msgid "The existing image could not be removed"
 msgstr ""
 
-#: admin/company_preferences.php:82
+#: ../admin/company_preferences.php:82
 msgid "Error uploading logo file"
 msgstr ""
 
-#: admin/company_preferences.php:116
+#: ../admin/company_preferences.php:116
 msgid "Company setup has been updated."
 msgstr ""
 
-#: admin/company_preferences.php:164
+#: ../admin/company_preferences.php:164
 msgid "Name (to appear on reports):"
 msgstr ""
 
-#: admin/company_preferences.php:165 admin/shipping_companies.php:142
-#: includes/ui/contacts_view.inc:109 inventory/manage/locations.php:202
-#: sales/manage/customers.php:234 sales/includes/ui/sales_order_ui.inc:633
+#: ../admin/company_preferences.php:165
+#: ../admin/shipping_companies.php:142
+#: ../includes/ui/contacts_view.inc:109
+#: ../inventory/manage/locations.php:202
+#: ../sales/manage/customers.php:234
+#: ../sales/includes/ui/sales_order_ui.inc:642
 msgid "Address:"
 msgstr ""
 
-#: admin/company_preferences.php:166
+#: ../admin/company_preferences.php:166
 msgid "Domicile:"
 msgstr ""
 
-#: admin/company_preferences.php:168 admin/shipping_companies.php:138
-#: purchasing/manage/suppliers.php:129 sales/manage/customer_branches.php:260
+#: ../admin/company_preferences.php:168
+#: ../admin/shipping_companies.php:138
+#: ../purchasing/manage/suppliers.php:137
+#: ../sales/manage/customer_branches.php:262
 msgid "Phone Number:"
 msgstr ""
 
-#: admin/company_preferences.php:169 includes/ui/contacts_view.inc:104
-#: purchasing/manage/suppliers.php:159 sales/manage/customer_branches.php:262
-#: sales/manage/customers.php:257
+#: ../admin/company_preferences.php:169
+#: ../includes/ui/contacts_view.inc:104
+#: ../purchasing/manage/suppliers.php:140
+#: ../sales/manage/customer_branches.php:264
+#: ../sales/manage/customers.php:258
 msgid "Fax Number:"
 msgstr ""
 
-#: admin/company_preferences.php:170 admin/users.php:202
+#: ../admin/company_preferences.php:170
+#: ../admin/users.php:202
 msgid "Email Address:"
 msgstr ""
 
-#: admin/company_preferences.php:172
+#: ../admin/company_preferences.php:172
 msgid "BCC Address for all outgoing mails:"
 msgstr ""
 
-#: admin/company_preferences.php:174
+#: ../admin/company_preferences.php:174
 msgid "Official Company Number:"
 msgstr ""
 
-#: admin/company_preferences.php:175 purchasing/manage/suppliers.php:94
-#: sales/manage/customers.php:236
+#: ../admin/company_preferences.php:175
+#: ../purchasing/manage/suppliers.php:96
+#: ../sales/manage/customers.php:236
 msgid "GSTNo:"
 msgstr ""
 
-#: admin/company_preferences.php:177
+#: ../admin/company_preferences.php:177
 msgid "Home Currency:"
 msgstr ""
 
-#: admin/company_preferences.php:178 gl/gl_budget.php:63
+#: ../admin/company_preferences.php:178
+#: ../gl/gl_budget.php:63
 msgid "Fiscal Year:"
 msgstr ""
 
-#: admin/company_preferences.php:179
+#: ../admin/company_preferences.php:179
 msgid "Tax Periods:"
 msgstr ""
 
-#: admin/company_preferences.php:179
+#: ../admin/company_preferences.php:179
 msgid "Months."
 msgstr ""
 
-#: admin/company_preferences.php:180
+#: ../admin/company_preferences.php:180
 msgid "Tax Last Period:"
 msgstr ""
 
-#: admin/company_preferences.php:180
+#: ../admin/company_preferences.php:180
 msgid "Months back."
 msgstr ""
 
-#: admin/company_preferences.php:184
+#: ../admin/company_preferences.php:184
 msgid "Company Logo:"
 msgstr ""
 
-#: admin/company_preferences.php:185
+#: ../admin/company_preferences.php:185
 msgid "New Company Logo (.jpg)"
 msgstr ""
 
-#: admin/company_preferences.php:186
+#: ../admin/company_preferences.php:186
 msgid "Delete Company Logo:"
 msgstr ""
 
-#: admin/company_preferences.php:188
+#: ../admin/company_preferences.php:188
 msgid "Use Dimensions:"
 msgstr ""
 
-#: admin/company_preferences.php:189
+#: ../admin/company_preferences.php:189
 msgid "Base for auto price calculations:"
 msgstr ""
 
-#: admin/company_preferences.php:190
+#: ../admin/company_preferences.php:190
 msgid "No base price list"
 msgstr ""
 
-#: admin/company_preferences.php:191
+#: ../admin/company_preferences.php:191
 msgid "Add Price from Std Cost:"
 msgstr ""
 
-#: admin/company_preferences.php:193
+#: ../admin/company_preferences.php:193
 msgid "Round to nearest:"
 msgstr ""
 
-#: admin/company_preferences.php:196
+#: ../admin/company_preferences.php:196
 msgid "Search Item List"
 msgstr ""
 
-#: admin/company_preferences.php:197
+#: ../admin/company_preferences.php:197
 msgid "Search Customer List"
 msgstr ""
 
-#: admin/company_preferences.php:198
+#: ../admin/company_preferences.php:198
 msgid "Search Supplier List"
 msgstr ""
 
-#: admin/company_preferences.php:200
+#: ../admin/company_preferences.php:200
 msgid "Automatic Revaluation Currency Accounts"
 msgstr ""
 
-#: admin/company_preferences.php:201
+#: ../admin/company_preferences.php:201
 msgid "Time Zone on Reports"
 msgstr ""
 
-#: admin/company_preferences.php:202
+#: ../admin/company_preferences.php:202
 msgid "Login Timeout:"
 msgstr ""
 
-#: admin/company_preferences.php:202
+#: ../admin/company_preferences.php:202
 msgid "seconds"
 msgstr ""
 
-#: admin/company_preferences.php:203
+#: ../admin/company_preferences.php:203
 msgid "Version Id"
 msgstr ""
 
-#: admin/company_preferences.php:208 admin/display_prefs.php:143
-#: admin/forms_setup.php:61 admin/gl_setup.php:226 admin/inst_chart.php:74
-#: admin/inst_lang.php:103 admin/inst_module.php:137 admin/inst_module.php:155
-#: admin/inst_module.php:198 admin/inst_theme.php:96
-#: dimensions/dimension_entry.php:293 gl/gl_bank.php:413 gl/gl_budget.php:135
-#: gl/manage/gl_quick_entries.php:60 gl/includes/ui/gl_bank_ui.inc:277
-#: gl/includes/ui/gl_journal_ui.inc:221 includes/ui/db_pager_view.inc:174
-#: includes/ui/simple_crud_class.inc:56 includes/ui/simple_crud_class.inc:227
-#: includes/ui/ui_input.inc:207 includes/ui/ui_input.inc:905
-#: inventory/adjustments.php:233 inventory/cost_update.php:136
-#: inventory/reorder_level.php:111 inventory/transfers.php:234
-#: inventory/includes/item_adjustments_ui.inc:157
-#: inventory/includes/stock_transfers_ui.inc:137
-#: inventory/manage/sales_kits.php:208 manufacturing/work_order_entry.php:459
-#: manufacturing/includes/work_order_issue_ui.inc:131
-#: purchasing/includes/ui/po_ui.inc:296 purchasing/includes/ui/po_ui.inc:439
-#: purchasing/po_receive_items.php:334 sales/credit_note_entry.php:284
-#: sales/customer_credit_invoice.php:380 sales/customer_delivery.php:533
-#: sales/customer_invoice.php:591 sales/inquiry/sales_orders_view.php:323
-#: sales/includes/ui/sales_credit_ui.inc:293
-#: sales/includes/ui/sales_order_ui.inc:243
-#: sales/includes/ui/sales_order_ui.inc:560
+#: ../admin/company_preferences.php:208
+#: ../admin/display_prefs.php:145
+#: ../admin/forms_setup.php:61
+#: ../admin/gl_setup.php:241
+#: ../admin/inst_chart.php:74
+#: ../admin/inst_lang.php:103
+#: ../admin/inst_module.php:137
+#: ../admin/inst_module.php:155
+#: ../admin/inst_module.php:198
+#: ../admin/inst_theme.php:96
+#: ../dimensions/dimension_entry.php:293
+#: ../gl/gl_bank.php:417
+#: ../gl/gl_budget.php:135
+#: ../gl/manage/gl_quick_entries.php:60
+#: ../gl/includes/ui/gl_bank_ui.inc:277
+#: ../gl/includes/ui/gl_journal_ui.inc:257
+#: ../includes/ui/db_pager_view.inc:174
+#: ../includes/ui/simple_crud_class.inc:56
+#: ../includes/ui/simple_crud_class.inc:227
+#: ../includes/ui/ui_input.inc:208
+#: ../includes/ui/ui_input.inc:906
+#: ../inventory/adjustments.php:233
+#: ../inventory/cost_update.php:134
+#: ../inventory/reorder_level.php:112
+#: ../inventory/transfers.php:234
+#: ../inventory/includes/item_adjustments_ui.inc:157
+#: ../inventory/includes/stock_transfers_ui.inc:137
+#: ../inventory/manage/sales_kits.php:208
+#: ../manufacturing/work_order_entry.php:459
+#: ../manufacturing/includes/work_order_issue_ui.inc:131
+#: ../purchasing/includes/ui/po_ui.inc:308
+#: ../purchasing/includes/ui/po_ui.inc:459
+#: ../purchasing/po_receive_items.php:332
+#: ../sales/credit_note_entry.php:284
+#: ../sales/customer_credit_invoice.php:380
+#: ../sales/customer_delivery.php:547
+#: ../sales/customer_invoice.php:693
+#: ../sales/inquiry/sales_orders_view.php:350
+#: ../sales/includes/ui/sales_credit_ui.inc:293
+#: ../sales/includes/ui/sales_order_ui.inc:244
+#: ../sales/includes/ui/sales_order_ui.inc:561
+#: ../taxes/sav.tax_types.php:255
 msgid "Update"
 msgstr ""
 
-#: admin/create_coy.php:21
+#: ../admin/create_coy.php:21
 msgid "Create/Update Company"
 msgstr ""
 
-#: admin/create_coy.php:46 admin/create_coy.php:52
+#: ../admin/create_coy.php:46
+#: ../admin/create_coy.php:52
 msgid "Database settings are not specified."
 msgstr ""
 
-#: admin/create_coy.php:62
+#: ../admin/create_coy.php:62
 msgid "This database settings are already used by another company."
 msgstr ""
 
-#: admin/create_coy.php:67
+#: ../admin/create_coy.php:67
 msgid ""
 "You cannot have table set without prefix together with prefixed sets in the "
 "same database."
 msgstr ""
 
-#: admin/create_coy.php:127
+#: ../admin/create_coy.php:127
 msgid "Error creating Database: "
 msgstr ""
 
-#: admin/create_coy.php:127
+#: ../admin/create_coy.php:127
 msgid ", Please create it manually"
 msgstr ""
 
-#: admin/create_coy.php:131
+#: ../admin/create_coy.php:131
 msgid "Cannot create new company due to bugs in sql file."
 msgstr ""
 
-#: admin/create_coy.php:149 admin/create_coy.php:216
+#: ../admin/create_coy.php:149
+#: ../admin/create_coy.php:216
 msgid "Cannot open the configuration file - "
 msgstr ""
 
-#: admin/create_coy.php:151 admin/create_coy.php:218
+#: ../admin/create_coy.php:151
+#: ../admin/create_coy.php:218
 msgid "Cannot write to the configuration file - "
 msgstr ""
 
-#: admin/create_coy.php:153 admin/create_coy.php:189 admin/create_coy.php:220
+#: ../admin/create_coy.php:153
+#: ../admin/create_coy.php:189
+#: ../admin/create_coy.php:220
 msgid "The configuration file "
 msgstr ""
 
-#: admin/create_coy.php:153 admin/create_coy.php:189 admin/create_coy.php:220
-#: admin/db/maintenance_db.inc:250
+#: ../admin/create_coy.php:153
+#: ../admin/create_coy.php:189
+#: ../admin/create_coy.php:220
+#: ../admin/db/maintenance_db.inc:250
 msgid ""
 " is not writable. Change its permissions so it is, then re-run the operation."
 msgstr ""
 
-#: admin/create_coy.php:165
+#: ../admin/create_coy.php:165
 msgid "New company has been created."
 msgstr ""
 
-#: admin/create_coy.php:165
+#: ../admin/create_coy.php:165
 msgid "Company has been updated."
 msgstr ""
 
-#: admin/create_coy.php:182
+#: ../admin/create_coy.php:182
 msgid ""
 "Broken company subdirectories system. You have to remove this company "
 "manually."
 msgstr ""
 
-#: admin/create_coy.php:198
+#: ../admin/create_coy.php:198
 msgid "Cannot rename subdirectory to temporary name."
 msgstr ""
 
-#: admin/create_coy.php:204
+#: ../admin/create_coy.php:204
 msgid "Cannot rename company subdirectory"
 msgstr ""
 
-#: admin/create_coy.php:210
+#: ../admin/create_coy.php:210
 msgid "Error removing Database: "
 msgstr ""
 
-#: admin/create_coy.php:210
+#: ../admin/create_coy.php:210
 msgid ", please remove it manually"
 msgstr ""
 
-#: admin/create_coy.php:229
+#: ../admin/create_coy.php:229
 msgid "Cannot remove temporary renamed company data directory "
 msgstr ""
 
-#: admin/create_coy.php:232
+#: ../admin/create_coy.php:232
 msgid "Selected company has been deleted"
 msgstr ""
 
-#: admin/create_coy.php:246
+#: ../admin/create_coy.php:246
 msgid "Are you sure you want to delete company no. "
 msgstr ""
 
-#: admin/create_coy.php:253
+#: ../admin/create_coy.php:253
 msgid "Database Host"
 msgstr ""
 
-#: admin/create_coy.php:253 admin/create_coy.php:341 admin/create_coy.php:347
+#: ../admin/create_coy.php:253
+#: ../admin/create_coy.php:341
+#: ../admin/create_coy.php:347
 msgid "Database User"
 msgstr ""
 
-#: admin/create_coy.php:254 admin/create_coy.php:343 admin/create_coy.php:348
+#: ../admin/create_coy.php:254
+#: ../admin/create_coy.php:343
+#: ../admin/create_coy.php:348
 msgid "Database Name"
 msgstr ""
 
-#: admin/create_coy.php:254 admin/create_coy.php:344 admin/create_coy.php:349
+#: ../admin/create_coy.php:254
+#: ../admin/create_coy.php:344
+#: ../admin/create_coy.php:349
 msgid "Table Pref"
 msgstr ""
 
-#: admin/create_coy.php:254 admin/create_coy.php:351 admin/inst_lang.php:36
-#: admin/print_profiles.php:162
+#: ../admin/create_coy.php:254
+#: ../admin/create_coy.php:351
+#: ../admin/inst_lang.php:36
+#: ../admin/print_profiles.php:162
 msgid "Default"
 msgstr ""
 
-#: admin/create_coy.php:263 admin/fiscalyears.php:159 admin/inst_lang.php:85
-#: admin/inst_lang.php:97 dimensions/inquiry/search_dimensions.php:107
-#: gl/manage/bank_accounts.php:125 gl/manage/currencies.php:162
-#: gl/manage/gl_account_classes.php:127 gl/manage/gl_quick_entries.php:230
-#: includes/system_tests.inc:38 includes/system_tests.inc:113
-#: includes/system_tests.inc:126 includes/ui/ui_lists.inc:1676
-#: purchasing/manage/suppliers.php:120 reporting/rep101.php:113
-#: reporting/rep102.php:113 reporting/rep102.php:115 reporting/rep104.php:107
-#: reporting/rep106.php:77 reporting/rep114.php:76 reporting/rep201.php:105
-#: reporting/rep202.php:117 reporting/rep202.php:119 reporting/rep203.php:88
-#: reporting/rep303.php:108 reporting/rep303.php:116 reporting/rep501.php:111
-#: sales/manage/sales_points.php:94 sales/manage/sales_points.php:95
-#: sales/manage/sales_types.php:119 taxes/item_tax_types.php:133
-#: taxes/tax_groups.php:137
+#: ../admin/create_coy.php:263
+#: ../admin/fiscalyears.php:159
+#: ../admin/inst_lang.php:85
+#: ../admin/inst_lang.php:97
+#: ../dimensions/inquiry/search_dimensions.php:107
+#: ../gl/manage/bank_accounts.php:128
+#: ../gl/manage/currencies.php:162
+#: ../gl/manage/gl_account_classes.php:127
+#: ../gl/manage/gl_quick_entries.php:230
+#: ../includes/system_tests.inc:38
+#: ../includes/system_tests.inc:113
+#: ../includes/system_tests.inc:126
+#: ../includes/ui/ui_lists.inc:1680
+#: ../purchasing/manage/suppliers.php:123
+#: ../reporting/rep101.php:113
+#: ../reporting/rep102.php:113
+#: ../reporting/rep102.php:115
+#: ../reporting/rep104.php:107
+#: ../reporting/rep106.php:77
+#: ../reporting/rep114.php:76
+#: ../reporting/rep201.php:105
+#: ../reporting/rep202.php:117
+#: ../reporting/rep202.php:119
+#: ../reporting/rep203.php:88
+#: ../reporting/rep303.php:108
+#: ../reporting/rep303.php:116
+#: ../reporting/rep501.php:111
+#: ../sales/manage/sales_points.php:94
+#: ../sales/manage/sales_points.php:95
+#: ../sales/manage/sales_types.php:119
+#: ../taxes/item_tax_types.php:133
 msgid "Yes"
 msgstr ""
 
-#: admin/create_coy.php:292
+#: ../admin/create_coy.php:292
 msgid "The marked company is the current company which cannot be deleted."
 msgstr ""
 
-#: admin/create_coy.php:293
+#: ../admin/create_coy.php:293
 msgid ""
 "If no Admin Password is entered, the new Admin Password will be "
 "'<b>password</b>' by default "
 msgstr ""
 
-#: admin/create_coy.php:340 admin/create_coy.php:346 admin/printers.php:84
+#: ../admin/create_coy.php:340
+#: ../admin/create_coy.php:346
+#: ../admin/printers.php:84
 msgid "Host"
 msgstr ""
 
-#: admin/create_coy.php:342
+#: ../admin/create_coy.php:342
 msgid "Database Password"
 msgstr ""
 
-#: admin/create_coy.php:344 admin/inst_chart.php:68 admin/inst_chart.php:70
-#: admin/inst_lang.php:87 admin/inst_lang.php:90 admin/inst_module.php:126
-#: admin/inst_theme.php:91 admin/inst_theme.php:93 admin/inst_upgrade.php:149
-#: gl/manage/gl_account_types.php:190 includes/ui/allocation_cart.inc:314
-#: includes/ui/mk.allocation_cart.inc:314
+#: ../admin/create_coy.php:344
+#: ../admin/inst_chart.php:68
+#: ../admin/inst_chart.php:70
+#: ../admin/inst_lang.php:87
+#: ../admin/inst_lang.php:90
+#: ../admin/inst_module.php:126
+#: ../admin/inst_theme.php:91
+#: ../admin/inst_theme.php:93
+#: ../admin/inst_upgrade.php:153
+#: ../gl/manage/gl_account_types.php:190
+#: ../includes/ui/allocation_cart.inc:316
+#: ../taxes/sav.tax_types.php:168
 msgid "None"
 msgstr ""
 
-#: admin/create_coy.php:355
+#: ../admin/create_coy.php:355
 msgid "Database Script"
 msgstr ""
 
-#: admin/create_coy.php:356
+#: ../admin/create_coy.php:356
 msgid "New script Admin Password"
 msgstr ""
 
-#: admin/create_coy.php:360 gl/gl_budget.php:136
+#: ../admin/create_coy.php:360
+#: ../gl/gl_budget.php:136
 msgid "Save"
 msgstr ""
 
-#: admin/create_coy.php:382
+#: ../admin/create_coy.php:382
 msgid "Create a new company"
 msgstr ""
 
-#: admin/crm_categories.php:17
+#: ../admin/crm_categories.php:17
 msgid "Contact Categories"
 msgstr ""
 
-#: admin/crm_categories.php:31
+#: ../admin/crm_categories.php:31
 msgid "Category description cannot be empty."
 msgstr ""
 
-#: admin/crm_categories.php:41
+#: ../admin/crm_categories.php:41
 msgid "Selected contact category has been updated"
 msgstr ""
 
-#: admin/crm_categories.php:47
+#: ../admin/crm_categories.php:47
 msgid "New contact category has been added"
 msgstr ""
 
-#: admin/crm_categories.php:71
+#: ../admin/crm_categories.php:71
 msgid "Cannot delete this category because there are contacts related to it."
 msgstr ""
 
-#: admin/crm_categories.php:77
+#: ../admin/crm_categories.php:77
 msgid "Category has been deleted"
 msgstr ""
 
-#: admin/crm_categories.php:97
+#: ../admin/crm_categories.php:97
 msgid "Category Type"
 msgstr ""
 
-#: admin/crm_categories.php:97
+#: ../admin/crm_categories.php:97
 msgid "Category Subtype"
 msgstr ""
 
-#: admin/crm_categories.php:97 sales/manage/customer_branches.php:293
+#: ../admin/crm_categories.php:97
+#: ../sales/manage/customer_branches.php:295
 msgid "Short Name"
 msgstr ""
 
-#: admin/crm_categories.php:144 admin/crm_categories.php:148
+#: ../admin/crm_categories.php:144
+#: ../admin/crm_categories.php:148
 msgid "Contact Category Type:"
 msgstr ""
 
-#: admin/crm_categories.php:145 admin/crm_categories.php:149
+#: ../admin/crm_categories.php:145
+#: ../admin/crm_categories.php:149
 msgid "Contact Category Subtype:"
 msgstr ""
 
-#: admin/crm_categories.php:152
+#: ../admin/crm_categories.php:152
 msgid "Category Short Name:"
 msgstr ""
 
-#: admin/crm_categories.php:153
+#: ../admin/crm_categories.php:153
 msgid "Category Description:"
 msgstr ""
 
-#: admin/display_prefs.php:16
+#: ../admin/display_prefs.php:16
 msgid "Display Setup"
 msgstr ""
 
-#: admin/display_prefs.php:30
+#: ../admin/display_prefs.php:30
 msgid "Query size must be integer and greater than zero."
 msgstr ""
 
-#: admin/display_prefs.php:60
+#: ../admin/display_prefs.php:60
 msgid ""
 "Display settings have been updated. Keep in mind that changed settings are "
 "restored on every login in demo mode."
 msgstr ""
 
-#: admin/display_prefs.php:62
+#: ../admin/display_prefs.php:62
 msgid "Display settings have been updated."
 msgstr ""
 
-#: admin/display_prefs.php:71
+#: ../admin/display_prefs.php:71
 msgid "Decimal Places"
 msgstr ""
 
-#: admin/display_prefs.php:73
+#: ../admin/display_prefs.php:73
 msgid "Prices/Amounts:"
 msgstr ""
 
-#: admin/display_prefs.php:74
+#: ../admin/display_prefs.php:74
 msgid "Quantities:"
 msgstr ""
 
-#: admin/display_prefs.php:75
+#: ../admin/display_prefs.php:75
 msgid "Exchange Rates:"
 msgstr ""
 
-#: admin/display_prefs.php:76
+#: ../admin/display_prefs.php:76
 msgid "Percentages:"
 msgstr ""
 
-#: admin/display_prefs.php:78
+#: ../admin/display_prefs.php:78
 msgid "Dateformat and Separators"
 msgstr ""
 
-#: admin/display_prefs.php:80
+#: ../admin/display_prefs.php:80
 msgid "Dateformat:"
 msgstr ""
 
-#: admin/display_prefs.php:82
+#: ../admin/display_prefs.php:82
 msgid "Date Separator:"
 msgstr ""
 
-#: admin/display_prefs.php:87
+#: ../admin/display_prefs.php:87
 msgid "Thousand Separator:"
 msgstr ""
 
-#: admin/display_prefs.php:92
+#: ../admin/display_prefs.php:92
 msgid "Decimal Separator:"
 msgstr ""
 
-#: admin/display_prefs.php:99 admin/inst_lang.php:35
+#: ../admin/display_prefs.php:99
+#: ../admin/inst_lang.php:35
 msgid "Language"
 msgstr ""
 
-#: admin/display_prefs.php:101 admin/users.php:206
+#: ../admin/display_prefs.php:101
+#: ../admin/users.php:206
 msgid "Language:"
 msgstr ""
 
-#: admin/display_prefs.php:104 applications/setup.php:42
-#: includes/sysnames.inc:94
+#: ../admin/display_prefs.php:104
+#: ../applications/setup.php:42
+#: ../includes/sysnames.inc:94
 msgid "Miscellaneous"
 msgstr ""
 
-#: admin/display_prefs.php:106
+#: ../admin/display_prefs.php:106
 msgid "Show hints for new users:"
 msgstr ""
 
-#: admin/display_prefs.php:108
+#: ../admin/display_prefs.php:108
 msgid "Show GL Information:"
 msgstr ""
 
-#: admin/display_prefs.php:110
+#: ../admin/display_prefs.php:110
 msgid "Show Item Codes:"
 msgstr ""
 
-#: admin/display_prefs.php:117
+#: ../admin/display_prefs.php:117
 msgid "Page Size:"
 msgstr ""
 
-#: admin/display_prefs.php:119
+#: ../admin/display_prefs.php:119
 msgid "Start-up Tab"
 msgstr ""
 
-#: admin/display_prefs.php:127 admin/users.php:210
+#: ../admin/display_prefs.php:127
+#: ../admin/users.php:210
 msgid "Printing profile"
 msgstr ""
 
-#: admin/display_prefs.php:128 admin/users.php:211
+#: ../admin/display_prefs.php:128
+#: ../admin/users.php:211
 msgid "Browser printing support"
 msgstr ""
 
-#: admin/display_prefs.php:130
+#: ../admin/display_prefs.php:130
 msgid "Use popup window to display reports:"
 msgstr ""
 
-#: admin/display_prefs.php:131 admin/users.php:214
+#: ../admin/display_prefs.php:131
+#: ../admin/users.php:214
 msgid "Set this option to on if your browser directly supports pdf files"
 msgstr ""
 
-#: admin/display_prefs.php:133
+#: ../admin/display_prefs.php:133
 msgid "Use icons instead of text links:"
 msgstr ""
 
-#: admin/display_prefs.php:134
+#: ../admin/display_prefs.php:134
 msgid "Set this option to on for using icons instead of text links"
 msgstr ""
 
-#: admin/display_prefs.php:136
+#: ../admin/display_prefs.php:136
 msgid "Query page size:"
 msgstr ""
 
-#: admin/display_prefs.php:138
+#: ../admin/display_prefs.php:138
 msgid "Remember last document date:"
 msgstr ""
 
-#: admin/display_prefs.php:139
+#: ../admin/display_prefs.php:139
 msgid ""
 "If set document date is remembered on subsequent documents, otherwise "
 "default is current date"
 msgstr ""
 
-#: admin/fiscalyears.php:25
+#: ../admin/display_prefs.php:141
+msgid "Transaction days:"
+msgstr ""
+
+#: ../admin/fiscalyears.php:25
 msgid "Fiscal Years"
 msgstr ""
 
-#: admin/fiscalyears.php:34
+#: ../admin/fiscalyears.php:34
 msgid "Invalid BEGIN date in fiscal year."
 msgstr ""
 
-#: admin/fiscalyears.php:40
+#: ../admin/fiscalyears.php:40
 msgid "Invalid END date in fiscal year."
 msgstr ""
 
-#: admin/fiscalyears.php:46
+#: ../admin/fiscalyears.php:46
 msgid "Invalid BEGIN or END date in fiscal year."
 msgstr ""
 
-#: admin/fiscalyears.php:52
+#: ../admin/fiscalyears.php:52
 msgid "BEGIN date bigger than END date."
 msgstr ""
 
-#: admin/fiscalyears.php:70
+#: ../admin/fiscalyears.php:70
 msgid "Cannot CLOSE this year because there are open fiscal years before"
 msgstr ""
 
-#: admin/fiscalyears.php:81
+#: ../admin/fiscalyears.php:81
 msgid "Selected fiscal year has been updated"
 msgstr ""
 
-#: admin/fiscalyears.php:89
+#: ../admin/fiscalyears.php:89
 msgid "New fiscal year has been added"
 msgstr ""
 
-#: admin/fiscalyears.php:102
+#: ../admin/fiscalyears.php:102
 msgid "Cannot delete this fiscal year because there are fiscal years before."
 msgstr ""
 
-#: admin/fiscalyears.php:107
+#: ../admin/fiscalyears.php:107
 msgid "Cannot delete this fiscal year because the fiscal year is not closed."
 msgstr ""
 
-#: admin/fiscalyears.php:120
+#: ../admin/fiscalyears.php:120
 msgid "Selected fiscal year has been deleted"
 msgstr ""
 
-#: admin/fiscalyears.php:133
+#: ../admin/fiscalyears.php:133
 msgid ""
 "Warning: Deleting a fiscal year all transactions \n"
 "\t\tare removed and converted into relevant balances. This process is "
 "irreversible!"
 msgstr ""
 
-#: admin/fiscalyears.php:138
+#: ../admin/fiscalyears.php:138
 msgid "Fiscal Year Begin"
 msgstr ""
 
-#: admin/fiscalyears.php:138
+#: ../admin/fiscalyears.php:138
 msgid "Fiscal Year End"
 msgstr ""
 
-#: admin/fiscalyears.php:138 dimensions/inquiry/search_dimensions.php:133
-#: dimensions/inquiry/search_dimensions.php:139 includes/ui/ui_lists.inc:676
-#: manufacturing/search_work_orders.php:108 reporting/rep501.php:87
-#: reporting/rep710.php:113 reporting/includes/excel_report.inc:234
-#: reporting/includes/pdf_report.inc:266
+#: ../admin/fiscalyears.php:138
+#: ../dimensions/inquiry/search_dimensions.php:133
+#: ../dimensions/inquiry/search_dimensions.php:139
+#: ../includes/ui/ui_input.inc:959
+#: ../includes/ui/ui_lists.inc:675
+#: ../manufacturing/search_work_orders.php:108
+#: ../reporting/rep501.php:87
+#: ../reporting/rep710.php:113
+#: ../reporting/includes/excel_report.inc:234
+#: ../reporting/includes/pdf_report.inc:266
 msgid "Closed"
 msgstr ""
 
-#: admin/fiscalyears.php:168
+#: ../admin/fiscalyears.php:168
 #, php-format
 msgid ""
 "Are you sure you want to delete fiscal year %s - %s? All transactions are "
 "deleted and converted into relevant balances. Do you want to continue ?"
 msgstr ""
 
-#: admin/fiscalyears.php:176
+#: ../admin/fiscalyears.php:176
 msgid ""
 "The marked fiscal year is the current fiscal year which cannot be deleted."
 msgstr ""
 
-#: admin/fiscalyears.php:200 admin/fiscalyears.php:211
+#: ../admin/fiscalyears.php:200
+#: ../admin/fiscalyears.php:211
 msgid "Fiscal Year Begin:"
 msgstr ""
 
-#: admin/fiscalyears.php:201 admin/fiscalyears.php:212
+#: ../admin/fiscalyears.php:201
+#: ../admin/fiscalyears.php:212
 msgid "Fiscal Year End:"
 msgstr ""
 
-#: admin/fiscalyears.php:216
+#: ../admin/fiscalyears.php:216
 msgid "Is Closed:"
 msgstr ""
 
-#: admin/forms_setup.php:16
+#: ../admin/forms_setup.php:16
 msgid "Forms Setup"
 msgstr ""
 
-#: admin/forms_setup.php:36
+#: ../admin/forms_setup.php:36
 msgid "Forms settings have been updated."
 msgstr ""
 
-#: admin/forms_setup.php:46
+#: ../admin/forms_setup.php:46
 msgid "Form"
 msgstr ""
 
-#: admin/forms_setup.php:46
+#: ../admin/forms_setup.php:46
 msgid "Next Reference"
 msgstr ""
 
-#: admin/gl_setup.php:16
+#: ../admin/gl_setup.php:16
 msgid "System and General GL Setup"
 msgstr ""
 
-#: admin/gl_setup.php:30
+#: ../admin/gl_setup.php:30
 msgid "The delivery over-receive allowance must be between 0 and 100."
 msgstr ""
 
-#: admin/gl_setup.php:37
+#: ../admin/gl_setup.php:37
 msgid "The invoice over-charge allowance must be between 0 and 100."
 msgstr ""
 
-#: admin/gl_setup.php:44
+#: ../admin/gl_setup.php:44
 msgid "The past due days interval allowance must be between 0 and 100."
 msgstr ""
 
-#: admin/gl_setup.php:52
+#: ../admin/gl_setup.php:52
 msgid "Before GRN Clearing Account can be changed all GRNs have to be invoiced"
 msgstr ""
 
-#: admin/gl_setup.php:59 admin/db/fiscalyears_db.inc:141
+#: ../admin/gl_setup.php:59
+#: ../admin/db/fiscalyears_db.inc:141
 msgid ""
 "The Retained Earnings Account should be a Balance Account or the Profit and "
 "Loss Year Account should be an Expense Account (preferred the last one in "
 "the Expense Class)"
 msgstr ""
 
-#: admin/gl_setup.php:80
+#: ../admin/gl_setup.php:80
 msgid "The general GL setup has been updated."
 msgstr ""
 
-#: admin/gl_setup.php:137
+#: ../admin/gl_setup.php:144
 msgid "General GL"
 msgstr ""
 
-#: admin/gl_setup.php:139
+#: ../admin/gl_setup.php:146
 msgid "Past Due Days Interval:"
 msgstr ""
 
-#: admin/gl_setup.php:139 admin/gl_setup.php:174 admin/gl_setup.php:182
-#: admin/gl_setup.php:219 admin/payment_terms.php:140
+#: ../admin/gl_setup.php:146
+#: ../admin/gl_setup.php:186
+#: ../admin/gl_setup.php:194
+#: ../admin/gl_setup.php:212
+#: ../admin/gl_setup.php:234
+#: ../admin/payment_terms.php:140
 msgid "days"
 msgstr ""
 
-#: admin/gl_setup.php:141
+#: ../admin/gl_setup.php:148
 msgid "Retained Earnings:"
 msgstr ""
 
-#: admin/gl_setup.php:143
+#: ../admin/gl_setup.php:150
 msgid "Profit/Loss Year:"
 msgstr ""
 
-#: admin/gl_setup.php:145
+#: ../admin/gl_setup.php:152
 msgid "Exchange Variances Account:"
 msgstr ""
 
-#: admin/gl_setup.php:147
+#: ../admin/gl_setup.php:154
+#: ../gl/manage/bank_accounts.php:193
 msgid "Bank Charges Account:"
 msgstr ""
 
-#: admin/gl_setup.php:151
+#: ../admin/gl_setup.php:156
+msgid "Tax Algorithm:"
+msgstr ""
+
+#: ../admin/gl_setup.php:160
 msgid "Customers and Sales"
 msgstr ""
 
-#: admin/gl_setup.php:153
+#: ../admin/gl_setup.php:162
 msgid "Default Credit Limit:"
 msgstr ""
 
-#: admin/gl_setup.php:155
+#: ../admin/gl_setup.php:164
 msgid "Accumulate batch shipping:"
 msgstr ""
 
-#: admin/gl_setup.php:157
+#: ../admin/gl_setup.php:166
 msgid "Legal Text on Invoice:"
 msgstr ""
 
-#: admin/gl_setup.php:159
+#: ../admin/gl_setup.php:168
 msgid "Shipping Charged Account:"
 msgstr ""
 
-#: admin/gl_setup.php:163
+#: ../admin/gl_setup.php:170
+msgid "Deferred Income Account:"
+msgstr ""
+
+#: ../admin/gl_setup.php:171
+msgid "Not used"
+msgstr ""
+
+#: ../admin/gl_setup.php:175
 msgid "Customers and Sales Defaults"
 msgstr ""
 
-#: admin/gl_setup.php:165
+#: ../admin/gl_setup.php:177
 msgid "Receivable Account:"
 msgstr ""
 
-#: admin/gl_setup.php:167 admin/gl_setup.php:205
-#: inventory/manage/item_categories.php:192 inventory/manage/items.php:354
-#: sales/manage/customer_branches.php:250
+#: ../admin/gl_setup.php:179
+#: ../admin/gl_setup.php:220
+#: ../inventory/manage/item_categories.php:196
+#: ../inventory/manage/items.php:365
+#: ../sales/manage/customer_branches.php:251
 msgid "Sales Account:"
 msgstr ""
 
-#: admin/gl_setup.php:170 sales/manage/customer_branches.php:251
+#: ../admin/gl_setup.php:182
+#: ../sales/manage/customer_branches.php:252
 msgid "Sales Discount Account:"
 msgstr ""
 
-#: admin/gl_setup.php:172 sales/manage/customer_branches.php:253
+#: ../admin/gl_setup.php:184
+#: ../sales/manage/customer_branches.php:254
 msgid "Prompt Payment Discount Account:"
 msgstr ""
 
-#: admin/gl_setup.php:174
+#: ../admin/gl_setup.php:186
 msgid "Delivery Required By:"
 msgstr ""
 
-#: admin/gl_setup.php:180
+#: ../admin/gl_setup.php:192
 msgid "Dimension Defaults"
 msgstr ""
 
-#: admin/gl_setup.php:182
+#: ../admin/gl_setup.php:194
 msgid "Dimension Required By After:"
 msgstr ""
 
-#: admin/gl_setup.php:185
+#: ../admin/gl_setup.php:198
 msgid "Suppliers and Purchasing"
 msgstr ""
 
-#: admin/gl_setup.php:187
+#: ../admin/gl_setup.php:200
 msgid "Delivery Over-Receive Allowance:"
 msgstr ""
 
-#: admin/gl_setup.php:189
+#: ../admin/gl_setup.php:202
 msgid "Invoice Over-Charge Allowance:"
 msgstr ""
 
-#: admin/gl_setup.php:191
+#: ../admin/gl_setup.php:204
 msgid "Suppliers and Purchasing Defaults"
 msgstr ""
 
-#: admin/gl_setup.php:193
+#: ../admin/gl_setup.php:206
 msgid "Payable Account:"
 msgstr ""
 
-#: admin/gl_setup.php:195 purchasing/manage/suppliers.php:126
+#: ../admin/gl_setup.php:208
+#: ../purchasing/manage/suppliers.php:133
 msgid "Purchase Discount Account:"
 msgstr ""
 
-#: admin/gl_setup.php:197
+#: ../admin/gl_setup.php:210
 msgid "GRN Clearing Account:"
 msgstr ""
 
-#: admin/gl_setup.php:197
+#: ../admin/gl_setup.php:210
 msgid "No postings on GRN"
 msgstr ""
 
-#: admin/gl_setup.php:199 reporting/reports_main.php:206
+#: ../admin/gl_setup.php:212
+msgid "Receival Required By:"
+msgstr ""
+
+#: ../admin/gl_setup.php:214
+#: ../reporting/reports_main.php:206
 msgid "Inventory"
 msgstr ""
 
-#: admin/gl_setup.php:201
+#: ../admin/gl_setup.php:216
 msgid "Allow Negative Inventory:"
 msgstr ""
 
-#: admin/gl_setup.php:202
+#: ../admin/gl_setup.php:217
 msgid "Warning:  This may cause a delay in GL postings"
 msgstr ""
 
-#: admin/gl_setup.php:204
+#: ../admin/gl_setup.php:219
 msgid "Items Defaults"
 msgstr ""
 
-#: admin/gl_setup.php:207 inventory/manage/item_categories.php:202
-#: inventory/manage/items.php:358
+#: ../admin/gl_setup.php:222
+#: ../inventory/manage/item_categories.php:206
+#: ../inventory/manage/items.php:369
 msgid "Inventory Account:"
 msgstr ""
 
-#: admin/gl_setup.php:209 inventory/manage/item_categories.php:196
-#: inventory/manage/item_categories.php:204 inventory/manage/items.php:359
-#: inventory/manage/items.php:364
+#: ../admin/gl_setup.php:224
+#: ../inventory/manage/item_categories.php:200
+#: ../inventory/manage/item_categories.php:208
+#: ../inventory/manage/items.php:370
+#: ../inventory/manage/items.php:375
 msgid "C.O.G.S. Account:"
 msgstr ""
 
-#: admin/gl_setup.php:211 inventory/manage/item_categories.php:205
-#: inventory/manage/items.php:360
+#: ../admin/gl_setup.php:226
+#: ../inventory/manage/item_categories.php:209
+#: ../inventory/manage/items.php:371
 msgid "Inventory Adjustments Account:"
 msgstr ""
 
-#: admin/gl_setup.php:213 inventory/manage/item_categories.php:209
-#: inventory/manage/items.php:371
+#: ../admin/gl_setup.php:228
+#: ../inventory/manage/item_categories.php:213
+#: ../inventory/manage/items.php:382
 msgid "Item Assembly Costs Account:"
 msgstr ""
 
-#: admin/gl_setup.php:217
+#: ../admin/gl_setup.php:232
 msgid "Manufacturing Defaults"
 msgstr ""
 
-#: admin/gl_setup.php:219
+#: ../admin/gl_setup.php:234
 msgid "Work Order Required By After:"
 msgstr ""
 
-#: admin/inst_chart.php:20
+#: ../admin/inst_chart.php:20
 msgid "Install Charts of Accounts"
 msgstr ""
 
-#: admin/inst_chart.php:35
+#: ../admin/inst_chart.php:35
 msgid "Selected chart has been successfully deleted"
 msgstr ""
 
-#: admin/inst_chart.php:50
+#: ../admin/inst_chart.php:50
 msgid "Chart"
 msgstr ""
 
-#: admin/inst_chart.php:50 admin/inst_lang.php:36 admin/inst_module.php:105
-#: admin/inst_theme.php:74 admin/inst_upgrade.php:155
+#: ../admin/inst_chart.php:50
+#: ../admin/inst_lang.php:36
+#: ../admin/inst_module.php:105
+#: ../admin/inst_theme.php:74
+#: ../admin/inst_upgrade.php:159
 msgid "Installed"
 msgstr ""
 
-#: admin/inst_chart.php:50 admin/inst_lang.php:36 admin/inst_module.php:105
-#: admin/inst_theme.php:74 inventory/inquiry/stock_status.php:77
-#: reporting/rep303.php:114
+#: ../admin/inst_chart.php:50
+#: ../admin/inst_lang.php:36
+#: ../admin/inst_module.php:105
+#: ../admin/inst_theme.php:74
+#: ../inventory/inquiry/stock_status.php:71
+#: ../reporting/rep303.php:114
 msgid "Available"
 msgstr ""
 
-#: admin/inst_chart.php:50 admin/inst_lang.php:35 admin/inst_lang.php:220
+#: ../admin/inst_chart.php:50
+#: ../admin/inst_lang.php:35
+#: ../admin/inst_lang.php:220
 msgid "Encoding"
 msgstr ""
 
-#: admin/inst_chart.php:69 admin/inst_chart.php:71 admin/inst_lang.php:88
-#: admin/inst_module.php:127 admin/inst_module.php:128 admin/inst_theme.php:92
+#: ../admin/inst_chart.php:69
+#: ../admin/inst_chart.php:71
+#: ../admin/inst_lang.php:88
+#: ../admin/inst_module.php:127
+#: ../admin/inst_module.php:128
+#: ../admin/inst_theme.php:92
+#: ../includes/sysnames.inc:193
 msgid "Unknown"
 msgstr ""
 
-#: admin/inst_chart.php:74 admin/inst_lang.php:103 admin/inst_module.php:132
-#: admin/inst_module.php:137 admin/inst_theme.php:96
-#: admin/inst_upgrade.php:137
+#: ../admin/inst_chart.php:74
+#: ../admin/inst_lang.php:103
+#: ../admin/inst_module.php:132
+#: ../admin/inst_module.php:137
+#: ../admin/inst_theme.php:96
+#: ../admin/inst_upgrade.php:141
 msgid "Install"
 msgstr ""
 
-#: admin/inst_chart.php:75 admin/inst_module.php:138 admin/inst_theme.php:97
+#: ../admin/inst_chart.php:75
+#: ../admin/inst_module.php:138
+#: ../admin/inst_theme.php:97
 msgid "Upload and install latest extension package"
 msgstr ""
 
-#: admin/inst_chart.php:82 admin/inst_module.php:145 admin/inst_theme.php:104
+#: ../admin/inst_chart.php:82
+#: ../admin/inst_module.php:145
+#: ../admin/inst_theme.php:104
 #, php-format
 msgid ""
 "You are about to remove package \\'%s\\'.\n"
 "Do you want to continue ?"
 msgstr ""
 
-#: admin/inst_lang.php:23
+#: ../admin/inst_lang.php:23
 msgid "Install/Update Languages"
 msgstr ""
 
-#: admin/inst_lang.php:35 admin/printers.php:84
-#: admin/shipping_companies.php:91 dimensions/dimension_entry.php:271
-#: dimensions/inquiry/search_dimensions.php:129
-#: dimensions/view/view_dimension.php:55
-#: inventory/manage/item_categories.php:98
-#: manufacturing/manage/work_centres.php:101
-#: purchasing/includes/ui/invoice_ui.inc:258
-#: purchasing/includes/ui/invoice_ui.inc:260
-#: purchasing/includes/ui/invoice_ui.inc:262 reporting/rep501.php:87
-#: reporting/rep709.php:111 reporting/rep709.php:112
-#: sales/manage/customer_branches.php:294 sales/manage/sales_people.php:99
-#: taxes/item_tax_types.php:117
+#: ../admin/inst_lang.php:35
+#: ../admin/printers.php:84
+#: ../admin/shipping_companies.php:91
+#: ../dimensions/dimension_entry.php:271
+#: ../dimensions/inquiry/search_dimensions.php:129
+#: ../dimensions/view/view_dimension.php:55
+#: ../inventory/manage/item_categories.php:98
+#: ../manufacturing/manage/work_centres.php:101
+#: ../purchasing/includes/ui/invoice_ui.inc:280
+#: ../purchasing/includes/ui/invoice_ui.inc:282
+#: ../purchasing/includes/ui/invoice_ui.inc:284
+#: ../reporting/rep501.php:87
+#: ../reporting/rep709.php:111
+#: ../reporting/rep709.php:112
+#: ../sales/manage/customer_branches.php:296
+#: ../sales/manage/sales_people.php:99
+#: ../taxes/item_tax_types.php:117
 msgid "Name"
 msgstr ""
 
-#: admin/inst_lang.php:35 admin/inst_lang.php:222
+#: ../admin/inst_lang.php:35
+#: ../admin/inst_lang.php:222
 msgid "Right To Left"
 msgstr ""
 
-#: admin/inst_lang.php:47
+#: ../admin/inst_lang.php:47
 msgid "Supported"
 msgstr ""
 
-#: admin/inst_lang.php:49
+#: ../admin/inst_lang.php:49
 msgid "Display also languages not supported by server locales"
 msgstr ""
 
-#: admin/inst_lang.php:100
+#: ../admin/inst_lang.php:100
 msgid "Edit non standard language configuration"
 msgstr ""
 
-#: admin/inst_lang.php:104
+#: ../admin/inst_lang.php:104
 msgid "Upload and install latest language package"
 msgstr ""
 
-#: admin/inst_lang.php:111
+#: ../admin/inst_lang.php:111
 #, php-format
 msgid ""
 "You are about to remove language \\'%s\\'.\n"
 "Do you want to continue ?"
 msgstr ""
 
-#: admin/inst_lang.php:118
+#: ../admin/inst_lang.php:118
 msgid "The marked language is the current language which cannot be deleted."
 msgstr ""
 
-#: admin/inst_lang.php:120
+#: ../admin/inst_lang.php:120
 msgid "Update default"
 msgstr ""
 
-#: admin/inst_lang.php:122
+#: ../admin/inst_lang.php:122
 msgid "Add new language manually"
 msgstr ""
 
-#: admin/inst_lang.php:135
+#: ../admin/inst_lang.php:135
 msgid "Language name, code nor encoding cannot be empty"
 msgstr ""
 
-#: admin/inst_lang.php:140
+#: ../admin/inst_lang.php:140
 msgid ""
 "Standard package for this language is already installed. If you want to "
 "install this language manually, uninstall standard language package first."
 msgstr ""
 
-#: admin/inst_lang.php:218
+#: ../admin/inst_lang.php:218
 msgid "Language Code"
 msgstr ""
 
-#: admin/inst_lang.php:219
+#: ../admin/inst_lang.php:219
 msgid "Language Name"
 msgstr ""
 
-#: admin/inst_lang.php:223
+#: ../admin/inst_lang.php:223
 msgid "Default Language"
 msgstr ""
 
-#: admin/inst_lang.php:225 admin/inst_lang.php:226
+#: ../admin/inst_lang.php:225
+#: ../admin/inst_lang.php:226
 msgid "Language File"
 msgstr ""
 
-#: admin/inst_lang.php:229
+#: ../admin/inst_lang.php:229
 msgid "Select your language files from your local harddisk."
 msgstr ""
 
-#: admin/inst_module.php:20
+#: ../admin/inst_module.php:20
 msgid "Install/Activate extensions"
 msgstr ""
 
-#: admin/inst_module.php:78
+#: ../admin/inst_module.php:78
 msgid "Selected extension has been successfully deleted"
 msgstr ""
 
-#: admin/inst_module.php:104 admin/inst_module.php:168
+#: ../admin/inst_module.php:104
+#: ../admin/inst_module.php:168
 msgid "Extension"
 msgstr ""
 
-#: admin/inst_module.php:104 admin/inst_module.php:168
+#: ../admin/inst_module.php:104
+#: ../admin/inst_module.php:168
 msgid "Modules provided"
 msgstr ""
 
-#: admin/inst_module.php:104 admin/inst_module.php:168
+#: ../admin/inst_module.php:104
+#: ../admin/inst_module.php:168
 msgid "Options provided"
 msgstr ""
 
-#: admin/inst_module.php:132
+#: ../admin/inst_module.php:132
 msgid "Install third-party extension."
 msgstr ""
 
-#: admin/inst_module.php:168 includes/ui/ui_lists.inc:676
-#: includes/ui/ui_lists.inc:2156 reporting/includes/excel_report.inc:232
-#: reporting/includes/pdf_report.inc:264
+#: ../admin/inst_module.php:168
+#: ../includes/ui/ui_lists.inc:675
+#: ../includes/ui/ui_lists.inc:2160
+#: ../reporting/includes/excel_report.inc:232
+#: ../reporting/includes/pdf_report.inc:264
 msgid "Active"
 msgstr ""
 
-#: admin/inst_module.php:231
+#: ../admin/inst_module.php:231
 msgid "Status change for some extensions failed."
 msgstr ""
 
-#: admin/inst_module.php:234
+#: ../admin/inst_module.php:234
 msgid "Current active extensions set has been saved."
 msgstr ""
 
-#: admin/inst_module.php:256
+#: ../admin/inst_module.php:256
 msgid "Extensions:"
 msgstr ""
 
-#: admin/inst_theme.php:20
+#: ../admin/inst_theme.php:20
 msgid "Install Themes"
 msgstr ""
 
-#: admin/inst_theme.php:59
+#: ../admin/inst_theme.php:59
 msgid "Selected theme has been successfully deleted"
 msgstr ""
 
-#: admin/inst_theme.php:74
+#: ../admin/inst_theme.php:74
 msgid "Theme"
 msgstr ""
 
-#: admin/inst_upgrade.php:16
+#: ../admin/inst_upgrade.php:16
 msgid "Software Upgrade"
 msgstr ""
 
-#: admin/inst_upgrade.php:72
+#: ../admin/inst_upgrade.php:72
 #, php-format
 msgid "Database upgrade for company '%s' (%s:%s*) started..."
 msgstr ""
 
-#: admin/inst_upgrade.php:80
+#: ../admin/inst_upgrade.php:83
 msgid "Database upgrade finished."
 msgstr ""
 
-#: admin/inst_upgrade.php:84
+#: ../admin/inst_upgrade.php:86
 msgid ""
 "Upgrade cannot be done because database has been already partially upgraded. "
 "Please downgrade database to clean previous version or try forced upgrade."
 msgstr ""
 
-#: admin/inst_upgrade.php:102
+#: ../admin/inst_upgrade.php:104
 msgid "Cannot connect to database for company"
 msgstr ""
 
-#: admin/inst_upgrade.php:114
+#: ../admin/inst_upgrade.php:117
 #, php-format
 msgid "Database upgrade to version %s failed for company '%s'."
 msgstr ""
 
-#: admin/inst_upgrade.php:117
+#: ../admin/inst_upgrade.php:120
 msgid "You should restore company database from latest backup file"
 msgstr ""
 
-#: admin/inst_upgrade.php:129
+#: ../admin/inst_upgrade.php:133
 msgid "All companies data has been successfully updated"
 msgstr ""
 
-#: admin/inst_upgrade.php:137
+#: ../admin/inst_upgrade.php:141
 msgid "Sql file"
 msgstr ""
 
-#: admin/inst_upgrade.php:138
+#: ../admin/inst_upgrade.php:142
 msgid "Force upgrade"
 msgstr ""
 
-#: admin/inst_upgrade.php:161
+#: ../admin/inst_upgrade.php:165
 #, php-format
 msgid "Partially installed (%s)"
 msgstr ""
 
-#: admin/inst_upgrade.php:170
+#: ../admin/inst_upgrade.php:174
 msgid ""
 "Database upgrades marked as partially installed cannot be installed "
 "automatically.\n"
@@ -1547,7903 +1866,9069 @@ msgid ""
 "upgrade."
 msgstr ""
 
-#: admin/inst_upgrade.php:174
+#: ../admin/inst_upgrade.php:178
 msgid "Upgrade system"
 msgstr ""
 
-#: admin/inst_upgrade.php:174
+#: ../admin/inst_upgrade.php:178
 msgid "Save database and perform upgrade"
 msgstr ""
 
-#: admin/payment_terms.php:16 reporting/includes/doctext.inc:242
-#: sales/view/view_invoice.php:74 sales/view/view_sales_order.php:78
+#: ../admin/payment_terms.php:16
+#: ../reporting/includes/doctext.inc:41
+#: ../sales/view/view_invoice.php:76
+#: ../sales/view/view_sales_order.php:82
+#: ../sales/view/view_sales_order.php:90
 msgid "Payment Terms"
 msgstr ""
 
-#: admin/payment_terms.php:51
+#: ../admin/payment_terms.php:51
 msgid "The number of days or the day in the following month must be numeric."
 msgstr ""
 
-#: admin/payment_terms.php:57
+#: ../admin/payment_terms.php:57
 msgid "The Terms description must be entered."
 msgstr ""
 
-#: admin/payment_terms.php:77
+#: ../admin/payment_terms.php:77
 msgid "Selected payment terms have been updated"
 msgstr ""
 
-#: admin/payment_terms.php:82
+#: ../admin/payment_terms.php:82
 msgid "New payment terms have been added"
 msgstr ""
 
-#: admin/payment_terms.php:95
+#: ../admin/payment_terms.php:95
 msgid ""
 "Cannot delete this payment term, because customer accounts have been created "
 "referring to this term."
 msgstr ""
 
-#: admin/payment_terms.php:101
+#: ../admin/payment_terms.php:101
 msgid ""
 "Cannot delete this payment term, because supplier accounts have been created "
 "referring to this term"
 msgstr ""
 
-#: admin/payment_terms.php:107
+#: ../admin/payment_terms.php:107
 msgid "Selected payment terms have been deleted"
 msgstr ""
 
-#: admin/payment_terms.php:127 dimensions/dimension_entry.php:275
-#: dimensions/inquiry/search_dimensions.php:75
-#: dimensions/inquiry/search_dimensions.php:130
-#: dimensions/view/view_dimension.php:55 gl/bank_account_reconcile.php:233
-#: gl/inquiry/bank_inquiry.php:70 gl/inquiry/gl_account_inquiry.php:126
-#: gl/inquiry/journal_inquiry.php:129 gl/inquiry/tax_inquiry.php:82
-#: gl/manage/bank_accounts.php:106 gl/manage/gl_quick_entries.php:186
-#: gl/view/accrual_trans.php:52 gl/includes/ui/gl_bank_ui.inc:93
-#: includes/ui/ui_view.inc:547 inventory/inquiry/stock_movements.php:82
-#: inventory/manage/item_categories.php:98
-#: manufacturing/search_work_orders.php:161
-#: manufacturing/includes/manufacturing_ui.inc:236
-#: manufacturing/includes/manufacturing_ui.inc:276
-#: manufacturing/includes/manufacturing_ui.inc:280
-#: manufacturing/includes/manufacturing_ui.inc:331
-#: purchasing/inquiry/supplier_allocation_inquiry.php:126
-#: purchasing/inquiry/supplier_inquiry.php:168 reporting/rep102.php:134
-#: reporting/rep202.php:139 reporting/rep501.php:87 reporting/rep601.php:79
-#: reporting/rep702.php:60 reporting/rep704.php:83 reporting/rep704.php:86
-#: reporting/rep704.php:89 reporting/rep709.php:107 reporting/rep710.php:78
-#: reporting/rep710.php:86 reporting/reports_main.php:327
-#: reporting/reports_main.php:491 reporting/includes/doctext.inc:140
-#: reporting/includes/doctext.inc:181 reporting/includes/doctext.inc:200
-#: sales/inquiry/customer_allocation_inquiry.php:144
-#: sales/inquiry/customer_inquiry.php:217
+#: ../admin/payment_terms.php:127
+#: ../dimensions/dimension_entry.php:275
+#: ../dimensions/inquiry/search_dimensions.php:75
+#: ../dimensions/inquiry/search_dimensions.php:130
+#: ../dimensions/view/view_dimension.php:55
+#: ../gl/bank_account_reconcile.php:231
+#: ../gl/inquiry/bank_inquiry.php:70
+#: ../gl/inquiry/gl_account_inquiry.php:126
+#: ../gl/inquiry/journal_inquiry.php:129
+#: ../gl/inquiry/tax_inquiry.php:82
+#: ../gl/manage/bank_accounts.php:109
+#: ../gl/manage/gl_quick_entries.php:186
+#: ../gl/view/accrual_trans.php:52
+#: ../gl/includes/ui/gl_bank_ui.inc:93
+#: ../includes/ui/ui_view.inc:547
+#: ../inventory/inquiry/stock_movements.php:78
+#: ../inventory/manage/item_categories.php:98
+#: ../manufacturing/search_work_orders.php:161
+#: ../manufacturing/view/wo_costs_view.php:46
+#: ../manufacturing/includes/manufacturing_ui.inc:236
+#: ../manufacturing/includes/manufacturing_ui.inc:276
+#: ../manufacturing/includes/manufacturing_ui.inc:280
+#: ../manufacturing/includes/manufacturing_ui.inc:331
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:126
+#: ../purchasing/inquiry/supplier_inquiry.php:173
+#: ../reporting/rep102.php:134
+#: ../reporting/rep202.php:139
+#: ../reporting/rep501.php:87
+#: ../reporting/rep601.php:79
+#: ../reporting/rep602.php:80
+#: ../reporting/rep702.php:60
+#: ../reporting/rep704.php:83
+#: ../reporting/rep704.php:86
+#: ../reporting/rep704.php:89
+#: ../reporting/rep709.php:107
+#: ../reporting/rep710.php:78
+#: ../reporting/rep710.php:86
+#: ../reporting/reports_main.php:333
+#: ../reporting/reports_main.php:497
+#: ../reporting/includes/doctext.inc:162
+#: ../reporting/includes/doctext.inc:203
+#: ../reporting/includes/doctext.inc:222
+#: ../sales/inquiry/customer_allocation_inquiry.php:144
+#: ../sales/inquiry/customer_inquiry.php:200
 msgid "Type"
 msgstr ""
 
-#: admin/payment_terms.php:127
+#: ../admin/payment_terms.php:127
 msgid "Due After/Days"
 msgstr ""
 
-#: admin/payment_terms.php:140
+#: ../admin/payment_terms.php:140
+#: ../admin/void_transaction.php:125
 msgid "N/A"
 msgstr ""
 
-#: admin/payment_terms.php:174
+#: ../admin/payment_terms.php:174
 msgid "Terms Description:"
 msgstr ""
 
-#: admin/payment_terms.php:176
+#: ../admin/payment_terms.php:176
 msgid "Payment type:"
 msgstr ""
 
-#: admin/payment_terms.php:179
+#: ../admin/payment_terms.php:179
 msgid "Days (Or Day In Following Month):"
 msgstr ""
 
-#: admin/printers.php:16
+#: ../admin/printers.php:16
 msgid "Printer Locations"
 msgstr ""
 
-#: admin/printers.php:31
+#: ../admin/printers.php:31
 msgid "Printer name cannot be empty."
 msgstr ""
 
-#: admin/printers.php:36
+#: ../admin/printers.php:36
 msgid "You have selected printing to server at user IP."
 msgstr ""
 
-#: admin/printers.php:41
+#: ../admin/printers.php:41
 msgid "Timeout cannot be less than zero nor longer than 60 (sec)."
 msgstr ""
 
-#: admin/printers.php:52
+#: ../admin/printers.php:52
 msgid "New printer definition has been created"
 msgstr ""
 
-#: admin/printers.php:53
+#: ../admin/printers.php:53
 msgid "Selected printer definition has been updated"
 msgstr ""
 
-#: admin/printers.php:64
+#: ../admin/printers.php:64
 msgid ""
 "Cannot delete this printer definition, because print profile have been "
 "created using it."
 msgstr ""
 
-#: admin/printers.php:69
+#: ../admin/printers.php:69
 msgid "Selected printer definition has been deleted"
 msgstr ""
 
-#: admin/printers.php:84 admin/printers.php:136
+#: ../admin/printers.php:84
+#: ../admin/printers.php:136
 msgid "Printer Queue"
 msgstr ""
 
-#: admin/printers.php:132
+#: ../admin/printers.php:132
 msgid "Printer Name"
 msgstr ""
 
-#: admin/printers.php:133
+#: ../admin/printers.php:133
 msgid "Printer Description"
 msgstr ""
 
-#: admin/printers.php:134
+#: ../admin/printers.php:134
 msgid "Host name or IP"
 msgstr ""
 
-#: admin/printers.php:135
+#: ../admin/printers.php:135
 msgid "Port"
 msgstr ""
 
-#: admin/printers.php:137
+#: ../admin/printers.php:137
 msgid "Timeout"
 msgstr ""
 
-#: admin/print_profiles.php:18
+#: ../admin/print_profiles.php:18
 msgid "Printing Profiles"
 msgstr ""
 
-#: admin/print_profiles.php:33
+#: ../admin/print_profiles.php:33
 msgid "Default printing destination"
 msgstr ""
 
-#: admin/print_profiles.php:91
+#: ../admin/print_profiles.php:91
 msgid "Printing profile name cannot be empty."
 msgstr ""
 
-#: admin/print_profiles.php:107
+#: ../admin/print_profiles.php:107
 msgid "New printing profile has been created"
 msgstr ""
 
-#: admin/print_profiles.php:110
+#: ../admin/print_profiles.php:110
 msgid "Printing profile has been updated"
 msgstr ""
 
-#: admin/print_profiles.php:119
+#: ../admin/print_profiles.php:119
 msgid "Selected printing profile has been deleted"
 msgstr ""
 
-#: admin/print_profiles.php:130
+#: ../admin/print_profiles.php:130
 msgid "Select printing profile"
 msgstr ""
 
-#: admin/print_profiles.php:131
+#: ../admin/print_profiles.php:131
 msgid "New printing profile"
 msgstr ""
 
-#: admin/print_profiles.php:136 admin/print_profiles.php:138
+#: ../admin/print_profiles.php:136
+#: ../admin/print_profiles.php:138
 msgid "Printing Profile Name"
 msgstr ""
 
-#: admin/print_profiles.php:148
+#: ../admin/print_profiles.php:148
 msgid "Report Id"
 msgstr ""
 
-#: admin/print_profiles.php:148
+#: ../admin/print_profiles.php:148
 msgid "Printer"
 msgstr ""
 
-#: admin/print_profiles.php:162
+#: ../admin/print_profiles.php:162
 msgid "Browser support"
 msgstr ""
 
-#: admin/print_profiles.php:169
+#: ../admin/print_profiles.php:169
 msgid "no title was found in this report definition file."
 msgstr ""
 
-#: admin/print_profiles.php:175
+#: ../admin/print_profiles.php:175
 msgid "Add New Profile"
 msgstr ""
 
-#: admin/print_profiles.php:177
+#: ../admin/print_profiles.php:177
 msgid "Update Profile"
 msgstr ""
 
-#: admin/print_profiles.php:178
+#: ../admin/print_profiles.php:178
 msgid "Update printer profile"
 msgstr ""
 
-#: admin/print_profiles.php:179
+#: ../admin/print_profiles.php:179
 msgid "Delete Profile"
 msgstr ""
 
-#: admin/print_profiles.php:180
+#: ../admin/print_profiles.php:180
 msgid "Delete printer profile (only if not used by any user)"
 msgstr ""
 
-#: admin/security_roles.php:18
+#: ../admin/security_roles.php:18
 msgid "Access setup"
 msgstr ""
 
-#: admin/security_roles.php:63
+#: ../admin/security_roles.php:63
 msgid "Role description cannot be empty."
 msgstr ""
 
-#: admin/security_roles.php:69
+#: ../admin/security_roles.php:69
 msgid "Role name cannot be empty."
 msgstr ""
 
-#: admin/security_roles.php:76
+#: ../admin/security_roles.php:76
 msgid ""
 "Access level edition in Company setup section have to be enabled for your "
 "account."
 msgstr ""
 
-#: admin/security_roles.php:105
+#: ../admin/security_roles.php:105
 msgid "New security role has been added."
 msgstr ""
 
-#: admin/security_roles.php:113
+#: ../admin/security_roles.php:113
 msgid "Security role has been updated."
 msgstr ""
 
-#: admin/security_roles.php:126
+#: ../admin/security_roles.php:126
 msgid "This role is currently assigned to some users and cannot be deleted"
 msgstr ""
 
-#: admin/security_roles.php:129
+#: ../admin/security_roles.php:129
 msgid "Security role has been sucessfully deleted."
 msgstr ""
 
-#: admin/security_roles.php:178
+#: ../admin/security_roles.php:178
 msgid "Role:"
 msgstr ""
 
-#: admin/security_roles.php:180 gl/manage/gl_accounts.php:199
-#: inventory/manage/items.php:433 purchasing/manage/suppliers.php:289
-#: sales/manage/customers.php:329
+#: ../admin/security_roles.php:180
+#: ../gl/manage/gl_accounts.php:198
+#: ../inventory/manage/items.php:444
+#: ../purchasing/manage/suppliers.php:293
+#: ../sales/manage/customers.php:330
 msgid "Show inactive:"
 msgstr ""
 
-#: admin/security_roles.php:195
+#: ../admin/security_roles.php:195
 msgid "Role name:"
 msgstr ""
 
-#: admin/security_roles.php:196
+#: ../admin/security_roles.php:196
 msgid "Role description:"
 msgstr ""
 
-#: admin/security_roles.php:197
+#: ../admin/security_roles.php:197
 msgid "Current status:"
 msgstr ""
 
-#: admin/security_roles.php:221
+#: ../admin/security_roles.php:221
 msgid "On/off set of features"
 msgstr ""
 
-#: admin/security_roles.php:240 admin/security_roles.php:246
+#: ../admin/security_roles.php:240
+#: ../admin/security_roles.php:246
 msgid "Update view"
 msgstr ""
 
-#: admin/security_roles.php:241
+#: ../admin/security_roles.php:241
 msgid "Insert New Role"
 msgstr ""
 
-#: admin/security_roles.php:245
+#: ../admin/security_roles.php:245
 msgid "Save Role"
 msgstr ""
 
-#: admin/security_roles.php:247
+#: ../admin/security_roles.php:247
 msgid "Clone This Role"
 msgstr ""
 
-#: admin/security_roles.php:248
+#: ../admin/security_roles.php:248
 msgid "Delete This Role"
 msgstr ""
 
-#: admin/security_roles.php:249 admin/void_transaction.php:229
-#: gl/manage/gl_quick_entries.php:61 gl/includes/ui/gl_bank_ui.inc:279
-#: gl/includes/ui/gl_journal_ui.inc:223 includes/ui/simple_crud_class.inc:58
-#: includes/ui/simple_crud_class.inc:231 includes/ui/ui_controls.inc:589
-#: includes/ui/ui_input.inc:210 inventory/includes/item_adjustments_ui.inc:159
-#: inventory/includes/stock_transfers_ui.inc:139
-#: inventory/manage/items.php:416
-#: manufacturing/includes/work_order_issue_ui.inc:133
-#: purchasing/includes/ui/po_ui.inc:441
-#: sales/includes/ui/sales_credit_ui.inc:295
-#: sales/includes/ui/sales_order_ui.inc:562
+#: ../admin/security_roles.php:249
+#: ../admin/void_transaction.php:229
+#: ../gl/manage/gl_quick_entries.php:61
+#: ../gl/includes/ui/gl_bank_ui.inc:279
+#: ../gl/includes/ui/gl_journal_ui.inc:259
+#: ../includes/ui/simple_crud_class.inc:58
+#: ../includes/ui/simple_crud_class.inc:231
+#: ../includes/ui/ui_controls.inc:596
+#: ../includes/ui/ui_input.inc:211
+#: ../inventory/includes/item_adjustments_ui.inc:159
+#: ../inventory/includes/stock_transfers_ui.inc:139
+#: ../inventory/manage/items.php:427
+#: ../manufacturing/includes/work_order_issue_ui.inc:133
+#: ../purchasing/includes/ui/po_ui.inc:461
+#: ../sales/includes/ui/sales_credit_ui.inc:295
+#: ../sales/includes/ui/sales_order_ui.inc:563
+#: ../taxes/sav.tax_types.php:173
+#: ../taxes/sav.tax_types.php:253
+#: ../taxes/sav.tax_types.php:256
 msgid "Cancel"
 msgstr ""
 
-#: admin/security_roles.php:249 inventory/manage/items.php:416
+#: ../admin/security_roles.php:249
+#: ../inventory/manage/items.php:427
 msgid "Cancel Edition"
 msgstr ""
 
-#: admin/shipping_companies.php:15 sales/customer_credit_invoice.php:254
-#: sales/customer_delivery.php:368 sales/customer_invoice.php:431
-#: sales/view/view_credit.php:74 sales/view/view_dispatch.php:92
-#: sales/view/view_invoice.php:91
+#: ../admin/shipping_companies.php:15
+#: ../sales/customer_credit_invoice.php:254
+#: ../sales/customer_delivery.php:382
+#: ../sales/customer_invoice.php:497
+#: ../sales/view/view_credit.php:74
+#: ../sales/view/view_dispatch.php:92
+#: ../sales/view/view_invoice.php:92
 msgid "Shipping Company"
 msgstr ""
 
-#: admin/shipping_companies.php:26
+#: ../admin/shipping_companies.php:26
 msgid "The shipping company name cannot be empty."
 msgstr ""
 
-#: admin/shipping_companies.php:37
+#: ../admin/shipping_companies.php:37
 msgid "New shipping company has been added"
 msgstr ""
 
-#: admin/shipping_companies.php:46
+#: ../admin/shipping_companies.php:46
 msgid "Selected shipping company has been updated"
 msgstr ""
 
-#: admin/shipping_companies.php:59
+#: ../admin/shipping_companies.php:59
 msgid ""
 "Cannot delete this shipping company because sales orders have been created "
 "using this shipper."
 msgstr ""
 
-#: admin/shipping_companies.php:67
+#: ../admin/shipping_companies.php:67
 msgid ""
 "Cannot delete this shipping company because invoices have been created using "
 "this shipping company."
 msgstr ""
 
-#: admin/shipping_companies.php:72
+#: ../admin/shipping_companies.php:72
 msgid "Selected shipping company has been deleted"
 msgstr ""
 
-#: admin/shipping_companies.php:91
+#: ../admin/shipping_companies.php:91
 msgid "Contact Person"
 msgstr ""
 
-#: admin/shipping_companies.php:91
+#: ../admin/shipping_companies.php:91
 msgid "Phone Number"
 msgstr ""
 
-#: admin/shipping_companies.php:91 inventory/manage/locations.php:146
+#: ../admin/shipping_companies.php:91
+#: ../inventory/manage/locations.php:146
 msgid "Secondary Phone"
 msgstr ""
 
-#: admin/shipping_companies.php:91 inventory/manage/locations.php:146
+#: ../admin/shipping_companies.php:91
+#: ../inventory/manage/locations.php:146
 msgid "Address"
 msgstr ""
 
-#: admin/shipping_companies.php:134 gl/manage/gl_account_types.php:188
-#: gl/includes/ui/gl_bank_ui.inc:57 inventory/manage/items.php:299
-#: manufacturing/manage/work_centres.php:137
+#: ../admin/shipping_companies.php:134
+#: ../gl/manage/gl_account_types.php:188
+#: ../gl/includes/ui/gl_bank_ui.inc:57
+#: ../inventory/manage/items.php:307
+#: ../manufacturing/manage/work_centres.php:137
 msgid "Name:"
 msgstr ""
 
-#: admin/shipping_companies.php:136 purchasing/manage/suppliers.php:158
-#: sales/manage/customer_branches.php:259
+#: ../admin/shipping_companies.php:136
+#: ../purchasing/manage/suppliers.php:136
+#: ../sales/manage/customer_branches.php:261
 msgid "Contact Person:"
 msgstr ""
 
-#: admin/shipping_companies.php:140 includes/ui/contacts_view.inc:103
-#: inventory/manage/locations.php:205 purchasing/manage/suppliers.php:130
-#: sales/manage/customer_branches.php:261 sales/manage/customers.php:256
+#: ../admin/shipping_companies.php:140
+#: ../includes/ui/contacts_view.inc:103
+#: ../inventory/manage/locations.php:205
+#: ../purchasing/manage/suppliers.php:138
+#: ../sales/manage/customer_branches.php:263
+#: ../sales/manage/customers.php:257
 msgid "Secondary Phone Number:"
 msgstr ""
 
-#: admin/system_diagnostics.php:17
+#: ../admin/system_diagnostics.php:17
 msgid "System Diagnostics"
 msgstr ""
 
-#: admin/tags.php:33
+#: ../admin/tags.php:33
 msgid "Unspecified tag type"
 msgstr ""
 
-#: admin/tags.php:40 reporting/reports_main.php:350
-#: reporting/reports_main.php:359 reporting/reports_main.php:371
-#: reporting/reports_main.php:402 reporting/reports_main.php:410
-#: reporting/reports_main.php:421 reporting/reports_main.php:449
-#: reporting/reports_main.php:456 reporting/reports_main.php:466
+#: ../admin/tags.php:40
+#: ../reporting/reports_main.php:356
+#: ../reporting/reports_main.php:365
+#: ../reporting/reports_main.php:377
+#: ../reporting/reports_main.php:408
+#: ../reporting/reports_main.php:416
+#: ../reporting/reports_main.php:427
+#: ../reporting/reports_main.php:455
+#: ../reporting/reports_main.php:462
+#: ../reporting/reports_main.php:472
 msgid "Account Tags"
 msgstr ""
 
-#: admin/tags.php:44
+#: ../admin/tags.php:44
 msgid "Dimension Tags"
 msgstr ""
 
-#: admin/tags.php:57
+#: ../admin/tags.php:57
 msgid "The tag name cannot be empty."
 msgstr ""
 
-#: admin/tags.php:73
+#: ../admin/tags.php:73
 msgid "Selected tag settings have been updated"
 msgstr ""
 
-#: admin/tags.php:78
+#: ../admin/tags.php:78
 msgid "New tag has been added"
 msgstr ""
 
-#: admin/tags.php:94
+#: ../admin/tags.php:94
 msgid ""
 "Cannot delete this tag because records have been created referring to it."
 msgstr ""
 
-#: admin/tags.php:109
+#: ../admin/tags.php:109
 msgid "Selected tag has been deleted"
 msgstr ""
 
-#: admin/tags.php:128
+#: ../admin/tags.php:128
 msgid "Tag Name"
 msgstr ""
 
-#: admin/tags.php:128
+#: ../admin/tags.php:128
 msgid "Tag Description"
 msgstr ""
 
-#: admin/tags.php:165
+#: ../admin/tags.php:165
 msgid "Tag Name:"
 msgstr ""
 
-#: admin/tags.php:166
+#: ../admin/tags.php:166
 msgid "Tag Description:"
 msgstr ""
 
-#: admin/users.php:16
+#: ../admin/users.php:16
 msgid "Users"
 msgstr ""
 
-#: admin/users.php:31
+#: ../admin/users.php:31
 msgid "The user login entered must be at least 4 characters long."
 msgstr ""
 
-#: admin/users.php:72
+#: ../admin/users.php:72
 msgid "The selected user has been updated."
 msgstr ""
 
-#: admin/users.php:86
+#: ../admin/users.php:86
 msgid "A new user has been added."
 msgstr ""
 
-#: admin/users.php:97
+#: ../admin/users.php:97
 msgid "User has been deleted."
 msgstr ""
 
-#: admin/users.php:114
+#: ../admin/users.php:114
 msgid "User login"
 msgstr ""
 
-#: admin/users.php:114 admin/users.php:198 includes/ui/contacts_view.inc:41
+#: ../admin/users.php:114
+#: ../admin/users.php:198
+#: ../includes/ui/contacts_view.inc:41
 msgid "Full Name"
 msgstr ""
 
-#: admin/users.php:114 includes/ui/contacts_view.inc:41
-#: inventory/manage/locations.php:146 reporting/rep106.php:88
-#: reporting/includes/header2.inc:98 sales/manage/sales_people.php:99
+#: ../admin/users.php:114
+#: ../includes/ui/contacts_view.inc:41
+#: ../inventory/manage/locations.php:146
+#: ../reporting/rep106.php:88
+#: ../reporting/includes/header2.inc:98
+#: ../sales/manage/sales_people.php:99
 msgid "Phone"
 msgstr ""
 
-#: admin/users.php:115 sales/manage/customer_branches.php:300
-#: sales/view/view_sales_order.php:83
+#: ../admin/users.php:115
+#: ../sales/manage/customer_branches.php:302
+#: ../sales/view/view_sales_order.php:96
 msgid "E-mail"
 msgstr ""
 
-#: admin/users.php:115
+#: ../admin/users.php:115
 msgid "Last Visit"
 msgstr ""
 
-#: admin/users.php:115
+#: ../admin/users.php:115
 msgid "Access Level"
 msgstr ""
 
-#: admin/users.php:184
+#: ../admin/users.php:184
 msgid "User Login:"
 msgstr ""
 
-#: admin/users.php:195
+#: ../admin/users.php:195
 msgid "Enter a new password to change, leave empty to keep current."
 msgstr ""
 
-#: admin/users.php:200
+#: ../admin/users.php:200
 msgid "Telephone No.:"
 msgstr ""
 
-#: admin/users.php:204
+#: ../admin/users.php:204
 msgid "Access Level:"
 msgstr ""
 
-#: admin/users.php:208
+#: ../admin/users.php:208
 msgid "User's POS"
 msgstr ""
 
-#: admin/users.php:213
+#: ../admin/users.php:213
 msgid "Use popup window for reports:"
 msgstr ""
 
-#: admin/view_print_transaction.php:27
+#: ../admin/view_print_transaction.php:27
 msgid "View or Print Transactions"
 msgstr ""
 
-#: admin/view_print_transaction.php:43 admin/view_print_transaction.php:45
-#: admin/view_print_transaction.php:129 includes/ui/ui_controls.inc:188
-#: purchasing/inquiry/po_search_completed.php:113
-#: purchasing/inquiry/po_search.php:93 sales/inquiry/customer_inquiry.php:202
-#: sales/inquiry/sales_deliveries_view.php:160
-#: sales/inquiry/sales_orders_view.php:119
+#: ../admin/view_print_transaction.php:43
+#: ../admin/view_print_transaction.php:45
+#: ../admin/view_print_transaction.php:129
+#: ../includes/ui/ui_controls.inc:195
+#: ../purchasing/inquiry/po_search_completed.php:112
+#: ../purchasing/inquiry/po_search.php:93
+#: ../sales/inquiry/customer_inquiry.php:185
+#: ../sales/inquiry/sales_deliveries_view.php:160
+#: ../sales/inquiry/sales_orders_view.php:125
 msgid "Print"
 msgstr ""
 
-#: admin/view_print_transaction.php:67
+#: ../admin/view_print_transaction.php:67
 msgid "Only documents can be printed."
 msgstr ""
 
-#: admin/view_print_transaction.php:79 admin/void_transaction.php:166
+#: ../admin/view_print_transaction.php:79
+#: ../admin/void_transaction.php:166
 msgid "from #:"
 msgstr ""
 
-#: admin/view_print_transaction.php:81 admin/void_transaction.php:168
+#: ../admin/view_print_transaction.php:81
+#: ../admin/void_transaction.php:168
 msgid "to #:"
 msgstr ""
 
-#: admin/view_print_transaction.php:83 admin/void_transaction.php:170
-#: dimensions/inquiry/search_dimensions.php:88
-#: gl/inquiry/journal_inquiry.php:53 manufacturing/search_work_orders.php:78
-#: purchasing/includes/ui/invoice_ui.inc:466
-#: purchasing/inquiry/po_search_completed.php:77
-#: purchasing/inquiry/po_search.php:76
-#: purchasing/inquiry/supplier_allocation_inquiry.php:57
-#: purchasing/inquiry/supplier_inquiry.php:58
-#: sales/inquiry/customer_allocation_inquiry.php:51
-#: sales/inquiry/customer_inquiry.php:58
-#: sales/inquiry/sales_deliveries_view.php:116
-#: sales/inquiry/sales_orders_view.php:247
+#: ../admin/view_print_transaction.php:83
+#: ../admin/void_transaction.php:170
+#: ../dimensions/inquiry/search_dimensions.php:88
+#: ../gl/inquiry/journal_inquiry.php:53
+#: ../manufacturing/search_work_orders.php:78
+#: ../purchasing/includes/ui/invoice_ui.inc:489
+#: ../purchasing/inquiry/po_search_completed.php:74
+#: ../purchasing/inquiry/po_search.php:76
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:57
+#: ../purchasing/inquiry/supplier_inquiry.php:55
+#: ../sales/inquiry/customer_allocation_inquiry.php:51
+#: ../sales/inquiry/customer_inquiry.php:54
+#: ../sales/inquiry/sales_deliveries_view.php:116
+#: ../sales/inquiry/sales_orders_view.php:270
 msgid "Search"
 msgstr ""
 
-#: admin/view_print_transaction.php:96
+#: ../admin/view_print_transaction.php:96
 msgid ""
 "The starting transaction number is expected to be numeric and greater than "
 "zero."
 msgstr ""
 
-#: admin/view_print_transaction.php:102
+#: ../admin/view_print_transaction.php:102
 msgid ""
 "The ending transaction number is expected to be numeric and greater than "
 "zero."
 msgstr ""
 
-#: admin/view_print_transaction.php:127 admin/void_transaction.php:182
-#: dimensions/inquiry/search_dimensions.php:128
-#: dimensions/view/view_dimension.php:55 gl/bank_account_reconcile.php:235
-#: gl/inquiry/bank_inquiry.php:70 gl/inquiry/journal_inquiry.php:131
-#: gl/view/bank_transfer_view.php:86 gl/view/gl_deposit_view.php:80
-#: gl/view/gl_payment_view.php:78 gl/view/gl_trans_view.php:35
-#: includes/ui/contacts_view.inc:41 inventory/inquiry/stock_movements.php:82
-#: inventory/view/view_adjustment.php:44 inventory/view/view_transfer.php:44
-#: manufacturing/search_work_orders.php:160
-#: manufacturing/view/wo_issue_view.php:43
-#: manufacturing/view/wo_production_view.php:44
-#: manufacturing/includes/manufacturing_ui.inc:157
-#: manufacturing/includes/manufacturing_ui.inc:200
-#: manufacturing/includes/manufacturing_ui.inc:276
-#: manufacturing/includes/manufacturing_ui.inc:280
-#: manufacturing/includes/manufacturing_ui.inc:331
-#: purchasing/includes/ui/grn_ui.inc:32 purchasing/includes/ui/grn_ui.inc:64
-#: purchasing/includes/ui/po_ui.inc:311 purchasing/view/view_po.php:115
-#: purchasing/view/view_supp_credit.php:43
-#: purchasing/view/view_supp_invoice.php:46
-#: purchasing/view/view_supp_payment.php:73
-#: purchasing/inquiry/po_search_completed.php:122
-#: purchasing/inquiry/po_search.php:131
-#: purchasing/inquiry/supplier_allocation_inquiry.php:128
-#: purchasing/inquiry/supplier_inquiry.php:170
-#: purchasing/allocations/supplier_allocation_main.php:96
-#: reporting/rep501.php:87 reporting/rep601.php:79 reporting/rep702.php:53
-#: reporting/includes/doctext.inc:199 sales/customer_credit_invoice.php:245
-#: sales/customer_credit_invoice.php:247 sales/customer_delivery.php:348
-#: sales/customer_delivery.php:350 sales/customer_invoice.php:403
-#: sales/customer_invoice.php:405
-#: sales/allocations/customer_allocation_main.php:95
-#: sales/view/view_dispatch.php:85 sales/view/view_invoice.php:84
-#: sales/view/view_receipt.php:39 sales/view/view_sales_order.php:81
-#: sales/inquiry/customer_allocation_inquiry.php:146
-#: sales/inquiry/customer_inquiry.php:220
-#: sales/inquiry/sales_deliveries_view.php:184
-#: sales/includes/ui/sales_credit_ui.inc:85
-#: sales/includes/ui/sales_credit_ui.inc:87
-#: sales/includes/ui/sales_order_ui.inc:378
+#: ../admin/view_print_transaction.php:127
+#: ../admin/void_transaction.php:182
+#: ../dimensions/inquiry/search_dimensions.php:128
+#: ../dimensions/view/view_dimension.php:55
+#: ../gl/bank_account_reconcile.php:233
+#: ../gl/inquiry/bank_inquiry.php:70
+#: ../gl/inquiry/journal_inquiry.php:131
+#: ../gl/view/bank_transfer_view.php:86
+#: ../gl/view/gl_deposit_view.php:80
+#: ../gl/view/gl_payment_view.php:78
+#: ../gl/view/gl_trans_view.php:35
+#: ../includes/ui/contacts_view.inc:41
+#: ../inventory/inquiry/stock_movements.php:78
+#: ../inventory/view/view_adjustment.php:44
+#: ../inventory/view/view_transfer.php:44
+#: ../manufacturing/search_work_orders.php:160
+#: ../manufacturing/view/wo_issue_view.php:43
+#: ../manufacturing/view/wo_production_view.php:44
+#: ../manufacturing/includes/manufacturing_ui.inc:157
+#: ../manufacturing/includes/manufacturing_ui.inc:200
+#: ../manufacturing/includes/manufacturing_ui.inc:276
+#: ../manufacturing/includes/manufacturing_ui.inc:280
+#: ../manufacturing/includes/manufacturing_ui.inc:331
+#: ../purchasing/includes/ui/grn_ui.inc:32
+#: ../purchasing/includes/ui/grn_ui.inc:64
+#: ../purchasing/includes/ui/po_ui.inc:323
+#: ../purchasing/view/view_po.php:115
+#: ../purchasing/view/view_supp_credit.php:43
+#: ../purchasing/view/view_supp_invoice.php:47
+#: ../purchasing/view/view_supp_payment.php:73
+#: ../purchasing/inquiry/po_search_completed.php:121
+#: ../purchasing/inquiry/po_search.php:131
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:128
+#: ../purchasing/inquiry/supplier_inquiry.php:175
+#: ../purchasing/allocations/supplier_allocation_main.php:96
+#: ../reporting/rep501.php:87
+#: ../reporting/rep601.php:79
+#: ../reporting/rep602.php:80
+#: ../reporting/rep702.php:53
+#: ../reporting/includes/doctext.inc:221
+#: ../sales/customer_credit_invoice.php:245
+#: ../sales/customer_credit_invoice.php:247
+#: ../sales/customer_delivery.php:362
+#: ../sales/customer_delivery.php:364
+#: ../sales/customer_invoice.php:469
+#: ../sales/customer_invoice.php:471
+#: ../sales/allocations/customer_allocation_main.php:95
+#: ../sales/view/view_dispatch.php:85
+#: ../sales/view/view_invoice.php:85
+#: ../sales/view/view_receipt.php:39
+#: ../sales/view/view_sales_order.php:94
+#: ../sales/inquiry/customer_allocation_inquiry.php:146
+#: ../sales/inquiry/customer_inquiry.php:203
+#: ../sales/inquiry/sales_deliveries_view.php:184
+#: ../sales/includes/ui/sales_credit_ui.inc:85
+#: ../sales/includes/ui/sales_credit_ui.inc:87
+#: ../sales/includes/ui/sales_order_ui.inc:379
 msgid "Reference"
 msgstr ""
 
-#: admin/view_print_transaction.php:128 admin/void_transaction.php:183
-#: dimensions/inquiry/search_dimensions.php:131
-#: dimensions/view/view_dimension.php:55 gl/accruals.php:90
-#: gl/accruals.php:195 gl/bank_account_reconcile.php:236
-#: gl/inquiry/bank_inquiry.php:70 gl/inquiry/gl_account_inquiry.php:126
-#: gl/inquiry/journal_inquiry.php:128 gl/view/accrual_trans.php:52
-#: gl/view/bank_transfer_view.php:83 gl/view/gl_deposit_view.php:68
-#: gl/view/gl_payment_view.php:66 gl/view/gl_trans_view.php:36
-#: includes/ui/allocation_cart.inc:288 includes/ui/mk.allocation_cart.inc:288
-#: includes/ui/ui_view.inc:547 inventory/inquiry/stock_movements.php:84
-#: inventory/view/view_adjustment.php:45 inventory/view/view_transfer.php:47
-#: manufacturing/search_work_orders.php:166
-#: manufacturing/work_order_entry.php:419
-#: manufacturing/work_order_entry.php:425
-#: manufacturing/view/wo_production_view.php:45
-#: manufacturing/includes/manufacturing_ui.inc:157
-#: manufacturing/includes/manufacturing_ui.inc:200
-#: manufacturing/includes/manufacturing_ui.inc:236
-#: manufacturing/includes/manufacturing_ui.inc:277
-#: manufacturing/includes/manufacturing_ui.inc:281
-#: manufacturing/includes/manufacturing_ui.inc:332
-#: purchasing/includes/ui/invoice_ui.inc:116
-#: purchasing/includes/ui/po_ui.inc:325 purchasing/view/view_po.php:140
-#: purchasing/inquiry/supplier_allocation_inquiry.php:131
-#: purchasing/inquiry/supplier_inquiry.php:173
-#: purchasing/allocations/supplier_allocation_main.php:97
-#: reporting/rep101.php:118 reporting/rep201.php:110 reporting/rep306.php:141
-#: reporting/rep501.php:87 reporting/rep601.php:79 reporting/rep704.php:83
-#: reporting/rep704.php:86 reporting/rep704.php:89 reporting/rep709.php:111
-#: reporting/rep710.php:77 reporting/includes/doctext.inc:145
-#: reporting/includes/doctext.inc:186 reporting/includes/doctext.inc:224
-#: reporting/includes/header2.inc:135 sales/customer_delivery.php:378
-#: sales/customer_invoice.php:441
-#: sales/allocations/customer_allocation_main.php:96
-#: sales/view/view_credit.php:69 sales/view/view_sales_order.php:96
-#: sales/view/view_sales_order.php:129 sales/view/view_sales_order.php:161
-#: sales/inquiry/customer_allocation_inquiry.php:148
-#: sales/inquiry/customer_inquiry.php:221
+#: ../admin/view_print_transaction.php:128
+#: ../admin/void_transaction.php:183
+#: ../dimensions/inquiry/search_dimensions.php:131
+#: ../dimensions/view/view_dimension.php:55
+#: ../gl/accruals.php:94
+#: ../gl/accruals.php:199
+#: ../gl/bank_account_reconcile.php:234
+#: ../gl/inquiry/bank_inquiry.php:70
+#: ../gl/inquiry/gl_account_inquiry.php:126
+#: ../gl/inquiry/journal_inquiry.php:128
+#: ../gl/view/accrual_trans.php:52
+#: ../gl/view/bank_transfer_view.php:83
+#: ../gl/view/gl_deposit_view.php:68
+#: ../gl/view/gl_payment_view.php:66
+#: ../gl/view/gl_trans_view.php:36
+#: ../includes/ui/allocation_cart.inc:290
+#: ../includes/ui/ui_view.inc:547
+#: ../inventory/inquiry/stock_movements.php:80
+#: ../inventory/view/view_adjustment.php:45
+#: ../inventory/view/view_transfer.php:47
+#: ../manufacturing/search_work_orders.php:166
+#: ../manufacturing/work_order_entry.php:419
+#: ../manufacturing/work_order_entry.php:425
+#: ../manufacturing/view/wo_costs_view.php:46
+#: ../manufacturing/view/wo_production_view.php:45
+#: ../manufacturing/includes/manufacturing_ui.inc:157
+#: ../manufacturing/includes/manufacturing_ui.inc:200
+#: ../manufacturing/includes/manufacturing_ui.inc:236
+#: ../manufacturing/includes/manufacturing_ui.inc:277
+#: ../manufacturing/includes/manufacturing_ui.inc:281
+#: ../manufacturing/includes/manufacturing_ui.inc:332
+#: ../purchasing/includes/ui/invoice_ui.inc:129
+#: ../purchasing/includes/ui/po_ui.inc:337
+#: ../purchasing/view/view_po.php:140
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:131
+#: ../purchasing/inquiry/supplier_inquiry.php:178
+#: ../purchasing/allocations/supplier_allocation_main.php:97
+#: ../reporting/rep101.php:118
+#: ../reporting/rep107.php:202
+#: ../reporting/rep201.php:110
+#: ../reporting/rep306.php:141
+#: ../reporting/rep501.php:87
+#: ../reporting/rep601.php:79
+#: ../reporting/rep602.php:80
+#: ../reporting/rep704.php:83
+#: ../reporting/rep704.php:86
+#: ../reporting/rep704.php:89
+#: ../reporting/rep709.php:111
+#: ../reporting/rep710.php:77
+#: ../reporting/includes/doctext.inc:167
+#: ../reporting/includes/doctext.inc:208
+#: ../reporting/includes/doctext.inc:246
+#: ../reporting/includes/header2.inc:135
+#: ../sales/customer_delivery.php:392
+#: ../sales/customer_invoice.php:512
+#: ../sales/allocations/customer_allocation_main.php:96
+#: ../sales/view/view_credit.php:69
+#: ../sales/view/view_sales_order.php:109
+#: ../sales/view/view_sales_order.php:142
+#: ../sales/view/view_sales_order.php:179
+#: ../sales/inquiry/customer_allocation_inquiry.php:148
+#: ../sales/inquiry/customer_inquiry.php:204
 msgid "Date"
 msgstr ""
 
-#: admin/view_print_transaction.php:130 admin/void_transaction.php:184
-#: includes/ui/ui_view.inc:51
+#: ../admin/view_print_transaction.php:130
+#: ../admin/void_transaction.php:184
+#: ../includes/ui/ui_view.inc:51
 msgid "GL"
 msgstr ""
 
-#: admin/void_transaction.php:29
+#: ../admin/void_transaction.php:29
 msgid "Void a Transaction"
 msgstr ""
 
-#: admin/void_transaction.php:126 admin/void_transaction.php:185
-#: includes/ui/ui_input.inc:137 includes/ui/ui_input.inc:281
-#: includes/ui/ui_lists.inc:20
+#: ../admin/void_transaction.php:126
+#: ../admin/void_transaction.php:185
+#: ../includes/ui/ui_input.inc:138
+#: ../includes/ui/ui_input.inc:282
+#: ../includes/ui/ui_lists.inc:20
 msgid "Select"
 msgstr ""
 
-#: admin/void_transaction.php:204
+#: ../admin/void_transaction.php:157
+msgid "Transaction Type:"
+msgstr ""
+
+#: ../admin/void_transaction.php:204
 msgid "Transaction #:"
 msgstr ""
 
-#: admin/void_transaction.php:206
+#: ../admin/void_transaction.php:206
 msgid "Voiding Date:"
 msgstr ""
 
-#: admin/void_transaction.php:208 dimensions/dimension_entry.php:283
-#: gl/bank_transfer.php:98 gl/inquiry/journal_inquiry.php:56
-#: gl/manage/revaluate_currencies.php:106 includes/ui/ui_view.inc:344
-#: manufacturing/work_order_add_finished.php:210
-#: manufacturing/work_order_entry.php:451
-#: manufacturing/work_order_release.php:103
-#: purchasing/includes/ui/invoice_ui.inc:174 purchasing/po_entry_items.php:529
-#: purchasing/supplier_payment.php:325 sales/customer_payments.php:399
+#: ../admin/void_transaction.php:208
+#: ../dimensions/dimension_entry.php:283
+#: ../gl/bank_transfer.php:98
+#: ../gl/inquiry/journal_inquiry.php:56
+#: ../gl/manage/revaluate_currencies.php:106
+#: ../includes/ui/ui_view.inc:344
+#: ../manufacturing/work_order_add_finished.php:210
+#: ../manufacturing/work_order_costs.php:146
+#: ../manufacturing/work_order_entry.php:451
+#: ../manufacturing/work_order_release.php:103
+#: ../purchasing/includes/ui/invoice_ui.inc:195
+#: ../purchasing/includes/ui/po_ui.inc:494
+#: ../purchasing/po_entry_items.php:485
+#: ../purchasing/supplier_payment.php:325
+#: ../sales/customer_invoice.php:689
+#: ../sales/customer_payments.php:402
 msgid "Memo:"
 msgstr ""
 
-#: admin/void_transaction.php:213 admin/void_transaction.php:222
+#: ../admin/void_transaction.php:213
+#: ../admin/void_transaction.php:222
 msgid "Void Transaction"
 msgstr ""
 
-#: admin/void_transaction.php:218 admin/void_transaction.php:297
+#: ../admin/void_transaction.php:218
+#: ../admin/void_transaction.php:297
 msgid "The entered transaction does not exist or cannot be voided."
 msgstr ""
 
-#: admin/void_transaction.php:226
+#: ../admin/void_transaction.php:226
 msgid ""
 "Are you sure you want to void this transaction ? This action cannot be "
 "undone."
 msgstr ""
 
-#: admin/void_transaction.php:228 includes/ui/ui_controls.inc:588
+#: ../admin/void_transaction.php:228
+#: ../includes/ui/ui_controls.inc:595
 msgid "Proceed"
 msgstr ""
 
-#: admin/void_transaction.php:242
+#: ../admin/void_transaction.php:242
 msgid "The selected transaction was closed for edition and cannot be voided."
 msgstr ""
 
-#: admin/void_transaction.php:248 gl/accruals.php:32 gl/bank_transfer.php:115
-#: gl/gl_journal.php:156 gl/manage/exchange_rates.php:33
-#: gl/manage/revaluate_currencies.php:53
-#: manufacturing/work_order_add_finished.php:98
-#: manufacturing/work_order_costs.php:83 purchasing/po_receive_items.php:174
-#: purchasing/supplier_payment.php:185 sales/customer_credit_invoice.php:91
-#: sales/sales_order_entry.php:353 sales/manage/recurrent_invoices.php:41
-#: sales/manage/recurrent_invoices.php:46
-#: sales/manage/recurrent_invoices.php:51
+#: ../admin/void_transaction.php:248
+#: ../gl/accruals.php:32
+#: ../gl/bank_transfer.php:115
+#: ../gl/gl_journal.php:162
+#: ../gl/manage/close_period.php:34
+#: ../gl/manage/exchange_rates.php:33
+#: ../gl/manage/revaluate_currencies.php:53
+#: ../manufacturing/work_order_add_finished.php:98
+#: ../manufacturing/work_order_costs.php:80
+#: ../purchasing/po_receive_items.php:174
+#: ../purchasing/supplier_payment.php:185
+#: ../sales/customer_credit_invoice.php:91
+#: ../sales/sales_order_entry.php:363
+#: ../sales/manage/recurrent_invoices.php:41
+#: ../sales/manage/recurrent_invoices.php:46
+#: ../sales/manage/recurrent_invoices.php:51
 msgid "The entered date is invalid."
 msgstr ""
 
-#: admin/void_transaction.php:254 gl/accruals.php:38 gl/bank_transfer.php:121
-#: gl/gl_bank.php:266 gl/gl_journal.php:162
-#: gl/manage/revaluate_currencies.php:59 inventory/adjustments.php:114
-#: inventory/transfers.php:109 manufacturing/work_order_add_finished.php:104
-#: manufacturing/work_order_costs.php:89
-#: manufacturing/work_order_entry.php:160
-#: manufacturing/work_order_issue.php:83 purchasing/supplier_credit.php:176
-#: purchasing/supplier_invoice.php:185 sales/create_recurrent_invoices.php:121
-#: sales/credit_note_entry.php:157 sales/customer_credit_invoice.php:95
-#: sales/customer_payments.php:156
+#: ../admin/void_transaction.php:254
 msgid "The entered date is not in fiscal year."
 msgstr ""
 
-#: admin/void_transaction.php:261
+#: ../admin/void_transaction.php:261
 msgid "The transaction number is expected to be numeric and greater than zero."
 msgstr ""
 
-#: admin/void_transaction.php:278
+#: ../admin/void_transaction.php:278
 msgid "The selected transaction has already been voided."
 msgstr ""
 
-#: admin/void_transaction.php:291
+#: ../admin/void_transaction.php:291
 msgid "Selected transaction has been voided."
 msgstr ""
 
-#: admin/db/attachments_db.inc:67
+#: ../admin/db/attachments_db.inc:67
 msgid "Attached File:"
 msgstr ""
 
-#: admin/db/fiscalyears_db.inc:136
+#: ../admin/db/fiscalyears_db.inc:136
 msgid ""
 "The Retained Earnings Account or the Profit and Loss Year Account has not "
 "been set in System and General GL Setup"
 msgstr ""
 
-#: admin/db/fiscalyears_db.inc:166 admin/db/fiscalyears_db.inc:168
+#: ../admin/db/fiscalyears_db.inc:166
+#: ../admin/db/fiscalyears_db.inc:168
 msgid "Closing Year"
 msgstr ""
 
-#: admin/db/fiscalyears_db.inc:219 reporting/rep101.php:175
-#: reporting/rep201.php:170 reporting/rep706.php:185
+#: ../admin/db/fiscalyears_db.inc:219
+#: ../reporting/rep101.php:175
+#: ../reporting/rep201.php:170
+#: ../reporting/rep706.php:185
 msgid "Open Balance"
 msgstr ""
 
-#: admin/db/maintenance_db.inc:152
+#: ../admin/db/maintenance_db.inc:152
 #, php-format
 msgid "Cannot open the extension setup file '%s' for writing."
 msgstr ""
 
-#: admin/db/maintenance_db.inc:160
+#: ../admin/db/maintenance_db.inc:160
 #, php-format
 msgid "Cannot write to the extensions setup file '%s'."
 msgstr ""
 
-#: admin/db/maintenance_db.inc:178
+#: ../admin/db/maintenance_db.inc:178
 msgid "Cannot update system extensions list."
 msgstr ""
 
-#: admin/db/maintenance_db.inc:196
+#: ../admin/db/maintenance_db.inc:196
 #, php-format
 msgid "Cannot update extensions list for company '%s'."
 msgstr ""
 
-#: admin/db/maintenance_db.inc:233
+#: ../admin/db/maintenance_db.inc:233
 msgid "Cannot open the languages file - "
 msgstr ""
 
-#: admin/db/maintenance_db.inc:240
+#: ../admin/db/maintenance_db.inc:240
 msgid "Cannot write to the language file - "
 msgstr ""
 
-#: admin/db/maintenance_db.inc:250
+#: ../admin/db/maintenance_db.inc:250
 msgid "The language files folder "
 msgstr ""
 
-#: admin/db/maintenance_db.inc:389
+#: ../admin/db/maintenance_db.inc:389
+msgid ""
+"This is new format backup file which cannot be restored on database not "
+"migrated to utf8."
+msgstr ""
+
+#: ../admin/db/maintenance_db.inc:471
 #, php-format
 msgid "SQL script execution failed in line %d: %s"
 msgstr ""
 
-#: admin/db/users_db.inc:210
+#: ../admin/db/users_db.inc:221
 msgid "user online"
 msgstr ""
 
-#: admin/db/users_db.inc:210
+#: ../admin/db/users_db.inc:221
 msgid "users online"
 msgstr ""
 
-#: admin/db/voiding_db.inc:114
-#: manufacturing/includes/db/work_orders_db.inc:446
-#: manufacturing/includes/db/work_orders_db.inc:462
-#: sales/includes/db/sales_invoice_db.inc:208
+#: ../admin/db/voiding_db.inc:114
+#: ../sales/includes/db/sales_invoice_db.inc:251
 msgid "Voided."
 msgstr ""
 
-#: applications/customers.php:16
+#: ../applications/customers.php:16
 msgid "&Sales"
 msgstr ""
 
-#: applications/customers.php:18 applications/dimensions.php:21
-#: applications/generalledger.php:18 applications/inventory.php:18
-#: applications/manufacturing.php:18 applications/suppliers.php:18
+#: ../applications/customers.php:18
+#: ../applications/dimensions.php:21
+#: ../applications/generalledger.php:18
+#: ../applications/inventory.php:18
+#: ../applications/manufacturing.php:18
+#: ../applications/suppliers.php:18
 msgid "Transactions"
 msgstr ""
 
-#: applications/customers.php:19
+#: ../applications/customers.php:19
 msgid "Sales &Quotation Entry"
 msgstr ""
 
-#: applications/customers.php:21
+#: ../applications/customers.php:21
 msgid "Sales &Order Entry"
 msgstr ""
 
-#: applications/customers.php:23
+#: ../applications/customers.php:23
 msgid "Direct &Delivery"
 msgstr ""
 
-#: applications/customers.php:25 applications/suppliers.php:25
+#: ../applications/customers.php:25
+#: ../applications/suppliers.php:25
 msgid "Direct &Invoice"
 msgstr ""
 
-#: applications/customers.php:28
+#: ../applications/customers.php:28
 msgid "&Delivery Against Sales Orders"
 msgstr ""
 
-#: applications/customers.php:30
+#: ../applications/customers.php:30
 msgid "&Invoice Against Sales Delivery"
 msgstr ""
 
-#: applications/customers.php:33
+#: ../applications/customers.php:33
 msgid "&Template Delivery"
 msgstr ""
 
-#: applications/customers.php:35
+#: ../applications/customers.php:35
 msgid "&Template Invoice"
 msgstr ""
 
-#: applications/customers.php:37
+#: ../applications/customers.php:37
 msgid "&Create and Print Recurrent Invoices"
 msgstr ""
 
-#: applications/customers.php:40
+#: ../applications/customers.php:40
 msgid "Customer &Payments"
 msgstr ""
 
-#: applications/customers.php:42
+#: ../applications/customers.php:42
+msgid "Invoice &Prepaid Orders"
+msgstr ""
+
+#: ../applications/customers.php:44
 msgid "Customer &Credit Notes"
 msgstr ""
 
-#: applications/customers.php:44
+#: ../applications/customers.php:46
 msgid "&Allocate Customer Payments or Credit Notes"
 msgstr ""
 
-#: applications/customers.php:47 applications/dimensions.php:27
-#: applications/generalledger.php:34 applications/inventory.php:24
-#: applications/manufacturing.php:24 applications/suppliers.php:38
+#: ../applications/customers.php:49
+#: ../applications/dimensions.php:27
+#: ../applications/generalledger.php:34
+#: ../applications/inventory.php:24
+#: ../applications/manufacturing.php:24
+#: ../applications/suppliers.php:38
 msgid "Inquiries and Reports"
 msgstr ""
 
-#: applications/customers.php:48
+#: ../applications/customers.php:50
 msgid "Sales Quotation I&nquiry"
 msgstr ""
 
-#: applications/customers.php:50
+#: ../applications/customers.php:52
 msgid "Sales Order &Inquiry"
 msgstr ""
 
-#: applications/customers.php:52
+#: ../applications/customers.php:54
 msgid "Customer Transaction &Inquiry"
 msgstr ""
 
-#: applications/customers.php:55
+#: ../applications/customers.php:56
 msgid "Customer Allocation &Inquiry"
 msgstr ""
 
-#: applications/customers.php:58
+#: ../applications/customers.php:59
 msgid "Customer and Sales &Reports"
 msgstr ""
 
-#: applications/customers.php:61 applications/dimensions.php:34
-#: applications/generalledger.php:55 applications/inventory.php:32
-#: applications/manufacturing.php:34 applications/setup.php:54
-#: applications/suppliers.php:50
+#: ../applications/customers.php:62
+#: ../applications/dimensions.php:34
+#: ../applications/generalledger.php:55
+#: ../applications/inventory.php:32
+#: ../applications/manufacturing.php:34
+#: ../applications/setup.php:54
+#: ../applications/suppliers.php:49
 msgid "Maintenance"
 msgstr ""
 
-#: applications/customers.php:62
+#: ../applications/customers.php:63
 msgid "Add and Manage &Customers"
 msgstr ""
 
-#: applications/customers.php:64
+#: ../applications/customers.php:65
 msgid "Customer &Branches"
 msgstr ""
 
-#: applications/customers.php:66
+#: ../applications/customers.php:67
 msgid "Sales &Groups"
 msgstr ""
 
-#: applications/customers.php:68
+#: ../applications/customers.php:69
 msgid "Recurrent &Invoices"
 msgstr ""
 
-#: applications/customers.php:70
+#: ../applications/customers.php:71
 msgid "Sales T&ypes"
 msgstr ""
 
-#: applications/customers.php:72
+#: ../applications/customers.php:73
 msgid "Sales &Persons"
 msgstr ""
 
-#: applications/customers.php:74
+#: ../applications/customers.php:75
 msgid "Sales &Areas"
 msgstr ""
 
-#: applications/customers.php:76
+#: ../applications/customers.php:77
 msgid "Credit &Status Setup"
 msgstr ""
 
-#: applications/dimensions.php:17
+#: ../applications/dimensions.php:17
 msgid "&Dimensions"
 msgstr ""
 
-#: applications/dimensions.php:22
+#: ../applications/dimensions.php:22
 msgid "Dimension &Entry"
 msgstr ""
 
-#: applications/dimensions.php:24
+#: ../applications/dimensions.php:24
 msgid "&Outstanding Dimensions"
 msgstr ""
 
-#: applications/dimensions.php:28
+#: ../applications/dimensions.php:28
 msgid "Dimension &Inquiry"
 msgstr ""
 
-#: applications/dimensions.php:31
+#: ../applications/dimensions.php:31
 msgid "Dimension &Reports"
 msgstr ""
 
-#: applications/dimensions.php:35
+#: ../applications/dimensions.php:35
 msgid "Dimension &Tags"
 msgstr ""
 
-#: applications/generalledger.php:16
+#: ../applications/generalledger.php:16
 msgid "&Banking and General Ledger"
 msgstr ""
 
-#: applications/generalledger.php:19
+#: ../applications/generalledger.php:19
 msgid "&Payments"
 msgstr ""
 
-#: applications/generalledger.php:21
+#: ../applications/generalledger.php:21
 msgid "&Deposits"
 msgstr ""
 
-#: applications/generalledger.php:23
+#: ../applications/generalledger.php:23
 msgid "Bank Account &Transfers"
 msgstr ""
 
-#: applications/generalledger.php:25
+#: ../applications/generalledger.php:25
 msgid "&Journal Entry"
 msgstr ""
 
-#: applications/generalledger.php:27
+#: ../applications/generalledger.php:27
 msgid "&Budget Entry"
 msgstr ""
 
-#: applications/generalledger.php:29
+#: ../applications/generalledger.php:29
 msgid "&Reconcile Bank Account"
 msgstr ""
 
-#: applications/generalledger.php:31
+#: ../applications/generalledger.php:31
 msgid "Revenue / &Costs Accruals"
 msgstr ""
 
-#: applications/generalledger.php:35
+#: ../applications/generalledger.php:35
 msgid "&Journal Inquiry"
 msgstr ""
 
-#: applications/generalledger.php:37
+#: ../applications/generalledger.php:37
 msgid "GL &Inquiry"
 msgstr ""
 
-#: applications/generalledger.php:39
+#: ../applications/generalledger.php:39
 msgid "Bank Account &Inquiry"
 msgstr ""
 
-#: applications/generalledger.php:41
+#: ../applications/generalledger.php:41
 msgid "Ta&x Inquiry"
 msgstr ""
 
-#: applications/generalledger.php:44 reporting/reports_main.php:377
-#: reporting/reports_main.php:427 reporting/reports_main.php:472
+#: ../applications/generalledger.php:44
+#: ../reporting/reports_main.php:383
+#: ../reporting/reports_main.php:433
+#: ../reporting/reports_main.php:478
 msgid "Trial &Balance"
 msgstr ""
 
-#: applications/generalledger.php:46
+#: ../applications/generalledger.php:46
 msgid "Balance &Sheet Drilldown"
 msgstr ""
 
-#: applications/generalledger.php:48
+#: ../applications/generalledger.php:48
 msgid "&Profit and Loss Drilldown"
 msgstr ""
 
-#: applications/generalledger.php:50
+#: ../applications/generalledger.php:50
 msgid "Banking &Reports"
 msgstr ""
 
-#: applications/generalledger.php:52
+#: ../applications/generalledger.php:52
 msgid "General Ledger &Reports"
 msgstr ""
 
-#: applications/generalledger.php:56
+#: ../applications/generalledger.php:56
 msgid "Bank &Accounts"
 msgstr ""
 
-#: applications/generalledger.php:58
+#: ../applications/generalledger.php:58
 msgid "&Quick Entries"
 msgstr ""
 
-#: applications/generalledger.php:60
+#: ../applications/generalledger.php:60
 msgid "Account &Tags"
 msgstr ""
 
-#: applications/generalledger.php:63
+#: ../applications/generalledger.php:63
 msgid "&Currencies"
 msgstr ""
 
-#: applications/generalledger.php:65
+#: ../applications/generalledger.php:65
 msgid "&Exchange Rates"
 msgstr ""
 
-#: applications/generalledger.php:68
+#: ../applications/generalledger.php:68
 msgid "&GL Accounts"
 msgstr ""
 
-#: applications/generalledger.php:70
+#: ../applications/generalledger.php:70
 msgid "GL Account &Groups"
 msgstr ""
 
-#: applications/generalledger.php:72
+#: ../applications/generalledger.php:72
 msgid "GL Account &Classes"
 msgstr ""
 
-#: applications/generalledger.php:75
+#: ../applications/generalledger.php:74
+msgid "&Closing GL Transactions"
+msgstr ""
+
+#: ../applications/generalledger.php:76
 msgid "&Revaluation of Currency Accounts"
 msgstr ""
 
-#: applications/inventory.php:16
+#: ../applications/inventory.php:16
 msgid "&Items and Inventory"
 msgstr ""
 
-#: applications/inventory.php:19
+#: ../applications/inventory.php:19
 msgid "Inventory Location &Transfers"
 msgstr ""
 
-#: applications/inventory.php:21
+#: ../applications/inventory.php:21
 msgid "Inventory &Adjustments"
 msgstr ""
 
-#: applications/inventory.php:25
+#: ../applications/inventory.php:25
 msgid "Inventory Item &Movements"
 msgstr ""
 
-#: applications/inventory.php:27
+#: ../applications/inventory.php:27
 msgid "Inventory Item &Status"
 msgstr ""
 
-#: applications/inventory.php:29
+#: ../applications/inventory.php:29
 msgid "Inventory &Reports"
 msgstr ""
 
-#: applications/inventory.php:33
+#: ../applications/inventory.php:33
 msgid "&Items"
 msgstr ""
 
-#: applications/inventory.php:35
+#: ../applications/inventory.php:35
 msgid "&Foreign Item Codes"
 msgstr ""
 
-#: applications/inventory.php:37
+#: ../applications/inventory.php:37
 msgid "Sales &Kits"
 msgstr ""
 
-#: applications/inventory.php:39
+#: ../applications/inventory.php:39
 msgid "Item &Categories"
 msgstr ""
 
-#: applications/inventory.php:41
+#: ../applications/inventory.php:41
 msgid "Inventory &Locations"
 msgstr ""
 
-#: applications/inventory.php:43
+#: ../applications/inventory.php:43
 msgid "Inventory &Movement Types"
 msgstr ""
 
-#: applications/inventory.php:45
+#: ../applications/inventory.php:45
 msgid "&Units of Measure"
 msgstr ""
 
-#: applications/inventory.php:47 inventory/manage/items.php:458
+#: ../applications/inventory.php:47
+#: ../inventory/manage/items.php:469
 msgid "&Reorder Levels"
 msgstr ""
 
-#: applications/inventory.php:50
+#: ../applications/inventory.php:50
 msgid "Pricing and Costs"
 msgstr ""
 
-#: applications/inventory.php:51
+#: ../applications/inventory.php:51
 msgid "Sales &Pricing"
 msgstr ""
 
-#: applications/inventory.php:53
+#: ../applications/inventory.php:53
 msgid "Purchasing &Pricing"
 msgstr ""
 
-#: applications/inventory.php:55 inventory/manage/items.php:457
+#: ../applications/inventory.php:55
+#: ../inventory/manage/items.php:468
 msgid "Standard &Costs"
 msgstr ""
 
-#: applications/manufacturing.php:16
+#: ../applications/manufacturing.php:16
 msgid "&Manufacturing"
 msgstr ""
 
-#: applications/manufacturing.php:19 sales/sales_order_entry.php:120
+#: ../applications/manufacturing.php:19
+#: ../sales/sales_order_entry.php:126
 msgid "Work &Order Entry"
 msgstr ""
 
-#: applications/manufacturing.php:21
+#: ../applications/manufacturing.php:21
 msgid "&Outstanding Work Orders"
 msgstr ""
 
-#: applications/manufacturing.php:25
-#: manufacturing/inquiry/bom_cost_inquiry.php:16
+#: ../applications/manufacturing.php:25
+#: ../manufacturing/inquiry/bom_cost_inquiry.php:16
 msgid "Costed Bill Of Material Inquiry"
 msgstr ""
 
-#: applications/manufacturing.php:27
+#: ../applications/manufacturing.php:27
 msgid "Inventory Item Where Used &Inquiry"
 msgstr ""
 
-#: applications/manufacturing.php:29
+#: ../applications/manufacturing.php:29
 msgid "Work Order &Inquiry"
 msgstr ""
 
-#: applications/manufacturing.php:31
+#: ../applications/manufacturing.php:31
 msgid "Manufacturing &Reports"
 msgstr ""
 
-#: applications/manufacturing.php:35
+#: ../applications/manufacturing.php:35
 msgid "&Bills Of Material"
 msgstr ""
 
-#: applications/manufacturing.php:37
+#: ../applications/manufacturing.php:37
 msgid "&Work Centres"
 msgstr ""
 
-#: applications/setup.php:16
+#: ../applications/setup.php:16
 msgid "S&etup"
 msgstr ""
 
-#: applications/setup.php:19
+#: ../applications/setup.php:19
 msgid "&Company Setup"
 msgstr ""
 
-#: applications/setup.php:21
+#: ../applications/setup.php:21
 msgid "&User Accounts Setup"
 msgstr ""
 
-#: applications/setup.php:23
+#: ../applications/setup.php:23
 msgid "&Access Setup"
 msgstr ""
 
-#: applications/setup.php:25
+#: ../applications/setup.php:25
 msgid "&Display Setup"
 msgstr ""
 
-#: applications/setup.php:27
+#: ../applications/setup.php:27
 msgid "&Forms Setup"
 msgstr ""
 
-#: applications/setup.php:29
+#: ../applications/setup.php:29
 msgid "&Taxes"
 msgstr ""
 
-#: applications/setup.php:31
+#: ../applications/setup.php:31
 msgid "Tax &Groups"
 msgstr ""
 
-#: applications/setup.php:33
+#: ../applications/setup.php:33
 msgid "Item Ta&x Types"
 msgstr ""
 
-#: applications/setup.php:35
+#: ../applications/setup.php:35
 msgid "System and &General GL Setup"
 msgstr ""
 
-#: applications/setup.php:37
+#: ../applications/setup.php:37
 msgid "&Fiscal Years"
 msgstr ""
 
-#: applications/setup.php:39
+#: ../applications/setup.php:39
 msgid "&Print Profiles"
 msgstr ""
 
-#: applications/setup.php:43
+#: ../applications/setup.php:43
 msgid "Pa&yment Terms"
 msgstr ""
 
-#: applications/setup.php:45
+#: ../applications/setup.php:45
 msgid "Shi&pping Company"
 msgstr ""
 
-#: applications/setup.php:47
+#: ../applications/setup.php:47
 msgid "&Points of Sale"
 msgstr ""
 
-#: applications/setup.php:49
+#: ../applications/setup.php:49
 msgid "&Printers"
 msgstr ""
 
-#: applications/setup.php:51
+#: ../applications/setup.php:51
 msgid "Contact &Categories"
 msgstr ""
 
-#: applications/setup.php:55
+#: ../applications/setup.php:55
 msgid "&Void a Transaction"
 msgstr ""
 
-#: applications/setup.php:57
+#: ../applications/setup.php:57
 msgid "View or &Print Transactions"
 msgstr ""
 
-#: applications/setup.php:59
+#: ../applications/setup.php:59
 msgid "&Attach Documents"
 msgstr ""
 
-#: applications/setup.php:61
+#: ../applications/setup.php:61
 msgid "System &Diagnostics"
 msgstr ""
 
-#: applications/setup.php:64
+#: ../applications/setup.php:64
 msgid "&Backup and Restore"
 msgstr ""
 
-#: applications/setup.php:66
+#: ../applications/setup.php:66
 msgid "Create/Update &Companies"
 msgstr ""
 
-#: applications/setup.php:68
+#: ../applications/setup.php:68
 msgid "Install/Update &Languages"
 msgstr ""
 
-#: applications/setup.php:70
+#: ../applications/setup.php:70
 msgid "Install/Activate &Extensions"
 msgstr ""
 
-#: applications/setup.php:72
+#: ../applications/setup.php:72
 msgid "Install/Activate &Themes"
 msgstr ""
 
-#: applications/setup.php:74
+#: ../applications/setup.php:74
 msgid "Install/Activate &Chart of Accounts"
 msgstr ""
 
-#: applications/setup.php:76
+#: ../applications/setup.php:76
 msgid "Software &Upgrade"
 msgstr ""
 
-#: applications/suppliers.php:16
+#: ../applications/suppliers.php:16
 msgid "&Purchases"
 msgstr ""
 
-#: applications/suppliers.php:19
+#: ../applications/suppliers.php:19
 msgid "Purchase &Order Entry"
 msgstr ""
 
-#: applications/suppliers.php:21
+#: ../applications/suppliers.php:21
 msgid "&Outstanding Purchase Orders Maintenance"
 msgstr ""
 
-#: applications/suppliers.php:23
+#: ../applications/suppliers.php:23
 msgid "Direct &GRN"
 msgstr ""
 
-#: applications/suppliers.php:28
+#: ../applications/suppliers.php:28
 msgid "&Payments to Suppliers"
 msgstr ""
 
-#: applications/suppliers.php:31
+#: ../applications/suppliers.php:31
 msgid "Supplier &Invoices"
 msgstr ""
 
-#: applications/suppliers.php:33
+#: ../applications/suppliers.php:33
 msgid "Supplier &Credit Notes"
 msgstr ""
 
-#: applications/suppliers.php:35
+#: ../applications/suppliers.php:35
 msgid "&Allocate Supplier Payments or Credit Notes"
 msgstr ""
 
-#: applications/suppliers.php:39
+#: ../applications/suppliers.php:39
 msgid "Purchase Orders &Inquiry"
 msgstr ""
 
-#: applications/suppliers.php:41
+#: ../applications/suppliers.php:41
 msgid "Supplier Transaction &Inquiry"
 msgstr ""
 
-#: applications/suppliers.php:44
+#: ../applications/suppliers.php:43
 msgid "Supplier Allocation &Inquiry"
 msgstr ""
 
-#: applications/suppliers.php:47
+#: ../applications/suppliers.php:46
 msgid "Supplier and Purchasing &Reports"
 msgstr ""
 
-#: applications/suppliers.php:51
+#: ../applications/suppliers.php:50
 msgid "&Suppliers"
 msgstr ""
 
-#: dimensions/dimension_entry.php:27
+#: ../dimensions/dimension_entry.php:27
 msgid "Dimension Entry"
 msgstr ""
 
-#: dimensions/dimension_entry.php:47
+#: ../dimensions/dimension_entry.php:47
 msgid "The dimension has been entered."
 msgstr ""
 
-#: dimensions/dimension_entry.php:58
+#: ../dimensions/dimension_entry.php:58
 msgid "The dimension has been updated."
 msgstr ""
 
-#: dimensions/dimension_entry.php:68
+#: ../dimensions/dimension_entry.php:68
 msgid "The dimension has been deleted."
 msgstr ""
 
-#: dimensions/dimension_entry.php:78
+#: ../dimensions/dimension_entry.php:78
 msgid "The dimension has been closed. There can be no more changes to it."
 msgstr ""
 
-#: dimensions/dimension_entry.php:88
+#: ../dimensions/dimension_entry.php:88
 msgid "The dimension has been re-opened. "
 msgstr ""
 
-#: dimensions/dimension_entry.php:98
+#: ../dimensions/dimension_entry.php:98
 msgid "Enter a &new dimension"
 msgstr ""
 
-#: dimensions/dimension_entry.php:100
+#: ../dimensions/dimension_entry.php:100
 msgid "&Select an existing dimension"
 msgstr ""
 
-#: dimensions/dimension_entry.php:116
+#: ../dimensions/dimension_entry.php:116
 msgid "The dimension reference must be entered."
 msgstr ""
 
-#: dimensions/dimension_entry.php:123 gl/bank_transfer.php:176
-#: gl/gl_bank.php:254 gl/gl_journal.php:176
-#: gl/manage/revaluate_currencies.php:72 inventory/adjustments.php:101
-#: inventory/transfers.php:97 manufacturing/work_order_add_finished.php:84
-#: manufacturing/work_order_entry.php:139
-#: manufacturing/work_order_issue.php:96 purchasing/po_entry_items.php:366
-#: purchasing/po_receive_items.php:195 purchasing/supplier_credit.php:156
-#: purchasing/supplier_invoice.php:165 purchasing/supplier_payment.php:214
-#: sales/create_recurrent_invoices.php:57 sales/credit_note_entry.php:181
-#: sales/customer_credit_invoice.php:205 sales/customer_delivery.php:312
-#: sales/customer_invoice.php:328 sales/customer_payments.php:169
-#: sales/customer_payments.php:176 sales/sales_order_entry.php:445
+#: ../dimensions/dimension_entry.php:123
+#: ../gl/bank_transfer.php:176
+#: ../gl/gl_bank.php:257
+#: ../gl/gl_journal.php:182
+#: ../gl/manage/revaluate_currencies.php:72
+#: ../inventory/adjustments.php:101
+#: ../inventory/transfers.php:97
+#: ../manufacturing/work_order_add_finished.php:84
+#: ../manufacturing/work_order_entry.php:139
+#: ../manufacturing/work_order_issue.php:97
+#: ../purchasing/po_entry_items.php:365
+#: ../purchasing/po_receive_items.php:193
+#: ../purchasing/supplier_credit.php:182
+#: ../purchasing/supplier_invoice.php:190
+#: ../purchasing/supplier_payment.php:214
+#: ../sales/create_recurrent_invoices.php:57
+#: ../sales/credit_note_entry.php:181
+#: ../sales/customer_credit_invoice.php:205
+#: ../sales/customer_delivery.php:324
+#: ../sales/customer_invoice.php:388
+#: ../sales/customer_payments.php:169
+#: ../sales/customer_payments.php:176
+#: ../sales/sales_order_entry.php:461
 msgid "The entered reference is already in use."
 msgstr ""
 
-#: dimensions/dimension_entry.php:131
+#: ../dimensions/dimension_entry.php:131
 msgid "The dimension name must be entered."
 msgstr ""
 
-#: dimensions/dimension_entry.php:138 manufacturing/work_order_entry.php:154
-#: manufacturing/work_order_entry.php:234 purchasing/po_entry_items.php:238
+#: ../dimensions/dimension_entry.php:138
+#: ../manufacturing/work_order_entry.php:154
+#: ../manufacturing/work_order_entry.php:234
+#: ../purchasing/po_entry_items.php:238
 msgid "The date entered is in an invalid format."
 msgstr ""
 
-#: dimensions/dimension_entry.php:145
+#: ../dimensions/dimension_entry.php:145
 msgid "The required by date entered is in an invalid format."
 msgstr ""
 
-#: dimensions/dimension_entry.php:190
+#: ../dimensions/dimension_entry.php:190
 msgid "This dimension cannot be deleted because it has already been processed."
 msgstr ""
 
-#: dimensions/dimension_entry.php:234
+#: ../dimensions/dimension_entry.php:234
 msgid "The dimension sent is not valid."
 msgstr ""
 
-#: dimensions/dimension_entry.php:261 dimensions/dimension_entry.php:268
+#: ../dimensions/dimension_entry.php:261
+#: ../dimensions/dimension_entry.php:268
 msgid "Dimension Reference:"
 msgstr ""
 
-#: dimensions/dimension_entry.php:277 reporting/reports_main.php:34
-#: reporting/reports_main.php:64 reporting/reports_main.php:80
-#: reporting/reports_main.php:89 reporting/reports_main.php:151
-#: reporting/reports_main.php:233 reporting/reports_main.php:242
-#: reporting/reports_main.php:248 reporting/reports_main.php:258
-#: reporting/reports_main.php:266 reporting/reports_main.php:274
-#: reporting/reports_main.php:311 reporting/reports_main.php:325
-#: reporting/reports_main.php:337 reporting/reports_main.php:355
-#: reporting/reports_main.php:366 reporting/reports_main.php:378
-#: reporting/reports_main.php:391 reporting/reports_main.php:407
-#: reporting/reports_main.php:417 reporting/reports_main.php:428
-#: reporting/reports_main.php:440 reporting/reports_main.php:454
-#: reporting/reports_main.php:463 reporting/reports_main.php:473
-#: reporting/reports_main.php:482 reporting/reports_main.php:489
+#: ../dimensions/dimension_entry.php:277
+#: ../reporting/reports_main.php:34
+#: ../reporting/reports_main.php:64
+#: ../reporting/reports_main.php:80
+#: ../reporting/reports_main.php:89
+#: ../reporting/reports_main.php:151
+#: ../reporting/reports_main.php:233
+#: ../reporting/reports_main.php:242
+#: ../reporting/reports_main.php:248
+#: ../reporting/reports_main.php:258
+#: ../reporting/reports_main.php:266
+#: ../reporting/reports_main.php:274
+#: ../reporting/reports_main.php:311
+#: ../reporting/reports_main.php:319
+#: ../reporting/reports_main.php:331
+#: ../reporting/reports_main.php:343
+#: ../reporting/reports_main.php:361
+#: ../reporting/reports_main.php:372
+#: ../reporting/reports_main.php:384
+#: ../reporting/reports_main.php:397
+#: ../reporting/reports_main.php:413
+#: ../reporting/reports_main.php:423
+#: ../reporting/reports_main.php:434
+#: ../reporting/reports_main.php:446
+#: ../reporting/reports_main.php:460
+#: ../reporting/reports_main.php:469
+#: ../reporting/reports_main.php:479
+#: ../reporting/reports_main.php:488
+#: ../reporting/reports_main.php:495
 msgid "Start Date"
 msgstr ""
 
-#: dimensions/dimension_entry.php:279 manufacturing/work_order_entry.php:420
+#: ../dimensions/dimension_entry.php:279
+#: ../manufacturing/work_order_entry.php:420
 msgid "Date Required By"
 msgstr ""
 
-#: dimensions/dimension_entry.php:281
+#: ../dimensions/dimension_entry.php:281
 msgid "Tags:"
 msgstr ""
 
-#: dimensions/dimension_entry.php:288
+#: ../dimensions/dimension_entry.php:288
 msgid "This Dimension is closed."
 msgstr ""
 
-#: dimensions/dimension_entry.php:293
+#: ../dimensions/dimension_entry.php:293
 msgid "Save changes to dimension"
 msgstr ""
 
-#: dimensions/dimension_entry.php:295
+#: ../dimensions/dimension_entry.php:295
 msgid "Re-open This Dimension"
 msgstr ""
 
-#: dimensions/dimension_entry.php:295
+#: ../dimensions/dimension_entry.php:295
 msgid "Mark this dimension as re-opened"
 msgstr ""
 
-#: dimensions/dimension_entry.php:297
+#: ../dimensions/dimension_entry.php:297
 msgid "Close This Dimension"
 msgstr ""
 
-#: dimensions/dimension_entry.php:297
+#: ../dimensions/dimension_entry.php:297
 msgid "Mark this dimension as closed"
 msgstr ""
 
-#: dimensions/dimension_entry.php:298
+#: ../dimensions/dimension_entry.php:298
 msgid "Delete This Dimension"
 msgstr ""
 
-#: dimensions/dimension_entry.php:298
+#: ../dimensions/dimension_entry.php:298
 msgid "Delete unused dimension"
 msgstr ""
 
-#: dimensions/dimension_entry.php:302 includes/ui/simple_crud_class.inc:225
-#: purchasing/includes/ui/invoice_ui.inc:199
-#: purchasing/includes/ui/invoice_ui.inc:405
-#: purchasing/includes/ui/invoice_ui.inc:407
+#: ../dimensions/dimension_entry.php:302
+#: ../includes/ui/simple_crud_class.inc:225
+#: ../purchasing/includes/ui/invoice_ui.inc:221
+#: ../purchasing/includes/ui/invoice_ui.inc:427
+#: ../purchasing/includes/ui/invoice_ui.inc:429
+#: ../taxes/sav.tax_types.php:172
 msgid "Add"
 msgstr ""
 
-#: dimensions/includes/dimensions_ui.inc:24
+#: ../dimensions/includes/dimensions_ui.inc:24
 msgid "There are no transactions for this dimension for the selected period."
 msgstr ""
 
-#: dimensions/includes/dimensions_ui.inc:28
+#: ../dimensions/includes/dimensions_ui.inc:28
 msgid "Balance for this Dimension"
 msgstr ""
 
-#: dimensions/includes/dimensions_ui.inc:31 gl/accruals.php:90
-#: gl/inquiry/gl_account_inquiry.php:129 gl/inquiry/gl_trial_balance.php:185
-#: gl/manage/gl_quick_entries.php:241 gl/manage/gl_quick_entries.php:333
-#: includes/sysnames.inc:164 purchasing/includes/ui/invoice_ui.inc:258
-#: purchasing/includes/ui/invoice_ui.inc:260
-#: purchasing/includes/ui/invoice_ui.inc:262 reporting/rep701.php:111
-#: reporting/rep705.php:238 reporting/rep706.php:185 reporting/rep707.php:210
-#: reporting/rep708.php:192
+#: ../dimensions/includes/dimensions_ui.inc:31
+#: ../gl/accruals.php:94
+#: ../gl/inquiry/gl_account_inquiry.php:129
+#: ../gl/inquiry/gl_trial_balance.php:184
+#: ../gl/manage/gl_quick_entries.php:241
+#: ../gl/manage/gl_quick_entries.php:333
+#: ../includes/sysnames.inc:165
+#: ../purchasing/includes/ui/invoice_ui.inc:280
+#: ../purchasing/includes/ui/invoice_ui.inc:282
+#: ../purchasing/includes/ui/invoice_ui.inc:284
+#: ../reporting/rep701.php:111
+#: ../reporting/rep705.php:238
+#: ../reporting/rep706.php:185
+#: ../reporting/rep707.php:210
+#: ../reporting/rep708.php:192
 msgid "Account"
 msgstr ""
 
-#: dimensions/includes/dimensions_ui.inc:31 gl/accruals.php:98
-#: gl/bank_account_reconcile.php:237 gl/inquiry/bank_inquiry.php:71
-#: gl/inquiry/gl_account_inquiry.php:141 gl/inquiry/gl_account_inquiry.php:143
-#: gl/inquiry/gl_trial_balance.php:191 gl/inquiry/gl_trial_balance.php:193
-#: gl/inquiry/gl_trial_balance.php:195 gl/view/accrual_trans.php:60
-#: gl/view/gl_trans_view.php:64 gl/view/gl_trans_view.php:67
-#: gl/view/gl_trans_view.php:70 gl/includes/ui/gl_journal_ui.inc:84
-#: gl/includes/ui/gl_journal_ui.inc:87 gl/includes/ui/gl_journal_ui.inc:90
-#: purchasing/inquiry/supplier_allocation_inquiry.php:134
-#: purchasing/inquiry/supplier_inquiry.php:176 reporting/rep601.php:80
-#: reporting/rep702.php:54 reporting/rep704.php:84 reporting/rep704.php:87
-#: reporting/rep704.php:90 reporting/rep708.php:192 reporting/rep708.php:193
-#: sales/inquiry/customer_allocation_inquiry.php:152
-#: sales/inquiry/customer_inquiry.php:226
+#: ../dimensions/includes/dimensions_ui.inc:31
+#: ../gl/accruals.php:102
+#: ../gl/bank_account_reconcile.php:235
+#: ../gl/inquiry/bank_inquiry.php:71
+#: ../gl/inquiry/gl_account_inquiry.php:141
+#: ../gl/inquiry/gl_account_inquiry.php:143
+#: ../gl/inquiry/gl_trial_balance.php:190
+#: ../gl/inquiry/gl_trial_balance.php:192
+#: ../gl/inquiry/gl_trial_balance.php:194
+#: ../gl/view/accrual_trans.php:60
+#: ../gl/view/gl_trans_view.php:69
+#: ../gl/view/gl_trans_view.php:72
+#: ../gl/view/gl_trans_view.php:75
+#: ../gl/includes/ui/gl_journal_ui.inc:87
+#: ../gl/includes/ui/gl_journal_ui.inc:90
+#: ../gl/includes/ui/gl_journal_ui.inc:93
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:134
+#: ../purchasing/inquiry/supplier_inquiry.php:181
+#: ../reporting/rep601.php:80
+#: ../reporting/rep602.php:81
+#: ../reporting/rep702.php:54
+#: ../reporting/rep704.php:84
+#: ../reporting/rep704.php:87
+#: ../reporting/rep704.php:90
+#: ../reporting/rep708.php:192
+#: ../reporting/rep708.php:193
+#: ../sales/inquiry/customer_allocation_inquiry.php:152
+#: ../sales/inquiry/customer_inquiry.php:209
 msgid "Debit"
 msgstr ""
 
-#: dimensions/includes/dimensions_ui.inc:31 gl/accruals.php:98
-#: gl/bank_account_reconcile.php:238 gl/inquiry/bank_inquiry.php:71
-#: gl/inquiry/gl_account_inquiry.php:141 gl/inquiry/gl_account_inquiry.php:143
-#: gl/inquiry/gl_trial_balance.php:192 gl/inquiry/gl_trial_balance.php:194
-#: gl/inquiry/gl_trial_balance.php:196 gl/view/accrual_trans.php:60
-#: gl/view/gl_trans_view.php:64 gl/view/gl_trans_view.php:67
-#: gl/view/gl_trans_view.php:70 gl/includes/ui/gl_journal_ui.inc:84
-#: gl/includes/ui/gl_journal_ui.inc:87 gl/includes/ui/gl_journal_ui.inc:90
-#: includes/sysnames.inc:85
-#: purchasing/inquiry/supplier_allocation_inquiry.php:135
-#: purchasing/inquiry/supplier_inquiry.php:177 reporting/rep601.php:80
-#: reporting/rep702.php:54 reporting/rep704.php:84 reporting/rep704.php:87
-#: reporting/rep704.php:90 reporting/rep708.php:192 reporting/rep708.php:193
-#: sales/inquiry/customer_allocation_inquiry.php:153
-#: sales/inquiry/customer_inquiry.php:227
+#: ../dimensions/includes/dimensions_ui.inc:31
+#: ../gl/accruals.php:102
+#: ../gl/bank_account_reconcile.php:236
+#: ../gl/inquiry/bank_inquiry.php:71
+#: ../gl/inquiry/gl_account_inquiry.php:141
+#: ../gl/inquiry/gl_account_inquiry.php:143
+#: ../gl/inquiry/gl_trial_balance.php:191
+#: ../gl/inquiry/gl_trial_balance.php:193
+#: ../gl/inquiry/gl_trial_balance.php:195
+#: ../gl/view/accrual_trans.php:60
+#: ../gl/view/gl_trans_view.php:69
+#: ../gl/view/gl_trans_view.php:72
+#: ../gl/view/gl_trans_view.php:75
+#: ../gl/includes/ui/gl_journal_ui.inc:87
+#: ../gl/includes/ui/gl_journal_ui.inc:90
+#: ../gl/includes/ui/gl_journal_ui.inc:93
+#: ../includes/sysnames.inc:85
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:135
+#: ../purchasing/inquiry/supplier_inquiry.php:182
+#: ../reporting/rep601.php:80
+#: ../reporting/rep602.php:81
+#: ../reporting/rep702.php:54
+#: ../reporting/rep704.php:84
+#: ../reporting/rep704.php:87
+#: ../reporting/rep704.php:90
+#: ../reporting/rep708.php:192
+#: ../reporting/rep708.php:193
+#: ../sales/inquiry/customer_allocation_inquiry.php:153
+#: ../sales/inquiry/customer_inquiry.php:210
 msgid "Credit"
 msgstr ""
 
-#: dimensions/includes/dimensions_ui.inc:45
-#: dimensions/inquiry/search_dimensions.php:134 gl/inquiry/bank_inquiry.php:71
-#: gl/inquiry/gl_account_inquiry.php:141 gl/inquiry/gl_trial_balance.php:189
-#: purchasing/inquiry/supplier_allocation_inquiry.php:137
-#: reporting/rep101.php:122 reporting/rep201.php:114 reporting/rep203.php:94
-#: reporting/rep204.php:84 reporting/rep307.php:117 reporting/rep601.php:80
-#: reporting/rep701.php:111 reporting/rep704.php:84 reporting/rep704.php:87
-#: reporting/rep704.php:90 reporting/rep708.php:185
-#: sales/inquiry/customer_allocation_inquiry.php:155
+#: ../dimensions/includes/dimensions_ui.inc:45
+#: ../dimensions/inquiry/search_dimensions.php:134
+#: ../gl/inquiry/bank_inquiry.php:71
+#: ../gl/inquiry/gl_account_inquiry.php:141
+#: ../gl/inquiry/gl_trial_balance.php:188
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:137
+#: ../reporting/rep101.php:122
+#: ../reporting/rep201.php:114
+#: ../reporting/rep203.php:94
+#: ../reporting/rep204.php:84
+#: ../reporting/rep307.php:117
+#: ../reporting/rep601.php:80
+#: ../reporting/rep602.php:81
+#: ../reporting/rep701.php:111
+#: ../reporting/rep704.php:84
+#: ../reporting/rep704.php:87
+#: ../reporting/rep704.php:90
+#: ../reporting/rep708.php:185
+#: ../sales/inquiry/customer_allocation_inquiry.php:155
 msgid "Balance"
 msgstr ""
 
-#: dimensions/inquiry/search_dimensions.php:29
+#: ../dimensions/inquiry/search_dimensions.php:29
 msgid "Search Outstanding Dimensions"
 msgstr ""
 
-#: dimensions/inquiry/search_dimensions.php:34
+#: ../dimensions/inquiry/search_dimensions.php:34
 msgid "Search Dimensions"
 msgstr ""
 
-#: dimensions/inquiry/search_dimensions.php:73 gl/bank_transfer.php:79
-#: gl/inquiry/journal_inquiry.php:45 gl/manage/revaluate_currencies.php:105
-#: gl/includes/ui/gl_bank_ui.inc:26 gl/includes/ui/gl_journal_ui.inc:30
-#: includes/ui/contacts_view.inc:94
-#: inventory/includes/item_adjustments_ui.inc:35
-#: inventory/includes/stock_transfers_ui.inc:40
-#: manufacturing/search_work_orders.php:67
-#: manufacturing/work_order_add_finished.php:198
-#: manufacturing/work_order_entry.php:378
-#: manufacturing/work_order_entry.php:385
-#: manufacturing/includes/work_order_issue_ui.inc:156
-#: purchasing/includes/ui/invoice_ui.inc:105
-#: purchasing/includes/ui/po_ui.inc:176 purchasing/includes/ui/po_ui.inc:181
-#: purchasing/supplier_payment.php:298 sales/customer_payments.php:368
+#: ../dimensions/inquiry/search_dimensions.php:73
+#: ../gl/bank_transfer.php:79
+#: ../gl/inquiry/journal_inquiry.php:45
+#: ../gl/manage/revaluate_currencies.php:105
+#: ../gl/includes/ui/gl_bank_ui.inc:26
+#: ../gl/includes/ui/gl_journal_ui.inc:30
+#: ../includes/ui/contacts_view.inc:94
+#: ../inventory/includes/item_adjustments_ui.inc:35
+#: ../inventory/includes/stock_transfers_ui.inc:40
+#: ../manufacturing/search_work_orders.php:67
+#: ../manufacturing/work_order_add_finished.php:198
+#: ../manufacturing/work_order_costs.php:134
+#: ../manufacturing/work_order_entry.php:378
+#: ../manufacturing/work_order_entry.php:385
+#: ../manufacturing/includes/work_order_issue_ui.inc:156
+#: ../purchasing/includes/ui/invoice_ui.inc:119
+#: ../purchasing/includes/ui/po_ui.inc:188
+#: ../purchasing/includes/ui/po_ui.inc:193
+#: ../purchasing/supplier_payment.php:298
+#: ../sales/customer_payments.php:371
 msgid "Reference:"
 msgstr ""
 
-#: dimensions/inquiry/search_dimensions.php:75
-#: includes/ui/allocation_cart.inc:312 includes/ui/mk.allocation_cart.inc:312
-#: includes/ui/ui_lists.inc:1923 reporting/rep101.php:100
-#: reporting/rep102.php:96 reporting/rep104.php:97 reporting/rep104.php:101
-#: reporting/rep105.php:95 reporting/rep105.php:99 reporting/rep201.php:92
-#: reporting/rep202.php:100 reporting/rep203.php:74 reporting/rep204.php:77
-#: reporting/rep301.php:92 reporting/rep301.php:99 reporting/rep302.php:105
-#: reporting/rep302.php:112 reporting/rep303.php:96 reporting/rep303.php:103
-#: reporting/rep304.php:98 reporting/rep304.php:103 reporting/rep304.php:108
-#: reporting/rep306.php:120 reporting/rep306.php:125 reporting/rep306.php:130
-#: reporting/rep306.php:135 reporting/rep307.php:103 reporting/rep307.php:110
-#: reporting/rep308.php:138 reporting/rep308.php:143 reporting/rep309.php:92
-#: reporting/rep702.php:61 reporting/rep710.php:86 reporting/rep710.php:87
+#: ../dimensions/inquiry/search_dimensions.php:75
+#: ../includes/ui/allocation_cart.inc:314
+#: ../includes/ui/ui_lists.inc:1927
+#: ../reporting/rep101.php:100
+#: ../reporting/rep102.php:96
+#: ../reporting/rep104.php:97
+#: ../reporting/rep104.php:101
+#: ../reporting/rep105.php:95
+#: ../reporting/rep105.php:99
+#: ../reporting/rep201.php:92
+#: ../reporting/rep202.php:100
+#: ../reporting/rep203.php:74
+#: ../reporting/rep204.php:77
+#: ../reporting/rep301.php:92
+#: ../reporting/rep301.php:99
+#: ../reporting/rep302.php:105
+#: ../reporting/rep302.php:112
+#: ../reporting/rep303.php:96
+#: ../reporting/rep303.php:103
+#: ../reporting/rep304.php:98
+#: ../reporting/rep304.php:103
+#: ../reporting/rep304.php:108
+#: ../reporting/rep306.php:120
+#: ../reporting/rep306.php:125
+#: ../reporting/rep306.php:130
+#: ../reporting/rep306.php:135
+#: ../reporting/rep307.php:103
+#: ../reporting/rep307.php:110
+#: ../reporting/rep308.php:138
+#: ../reporting/rep308.php:143
+#: ../reporting/rep309.php:92
+#: ../reporting/rep702.php:61
+#: ../reporting/rep710.php:86
+#: ../reporting/rep710.php:87
 msgid "All"
 msgstr ""
 
-#: dimensions/inquiry/search_dimensions.php:76 gl/inquiry/bank_inquiry.php:49
-#: gl/inquiry/gl_trial_balance.php:54 gl/inquiry/journal_inquiry.php:48
-#: gl/inquiry/profit_loss.php:168 gl/includes/ui/gl_bank_ui.inc:52
-#: gl/includes/ui/gl_bank_ui.inc:120 inventory/inquiry/stock_movements.php:62
-#: purchasing/inquiry/supplier_allocation_inquiry.php:50
-#: purchasing/inquiry/supplier_inquiry.php:53
-#: sales/inquiry/customer_inquiry.php:50
+#: ../dimensions/inquiry/search_dimensions.php:76
+#: ../gl/inquiry/bank_inquiry.php:49
+#: ../gl/inquiry/gl_trial_balance.php:54
+#: ../gl/inquiry/journal_inquiry.php:48
+#: ../gl/inquiry/profit_loss.php:168
+#: ../gl/includes/ui/gl_bank_ui.inc:52
+#: ../gl/includes/ui/gl_bank_ui.inc:120
+#: ../inventory/inquiry/stock_movements.php:58
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:50
+#: ../purchasing/inquiry/supplier_inquiry.php:50
+#: ../sales/inquiry/customer_inquiry.php:46
 msgid "From:"
 msgstr ""
 
-#: dimensions/inquiry/search_dimensions.php:77 gl/inquiry/bank_inquiry.php:50
-#: gl/inquiry/gl_trial_balance.php:55 gl/inquiry/journal_inquiry.php:49
-#: gl/inquiry/profit_loss.php:169 inventory/inquiry/stock_movements.php:63
-#: purchasing/inquiry/supplier_allocation_inquiry.php:51
-#: purchasing/inquiry/supplier_inquiry.php:54
-#: sales/inquiry/customer_inquiry.php:51
+#: ../dimensions/inquiry/search_dimensions.php:77
+#: ../gl/inquiry/bank_inquiry.php:50
+#: ../gl/inquiry/gl_trial_balance.php:55
+#: ../gl/inquiry/journal_inquiry.php:49
+#: ../gl/inquiry/profit_loss.php:169
+#: ../inventory/inquiry/stock_movements.php:59
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:51
+#: ../purchasing/inquiry/supplier_inquiry.php:51
+#: ../sales/inquiry/customer_inquiry.php:47
 msgid "To:"
 msgstr ""
 
-#: dimensions/inquiry/search_dimensions.php:79
-#: manufacturing/search_work_orders.php:71
+#: ../dimensions/inquiry/search_dimensions.php:79
+#: ../manufacturing/search_work_orders.php:71
 msgid "Only Overdue:"
 msgstr ""
 
-#: dimensions/inquiry/search_dimensions.php:83
-#: manufacturing/search_work_orders.php:74
+#: ../dimensions/inquiry/search_dimensions.php:83
+#: ../manufacturing/search_work_orders.php:74
 msgid "Only Open:"
 msgstr ""
 
-#: dimensions/inquiry/search_dimensions.php:132
-#: dimensions/view/view_dimension.php:55 includes/ui/allocation_cart.inc:288
-#: includes/ui/mk.allocation_cart.inc:288
-#: purchasing/includes/ui/invoice_ui.inc:125
-#: purchasing/view/view_supp_credit.php:48
-#: purchasing/view/view_supp_invoice.php:51
-#: purchasing/inquiry/supplier_allocation_inquiry.php:132
-#: purchasing/inquiry/supplier_inquiry.php:174 reporting/rep101.php:118
-#: reporting/rep201.php:110 reporting/rep203.php:93 reporting/rep501.php:87
-#: reporting/includes/doctext.inc:100 reporting/includes/doctext.inc:122
-#: reporting/includes/doctext.inc:143 reporting/includes/doctext.inc:145
-#: reporting/includes/doctext.inc:184 reporting/includes/doctext.inc:186
-#: sales/customer_invoice.php:448 sales/view/view_dispatch.php:97
-#: sales/view/view_invoice.php:96
-#: sales/inquiry/customer_allocation_inquiry.php:149
-#: sales/inquiry/customer_inquiry.php:222
-#: sales/includes/ui/sales_order_ui.inc:601
+#: ../dimensions/inquiry/search_dimensions.php:132
+#: ../dimensions/view/view_dimension.php:55
+#: ../includes/ui/allocation_cart.inc:290
+#: ../purchasing/includes/ui/invoice_ui.inc:138
+#: ../purchasing/view/view_supp_credit.php:48
+#: ../purchasing/view/view_supp_invoice.php:52
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:132
+#: ../purchasing/inquiry/supplier_inquiry.php:179
+#: ../reporting/rep101.php:118
+#: ../reporting/rep201.php:110
+#: ../reporting/rep203.php:93
+#: ../reporting/rep501.php:87
+#: ../reporting/includes/doctext.inc:112
+#: ../reporting/includes/doctext.inc:144
+#: ../reporting/includes/doctext.inc:165
+#: ../reporting/includes/doctext.inc:167
+#: ../reporting/includes/doctext.inc:206
+#: ../reporting/includes/doctext.inc:208
+#: ../sales/customer_invoice.php:519
+#: ../sales/view/view_dispatch.php:97
+#: ../sales/view/view_invoice.php:96
+#: ../sales/inquiry/customer_allocation_inquiry.php:149
+#: ../sales/inquiry/customer_inquiry.php:205
+#: ../sales/includes/ui/sales_order_ui.inc:602
 msgid "Due Date"
 msgstr ""
 
-#: dimensions/inquiry/search_dimensions.php:143
+#: ../dimensions/inquiry/search_dimensions.php:143
 msgid "Marked dimensions are overdue."
 msgstr ""
 
-#: dimensions/view/view_dimension.php:20
+#: ../dimensions/view/view_dimension.php:20
 msgid "View Dimension"
 msgstr ""
 
-#: dimensions/view/view_dimension.php:49
+#: ../dimensions/view/view_dimension.php:49
 msgid "The dimension number sent is not valid."
 msgstr ""
 
-#: dimensions/view/view_dimension.php:73
+#: ../dimensions/view/view_dimension.php:73
 msgid "This dimension is closed."
 msgstr ""
 
-#: dimensions/view/view_dimension.php:85 gl/inquiry/gl_account_inquiry.php:71
-#: gl/inquiry/tax_inquiry.php:61 purchasing/inquiry/po_search_completed.php:65
-#: purchasing/inquiry/po_search.php:64
-#: sales/inquiry/customer_allocation_inquiry.php:44
-#: sales/inquiry/sales_deliveries_view.php:104
-#: sales/inquiry/sales_orders_view.php:229
+#: ../dimensions/view/view_dimension.php:85
+#: ../gl/inquiry/gl_account_inquiry.php:71
+#: ../gl/inquiry/tax_inquiry.php:61
+#: ../purchasing/inquiry/po_search_completed.php:62
+#: ../purchasing/inquiry/po_search.php:64
+#: ../sales/inquiry/customer_allocation_inquiry.php:44
+#: ../sales/inquiry/sales_deliveries_view.php:104
+#: ../sales/inquiry/sales_orders_view.php:251
 msgid "from:"
 msgstr ""
 
-#: dimensions/view/view_dimension.php:86 gl/inquiry/gl_account_inquiry.php:72
-#: gl/inquiry/tax_inquiry.php:62 purchasing/inquiry/po_search_completed.php:66
-#: purchasing/inquiry/po_search.php:65
-#: sales/inquiry/customer_allocation_inquiry.php:45
-#: sales/inquiry/sales_deliveries_view.php:105
-#: sales/inquiry/sales_orders_view.php:230
+#: ../dimensions/view/view_dimension.php:86
+#: ../gl/inquiry/gl_account_inquiry.php:72
+#: ../gl/inquiry/tax_inquiry.php:62
+#: ../purchasing/inquiry/po_search_completed.php:63
+#: ../purchasing/inquiry/po_search.php:65
+#: ../sales/inquiry/customer_allocation_inquiry.php:45
+#: ../sales/inquiry/sales_deliveries_view.php:105
+#: ../sales/inquiry/sales_orders_view.php:252
 msgid "to:"
 msgstr ""
 
-#: dimensions/view/view_dimension.php:87 gl/inquiry/balance_sheet.php:131
-#: gl/inquiry/bank_inquiry.php:52 gl/inquiry/gl_account_inquiry.php:85
-#: gl/inquiry/gl_trial_balance.php:63 gl/inquiry/profit_loss.php:183
-#: gl/inquiry/tax_inquiry.php:63
+#: ../dimensions/view/view_dimension.php:87
+#: ../gl/inquiry/balance_sheet.php:131
+#: ../gl/inquiry/bank_inquiry.php:52
+#: ../gl/inquiry/gl_account_inquiry.php:85
+#: ../gl/inquiry/gl_trial_balance.php:63
+#: ../gl/inquiry/profit_loss.php:183
+#: ../gl/inquiry/tax_inquiry.php:63
 msgid "Show"
 msgstr ""
 
-#: gl/accruals.php:20 includes/access_levels.inc:243
+#: ../gl/accruals.php:20
+#: ../includes/access_levels.inc:245
 msgid "Revenue / Cost Accruals"
 msgstr ""
 
-#: gl/accruals.php:44
+#: ../gl/accruals.php:38
+#: ../gl/bank_transfer.php:121
+#: ../gl/gl_bank.php:269
+#: ../gl/gl_journal.php:168
+#: ../gl/manage/revaluate_currencies.php:59
+#: ../inventory/adjustments.php:114
+#: ../inventory/transfers.php:109
+#: ../manufacturing/work_order_add_finished.php:104
+#: ../manufacturing/work_order_costs.php:86
+#: ../manufacturing/work_order_entry.php:160
+#: ../manufacturing/work_order_issue.php:84
+#: ../purchasing/po_entry_items.php:342
+#: ../purchasing/po_receive_items.php:179
+#: ../purchasing/supplier_credit.php:202
+#: ../purchasing/supplier_invoice.php:210
+#: ../purchasing/supplier_payment.php:191
+#: ../sales/create_recurrent_invoices.php:121
+#: ../sales/credit_note_entry.php:157
+#: ../sales/customer_credit_invoice.php:95
+#: ../sales/customer_delivery.php:165
+#: ../sales/customer_invoice.php:327
+#: ../sales/customer_payments.php:156
+#: ../sales/sales_order_entry.php:368
+msgid ""
+"The entered date is out of fiscal year or is closed for further data entry."
+msgstr ""
+
+#: ../gl/accruals.php:44
 msgid "The amount can not be 0."
 msgstr ""
 
-#: gl/accruals.php:50
+#: ../gl/accruals.php:50
 msgid "The periods must be greater than 0."
 msgstr ""
 
-#: gl/accruals.php:67
+#: ../gl/accruals.php:71
 msgid ""
-"Some of the period dates are outside the fiscal year. Create a new fiscal "
-"year first!"
+"Some of the period dates are outside the fiscal year or are closed for "
+"further data entry. Create a new fiscal year first!"
 msgstr ""
 
-#: gl/accruals.php:82
+#: ../gl/accruals.php:86
 #, php-format
 msgid "Accruals for %s"
 msgstr ""
 
-#: gl/accruals.php:92 gl/accruals.php:94 gl/accruals.php:203
-#: gl/accruals.php:205 gl/gl_budget.php:71 gl/gl_budget.php:72
-#: gl/gl_budget.php:76 gl/inquiry/balance_sheet.php:128
-#: gl/inquiry/balance_sheet.php:130 gl/inquiry/gl_account_inquiry.php:79
-#: gl/inquiry/gl_account_inquiry.php:81 gl/inquiry/gl_account_inquiry.php:134
-#: gl/inquiry/gl_account_inquiry.php:136 gl/inquiry/gl_trial_balance.php:57
-#: gl/inquiry/gl_trial_balance.php:59 gl/inquiry/profit_loss.php:179
-#: gl/inquiry/profit_loss.php:181 gl/manage/gl_quick_entries.php:261
-#: gl/manage/gl_quick_entries.php:263 gl/manage/gl_quick_entries.php:343
-#: gl/manage/gl_quick_entries.php:345 gl/view/accrual_trans.php:54
-#: gl/view/accrual_trans.php:56 gl/view/gl_deposit_view.php:104
-#: gl/view/gl_deposit_view.php:107 gl/view/gl_payment_view.php:103
-#: gl/view/gl_payment_view.php:106 gl/view/gl_trans_view.php:63
-#: gl/view/gl_trans_view.php:66 gl/includes/ui/gl_bank_ui.inc:152
-#: gl/includes/ui/gl_bank_ui.inc:153 gl/includes/ui/gl_bank_ui.inc:155
-#: gl/includes/ui/gl_journal_ui.inc:83 gl/includes/ui/gl_journal_ui.inc:84
-#: gl/includes/ui/gl_journal_ui.inc:86 includes/sysnames.inc:43
-#: includes/sysnames.inc:165 inventory/manage/item_categories.php:216
-#: inventory/manage/item_categories.php:218 inventory/manage/items.php:343
-#: inventory/manage/items.php:345 purchasing/includes/ui/invoice_ui.inc:258
-#: purchasing/includes/ui/invoice_ui.inc:260
-#: purchasing/manage/suppliers.php:137 purchasing/manage/suppliers.php:138
-#: purchasing/manage/suppliers.php:140 reporting/rep103.php:243
-#: reporting/rep103.php:255 reporting/rep205.php:161 reporting/rep205.php:173
-#: reporting/rep501.php:92 reporting/rep704.php:83 reporting/rep704.php:86
-#: reporting/rep704.php:97 reporting/rep704.php:99 reporting/rep704.php:107
-#: reporting/rep705.php:249 reporting/rep705.php:251 reporting/rep705.php:262
-#: reporting/rep706.php:194 reporting/rep706.php:196 reporting/rep706.php:204
-#: reporting/rep707.php:218 reporting/rep707.php:220 reporting/rep707.php:228
-#: reporting/rep708.php:201 reporting/rep708.php:203 reporting/rep708.php:210
-#: reporting/reports_main.php:341 reporting/reports_main.php:342
-#: reporting/reports_main.php:348 reporting/reports_main.php:349
-#: reporting/reports_main.php:357 reporting/reports_main.php:358
-#: reporting/reports_main.php:369 reporting/reports_main.php:370
-#: reporting/reports_main.php:382 reporting/reports_main.php:383
-#: reporting/reports_main.php:395 reporting/reports_main.php:401
-#: reporting/reports_main.php:409 reporting/reports_main.php:420
-#: reporting/reports_main.php:432 sales/customer_delivery.php:395
-#: sales/customer_delivery.php:403 sales/customer_invoice.php:418
-#: sales/customer_invoice.php:456 sales/manage/customers.php:273
-#: sales/manage/customers.php:275 sales/includes/ui/sales_credit_ui.inc:132
-#: sales/includes/ui/sales_credit_ui.inc:137
-#: sales/includes/ui/sales_order_ui.inc:456
-#: sales/includes/ui/sales_order_ui.inc:461
+#: ../gl/accruals.php:96
+#: ../gl/accruals.php:98
+#: ../gl/accruals.php:207
+#: ../gl/accruals.php:209
+#: ../gl/gl_budget.php:71
+#: ../gl/gl_budget.php:72
+#: ../gl/gl_budget.php:76
+#: ../gl/inquiry/balance_sheet.php:128
+#: ../gl/inquiry/balance_sheet.php:130
+#: ../gl/inquiry/gl_account_inquiry.php:79
+#: ../gl/inquiry/gl_account_inquiry.php:81
+#: ../gl/inquiry/gl_account_inquiry.php:134
+#: ../gl/inquiry/gl_account_inquiry.php:136
+#: ../gl/inquiry/gl_trial_balance.php:57
+#: ../gl/inquiry/gl_trial_balance.php:59
+#: ../gl/inquiry/profit_loss.php:179
+#: ../gl/inquiry/profit_loss.php:181
+#: ../gl/manage/gl_quick_entries.php:261
+#: ../gl/manage/gl_quick_entries.php:263
+#: ../gl/manage/gl_quick_entries.php:343
+#: ../gl/manage/gl_quick_entries.php:345
+#: ../gl/view/accrual_trans.php:54
+#: ../gl/view/accrual_trans.php:56
+#: ../gl/view/gl_deposit_view.php:104
+#: ../gl/view/gl_deposit_view.php:107
+#: ../gl/view/gl_payment_view.php:103
+#: ../gl/view/gl_payment_view.php:106
+#: ../gl/view/gl_trans_view.php:68
+#: ../gl/view/gl_trans_view.php:71
+#: ../gl/includes/ui/gl_bank_ui.inc:152
+#: ../gl/includes/ui/gl_bank_ui.inc:153
+#: ../gl/includes/ui/gl_bank_ui.inc:155
+#: ../gl/includes/ui/gl_journal_ui.inc:86
+#: ../gl/includes/ui/gl_journal_ui.inc:87
+#: ../gl/includes/ui/gl_journal_ui.inc:89
+#: ../includes/sysnames.inc:43
+#: ../includes/sysnames.inc:166
+#: ../inventory/manage/item_categories.php:220
+#: ../inventory/manage/item_categories.php:222
+#: ../inventory/manage/items.php:354
+#: ../inventory/manage/items.php:356
+#: ../purchasing/includes/ui/invoice_ui.inc:280
+#: ../purchasing/includes/ui/invoice_ui.inc:282
+#: ../purchasing/manage/suppliers.php:147
+#: ../purchasing/manage/suppliers.php:148
+#: ../purchasing/manage/suppliers.php:150
+#: ../reporting/rep103.php:243
+#: ../reporting/rep103.php:255
+#: ../reporting/rep205.php:161
+#: ../reporting/rep205.php:173
+#: ../reporting/rep501.php:92
+#: ../reporting/rep704.php:83
+#: ../reporting/rep704.php:86
+#: ../reporting/rep704.php:97
+#: ../reporting/rep704.php:99
+#: ../reporting/rep704.php:107
+#: ../reporting/rep705.php:249
+#: ../reporting/rep705.php:251
+#: ../reporting/rep705.php:262
+#: ../reporting/rep706.php:194
+#: ../reporting/rep706.php:196
+#: ../reporting/rep706.php:204
+#: ../reporting/rep707.php:218
+#: ../reporting/rep707.php:220
+#: ../reporting/rep707.php:228
+#: ../reporting/rep708.php:201
+#: ../reporting/rep708.php:203
+#: ../reporting/rep708.php:210
+#: ../reporting/reports_main.php:347
+#: ../reporting/reports_main.php:348
+#: ../reporting/reports_main.php:354
+#: ../reporting/reports_main.php:355
+#: ../reporting/reports_main.php:363
+#: ../reporting/reports_main.php:364
+#: ../reporting/reports_main.php:375
+#: ../reporting/reports_main.php:376
+#: ../reporting/reports_main.php:388
+#: ../reporting/reports_main.php:389
+#: ../reporting/reports_main.php:401
+#: ../reporting/reports_main.php:407
+#: ../reporting/reports_main.php:415
+#: ../reporting/reports_main.php:426
+#: ../reporting/reports_main.php:438
+#: ../sales/customer_delivery.php:409
+#: ../sales/customer_delivery.php:417
+#: ../sales/customer_invoice.php:484
+#: ../sales/customer_invoice.php:527
+#: ../sales/manage/customers.php:274
+#: ../sales/manage/customers.php:276
+#: ../sales/includes/ui/sales_credit_ui.inc:132
+#: ../sales/includes/ui/sales_credit_ui.inc:137
+#: ../sales/includes/ui/sales_order_ui.inc:457
+#: ../sales/includes/ui/sales_order_ui.inc:462
 msgid "Dimension"
 msgstr ""
 
-#: gl/accruals.php:98 gl/accruals.php:213 gl/inquiry/bank_inquiry.php:71
-#: gl/inquiry/gl_account_inquiry.php:141 gl/inquiry/gl_account_inquiry.php:143
-#: gl/inquiry/journal_inquiry.php:133 gl/view/accrual_trans.php:60
-#: gl/view/gl_deposit_view.php:105 gl/view/gl_deposit_view.php:108
-#: gl/view/gl_deposit_view.php:111 gl/view/gl_payment_view.php:104
-#: gl/view/gl_payment_view.php:107 gl/view/gl_payment_view.php:110
-#: gl/view/gl_trans_view.php:64 gl/view/gl_trans_view.php:67
-#: gl/view/gl_trans_view.php:70 gl/includes/ui/gl_bank_ui.inc:153
-#: gl/includes/ui/gl_bank_ui.inc:156 gl/includes/ui/gl_bank_ui.inc:159
-#: gl/includes/ui/gl_bank_ui.inc:312 gl/includes/ui/gl_journal_ui.inc:84
-#: gl/includes/ui/gl_journal_ui.inc:87 gl/includes/ui/gl_journal_ui.inc:90
-#: gl/includes/ui/gl_journal_ui.inc:240
-#: inventory/includes/item_adjustments_ui.inc:181
-#: inventory/includes/stock_transfers_ui.inc:161
-#: manufacturing/includes/work_order_issue_ui.inc:169
-#: purchasing/includes/ui/invoice_ui.inc:258
-#: purchasing/includes/ui/invoice_ui.inc:260
-#: purchasing/includes/ui/invoice_ui.inc:262
-#: sales/customer_credit_invoice.php:364 sales/customer_delivery.php:529
-#: sales/customer_invoice.php:587 sales/includes/ui/sales_credit_ui.inc:339
+#: ../gl/accruals.php:102
+#: ../gl/accruals.php:217
+#: ../gl/inquiry/bank_inquiry.php:71
+#: ../gl/inquiry/gl_account_inquiry.php:141
+#: ../gl/inquiry/gl_account_inquiry.php:143
+#: ../gl/inquiry/journal_inquiry.php:133
+#: ../gl/view/accrual_trans.php:60
+#: ../gl/view/gl_deposit_view.php:105
+#: ../gl/view/gl_deposit_view.php:108
+#: ../gl/view/gl_deposit_view.php:111
+#: ../gl/view/gl_payment_view.php:104
+#: ../gl/view/gl_payment_view.php:107
+#: ../gl/view/gl_payment_view.php:110
+#: ../gl/view/gl_trans_view.php:69
+#: ../gl/view/gl_trans_view.php:72
+#: ../gl/view/gl_trans_view.php:75
+#: ../gl/includes/ui/gl_bank_ui.inc:153
+#: ../gl/includes/ui/gl_bank_ui.inc:156
+#: ../gl/includes/ui/gl_bank_ui.inc:159
+#: ../gl/includes/ui/gl_bank_ui.inc:312
+#: ../gl/includes/ui/gl_journal_ui.inc:87
+#: ../gl/includes/ui/gl_journal_ui.inc:90
+#: ../gl/includes/ui/gl_journal_ui.inc:93
+#: ../gl/includes/ui/gl_journal_ui.inc:276
+#: ../inventory/includes/item_adjustments_ui.inc:181
+#: ../inventory/includes/stock_transfers_ui.inc:161
+#: ../manufacturing/view/wo_costs_view.php:46
+#: ../manufacturing/includes/work_order_issue_ui.inc:169
+#: ../purchasing/includes/ui/invoice_ui.inc:280
+#: ../purchasing/includes/ui/invoice_ui.inc:282
+#: ../purchasing/includes/ui/invoice_ui.inc:284
+#: ../sales/customer_credit_invoice.php:364
+#: ../sales/customer_delivery.php:543
+#: ../sales/includes/ui/sales_credit_ui.inc:339
 msgid "Memo"
 msgstr ""
 
-#: gl/accruals.php:162
+#: ../gl/accruals.php:166
 msgid "Revenue / Cost Accruals have been processed."
 msgstr ""
 
-#: gl/accruals.php:168
+#: ../gl/accruals.php:172
 msgid "Showing GL Transactions."
 msgstr ""
 
-#: gl/accruals.php:180
+#: ../gl/accruals.php:184
 msgid "Weekly"
 msgstr ""
 
-#: gl/accruals.php:181
+#: ../gl/accruals.php:185
 msgid "Bi-weekly"
 msgstr ""
 
-#: gl/accruals.php:182 gl/manage/gl_quick_entries.php:240
-#: gl/includes/ui/gl_journal_ui.inc:57 sales/create_recurrent_invoices.php:134
-#: sales/manage/recurrent_invoices.php:102
+#: ../gl/accruals.php:186
+#: ../gl/manage/gl_quick_entries.php:240
+#: ../gl/includes/ui/gl_journal_ui.inc:57
+#: ../sales/create_recurrent_invoices.php:134
+#: ../sales/manage/recurrent_invoices.php:102
 msgid "Monthly"
 msgstr ""
 
-#: gl/accruals.php:183
+#: ../gl/accruals.php:187
 msgid "Quarterly"
 msgstr ""
 
-#: gl/accruals.php:195
+#: ../gl/accruals.php:199
 msgid "First date of Accruals"
 msgstr ""
 
-#: gl/accruals.php:197
+#: ../gl/accruals.php:201
 msgid "Accrued Balance Account"
 msgstr ""
 
-#: gl/accruals.php:200
+#: ../gl/accruals.php:204
 msgid "Revenue / Cost Account"
 msgstr ""
 
-#: gl/accruals.php:208 gl/gl_budget.php:91 gl/gl_budget.php:93
-#: gl/inquiry/journal_inquiry.php:132 gl/inquiry/tax_inquiry.php:82
-#: gl/manage/gl_quick_entries.php:261 gl/manage/gl_quick_entries.php:263
-#: gl/manage/gl_quick_entries.php:265 gl/manage/gl_quick_entries.php:339
-#: gl/view/bank_transfer_view.php:70 gl/view/bank_transfer_view.php:80
-#: gl/view/gl_deposit_view.php:67 gl/view/gl_deposit_view.php:105
-#: gl/view/gl_deposit_view.php:108 gl/view/gl_deposit_view.php:111
-#: gl/view/gl_payment_view.php:65 gl/view/gl_payment_view.php:104
-#: gl/view/gl_payment_view.php:107 gl/view/gl_payment_view.php:110
-#: gl/includes/ui/gl_bank_ui.inc:153 gl/includes/ui/gl_bank_ui.inc:156
-#: gl/includes/ui/gl_bank_ui.inc:159 includes/sysnames.inc:132
-#: includes/ui/allocation_cart.inc:288 includes/ui/mk.allocation_cart.inc:288
-#: includes/ui/ui_lists.inc:1187
-#: manufacturing/includes/manufacturing_ui.inc:236
-#: purchasing/includes/ui/invoice_ui.inc:258
-#: purchasing/includes/ui/invoice_ui.inc:260
-#: purchasing/includes/ui/invoice_ui.inc:262
-#: purchasing/view/view_supp_payment.php:60
-#: purchasing/view/view_supp_payment.php:72 reporting/rep102.php:245
-#: reporting/rep107.php:184 reporting/rep109.php:189 reporting/rep110.php:193
-#: reporting/rep111.php:174 reporting/rep113.php:178 reporting/rep202.php:253
-#: reporting/rep209.php:192 reporting/rep706.php:309 reporting/rep707.php:327
-#: reporting/rep710.php:78 sales/view/view_receipt.php:44
+#: ../gl/accruals.php:212
+#: ../gl/gl_budget.php:91
+#: ../gl/gl_budget.php:93
+#: ../gl/inquiry/journal_inquiry.php:132
+#: ../gl/inquiry/tax_inquiry.php:82
+#: ../gl/manage/gl_quick_entries.php:261
+#: ../gl/manage/gl_quick_entries.php:263
+#: ../gl/manage/gl_quick_entries.php:265
+#: ../gl/manage/gl_quick_entries.php:339
+#: ../gl/view/bank_transfer_view.php:70
+#: ../gl/view/bank_transfer_view.php:80
+#: ../gl/view/gl_deposit_view.php:67
+#: ../gl/view/gl_deposit_view.php:105
+#: ../gl/view/gl_deposit_view.php:108
+#: ../gl/view/gl_deposit_view.php:111
+#: ../gl/view/gl_payment_view.php:65
+#: ../gl/view/gl_payment_view.php:104
+#: ../gl/view/gl_payment_view.php:107
+#: ../gl/view/gl_payment_view.php:110
+#: ../gl/includes/ui/gl_bank_ui.inc:153
+#: ../gl/includes/ui/gl_bank_ui.inc:156
+#: ../gl/includes/ui/gl_bank_ui.inc:159
+#: ../includes/sysnames.inc:133
+#: ../includes/ui/allocation_cart.inc:290
+#: ../includes/ui/ui_lists.inc:1185
+#: ../manufacturing/view/wo_costs_view.php:46
+#: ../manufacturing/includes/manufacturing_ui.inc:236
+#: ../purchasing/includes/ui/invoice_ui.inc:280
+#: ../purchasing/includes/ui/invoice_ui.inc:282
+#: ../purchasing/includes/ui/invoice_ui.inc:284
+#: ../purchasing/view/view_supp_payment.php:60
+#: ../purchasing/view/view_supp_payment.php:72
+#: ../reporting/rep102.php:245
+#: ../reporting/rep107.php:204
+#: ../reporting/rep107.php:265
+#: ../reporting/rep109.php:195
+#: ../reporting/rep110.php:193
+#: ../reporting/rep111.php:174
+#: ../reporting/rep113.php:178
+#: ../reporting/rep202.php:253
+#: ../reporting/rep209.php:195
+#: ../reporting/rep706.php:309
+#: ../reporting/rep707.php:327
+#: ../reporting/rep710.php:78
+#: ../sales/view/view_receipt.php:44
 msgid "Amount"
 msgstr ""
 
-#: gl/accruals.php:208
+#: ../gl/accruals.php:212
 msgid "Search Amount"
 msgstr ""
 
-#: gl/accruals.php:210
+#: ../gl/accruals.php:214
 msgid "Frequency"
 msgstr ""
 
-#: gl/accruals.php:212
+#: ../gl/accruals.php:216
 msgid "Periods"
 msgstr ""
 
-#: gl/accruals.php:216
+#: ../gl/accruals.php:220
 msgid "Show GL Rows"
 msgstr ""
 
-#: gl/accruals.php:217
+#: ../gl/accruals.php:221
 msgid "Process Accruals"
 msgstr ""
 
-#: gl/accruals.php:218
+#: ../gl/accruals.php:222
 msgid "Are you sure you want to post accruals?"
 msgstr ""
 
-#: gl/bank_account_reconcile.php:33
+#: ../gl/bank_account_reconcile.php:33
 msgid "Reconcile Bank Account"
 msgstr ""
 
-#: gl/bank_account_reconcile.php:35 gl/bank_transfer.php:30 gl/gl_bank.php:49
-#: gl/inquiry/bank_inquiry.php:30 purchasing/supplier_payment.php:42
-#: sales/customer_payments.php:38
+#: ../gl/bank_account_reconcile.php:35
+#: ../gl/bank_transfer.php:30
+#: ../gl/gl_bank.php:49
+#: ../gl/inquiry/bank_inquiry.php:30
+#: ../purchasing/supplier_payment.php:42
+#: ../sales/customer_payments.php:38
 msgid "There are no bank accounts defined in the system."
 msgstr ""
 
-#: gl/bank_account_reconcile.php:39
+#: ../gl/bank_account_reconcile.php:39
 msgid "Invalid reconcile date format"
 msgstr ""
 
-#: gl/bank_account_reconcile.php:56
+#: ../gl/bank_account_reconcile.php:56
 msgid "Reconcile this transaction"
 msgstr ""
 
-#: gl/bank_account_reconcile.php:166 gl/inquiry/bank_inquiry.php:47
-#: gl/inquiry/gl_account_inquiry.php:70
+#: ../gl/bank_account_reconcile.php:164
+#: ../gl/inquiry/bank_inquiry.php:47
+#: ../gl/inquiry/gl_account_inquiry.php:70
 msgid "Account:"
 msgstr ""
 
-#: gl/bank_account_reconcile.php:168
+#: ../gl/bank_account_reconcile.php:166
 msgid "Bank Statement:"
 msgstr ""
 
-#: gl/bank_account_reconcile.php:169
+#: ../gl/bank_account_reconcile.php:167
+#: ../taxes/sav.tax_types.php:183
 msgid "New"
 msgstr ""
 
-#: gl/bank_account_reconcile.php:198
+#: ../gl/bank_account_reconcile.php:196
 msgid "Reconcile Date"
 msgstr ""
 
-#: gl/bank_account_reconcile.php:198
+#: ../gl/bank_account_reconcile.php:196
 msgid "Beginning<br>Balance"
 msgstr ""
 
-#: gl/bank_account_reconcile.php:199
+#: ../gl/bank_account_reconcile.php:197
 msgid "Ending<br>Balance"
 msgstr ""
 
-#: gl/bank_account_reconcile.php:199
+#: ../gl/bank_account_reconcile.php:197
 msgid "Account<br>Total"
 msgstr ""
 
-#: gl/bank_account_reconcile.php:199
+#: ../gl/bank_account_reconcile.php:197
 msgid "Reconciled<br>Amount"
 msgstr ""
 
-#: gl/bank_account_reconcile.php:199
+#: ../gl/bank_account_reconcile.php:197
+#: ../reporting/rep602.php:205
 msgid "Difference"
 msgstr ""
 
-#: gl/bank_account_reconcile.php:203
+#: ../gl/bank_account_reconcile.php:201
 msgid "Date of bank statement to reconcile"
 msgstr ""
 
-#: gl/bank_account_reconcile.php:239 gl/inquiry/bank_inquiry.php:71
-#: gl/inquiry/gl_account_inquiry.php:141 gl/inquiry/gl_account_inquiry.php:143
-#: gl/view/accrual_trans.php:60 gl/view/gl_trans_view.php:36
-#: reporting/rep601.php:79 reporting/rep704.php:84 reporting/rep704.php:86
-#: reporting/rep704.php:89
+#: ../gl/bank_account_reconcile.php:237
+#: ../gl/inquiry/bank_inquiry.php:71
+#: ../gl/inquiry/gl_account_inquiry.php:141
+#: ../gl/inquiry/gl_account_inquiry.php:143
+#: ../gl/view/accrual_trans.php:60
+#: ../reporting/rep601.php:79
+#: ../reporting/rep602.php:80
+#: ../reporting/rep704.php:84
+#: ../reporting/rep704.php:86
+#: ../reporting/rep704.php:89
 msgid "Person/Item"
 msgstr ""
 
-#: gl/bank_account_reconcile.php:249
+#: ../gl/bank_account_reconcile.php:247
 msgid "Reconcile"
 msgstr ""
 
-#: gl/bank_transfer.php:28
+#: ../gl/bank_transfer.php:28
 msgid "Transfer between Bank Accounts"
 msgstr ""
 
-#: gl/bank_transfer.php:39 gl/manage/revaluate_currencies.php:35
+#: ../gl/bank_transfer.php:39
+#: ../gl/manage/revaluate_currencies.php:35
 msgid "Transfer has been entered"
 msgstr ""
 
-#: gl/bank_transfer.php:41 gl/manage/revaluate_currencies.php:37
+#: ../gl/bank_transfer.php:41
+#: ../gl/manage/revaluate_currencies.php:37
 msgid "&View the GL Journal Entries for this Transfer"
 msgstr ""
 
-#: gl/bank_transfer.php:43
+#: ../gl/bank_transfer.php:43
 msgid "Enter &Another Transfer"
 msgstr ""
 
-#: gl/bank_transfer.php:66
+#: ../gl/bank_transfer.php:66
 msgid "From Account:"
 msgstr ""
 
-#: gl/bank_transfer.php:70
+#: ../gl/bank_transfer.php:70
 msgid "To Account:"
 msgstr ""
 
-#: gl/bank_transfer.php:77
+#: ../gl/bank_transfer.php:77
 msgid "Transfer Date:"
 msgstr ""
 
-#: gl/bank_transfer.php:87 gl/bank_transfer.php:94
-#: sales/customer_payments.php:397
+#: ../gl/bank_transfer.php:87
+#: ../gl/bank_transfer.php:94
+#: ../sales/customer_payments.php:400
 msgid "Amount:"
 msgstr ""
 
-#: gl/bank_transfer.php:88 gl/bank_transfer.php:95
-#: purchasing/supplier_payment.php:313 sales/customer_payments.php:383
+#: ../gl/bank_transfer.php:88
+#: ../gl/bank_transfer.php:95
+#: ../purchasing/supplier_payment.php:313
+#: ../sales/customer_payments.php:386
 msgid "Bank Charge:"
 msgstr ""
 
-#: gl/bank_transfer.php:90
+#: ../gl/bank_transfer.php:90
 msgid "Incoming Amount:"
 msgstr ""
 
-#: gl/bank_transfer.php:102
+#: ../gl/bank_transfer.php:102
 msgid "Enter Transfer"
 msgstr ""
 
-#: gl/bank_transfer.php:128 gl/bank_transfer.php:158 gl/bank_transfer.php:190
-#: purchasing/supplier_payment.php:135 purchasing/supplier_payment.php:141
+#: ../gl/bank_transfer.php:128
+#: ../gl/bank_transfer.php:158
+#: ../gl/bank_transfer.php:190
+#: ../purchasing/supplier_payment.php:135
+#: ../purchasing/supplier_payment.php:141
 msgid "The entered amount is invalid or less than zero."
 msgstr ""
 
-#: gl/bank_transfer.php:133 gl/gl_bank.php:224
+#: ../gl/bank_transfer.php:133
+#: ../gl/gl_bank.php:227
 msgid "The total bank amount cannot be 0."
 msgstr ""
 
-#: gl/bank_transfer.php:144
+#: ../gl/bank_transfer.php:144
 #, php-format
 msgid "The total bank amount exceeds allowed limit (%s) for source account."
 msgstr ""
 
-#: gl/bank_transfer.php:150 gl/gl_bank.php:241
+#: ../gl/bank_transfer.php:150
+#: ../gl/gl_bank.php:244
 #, php-format
 msgid ""
 "The bank transaction would result in exceed of authorized overdraft limit "
 "for transaction: %s #%s on %s."
 msgstr ""
 
-#: gl/bank_transfer.php:163 purchasing/supplier_payment.php:149
-#: sales/customer_payments.php:195
+#: ../gl/bank_transfer.php:163
+#: ../purchasing/supplier_payment.php:149
+#: ../sales/customer_payments.php:195
 msgid ""
 "The Bank Charge Account has not been set in System and General GL Setup."
 msgstr ""
 
-#: gl/bank_transfer.php:169 gl/gl_bank.php:248 gl/gl_journal.php:168
-#: gl/manage/revaluate_currencies.php:65 inventory/adjustments.php:94
-#: inventory/transfers.php:91 manufacturing/work_order_add_finished.php:77
-#: manufacturing/work_order_entry.php:132
-#: manufacturing/work_order_issue.php:89 purchasing/po_receive_items.php:188
-#: purchasing/supplier_payment.php:207 sales/credit_note_entry.php:147
-#: sales/customer_credit_invoice.php:102 sales/customer_delivery.php:166
-#: sales/customer_invoice.php:289 sales/customer_payments.php:162
-#: sales/sales_order_entry.php:416
+#: ../gl/bank_transfer.php:169
+#: ../gl/gl_bank.php:251
+#: ../gl/gl_journal.php:174
+#: ../gl/manage/revaluate_currencies.php:65
+#: ../inventory/adjustments.php:94
+#: ../inventory/transfers.php:91
+#: ../manufacturing/work_order_add_finished.php:77
+#: ../manufacturing/work_order_entry.php:132
+#: ../manufacturing/work_order_issue.php:90
+#: ../purchasing/po_receive_items.php:186
+#: ../purchasing/supplier_payment.php:207
+#: ../sales/credit_note_entry.php:147
+#: ../sales/customer_credit_invoice.php:102
+#: ../sales/customer_delivery.php:178
+#: ../sales/customer_invoice.php:341
+#: ../sales/customer_payments.php:162
+#: ../sales/sales_order_entry.php:432
 msgid "You must enter a reference."
 msgstr ""
 
-#: gl/bank_transfer.php:183
+#: ../gl/bank_transfer.php:183
 msgid "The source and destination bank accouts cannot be the same."
 msgstr ""
 
-#: gl/bank_transfer.php:195
+#: ../gl/bank_transfer.php:195
 msgid "The incomming bank amount cannot be 0."
 msgstr ""
 
-#: gl/gl_bank.php:34
+#: ../gl/gl_bank.php:34
 msgid "Bank Account Payment Entry"
 msgstr ""
 
-#: gl/gl_bank.php:37
+#: ../gl/gl_bank.php:37
 msgid "Bank Account Deposit Entry"
 msgstr ""
 
-#: gl/gl_bank.php:40
+#: ../gl/gl_bank.php:40
 msgid "Modify Bank Account Entry"
 msgstr ""
 
-#: gl/gl_bank.php:43
+#: ../gl/gl_bank.php:43
 msgid "Modify Bank Deposit Entry"
 msgstr ""
 
-#: gl/gl_bank.php:74
+#: ../gl/gl_bank.php:77
 #, php-format
 msgid "Payment %d has been entered"
 msgstr ""
 
-#: gl/gl_bank.php:76 gl/gl_bank.php:94
+#: ../gl/gl_bank.php:79
+#: ../gl/gl_bank.php:97
 msgid "&View the GL Postings for this Payment"
 msgstr ""
 
-#: gl/gl_bank.php:78 gl/gl_bank.php:96
+#: ../gl/gl_bank.php:81
+#: ../gl/gl_bank.php:99
 msgid "Enter Another &Payment"
 msgstr ""
 
-#: gl/gl_bank.php:80 gl/gl_bank.php:98
+#: ../gl/gl_bank.php:83
+#: ../gl/gl_bank.php:101
 msgid "Enter A &Deposit"
 msgstr ""
 
-#: gl/gl_bank.php:82 gl/gl_journal.php:61 inventory/adjustments.php:50
-#: manufacturing/work_order_entry.php:68 purchasing/po_entry_items.php:112
-#: purchasing/po_entry_items.php:136 purchasing/supplier_credit.php:49
-#: purchasing/supplier_invoice.php:53 sales/credit_note_entry.php:77
-#: sales/customer_credit_invoice.php:62 sales/customer_invoice.php:75
-#: sales/sales_order_entry.php:237
+#: ../gl/gl_bank.php:85
+#: ../gl/gl_journal.php:64
+#: ../inventory/adjustments.php:50
+#: ../manufacturing/work_order_entry.php:68
+#: ../purchasing/po_entry_items.php:115
+#: ../purchasing/po_entry_items.php:136
+#: ../purchasing/supplier_credit.php:83
+#: ../purchasing/supplier_invoice.php:76
+#: ../sales/credit_note_entry.php:77
+#: ../sales/customer_credit_invoice.php:62
+#: ../sales/customer_invoice.php:78
+#: ../sales/sales_order_entry.php:243
 msgid "Add an Attachment"
 msgstr ""
 
-#: gl/gl_bank.php:92
+#: ../gl/gl_bank.php:95
 #, php-format
 msgid "Payment %d has been modified"
 msgstr ""
 
-#: gl/gl_bank.php:108
+#: ../gl/gl_bank.php:111
 #, php-format
 msgid "Deposit %d has been entered"
 msgstr ""
 
-#: gl/gl_bank.php:110
+#: ../gl/gl_bank.php:113
 msgid "View the GL Postings for this Deposit"
 msgstr ""
 
-#: gl/gl_bank.php:112
+#: ../gl/gl_bank.php:115
 msgid "Enter Another Deposit"
 msgstr ""
 
-#: gl/gl_bank.php:114
+#: ../gl/gl_bank.php:117
 msgid "Enter A Payment"
 msgstr ""
 
-#: gl/gl_bank.php:123
+#: ../gl/gl_bank.php:126
 #, php-format
 msgid "Deposit %d has been modified"
 msgstr ""
 
-#: gl/gl_bank.php:125
+#: ../gl/gl_bank.php:128
 msgid "&View the GL Postings for this Deposit"
 msgstr ""
 
-#: gl/gl_bank.php:127
+#: ../gl/gl_bank.php:130
 msgid "Enter Another &Deposit"
 msgstr ""
 
-#: gl/gl_bank.php:129
+#: ../gl/gl_bank.php:132
 msgid "Enter A &Payment"
 msgstr ""
 
-#: gl/gl_bank.php:218
+#: ../gl/gl_bank.php:221
 msgid "You must enter at least one payment line."
 msgstr ""
 
-#: gl/gl_bank.php:235 purchasing/supplier_payment.php:200
+#: ../gl/gl_bank.php:238
+#: ../purchasing/supplier_payment.php:200
 #, php-format
 msgid "The total bank amount exceeds allowed limit (%s)."
 msgstr ""
 
-#: gl/gl_bank.php:260
+#: ../gl/gl_bank.php:263
 msgid "The entered date for the payment is invalid."
 msgstr ""
 
-#: gl/gl_bank.php:272
+#: ../gl/gl_bank.php:275
 msgid "You have to select customer and customer branch."
 msgstr ""
 
-#: gl/gl_bank.php:276
+#: ../gl/gl_bank.php:279
 msgid "You have to select supplier."
 msgstr ""
 
-#: gl/gl_bank.php:284
+#: ../gl/gl_bank.php:287
 msgid "Settled amount have to be positive number."
 msgstr ""
 
-#: gl/gl_bank.php:329
+#: ../gl/gl_bank.php:333
 msgid "The amount entered is not a valid number or is less than zero."
 msgstr ""
 
-#: gl/gl_bank.php:335 gl/manage/exchange_rates.php:39
+#: ../gl/gl_bank.php:339
+#: ../gl/manage/exchange_rates.php:39
 msgid "The exchange rate cannot be zero or a negative number."
 msgstr ""
 
-#: gl/gl_bank.php:407
+#: ../gl/gl_bank.php:411
 msgid "Payment Items"
 msgstr ""
 
-#: gl/gl_bank.php:407
+#: ../gl/gl_bank.php:411
 msgid "Deposit Items"
 msgstr ""
 
-#: gl/gl_bank.php:415
+#: ../gl/gl_bank.php:419
 msgid "Process Payment"
 msgstr ""
 
-#: gl/gl_bank.php:415
+#: ../gl/gl_bank.php:419
 msgid "Process Deposit"
 msgstr ""
 
-#: gl/gl_budget.php:18
+#: ../gl/gl_budget.php:18
 msgid "Budget Entry"
 msgstr ""
 
-#: gl/gl_budget.php:26 gl/manage/gl_accounts.php:23
+#: ../gl/gl_budget.php:26
+#: ../gl/manage/gl_accounts.php:23
 msgid ""
 "There are no account groups defined. Please define at least one account "
 "group before entering accounts."
 msgstr ""
 
-#: gl/gl_budget.php:45
+#: ../gl/gl_budget.php:45
 msgid "The Budget has been saved."
 msgstr ""
 
-#: gl/gl_budget.php:47
+#: ../gl/gl_budget.php:47
 msgid "The Budget has been deleted."
 msgstr ""
 
-#: gl/gl_budget.php:64 gl/manage/gl_accounts.php:231
-#: gl/manage/gl_accounts.php:241
+#: ../gl/gl_budget.php:64
+#: ../gl/manage/gl_accounts.php:230
+#: ../gl/manage/gl_accounts.php:240
 msgid "Account Code:"
 msgstr ""
 
-#: gl/gl_budget.php:84 gl/manage/exchange_rates.php:142
+#: ../gl/gl_budget.php:84
+#: ../gl/manage/exchange_rates.php:142
 msgid "Get"
 msgstr ""
 
-#: gl/gl_budget.php:91 gl/gl_budget.php:93 gl/inquiry/profit_loss.php:236
-#: gl/manage/gl_quick_entries.php:240 reporting/rep101.php:126
-#: reporting/rep105.php:118 reporting/rep106.php:92 reporting/rep114.php:90
-#: reporting/rep201.php:118 reporting/rep304.php:121 reporting/rep305.php:106
-#: reporting/rep306.php:148 reporting/rep307.php:122 reporting/rep308.php:155
-#: reporting/rep309.php:103 reporting/rep601.php:85 reporting/rep702.php:59
-#: reporting/rep704.php:95 reporting/rep704.php:105 reporting/rep704.php:113
-#: reporting/rep706.php:185 reporting/rep706.php:193 reporting/rep706.php:203
-#: reporting/rep706.php:211 reporting/rep707.php:210 reporting/rep707.php:217
-#: reporting/rep707.php:227 reporting/rep707.php:235 reporting/rep708.php:200
-#: reporting/rep708.php:209 reporting/rep708.php:216 reporting/rep709.php:106
-#: reporting/rep710.php:85
+#: ../gl/gl_budget.php:91
+#: ../gl/gl_budget.php:93
+#: ../gl/inquiry/profit_loss.php:236
+#: ../gl/manage/gl_quick_entries.php:240
+#: ../reporting/rep101.php:126
+#: ../reporting/rep105.php:118
+#: ../reporting/rep106.php:92
+#: ../reporting/rep114.php:90
+#: ../reporting/rep201.php:118
+#: ../reporting/rep304.php:121
+#: ../reporting/rep305.php:106
+#: ../reporting/rep306.php:148
+#: ../reporting/rep307.php:122
+#: ../reporting/rep308.php:155
+#: ../reporting/rep309.php:103
+#: ../reporting/rep601.php:85
+#: ../reporting/rep602.php:86
+#: ../reporting/rep702.php:59
+#: ../reporting/rep704.php:95
+#: ../reporting/rep704.php:105
+#: ../reporting/rep704.php:113
+#: ../reporting/rep706.php:185
+#: ../reporting/rep706.php:193
+#: ../reporting/rep706.php:203
+#: ../reporting/rep706.php:211
+#: ../reporting/rep707.php:210
+#: ../reporting/rep707.php:217
+#: ../reporting/rep707.php:227
+#: ../reporting/rep707.php:235
+#: ../reporting/rep708.php:200
+#: ../reporting/rep708.php:209
+#: ../reporting/rep708.php:216
+#: ../reporting/rep709.php:106
+#: ../reporting/rep710.php:85
 msgid "Period"
 msgstr ""
 
-#: gl/gl_budget.php:91
+#: ../gl/gl_budget.php:91
 msgid "Dim. incl."
 msgstr ""
 
-#: gl/gl_budget.php:91 gl/gl_budget.php:93
+#: ../gl/gl_budget.php:91
+#: ../gl/gl_budget.php:93
 msgid "Last Year"
 msgstr ""
 
-#: gl/gl_budget.php:127 gl/inquiry/balance_sheet.php:98
-#: gl/inquiry/balance_sheet.php:205 gl/inquiry/balance_sheet.php:236
-#: gl/inquiry/gl_trial_balance.php:224 gl/inquiry/profit_loss.php:115
-#: gl/inquiry/profit_loss.php:288 gl/view/gl_deposit_view.php:137
-#: gl/view/gl_payment_view.php:136 gl/view/gl_trans_view.php:106
-#: gl/includes/ui/gl_bank_ui.inc:202 gl/includes/ui/gl_journal_ui.inc:141
-#: inventory/includes/item_adjustments_ui.inc:63
-#: inventory/includes/item_adjustments_ui.inc:102
-#: manufacturing/includes/manufacturing_ui.inc:178
-#: purchasing/includes/ui/invoice_ui.inc:322
-#: purchasing/includes/ui/invoice_ui.inc:487
-#: purchasing/includes/ui/invoice_ui.inc:557
-#: purchasing/po_receive_items.php:63 purchasing/view/view_po.php:140
-#: purchasing/allocations/supplier_allocation_main.php:100
-#: reporting/rep101.php:234 reporting/rep106.php:84 reporting/rep106.php:119
-#: reporting/rep106.php:162 reporting/rep114.php:161 reporting/rep201.php:223
-#: reporting/rep203.php:94 reporting/rep203.php:171 reporting/rep204.php:113
-#: reporting/rep204.php:141 reporting/rep301.php:133 reporting/rep301.php:170
-#: reporting/rep304.php:146 reporting/rep304.php:188 reporting/rep305.php:101
-#: reporting/rep305.php:127 reporting/rep305.php:183 reporting/rep306.php:141
-#: reporting/rep306.php:176 reporting/rep306.php:196 reporting/rep306.php:212
-#: reporting/rep306.php:261 reporting/rep306.php:276 reporting/rep306.php:287
-#: reporting/rep309.php:126 reporting/rep309.php:153 reporting/rep702.php:142
-#: reporting/rep705.php:152 reporting/rep705.php:315 reporting/rep706.php:106
-#: reporting/rep706.php:255 reporting/rep706.php:290 reporting/rep707.php:115
-#: reporting/rep707.php:297 reporting/rep708.php:253
-#: reporting/includes/doctext.inc:30 reporting/includes/doctext.inc:170
-#: sales/customer_credit_invoice.php:281 sales/customer_delivery.php:433
-#: sales/customer_invoice.php:479
-#: sales/allocations/customer_allocation_main.php:99
-#: sales/view/view_credit.php:91 sales/view/view_dispatch.php:113
-#: sales/view/view_invoice.php:114 sales/view/view_sales_order.php:96
-#: sales/view/view_sales_order.php:129 sales/view/view_sales_order.php:161
-#: sales/view/view_sales_order.php:202
-#: sales/includes/ui/sales_credit_ui.inc:168
-#: sales/includes/ui/sales_order_ui.inc:146
+#: ../gl/gl_budget.php:127
+#: ../gl/inquiry/balance_sheet.php:98
+#: ../gl/inquiry/balance_sheet.php:205
+#: ../gl/inquiry/balance_sheet.php:236
+#: ../gl/inquiry/gl_trial_balance.php:223
+#: ../gl/inquiry/profit_loss.php:115
+#: ../gl/inquiry/profit_loss.php:288
+#: ../gl/view/gl_deposit_view.php:137
+#: ../gl/view/gl_payment_view.php:136
+#: ../gl/view/gl_trans_view.php:115
+#: ../gl/includes/ui/gl_bank_ui.inc:202
+#: ../gl/includes/ui/gl_journal_ui.inc:153
+#: ../inventory/includes/item_adjustments_ui.inc:63
+#: ../inventory/includes/item_adjustments_ui.inc:102
+#: ../manufacturing/includes/manufacturing_ui.inc:178
+#: ../purchasing/includes/ui/invoice_ui.inc:344
+#: ../purchasing/includes/ui/invoice_ui.inc:510
+#: ../purchasing/includes/ui/invoice_ui.inc:581
+#: ../purchasing/po_receive_items.php:63
+#: ../purchasing/view/view_po.php:140
+#: ../purchasing/allocations/supplier_allocation_main.php:100
+#: ../reporting/rep101.php:234
+#: ../reporting/rep106.php:84
+#: ../reporting/rep106.php:119
+#: ../reporting/rep106.php:162
+#: ../reporting/rep114.php:161
+#: ../reporting/rep201.php:223
+#: ../reporting/rep203.php:94
+#: ../reporting/rep203.php:171
+#: ../reporting/rep204.php:113
+#: ../reporting/rep204.php:141
+#: ../reporting/rep301.php:133
+#: ../reporting/rep301.php:170
+#: ../reporting/rep304.php:146
+#: ../reporting/rep304.php:188
+#: ../reporting/rep305.php:101
+#: ../reporting/rep305.php:127
+#: ../reporting/rep305.php:183
+#: ../reporting/rep306.php:141
+#: ../reporting/rep306.php:176
+#: ../reporting/rep306.php:196
+#: ../reporting/rep306.php:212
+#: ../reporting/rep306.php:261
+#: ../reporting/rep306.php:276
+#: ../reporting/rep306.php:287
+#: ../reporting/rep309.php:126
+#: ../reporting/rep309.php:153
+#: ../reporting/rep702.php:142
+#: ../reporting/rep705.php:152
+#: ../reporting/rep705.php:315
+#: ../reporting/rep706.php:106
+#: ../reporting/rep706.php:255
+#: ../reporting/rep706.php:290
+#: ../reporting/rep707.php:115
+#: ../reporting/rep707.php:297
+#: ../reporting/rep708.php:253
+#: ../reporting/includes/doctext.inc:30
+#: ../reporting/includes/doctext.inc:192
+#: ../sales/customer_credit_invoice.php:281
+#: ../sales/customer_delivery.php:447
+#: ../sales/customer_invoice.php:551
+#: ../sales/customer_invoice.php:554
+#: ../sales/allocations/customer_allocation_main.php:99
+#: ../sales/view/view_credit.php:91
+#: ../sales/view/view_dispatch.php:113
+#: ../sales/view/view_invoice.php:116
+#: ../sales/view/view_sales_order.php:109
+#: ../sales/view/view_sales_order.php:142
+#: ../sales/view/view_sales_order.php:179
+#: ../sales/view/view_sales_order.php:220
+#: ../sales/includes/ui/sales_credit_ui.inc:168
+#: ../sales/includes/ui/sales_order_ui.inc:147
 msgid "Total"
 msgstr ""
 
-#: gl/gl_journal.php:32
+#: ../gl/gl_journal.php:33
 #, php-format
 msgid "Modifying Journal Transaction # %d."
 msgstr ""
 
-#: gl/gl_journal.php:36 includes/sysnames.inc:22 includes/sysnames.inc:149
+#: ../gl/gl_journal.php:37
+#: ../includes/sysnames.inc:22
+#: ../includes/sysnames.inc:150
 msgid "Journal Entry"
 msgstr ""
 
-#: gl/gl_journal.php:54
+#: ../gl/gl_journal.php:57
 msgid "Journal entry has been entered"
 msgstr ""
 
-#: gl/gl_journal.php:56 gl/gl_journal.php:71
+#: ../gl/gl_journal.php:59
+#: ../gl/gl_journal.php:74
 msgid "&View this Journal Entry"
 msgstr ""
 
-#: gl/gl_journal.php:59
+#: ../gl/gl_journal.php:62
 msgid "Enter &New Journal Entry"
 msgstr ""
 
-#: gl/gl_journal.php:69
+#: ../gl/gl_journal.php:72
 msgid "Journal entry has been updated"
 msgstr ""
 
-#: gl/gl_journal.php:73
+#: ../gl/gl_journal.php:76
 msgid "Return to Journal &Inquiry"
 msgstr ""
 
-#: gl/gl_journal.php:86
+#: ../gl/gl_journal.php:91
 msgid ""
 "You can edit directly only journal entries created via Journal Entry page."
 msgstr ""
 
-#: gl/gl_journal.php:87
+#: ../gl/gl_journal.php:92
 msgid "Entry &New Journal Entry"
 msgstr ""
 
-#: gl/gl_journal.php:143
+#: ../gl/gl_journal.php:149
 msgid "You must enter at least one journal line."
 msgstr ""
 
-#: gl/gl_journal.php:149
+#: ../gl/gl_journal.php:155
+#: ../includes/ui/gl_cart.inc:128
 msgid ""
 "The journal must balance (debits equal to credits) before it can be "
 "processed."
 msgstr ""
 
-#: gl/gl_journal.php:211 gl/gl_journal.php:218
+#: ../gl/gl_journal.php:217
+#: ../gl/gl_journal.php:224
 msgid "Dimension is closed."
 msgstr ""
 
-#: gl/gl_journal.php:225
+#: ../gl/gl_journal.php:231
 msgid "You must enter either a debit amount or a credit amount."
 msgstr ""
 
-#: gl/gl_journal.php:232
+#: ../gl/gl_journal.php:238
 msgid "The debit amount entered is not a valid number or is less than zero."
 msgstr ""
 
-#: gl/gl_journal.php:237
+#: ../gl/gl_journal.php:243
 msgid "The credit amount entered is not a valid number or is less than zero."
 msgstr ""
 
-#: gl/gl_journal.php:243 includes/ui/ui_view.inc:732
-#: purchasing/supplier_credit.php:119 purchasing/supplier_invoice.php:129
+#: ../gl/gl_journal.php:249
+#: ../includes/ui/ui_view.inc:733
+#: ../purchasing/supplier_credit.php:144
+#: ../purchasing/supplier_invoice.php:154
 msgid "Cannot post to GL account used by more than one tax type."
 msgstr ""
 
-#: gl/gl_journal.php:250
+#: ../gl/gl_journal.php:256
 msgid ""
 "You cannot make a journal entry for a bank account. Please use one of the "
 "banking functions for bank transactions."
 msgstr ""
 
-#: gl/gl_journal.php:329
+#: ../gl/gl_journal.php:335
 msgid "Rows"
 msgstr ""
 
-#: gl/gl_journal.php:335
+#: ../gl/gl_journal.php:341
 msgid "Process Journal Entry"
 msgstr ""
 
-#: gl/gl_journal.php:336
+#: ../gl/gl_journal.php:342
 msgid "Process journal entry only if debits equal to credits"
 msgstr ""
 
-#: gl/inquiry/balance_sheet.php:27
+#: ../gl/inquiry/balance_sheet.php:27
 msgid "Balance Sheet Drilldown"
 msgstr ""
 
-#: gl/inquiry/balance_sheet.php:126
+#: ../gl/inquiry/balance_sheet.php:126
 msgid "As at:"
 msgstr ""
 
-#: gl/inquiry/balance_sheet.php:228 gl/inquiry/profit_loss.php:299
-#: reporting/rep705.php:325 reporting/rep706.php:278 reporting/rep706.php:303
-#: reporting/rep707.php:309 reporting/rep707.php:315
+#: ../gl/inquiry/balance_sheet.php:228
+#: ../gl/inquiry/profit_loss.php:299
+#: ../reporting/rep705.php:325
+#: ../reporting/rep706.php:278
+#: ../reporting/rep706.php:303
+#: ../reporting/rep707.php:309
+#: ../reporting/rep707.php:315
 msgid "Calculated Return"
 msgstr ""
 
-#: gl/inquiry/balance_sheet.php:236 includes/sysnames.inc:120
-#: reporting/rep706.php:290
+#: ../gl/inquiry/balance_sheet.php:236
+#: ../includes/sysnames.inc:121
+#: ../reporting/rep706.php:290
 msgid "Liabilities"
 msgstr ""
 
-#: gl/inquiry/balance_sheet.php:236 reporting/rep706.php:290
+#: ../gl/inquiry/balance_sheet.php:236
+#: ../reporting/rep706.php:290
 msgid " and "
 msgstr ""
 
-#: gl/inquiry/balance_sheet.php:236 reporting/rep706.php:290
+#: ../gl/inquiry/balance_sheet.php:236
+#: ../reporting/rep706.php:290
 msgid "Equities"
 msgstr ""
 
-#: gl/inquiry/bank_inquiry.php:28 reporting/rep601.php:72
+#: ../gl/inquiry/bank_inquiry.php:28
+#: ../reporting/rep601.php:72
 msgid "Bank Statement"
 msgstr ""
 
-#: gl/inquiry/bank_inquiry.php:78 gl/inquiry/gl_account_inquiry.php:162
-#: reporting/rep601.php:104 reporting/rep704.php:144
+#: ../gl/inquiry/bank_inquiry.php:78
+#: ../gl/inquiry/gl_account_inquiry.php:162
+#: ../reporting/rep601.php:104
+#: ../reporting/rep602.php:103
+#: ../reporting/rep704.php:144
 msgid "Opening Balance"
 msgstr ""
 
-#: gl/inquiry/bank_inquiry.php:124 gl/inquiry/gl_account_inquiry.php:213
-#: gl/inquiry/gl_trial_balance.php:234 reporting/rep601.php:157
-#: reporting/rep704.php:192 reporting/rep708.php:262
+#: ../gl/inquiry/bank_inquiry.php:124
+#: ../gl/inquiry/gl_account_inquiry.php:213
+#: ../gl/inquiry/gl_trial_balance.php:233
+#: ../reporting/rep601.php:157
+#: ../reporting/rep602.php:157
+#: ../reporting/rep704.php:192
+#: ../reporting/rep708.php:262
 msgid "Ending Balance"
 msgstr ""
 
-#: gl/inquiry/gl_account_inquiry.php:31
+#: ../gl/inquiry/gl_account_inquiry.php:31
 msgid "General Ledger Inquiry"
 msgstr ""
 
-#: gl/inquiry/gl_account_inquiry.php:70
+#: ../gl/inquiry/gl_account_inquiry.php:70
 msgid "All Accounts"
 msgstr ""
 
-#: gl/inquiry/gl_account_inquiry.php:83
+#: ../gl/inquiry/gl_account_inquiry.php:83
 msgid "Amount min:"
 msgstr ""
 
-#: gl/inquiry/gl_account_inquiry.php:84
+#: ../gl/inquiry/gl_account_inquiry.php:84
 msgid "Amount max:"
 msgstr ""
 
-#: gl/inquiry/gl_account_inquiry.php:222
+#: ../gl/inquiry/gl_account_inquiry.php:222
 msgid ""
 "No general ledger transactions have been created for the specified criteria."
 msgstr ""
 
-#: gl/inquiry/gl_trial_balance.php:28 reporting/rep708.php:219
+#: ../gl/inquiry/gl_trial_balance.php:28
+#: ../reporting/rep708.php:219
 msgid "Trial Balance"
 msgstr ""
 
-#: gl/inquiry/gl_trial_balance.php:60
+#: ../gl/inquiry/gl_trial_balance.php:60
 msgid "No zero values"
 msgstr ""
 
-#: gl/inquiry/gl_trial_balance.php:61 reporting/reports_main.php:381
-#: reporting/reports_main.php:431 reporting/reports_main.php:476
+#: ../gl/inquiry/gl_trial_balance.php:61
+#: ../reporting/reports_main.php:387
+#: ../reporting/reports_main.php:437
+#: ../reporting/reports_main.php:482
 msgid "Only balances"
 msgstr ""
 
-#: gl/inquiry/gl_trial_balance.php:95 gl/inquiry/gl_trial_balance.php:156
-#: reporting/rep706.php:308 reporting/rep707.php:326 reporting/rep708.php:51
-#: reporting/rep708.php:126 sales/create_recurrent_invoices.php:134
-#: sales/manage/recurrent_invoices.php:102
+#: ../gl/inquiry/gl_trial_balance.php:93
+#: ../gl/inquiry/gl_trial_balance.php:154
+#: ../reporting/rep706.php:308
+#: ../reporting/rep707.php:326
+#: ../reporting/rep708.php:51
+#: ../reporting/rep708.php:126
+#: ../sales/create_recurrent_invoices.php:134
+#: ../sales/manage/recurrent_invoices.php:102
 msgid "Group"
 msgstr ""
 
-#: gl/inquiry/gl_trial_balance.php:173
+#: ../gl/inquiry/gl_trial_balance.php:172
 msgid "The from date cannot be bigger than the fiscal year end."
 msgstr ""
 
-#: gl/inquiry/gl_trial_balance.php:186 gl/manage/bank_accounts.php:106
-#: gl/view/gl_trans_view.php:63 gl/view/gl_trans_view.php:66
-#: gl/view/gl_trans_view.php:69 reporting/rep701.php:111
-#: reporting/rep702.php:53 reporting/rep705.php:238 reporting/rep706.php:185
-#: reporting/rep707.php:210 reporting/rep708.php:192
+#: ../gl/inquiry/gl_trial_balance.php:185
+#: ../gl/manage/bank_accounts.php:109
+#: ../gl/view/gl_trans_view.php:68
+#: ../gl/view/gl_trans_view.php:71
+#: ../gl/view/gl_trans_view.php:74
+#: ../reporting/rep701.php:111
+#: ../reporting/rep702.php:53
+#: ../reporting/rep705.php:238
+#: ../reporting/rep706.php:185
+#: ../reporting/rep707.php:210
+#: ../reporting/rep708.php:192
 msgid "Account Name"
 msgstr ""
 
-#: gl/inquiry/gl_trial_balance.php:187 reporting/rep708.php:185
+#: ../gl/inquiry/gl_trial_balance.php:186
+#: ../reporting/rep708.php:185
 msgid "Brought Forward"
 msgstr ""
 
-#: gl/inquiry/gl_trial_balance.php:188 reporting/rep708.php:185
+#: ../gl/inquiry/gl_trial_balance.php:187
+#: ../reporting/rep708.php:185
 msgid "This Period"
 msgstr ""
 
-#: gl/inquiry/gl_trial_balance.php:207 gl/manage/gl_account_types.php:128
+#: ../gl/inquiry/gl_trial_balance.php:206
+#: ../gl/manage/gl_account_types.php:128
 msgid "Class"
 msgstr ""
 
-#: gl/inquiry/gl_trial_balance.php:242 reporting/rep708.php:283
+#: ../gl/inquiry/gl_trial_balance.php:241
+#: ../reporting/rep708.php:283
 msgid ""
 "The Opening Balance is not in balance, probably due to a non closed Previous "
 "Fiscalyear."
 msgstr ""
 
-#: gl/inquiry/journal_inquiry.php:27
+#: ../gl/inquiry/journal_inquiry.php:27
 msgid "Journal Inquiry"
 msgstr ""
 
-#: gl/inquiry/journal_inquiry.php:45
+#: ../gl/inquiry/journal_inquiry.php:45
 msgid "Enter reference fragment or leave empty"
 msgstr ""
 
-#: gl/inquiry/journal_inquiry.php:51
+#: ../gl/inquiry/journal_inquiry.php:51
 msgid "Show closed:"
 msgstr ""
 
-#: gl/inquiry/journal_inquiry.php:56
+#: ../gl/inquiry/journal_inquiry.php:56
 msgid "Enter memo fragment or leave empty"
 msgstr ""
 
-#: gl/inquiry/journal_inquiry.php:130
+#: ../gl/inquiry/journal_inquiry.php:130
 msgid "Trans #"
 msgstr ""
 
-#: gl/inquiry/journal_inquiry.php:134 reporting/rep710.php:77
-#: reporting/rep710.php:87 reporting/reports_main.php:492
+#: ../gl/inquiry/journal_inquiry.php:134
+#: ../reporting/rep710.php:77
+#: ../reporting/rep710.php:87
+#: ../reporting/reports_main.php:498
 msgid "User"
 msgstr ""
 
-#: gl/inquiry/profit_loss.php:27
+#: ../gl/inquiry/profit_loss.php:27
 msgid "Profit & Loss Drilldown"
 msgstr ""
 
-#: gl/inquiry/profit_loss.php:173 reporting/rep707.php:210
-#: reporting/includes/reports_classes.inc:245
+#: ../gl/inquiry/profit_loss.php:173
+#: ../reporting/rep707.php:210
+#: ../reporting/includes/reports_classes.inc:245
 msgid "Accumulated"
 msgstr ""
 
-#: gl/inquiry/profit_loss.php:173 reporting/rep707.php:255
-#: reporting/includes/reports_classes.inc:245
+#: ../gl/inquiry/profit_loss.php:173
+#: ../reporting/rep707.php:255
+#: ../reporting/includes/reports_classes.inc:245
 msgid "Period Y-1"
 msgstr ""
 
-#: gl/inquiry/profit_loss.php:173 reporting/rep707.php:246
-#: reporting/includes/reports_classes.inc:245
+#: ../gl/inquiry/profit_loss.php:173
+#: ../reporting/rep707.php:246
+#: ../reporting/includes/reports_classes.inc:245
 msgid "Budget"
 msgstr ""
 
-#: gl/inquiry/profit_loss.php:174 reporting/reports_main.php:368
-#: reporting/reports_main.php:419 reporting/reports_main.php:465
+#: ../gl/inquiry/profit_loss.php:174
+#: ../reporting/reports_main.php:374
+#: ../reporting/reports_main.php:425
+#: ../reporting/reports_main.php:471
 msgid "Compare to"
 msgstr ""
 
-#: gl/inquiry/profit_loss.php:235
+#: ../gl/inquiry/profit_loss.php:235
 msgid "Group/Account Name"
 msgstr ""
 
-#: gl/inquiry/profit_loss.php:238 reporting/rep707.php:210
+#: ../gl/inquiry/profit_loss.php:238
+#: ../reporting/rep707.php:210
 msgid "Achieved %"
 msgstr ""
 
-#: gl/inquiry/tax_inquiry.php:30
+#: ../gl/inquiry/tax_inquiry.php:30
 msgid "Tax Inquiry"
 msgstr ""
 
-#: gl/inquiry/tax_inquiry.php:82 reporting/rep709.php:183
+#: ../gl/inquiry/tax_inquiry.php:82
+#: ../reporting/rep709.php:183
 msgid "Outputs"
 msgstr ""
 
-#: gl/inquiry/tax_inquiry.php:82 reporting/rep709.php:183
+#: ../gl/inquiry/tax_inquiry.php:82
+#: ../reporting/rep709.php:183
 msgid "Inputs"
 msgstr ""
 
-#: gl/inquiry/tax_inquiry.php:100
+#: ../gl/inquiry/tax_inquiry.php:100
 msgid "Charged on sales"
 msgstr ""
 
-#: gl/inquiry/tax_inquiry.php:100 reporting/rep709.php:183
+#: ../gl/inquiry/tax_inquiry.php:100
+#: ../reporting/rep709.php:183
 msgid "Output Tax"
 msgstr ""
 
-#: gl/inquiry/tax_inquiry.php:106
+#: ../gl/inquiry/tax_inquiry.php:106
 msgid "Paid on purchases"
 msgstr ""
 
-#: gl/inquiry/tax_inquiry.php:106 reporting/rep709.php:183
+#: ../gl/inquiry/tax_inquiry.php:106
+#: ../reporting/rep709.php:183
 msgid "Input Tax"
 msgstr ""
 
-#: gl/inquiry/tax_inquiry.php:112
+#: ../gl/inquiry/tax_inquiry.php:112
 msgid "Net payable or collectible"
 msgstr ""
 
-#: gl/inquiry/tax_inquiry.php:119 reporting/rep709.php:214
+#: ../gl/inquiry/tax_inquiry.php:119
+#: ../reporting/rep709.php:214
 msgid "Total payable or refund"
 msgstr ""
 
-#: gl/manage/bank_accounts.php:16 reporting/reports_main.php:310
+#: ../gl/manage/bank_accounts.php:16
+#: ../reporting/reports_main.php:310
+#: ../reporting/reports_main.php:318
 msgid "Bank Accounts"
 msgstr ""
 
-#: gl/manage/bank_accounts.php:33
+#: ../gl/manage/bank_accounts.php:33
 msgid "The bank account name cannot be empty."
 msgstr ""
 
-#: gl/manage/bank_accounts.php:39
+#: ../gl/manage/bank_accounts.php:39
 msgid "The GL account selected is already in use. Select another GL account."
 msgstr ""
 
-#: gl/manage/bank_accounts.php:52
+#: ../gl/manage/bank_accounts.php:52
 msgid "Bank account has been updated"
 msgstr ""
 
-#: gl/manage/bank_accounts.php:61
+#: ../gl/manage/bank_accounts.php:61
 msgid "New bank account has been added"
 msgstr ""
 
-#: gl/manage/bank_accounts.php:76
+#: ../gl/manage/bank_accounts.php:76
 msgid ""
 "Cannot delete this bank account because transactions have been created using "
 "this account."
 msgstr ""
 
-#: gl/manage/bank_accounts.php:82
+#: ../gl/manage/bank_accounts.php:82
 msgid ""
 "Cannot delete this bank account because POS definitions have been created "
 "using this account."
 msgstr ""
 
-#: gl/manage/bank_accounts.php:87
+#: ../gl/manage/bank_accounts.php:87
 msgid "Selected bank account has been deleted"
 msgstr ""
 
-#: gl/manage/bank_accounts.php:106 gl/view/bank_transfer_view.php:69
-#: gl/view/bank_transfer_view.php:78 gl/view/gl_deposit_view.php:66
-#: gl/view/gl_payment_view.php:64 inventory/prices.php:146
-#: inventory/purchasing_data.php:147 purchasing/view/view_supp_credit.php:49
-#: purchasing/view/view_supp_invoice.php:53
-#: purchasing/inquiry/po_search_completed.php:127
-#: purchasing/inquiry/po_search.php:136
-#: purchasing/inquiry/supplier_allocation_inquiry.php:133
-#: purchasing/inquiry/supplier_allocation_inquiry.php:143
-#: purchasing/inquiry/supplier_inquiry.php:76
-#: purchasing/inquiry/supplier_inquiry.php:175
-#: purchasing/inquiry/supplier_inquiry.php:186
-#: purchasing/allocations/supplier_allocation_main.php:99
-#: purchasing/allocations/supplier_allocation_main.php:107
-#: reporting/rep101.php:128 reporting/rep102.php:133 reporting/rep102.php:139
-#: reporting/rep103.php:232 reporting/rep104.php:116 reporting/rep201.php:120
-#: reporting/rep202.php:138 reporting/rep203.php:101 reporting/rep205.php:150
-#: sales/customer_credit_invoice.php:237 sales/customer_delivery.php:340
-#: sales/customer_invoice.php:413
-#: sales/allocations/customer_allocation_main.php:98
-#: sales/allocations/customer_allocation_main.php:106
-#: sales/view/view_credit.php:70 sales/view/view_dispatch.php:86
-#: sales/view/view_invoice.php:85
-#: sales/inquiry/customer_allocation_inquiry.php:151
-#: sales/inquiry/customer_allocation_inquiry.php:161
-#: sales/inquiry/customer_inquiry.php:80
-#: sales/inquiry/customer_inquiry.php:225
-#: sales/inquiry/customer_inquiry.php:238
-#: sales/inquiry/sales_deliveries_view.php:189
-#: sales/inquiry/sales_orders_view.php:272
-#: sales/inquiry/sales_orders_view.php:286
+#: ../gl/manage/bank_accounts.php:109
+#: ../gl/view/bank_transfer_view.php:69
+#: ../gl/view/bank_transfer_view.php:78
+#: ../gl/view/gl_deposit_view.php:66
+#: ../gl/view/gl_payment_view.php:64
+#: ../inventory/prices.php:147
+#: ../inventory/purchasing_data.php:148
+#: ../purchasing/view/view_supp_credit.php:49
+#: ../purchasing/view/view_supp_invoice.php:54
+#: ../purchasing/inquiry/po_search_completed.php:126
+#: ../purchasing/inquiry/po_search.php:136
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:133
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:143
+#: ../purchasing/inquiry/supplier_inquiry.php:73
+#: ../purchasing/inquiry/supplier_inquiry.php:180
+#: ../purchasing/inquiry/supplier_inquiry.php:192
+#: ../purchasing/allocations/supplier_allocation_main.php:99
+#: ../purchasing/allocations/supplier_allocation_main.php:107
+#: ../reporting/rep101.php:128
+#: ../reporting/rep102.php:133
+#: ../reporting/rep102.php:139
+#: ../reporting/rep103.php:232
+#: ../reporting/rep104.php:116
+#: ../reporting/rep201.php:120
+#: ../reporting/rep202.php:138
+#: ../reporting/rep203.php:101
+#: ../reporting/rep205.php:150
+#: ../sales/customer_credit_invoice.php:237
+#: ../sales/customer_delivery.php:354
+#: ../sales/customer_invoice.php:479
+#: ../sales/allocations/customer_allocation_main.php:98
+#: ../sales/allocations/customer_allocation_main.php:106
+#: ../sales/view/view_credit.php:70
+#: ../sales/view/view_dispatch.php:86
+#: ../sales/view/view_invoice.php:86
+#: ../sales/inquiry/customer_allocation_inquiry.php:151
+#: ../sales/inquiry/customer_allocation_inquiry.php:161
+#: ../sales/inquiry/customer_inquiry.php:76
+#: ../sales/inquiry/customer_inquiry.php:208
+#: ../sales/inquiry/customer_inquiry.php:221
+#: ../sales/inquiry/sales_deliveries_view.php:189
+#: ../sales/inquiry/sales_orders_view.php:295
+#: ../sales/inquiry/sales_orders_view.php:309
 msgid "Currency"
 msgstr ""
 
-#: gl/manage/bank_accounts.php:106
+#: ../gl/manage/bank_accounts.php:109
 msgid "GL Account"
 msgstr ""
 
-#: gl/manage/bank_accounts.php:107 reporting/includes/doctext.inc:247
+#: ../gl/manage/bank_accounts.php:110
+#: ../reporting/includes/doctext.inc:260
 msgid "Bank"
 msgstr ""
 
-#: gl/manage/bank_accounts.php:107 includes/ui/ui_view.inc:547
+#: ../gl/manage/bank_accounts.php:110
+#: ../includes/ui/ui_view.inc:547
 msgid "Number"
 msgstr ""
 
-#: gl/manage/bank_accounts.php:107
+#: ../gl/manage/bank_accounts.php:110
 msgid "Bank Address"
 msgstr ""
 
-#: gl/manage/bank_accounts.php:107
+#: ../gl/manage/bank_accounts.php:110
 msgid "Dflt"
 msgstr ""
 
-#: gl/manage/bank_accounts.php:163
+#: ../gl/manage/bank_accounts.php:167
 msgid "Bank Account Name:"
 msgstr ""
 
-#: gl/manage/bank_accounts.php:167 gl/manage/bank_accounts.php:171
+#: ../gl/manage/bank_accounts.php:171
+#: ../gl/manage/bank_accounts.php:175
 msgid "Account Type:"
 msgstr ""
 
-#: gl/manage/bank_accounts.php:175 gl/manage/bank_accounts.php:179
+#: ../gl/manage/bank_accounts.php:179
+#: ../gl/manage/bank_accounts.php:183
 msgid "Bank Account Currency:"
 msgstr ""
 
-#: gl/manage/bank_accounts.php:182
+#: ../gl/manage/bank_accounts.php:186
 msgid "Default currency account:"
 msgstr ""
 
-#: gl/manage/bank_accounts.php:185 gl/manage/bank_accounts.php:187
+#: ../gl/manage/bank_accounts.php:189
+#: ../gl/manage/bank_accounts.php:191
 msgid "Bank Account GL Code:"
 msgstr ""
 
-#: gl/manage/bank_accounts.php:189
+#: ../gl/manage/bank_accounts.php:194
 msgid "Bank Name:"
 msgstr ""
 
-#: gl/manage/bank_accounts.php:190
+#: ../gl/manage/bank_accounts.php:195
+#: ../sales/manage/customer_branches.php:255
 msgid "Bank Account Number:"
 msgstr ""
 
-#: gl/manage/bank_accounts.php:191
+#: ../gl/manage/bank_accounts.php:196
 msgid "Bank Address:"
 msgstr ""
 
-#: gl/manage/currencies.php:16 includes/access_levels.inc:223
+#: ../gl/manage/close_period.php:25
+msgid "Closing GL Transactions"
+msgstr ""
+
+#: ../gl/manage/close_period.php:40
+msgid "Selected date is not in fiscal year or the year is closed."
+msgstr ""
+
+#: ../gl/manage/close_period.php:47
+msgid "The entered date is earlier than date already selected as closing date."
+msgstr ""
+
+#: ../gl/manage/close_period.php:51
+msgid "You are not allowed to reopen already closed transactions."
+msgstr ""
+
+#: ../gl/manage/close_period.php:69
+#, php-format
+msgid ""
+"All transactions resulting in GL accounts changes up to %s has been closed "
+"for further edition."
+msgstr ""
+
+#: ../gl/manage/close_period.php:88
+msgid ""
+"Using this feature you can prevent entering new transactions <br>\n"
+"\tand disable edition of already entered transactions up to specified date."
+"<br>\n"
+"\tOnly transactions which can generate GL postings are subject to the "
+"constraint."
+msgstr ""
+
+#: ../gl/manage/close_period.php:101
+msgid "End date of closing period:"
+msgstr ""
+
+#: ../gl/manage/close_period.php:104
+msgid "Close Transactions"
+msgstr ""
+
+#: ../gl/manage/currencies.php:16
+#: ../includes/access_levels.inc:223
 msgid "Currencies"
 msgstr ""
 
-#: gl/manage/currencies.php:29
+#: ../gl/manage/currencies.php:29
 msgid "The currency abbreviation must be entered."
 msgstr ""
 
-#: gl/manage/currencies.php:35
+#: ../gl/manage/currencies.php:35
 msgid "The currency name must be entered."
 msgstr ""
 
-#: gl/manage/currencies.php:41
+#: ../gl/manage/currencies.php:41
 msgid "The currency symbol must be entered."
 msgstr ""
 
-#: gl/manage/currencies.php:47
+#: ../gl/manage/currencies.php:47
 msgid "The hundredths name must be entered."
 msgstr ""
 
-#: gl/manage/currencies.php:69
+#: ../gl/manage/currencies.php:69
 msgid "Selected currency settings has been updated"
 msgstr ""
 
-#: gl/manage/currencies.php:76
+#: ../gl/manage/currencies.php:76
 msgid "New currency has been added"
 msgstr ""
 
-#: gl/manage/currencies.php:92
+#: ../gl/manage/currencies.php:92
 msgid ""
 "Cannot delete this currency, because customer accounts have been created "
 "referring to this currency."
 msgstr ""
 
-#: gl/manage/currencies.php:98
+#: ../gl/manage/currencies.php:98
 msgid ""
 "Cannot delete this currency, because supplier accounts have been created "
 "referring to this currency."
 msgstr ""
 
-#: gl/manage/currencies.php:104
+#: ../gl/manage/currencies.php:104
 msgid ""
 "Cannot delete this currency, because the company preferences uses this "
 "currency."
 msgstr ""
 
-#: gl/manage/currencies.php:111
+#: ../gl/manage/currencies.php:111
 msgid ""
 "Cannot delete this currency, because thre are bank accounts that use this "
 "currency."
 msgstr ""
 
-#: gl/manage/currencies.php:126
+#: ../gl/manage/currencies.php:126
 msgid "Selected currency has been deleted"
 msgstr ""
 
-#: gl/manage/currencies.php:139
+#: ../gl/manage/currencies.php:139
 msgid "Abbreviation"
 msgstr ""
 
-#: gl/manage/currencies.php:139
+#: ../gl/manage/currencies.php:139
 msgid "Symbol"
 msgstr ""
 
-#: gl/manage/currencies.php:139
+#: ../gl/manage/currencies.php:139
 msgid "Currency Name"
 msgstr ""
 
-#: gl/manage/currencies.php:140
+#: ../gl/manage/currencies.php:140
 msgid "Hundredths name"
 msgstr ""
 
-#: gl/manage/currencies.php:140
+#: ../gl/manage/currencies.php:140
 msgid "Country"
 msgstr ""
 
-#: gl/manage/currencies.php:140
+#: ../gl/manage/currencies.php:140
 msgid "Auto update"
 msgstr ""
 
-#: gl/manage/currencies.php:175
+#: ../gl/manage/currencies.php:175
 msgid "The marked currency is the home currency which cannot be deleted."
 msgstr ""
 
-#: gl/manage/currencies.php:201 gl/manage/currencies.php:206
+#: ../gl/manage/currencies.php:201
+#: ../gl/manage/currencies.php:206
 msgid "Currency Abbreviation:"
 msgstr ""
 
-#: gl/manage/currencies.php:209
+#: ../gl/manage/currencies.php:209
 msgid "Currency Symbol:"
 msgstr ""
 
-#: gl/manage/currencies.php:210
+#: ../gl/manage/currencies.php:210
 msgid "Currency Name:"
 msgstr ""
 
-#: gl/manage/currencies.php:211
+#: ../gl/manage/currencies.php:211
 msgid "Hundredths Name:"
 msgstr ""
 
-#: gl/manage/currencies.php:212
+#: ../gl/manage/currencies.php:212
 msgid "Country:"
 msgstr ""
 
-#: gl/manage/currencies.php:213
+#: ../gl/manage/currencies.php:213
 msgid "Automatic exchange rate update:"
 msgstr ""
 
-#: gl/manage/exchange_rates.php:24
+#: ../gl/manage/exchange_rates.php:24
 msgid "Exchange Rates"
 msgstr ""
 
-#: gl/manage/exchange_rates.php:45
+#: ../gl/manage/exchange_rates.php:45
 msgid "The exchange rate for the date is already there."
 msgstr ""
 
-#: gl/manage/exchange_rates.php:127 gl/manage/exchange_rates.php:133
+#: ../gl/manage/exchange_rates.php:127
+#: ../gl/manage/exchange_rates.php:133
 msgid "Date to Use From:"
 msgstr ""
 
-#: gl/manage/exchange_rates.php:141 includes/ui/ui_view.inc:325
+#: ../gl/manage/exchange_rates.php:141
+#: ../includes/ui/ui_view.inc:325
 msgid "Exchange Rate:"
 msgstr ""
 
-#: gl/manage/exchange_rates.php:142
+#: ../gl/manage/exchange_rates.php:142
 msgid "Get current rate from"
 msgstr ""
 
-#: gl/manage/exchange_rates.php:148
+#: ../gl/manage/exchange_rates.php:148
 msgid "Exchange rates are entered against the company currency."
 msgstr ""
 
-#: gl/manage/exchange_rates.php:179
+#: ../gl/manage/exchange_rates.php:179
 msgid "Select a currency :"
 msgstr ""
 
-#: gl/manage/exchange_rates.php:195
+#: ../gl/manage/exchange_rates.php:195
 msgid "Date to Use From"
 msgstr ""
 
-#: gl/manage/exchange_rates.php:196
+#: ../gl/manage/exchange_rates.php:196
 msgid "Exchange Rate"
 msgstr ""
 
-#: gl/manage/exchange_rates.php:205
+#: ../gl/manage/exchange_rates.php:205
 msgid "The selected currency is the company currency."
 msgstr ""
 
-#: gl/manage/exchange_rates.php:206
+#: ../gl/manage/exchange_rates.php:206
 msgid ""
 "The company currency is the base currency so exchange rates cannot be set "
 "for it."
 msgstr ""
 
-#: gl/manage/gl_account_classes.php:16
+#: ../gl/manage/gl_account_classes.php:16
 msgid "GL Account Classes"
 msgstr ""
 
-#: gl/manage/gl_account_classes.php:31
+#: ../gl/manage/gl_account_classes.php:31
 msgid "The account class ID cannot be empty."
 msgstr ""
 
-#: gl/manage/gl_account_classes.php:37
+#: ../gl/manage/gl_account_classes.php:37
 msgid "The account class name cannot be empty."
 msgstr ""
 
-#: gl/manage/gl_account_classes.php:57
+#: ../gl/manage/gl_account_classes.php:57
 msgid "Selected account class settings has been updated"
 msgstr ""
 
-#: gl/manage/gl_account_classes.php:62
+#: ../gl/manage/gl_account_classes.php:62
 msgid "New account class has been added"
 msgstr ""
 
-#: gl/manage/gl_account_classes.php:77
+#: ../gl/manage/gl_account_classes.php:77
 msgid ""
 "Cannot delete this account class because GL account types have been created "
 "referring to it."
 msgstr ""
 
-#: gl/manage/gl_account_classes.php:93
+#: ../gl/manage/gl_account_classes.php:93
 msgid "Selected account class has been deleted"
 msgstr ""
 
-#: gl/manage/gl_account_classes.php:110
+#: ../gl/manage/gl_account_classes.php:110
 msgid "Class ID"
 msgstr ""
 
-#: gl/manage/gl_account_classes.php:110
+#: ../gl/manage/gl_account_classes.php:110
 msgid "Class Name"
 msgstr ""
 
-#: gl/manage/gl_account_classes.php:110
+#: ../gl/manage/gl_account_classes.php:110
 msgid "Class Type"
 msgstr ""
 
-#: gl/manage/gl_account_classes.php:112 gl/manage/gl_account_classes.php:169
-#: reporting/rep706.php:215
+#: ../gl/manage/gl_account_classes.php:112
+#: ../gl/manage/gl_account_classes.php:169
+#: ../reporting/rep706.php:215
 msgid "Balance Sheet"
 msgstr ""
 
-#: gl/manage/gl_account_classes.php:157 gl/manage/gl_account_classes.php:163
+#: ../gl/manage/gl_account_classes.php:157
+#: ../gl/manage/gl_account_classes.php:163
 msgid "Class ID:"
 msgstr ""
 
-#: gl/manage/gl_account_classes.php:166
+#: ../gl/manage/gl_account_classes.php:166
 msgid "Class Name:"
 msgstr ""
 
-#: gl/manage/gl_account_classes.php:171
+#: ../gl/manage/gl_account_classes.php:171
 msgid "Class Type:"
 msgstr ""
 
-#: gl/manage/gl_accounts.php:16 reporting/rep701.php:117
+#: ../gl/manage/gl_accounts.php:16
+#: ../reporting/rep701.php:117
 msgid "Chart of Accounts"
 msgstr ""
 
-#: gl/manage/gl_accounts.php:53
+#: ../gl/manage/gl_accounts.php:53
 msgid "The account code must be entered."
 msgstr ""
 
-#: gl/manage/gl_accounts.php:59
+#: ../gl/manage/gl_accounts.php:59
 msgid "The account name cannot be empty."
 msgstr ""
 
-#: gl/manage/gl_accounts.php:65
+#: ../gl/manage/gl_accounts.php:65
 msgid "The account code must be numeric."
 msgstr ""
 
-#: gl/manage/gl_accounts.php:80
+#: ../gl/manage/gl_accounts.php:80
 msgid "The account belongs to a bank account and cannot be inactivated."
 msgstr ""
 
-#: gl/manage/gl_accounts.php:89
+#: ../gl/manage/gl_accounts.php:89
 msgid "Account data has been updated."
 msgstr ""
 
-#: gl/manage/gl_accounts.php:98
+#: ../gl/manage/gl_accounts.php:98
 msgid "New account has been added."
 msgstr ""
 
-#: gl/manage/gl_accounts.php:102
+#: ../gl/manage/gl_accounts.php:102
 msgid "Account not added, possible duplicate Account Code."
 msgstr ""
 
-#: gl/manage/gl_accounts.php:117
+#: ../gl/manage/gl_accounts.php:117
 msgid ""
 "Cannot delete this account because transactions have been created using this "
 "account."
 msgstr ""
 
-#: gl/manage/gl_accounts.php:123
+#: ../gl/manage/gl_accounts.php:123
 msgid ""
 "Cannot delete this account because it is used as one of the company default "
 "GL accounts."
 msgstr ""
 
-#: gl/manage/gl_accounts.php:129
+#: ../gl/manage/gl_accounts.php:129
 msgid "Cannot delete this account because it is used by a bank account."
 msgstr ""
 
-#: gl/manage/gl_accounts.php:135
+#: ../gl/manage/gl_accounts.php:135
 msgid ""
 "Cannot delete this account because it is used by one or more Item Categories."
 msgstr ""
 
-#: gl/manage/gl_accounts.php:141
+#: ../gl/manage/gl_accounts.php:141
 msgid "Cannot delete this account because it is used by one or more Items."
 msgstr ""
 
-#: gl/manage/gl_accounts.php:147
+#: ../gl/manage/gl_accounts.php:147
 msgid "Cannot delete this account because it is used by one or more Taxes."
 msgstr ""
 
-#: gl/manage/gl_accounts.php:153
+#: ../gl/manage/gl_accounts.php:153
 msgid ""
 "Cannot delete this account because it is used by one or more Customer "
 "Branches."
 msgstr ""
 
-#: gl/manage/gl_accounts.php:159
+#: ../gl/manage/gl_accounts.php:158
 msgid "Cannot delete this account because it is used by one or more suppliers."
 msgstr ""
 
-#: gl/manage/gl_accounts.php:165
+#: ../gl/manage/gl_accounts.php:164
 msgid ""
 "Cannot delete this account because it is used by one or more Quick Entry "
 "Lines."
 msgstr ""
 
-#: gl/manage/gl_accounts.php:183
+#: ../gl/manage/gl_accounts.php:182
 msgid "Selected account has been deleted"
 msgstr ""
 
-#: gl/manage/gl_accounts.php:198
+#: ../gl/manage/gl_accounts.php:197
 msgid "New account"
 msgstr ""
 
-#: gl/manage/gl_accounts.php:244
+#: ../gl/manage/gl_accounts.php:243
 msgid "Account Code 2:"
 msgstr ""
 
-#: gl/manage/gl_accounts.php:246
+#: ../gl/manage/gl_accounts.php:245
 msgid "Account Name:"
 msgstr ""
 
-#: gl/manage/gl_accounts.php:248
+#: ../gl/manage/gl_accounts.php:247
 msgid "Account Group:"
 msgstr ""
 
-#: gl/manage/gl_accounts.php:250
+#: ../gl/manage/gl_accounts.php:249
 msgid "Account Tags:"
 msgstr ""
 
-#: gl/manage/gl_accounts.php:252
+#: ../gl/manage/gl_accounts.php:251
 msgid "Account status:"
 msgstr ""
 
-#: gl/manage/gl_accounts.php:257
+#: ../gl/manage/gl_accounts.php:256
 msgid "Add Account"
 msgstr ""
 
-#: gl/manage/gl_accounts.php:261
+#: ../gl/manage/gl_accounts.php:260
 msgid "Update Account"
 msgstr ""
 
-#: gl/manage/gl_accounts.php:262
+#: ../gl/manage/gl_accounts.php:261
 msgid "Delete account"
 msgstr ""
 
-#: gl/manage/gl_account_types.php:16
+#: ../gl/manage/gl_account_types.php:16
 msgid "GL Account Groups"
 msgstr ""
 
-#: gl/manage/gl_account_types.php:29
+#: ../gl/manage/gl_account_types.php:29
 msgid "The account group id cannot be empty."
 msgstr ""
 
-#: gl/manage/gl_account_types.php:35
+#: ../gl/manage/gl_account_types.php:35
 msgid "The account group name cannot be empty."
 msgstr ""
 
-#: gl/manage/gl_account_types.php:42
+#: ../gl/manage/gl_account_types.php:42
 msgid "This account group id is already in use."
 msgstr ""
 
-#: gl/manage/gl_account_types.php:50
+#: ../gl/manage/gl_account_types.php:50
 msgid "You cannot set an account group to be a subgroup of itself."
 msgstr ""
 
-#: gl/manage/gl_account_types.php:68
+#: ../gl/manage/gl_account_types.php:68
 msgid "Selected account type has been updated"
 msgstr ""
 
-#: gl/manage/gl_account_types.php:73
+#: ../gl/manage/gl_account_types.php:73
 msgid "New account type has been added"
 msgstr ""
 
-#: gl/manage/gl_account_types.php:89
+#: ../gl/manage/gl_account_types.php:89
 msgid ""
 "Cannot delete this account group because GL accounts have been created "
 "referring to it."
 msgstr ""
 
-#: gl/manage/gl_account_types.php:95
+#: ../gl/manage/gl_account_types.php:95
 msgid ""
 "Cannot delete this account group because GL account groups have been created "
 "referring to it."
 msgstr ""
 
-#: gl/manage/gl_account_types.php:111
+#: ../gl/manage/gl_account_types.php:111
 msgid "Selected account group has been deleted"
 msgstr ""
 
-#: gl/manage/gl_account_types.php:128
+#: ../gl/manage/gl_account_types.php:128
 msgid "Group ID"
 msgstr ""
 
-#: gl/manage/gl_account_types.php:128 sales/manage/sales_groups.php:85
+#: ../gl/manage/gl_account_types.php:128
+#: ../sales/manage/sales_groups.php:85
 msgid "Group Name"
 msgstr ""
 
-#: gl/manage/gl_account_types.php:128
+#: ../gl/manage/gl_account_types.php:128
 msgid "Subgroup Of"
 msgstr ""
 
-#: gl/manage/gl_account_types.php:187
+#: ../gl/manage/gl_account_types.php:187
 msgid "ID:"
 msgstr ""
 
-#: gl/manage/gl_account_types.php:190
+#: ../gl/manage/gl_account_types.php:190
 msgid "Subgroup Of:"
 msgstr ""
 
-#: gl/manage/gl_account_types.php:192
+#: ../gl/manage/gl_account_types.php:192
 msgid "Class:"
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:16
+#: ../gl/manage/gl_quick_entries.php:16
 msgid "Quick Entries"
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:58 includes/ui/simple_crud_class.inc:221
-#: includes/ui/ui_input.inc:205
+#: ../gl/manage/gl_quick_entries.php:58
+#: ../includes/ui/simple_crud_class.inc:221
+#: ../includes/ui/ui_input.inc:206
+#: ../taxes/sav.tax_types.php:252
 msgid "Add new"
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:73
+#: ../gl/manage/gl_quick_entries.php:73
 msgid "The Quick Entry description cannot be empty."
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:80
+#: ../gl/manage/gl_quick_entries.php:80
 msgid "You can only use Balance Based together with Journal Entries."
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:86
+#: ../gl/manage/gl_quick_entries.php:86
 msgid "The base amount description cannot be empty."
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:106
+#: ../gl/manage/gl_quick_entries.php:106
 msgid "Selected quick entry has been updated"
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:112
+#: ../gl/manage/gl_quick_entries.php:112
 msgid "New quick entry has been added"
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:124
+#: ../gl/manage/gl_quick_entries.php:124
 msgid "Selected quick entry line has been updated"
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:130
+#: ../gl/manage/gl_quick_entries.php:130
 msgid "New quick entry line has been added"
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:142
+#: ../gl/manage/gl_quick_entries.php:142
 msgid "Selected quick entry has been deleted"
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:147
+#: ../gl/manage/gl_quick_entries.php:147
 msgid "The Quick Entry has Quick Entry Lines. Cannot be deleted."
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:163
+#: ../gl/manage/gl_quick_entries.php:163
 msgid "Selected quick entry line has been deleted"
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:171
+#: ../gl/manage/gl_quick_entries.php:171
 msgid "Base Amount"
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:226
+#: ../gl/manage/gl_quick_entries.php:226
 msgid "Entry Type"
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:230
+#: ../gl/manage/gl_quick_entries.php:230
 msgid "Balance Based"
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:240 gl/includes/ui/gl_journal_ui.inc:57
+#: ../gl/manage/gl_quick_entries.php:240
+#: ../gl/includes/ui/gl_journal_ui.inc:57
 msgid "Yearly"
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:245
+#: ../gl/manage/gl_quick_entries.php:245
 msgid "Base Amount Description"
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:246
+#: ../gl/manage/gl_quick_entries.php:246
 msgid "Default Base Amount"
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:255
+#: ../gl/manage/gl_quick_entries.php:255
 msgid "Quick Entry Lines"
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:261 gl/manage/gl_quick_entries.php:263
-#: gl/manage/gl_quick_entries.php:265
+#: ../gl/manage/gl_quick_entries.php:261
+#: ../gl/manage/gl_quick_entries.php:263
+#: ../gl/manage/gl_quick_entries.php:265
 msgid "Post"
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:261 gl/manage/gl_quick_entries.php:263
-#: gl/manage/gl_quick_entries.php:265
+#: ../gl/manage/gl_quick_entries.php:261
+#: ../gl/manage/gl_quick_entries.php:263
+#: ../gl/manage/gl_quick_entries.php:265
 msgid "Account/Tax Type"
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:320
+#: ../gl/manage/gl_quick_entries.php:320
 msgid "Posted"
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:329 sales/customer_delivery.php:433
-#: sales/customer_invoice.php:479
+#: ../gl/manage/gl_quick_entries.php:329
+#: ../sales/customer_delivery.php:447
+#: ../sales/customer_invoice.php:551
+#: ../sales/customer_invoice.php:554
 msgid "Tax Type"
 msgstr ""
 
-#: gl/manage/gl_quick_entries.php:337
+#: ../gl/manage/gl_quick_entries.php:337
 msgid "Part"
 msgstr ""
 
-#: gl/manage/revaluate_currencies.php:23
+#: ../gl/manage/revaluate_currencies.php:23
 msgid "Revaluation of Currency Accounts"
 msgstr ""
 
-#: gl/manage/revaluate_currencies.php:32
+#: ../gl/manage/revaluate_currencies.php:32
 msgid "No Revaluation was needed"
 msgstr ""
 
-#: gl/manage/revaluate_currencies.php:40
+#: ../gl/manage/revaluate_currencies.php:40
 #, php-format
 msgid "%d Journal Entries for AR/AP accounts have been added"
 msgstr ""
 
-#: gl/manage/revaluate_currencies.php:104
+#: ../gl/manage/revaluate_currencies.php:104
 msgid "Date for Revaluation:"
 msgstr ""
 
-#: gl/manage/revaluate_currencies.php:109
+#: ../gl/manage/revaluate_currencies.php:109
 msgid "Revaluate Currencies"
 msgstr ""
 
-#: gl/view/accrual_trans.php:16
+#: ../gl/view/accrual_trans.php:16
 msgid "Search General Ledger Transactions for account: "
 msgstr ""
 
-#: gl/view/accrual_trans.php:41 gl/view/gl_trans_view.php:26
+#: ../gl/view/accrual_trans.php:41
+#: ../gl/view/gl_trans_view.php:26
 msgid ""
 "The script must be called with a valid transaction type and transaction "
 "number to review the general ledger postings for."
 msgstr ""
 
-#: gl/view/bank_transfer_view.php:17
+#: ../gl/view/bank_transfer_view.php:17
 msgid "View Bank Transfer"
 msgstr ""
 
-#: gl/view/bank_transfer_view.php:67 gl/view/gl_payment_view.php:62
-#: purchasing/view/view_supp_payment.php:54
+#: ../gl/view/bank_transfer_view.php:67
+#: ../gl/view/gl_payment_view.php:62
+#: ../purchasing/view/view_supp_payment.php:54
 msgid "From Bank Account"
 msgstr ""
 
-#: gl/view/bank_transfer_view.php:76 gl/view/gl_deposit_view.php:64
+#: ../gl/view/bank_transfer_view.php:76
+#: ../gl/view/gl_deposit_view.php:64
 msgid "To Bank Account"
 msgstr ""
 
-#: gl/view/bank_transfer_view.php:84
+#: ../gl/view/bank_transfer_view.php:84
 msgid "Transfer Type"
 msgstr ""
 
-#: gl/view/bank_transfer_view.php:92 inventory/view/view_transfer.php:76
+#: ../gl/view/bank_transfer_view.php:92
+#: ../inventory/view/view_transfer.php:76
 msgid "This transfer has been voided."
 msgstr ""
 
-#: gl/view/gl_deposit_view.php:17
+#: ../gl/view/gl_deposit_view.php:17
 msgid "View Bank Deposit"
 msgstr ""
 
-#: gl/view/gl_deposit_view.php:48
+#: ../gl/view/gl_deposit_view.php:48
 msgid "GL Deposit"
 msgstr ""
 
-#: gl/view/gl_deposit_view.php:71 gl/includes/db/gl_db_banking.inc:213
-#: reporting/reports_main.php:96 reporting/reports_main.php:106
-#: reporting/reports_main.php:114 reporting/reports_main.php:128
-#: reporting/reports_main.php:136 reporting/reports_main.php:143
-#: reporting/reports_main.php:192 reporting/reports_main.php:199
-#: reporting/reports_main.php:289
+#: ../gl/view/gl_deposit_view.php:71
+#: ../gl/includes/db/gl_db_banking.inc:212
+#: ../reporting/reports_main.php:96
+#: ../reporting/reports_main.php:106
+#: ../reporting/reports_main.php:114
+#: ../reporting/reports_main.php:128
+#: ../reporting/reports_main.php:136
+#: ../reporting/reports_main.php:143
+#: ../reporting/reports_main.php:192
+#: ../reporting/reports_main.php:199
+#: ../reporting/reports_main.php:289
 msgid "From"
 msgstr ""
 
-#: gl/view/gl_deposit_view.php:74 gl/view/gl_payment_view.php:72
+#: ../gl/view/gl_deposit_view.php:74
+#: ../gl/view/gl_payment_view.php:72
 msgid "Settle currency"
 msgstr ""
 
-#: gl/view/gl_deposit_view.php:75 gl/view/gl_payment_view.php:73
+#: ../gl/view/gl_deposit_view.php:75
+#: ../gl/view/gl_payment_view.php:73
 msgid "Settled amount"
 msgstr ""
 
-#: gl/view/gl_deposit_view.php:77
+#: ../gl/view/gl_deposit_view.php:77
 msgid "Deposit Type"
 msgstr ""
 
-#: gl/view/gl_deposit_view.php:86
+#: ../gl/view/gl_deposit_view.php:86
 msgid "This deposit has been voided."
 msgstr ""
 
-#: gl/view/gl_deposit_view.php:92
+#: ../gl/view/gl_deposit_view.php:92
 msgid "There are no items for this deposit."
 msgstr ""
 
-#: gl/view/gl_deposit_view.php:97
+#: ../gl/view/gl_deposit_view.php:97
 msgid "Items for this Deposit"
 msgstr ""
 
-#: gl/view/gl_deposit_view.php:99 gl/view/gl_payment_view.php:97
+#: ../gl/view/gl_deposit_view.php:99
+#: ../gl/view/gl_payment_view.php:97
 msgid "Item Amounts are Shown in:"
 msgstr ""
 
-#: gl/view/gl_deposit_view.php:104 gl/view/gl_deposit_view.php:107
-#: gl/view/gl_deposit_view.php:110 gl/view/gl_payment_view.php:103
-#: gl/view/gl_payment_view.php:106 gl/view/gl_payment_view.php:109
-#: gl/view/gl_trans_view.php:63 gl/view/gl_trans_view.php:66
-#: gl/view/gl_trans_view.php:69 gl/includes/ui/gl_bank_ui.inc:152
-#: gl/includes/ui/gl_bank_ui.inc:155 gl/includes/ui/gl_bank_ui.inc:158
-#: gl/includes/ui/gl_journal_ui.inc:83 gl/includes/ui/gl_journal_ui.inc:86
-#: gl/includes/ui/gl_journal_ui.inc:89 reporting/rep701.php:111
+#: ../gl/view/gl_deposit_view.php:104
+#: ../gl/view/gl_deposit_view.php:107
+#: ../gl/view/gl_deposit_view.php:110
+#: ../gl/view/gl_payment_view.php:103
+#: ../gl/view/gl_payment_view.php:106
+#: ../gl/view/gl_payment_view.php:109
+#: ../gl/view/gl_trans_view.php:68
+#: ../gl/view/gl_trans_view.php:71
+#: ../gl/view/gl_trans_view.php:74
+#: ../gl/includes/ui/gl_bank_ui.inc:152
+#: ../gl/includes/ui/gl_bank_ui.inc:155
+#: ../gl/includes/ui/gl_bank_ui.inc:158
+#: ../gl/includes/ui/gl_journal_ui.inc:86
+#: ../gl/includes/ui/gl_journal_ui.inc:89
+#: ../gl/includes/ui/gl_journal_ui.inc:92
+#: ../reporting/rep701.php:111
 msgid "Account Code"
 msgstr ""
 
-#: gl/view/gl_deposit_view.php:104 gl/view/gl_deposit_view.php:107
-#: gl/view/gl_deposit_view.php:110 gl/view/gl_payment_view.php:103
-#: gl/view/gl_payment_view.php:106 gl/view/gl_payment_view.php:109
-#: gl/includes/ui/gl_bank_ui.inc:152 gl/includes/ui/gl_bank_ui.inc:155
-#: gl/includes/ui/gl_bank_ui.inc:158 gl/includes/ui/gl_journal_ui.inc:83
-#: gl/includes/ui/gl_journal_ui.inc:86 gl/includes/ui/gl_journal_ui.inc:89
+#: ../gl/view/gl_deposit_view.php:104
+#: ../gl/view/gl_deposit_view.php:107
+#: ../gl/view/gl_deposit_view.php:110
+#: ../gl/view/gl_payment_view.php:103
+#: ../gl/view/gl_payment_view.php:106
+#: ../gl/view/gl_payment_view.php:109
+#: ../gl/includes/ui/gl_bank_ui.inc:152
+#: ../gl/includes/ui/gl_bank_ui.inc:155
+#: ../gl/includes/ui/gl_bank_ui.inc:158
+#: ../gl/includes/ui/gl_journal_ui.inc:86
+#: ../gl/includes/ui/gl_journal_ui.inc:89
+#: ../gl/includes/ui/gl_journal_ui.inc:92
 msgid "Account Description"
 msgstr ""
 
-#: gl/view/gl_payment_view.php:17
+#: ../gl/view/gl_payment_view.php:17
 msgid "View Bank Payment"
 msgstr ""
 
-#: gl/view/gl_payment_view.php:46
+#: ../gl/view/gl_payment_view.php:46
 msgid "GL Payment"
 msgstr ""
 
-#: gl/view/gl_payment_view.php:69
+#: ../gl/view/gl_payment_view.php:69
 msgid "Pay To"
 msgstr ""
 
-#: gl/view/gl_payment_view.php:75 purchasing/view/view_supp_payment.php:64
-#: purchasing/view/view_supp_payment.php:78 sales/view/view_receipt.php:50
+#: ../gl/view/gl_payment_view.php:75
+#: ../purchasing/view/view_supp_payment.php:64
+#: ../purchasing/view/view_supp_payment.php:78
+#: ../sales/view/view_receipt.php:50
 msgid "Payment Type"
 msgstr ""
 
-#: gl/view/gl_payment_view.php:84 purchasing/view/view_supp_payment.php:85
+#: ../gl/view/gl_payment_view.php:84
+#: ../purchasing/view/view_supp_payment.php:85
 msgid "This payment has been voided."
 msgstr ""
 
-#: gl/view/gl_payment_view.php:90
+#: ../gl/view/gl_payment_view.php:90
 msgid "There are no items for this payment."
 msgstr ""
 
-#: gl/view/gl_payment_view.php:95
+#: ../gl/view/gl_payment_view.php:95
 msgid "Items for this Payment"
 msgstr ""
 
-#: gl/view/gl_trans_view.php:16 gl/view/gl_trans_view.php:35
+#: ../gl/view/gl_trans_view.php:16
+#: ../gl/view/gl_trans_view.php:35
 msgid "General Ledger Transaction Details"
 msgstr ""
 
-#: gl/view/gl_trans_view.php:54
+#: ../gl/view/gl_trans_view.php:39
+#: ../gl/includes/ui/gl_journal_ui.inc:97
+msgid "Counterparty"
+msgstr ""
+
+#: ../gl/view/gl_trans_view.php:59
 msgid "No general ledger transactions have been created for"
 msgstr ""
 
-#: gl/view/gl_trans_view.php:54
+#: ../gl/view/gl_trans_view.php:59
 msgid "number"
 msgstr ""
 
-#: gl/view/gl_trans_view.php:120
+#: ../gl/view/gl_trans_view.php:129
 msgid "This transaction has been voided."
 msgstr ""
 
-#: gl/includes/db/gl_db_banking.inc:44 gl/includes/db/gl_db_banking.inc:47
-#: gl/includes/db/gl_db_banking.inc:60 gl/includes/db/gl_db_banking.inc:63
-#: gl/includes/db/gl_db_banking.inc:256
+#: ../gl/includes/db/gl_db_banking.inc:44
+#: ../gl/includes/db/gl_db_banking.inc:47
+#: ../gl/includes/db/gl_db_banking.inc:60
+#: ../gl/includes/db/gl_db_banking.inc:63
+#: ../gl/includes/db/gl_db_banking.inc:255
 msgid "Exchange Variance"
 msgstr ""
 
-#: gl/includes/db/gl_db_banking.inc:213 reporting/reports_main.php:97
-#: reporting/reports_main.php:107 reporting/reports_main.php:115
-#: reporting/reports_main.php:129 reporting/reports_main.php:137
-#: reporting/reports_main.php:144 reporting/reports_main.php:193
-#: reporting/reports_main.php:200 reporting/reports_main.php:290
+#: ../gl/includes/db/gl_db_banking.inc:212
+#: ../reporting/reports_main.php:97
+#: ../reporting/reports_main.php:107
+#: ../reporting/reports_main.php:115
+#: ../reporting/reports_main.php:129
+#: ../reporting/reports_main.php:137
+#: ../reporting/reports_main.php:144
+#: ../reporting/reports_main.php:193
+#: ../reporting/reports_main.php:200
+#: ../reporting/reports_main.php:290
 msgid "To"
 msgstr ""
 
-#: gl/includes/db/gl_db_banking.inc:445
+#: ../gl/includes/db/gl_db_banking.inc:444
+#: ../purchasing/includes/db/invoice_db.inc:136
 msgid "Document reentered."
 msgstr ""
 
-#: gl/includes/db/gl_db_trans.inc:93
+#: ../gl/includes/db/gl_db_trans.inc:96
 #, php-format
 msgid "Rounding error %s encountered for trans_type:%s,trans_no:%s"
 msgstr ""
 
-#: gl/includes/ui/gl_bank_ui.inc:24 gl/includes/ui/gl_journal_ui.inc:27
-#: inventory/includes/item_adjustments_ui.inc:39
-#: inventory/includes/stock_transfers_ui.inc:42
-#: manufacturing/work_order_add_finished.php:208
-#: manufacturing/work_order_costs.php:152
-#: purchasing/allocations/supplier_allocate.php:56
-#: sales/allocations/customer_allocate.php:54
-#: sales/includes/ui/sales_credit_ui.inc:121
+#: ../gl/includes/ui/gl_bank_ui.inc:24
+#: ../gl/includes/ui/gl_journal_ui.inc:27
+#: ../inventory/includes/item_adjustments_ui.inc:39
+#: ../inventory/includes/stock_transfers_ui.inc:42
+#: ../manufacturing/work_order_add_finished.php:208
+#: ../manufacturing/work_order_costs.php:133
+#: ../purchasing/allocations/supplier_allocate.php:56
+#: ../sales/allocations/customer_allocate.php:54
+#: ../sales/includes/ui/sales_credit_ui.inc:121
 msgid "Date:"
 msgstr ""
 
-#: gl/includes/ui/gl_bank_ui.inc:52
+#: ../gl/includes/ui/gl_bank_ui.inc:52
 msgid "Pay To:"
 msgstr ""
 
-#: gl/includes/ui/gl_bank_ui.inc:57
+#: ../gl/includes/ui/gl_bank_ui.inc:57
 msgid "To the Order of:"
 msgstr ""
 
-#: gl/includes/ui/gl_bank_ui.inc:64 inventory/purchasing_data.php:208
-#: inventory/purchasing_data.php:212 purchasing/includes/ui/invoice_ui.inc:86
-#: purchasing/includes/ui/invoice_ui.inc:93
-#: purchasing/includes/ui/po_ui.inc:127 purchasing/includes/ui/po_ui.inc:132
+#: ../gl/includes/ui/gl_bank_ui.inc:64
+#: ../inventory/purchasing_data.php:208
+#: ../inventory/purchasing_data.php:212
+#: ../purchasing/includes/ui/invoice_ui.inc:95
+#: ../purchasing/includes/ui/invoice_ui.inc:103
+#: ../purchasing/includes/ui/invoice_ui.inc:105
+#: ../purchasing/includes/ui/po_ui.inc:137
+#: ../purchasing/includes/ui/po_ui.inc:142
 msgid "Supplier:"
 msgstr ""
 
-#: gl/includes/ui/gl_bank_ui.inc:67 sales/manage/recurrent_invoices.php:169
-#: sales/includes/ui/sales_credit_ui.inc:29
-#: sales/includes/ui/sales_order_ui.inc:284
+#: ../gl/includes/ui/gl_bank_ui.inc:67
+#: ../sales/manage/recurrent_invoices.php:169
+#: ../sales/includes/ui/sales_credit_ui.inc:29
+#: ../sales/includes/ui/sales_order_ui.inc:285
 msgid "Customer:"
 msgstr ""
 
-#: gl/includes/ui/gl_bank_ui.inc:71 sales/customer_payments.php:345
-#: sales/manage/recurrent_invoices.php:172
-#: sales/includes/ui/sales_credit_ui.inc:37
-#: sales/includes/ui/sales_order_ui.inc:291
+#: ../gl/includes/ui/gl_bank_ui.inc:71
+#: ../sales/customer_payments.php:348
+#: ../sales/manage/recurrent_invoices.php:172
+#: ../sales/includes/ui/sales_credit_ui.inc:37
+#: ../sales/includes/ui/sales_order_ui.inc:292
 msgid "Branch:"
 msgstr ""
 
-#: gl/includes/ui/gl_bank_ui.inc:85 gl/includes/ui/gl_bank_ui.inc:88
-#: sales/customer_payments.php:361
+#: ../gl/includes/ui/gl_bank_ui.inc:85
+#: ../gl/includes/ui/gl_bank_ui.inc:88
+#: ../sales/customer_payments.php:364
 msgid "This customer account is on hold."
 msgstr ""
 
-#: gl/includes/ui/gl_bank_ui.inc:101 gl/includes/ui/gl_journal_ui.inc:58
-#: gl/includes/ui/gl_journal_ui.inc:62
-#: purchasing/includes/ui/invoice_ui.inc:244
+#: ../gl/includes/ui/gl_bank_ui.inc:101
+#: ../gl/includes/ui/gl_journal_ui.inc:58
+#: ../gl/includes/ui/gl_journal_ui.inc:62
+#: ../purchasing/includes/ui/invoice_ui.inc:266
 msgid "Go"
 msgstr ""
 
-#: gl/includes/ui/gl_bank_ui.inc:120
+#: ../gl/includes/ui/gl_bank_ui.inc:120
 msgid "Into:"
 msgstr ""
 
-#: gl/includes/ui/gl_bank_ui.inc:187 includes/ui/simple_crud_class.inc:52
-#: inventory/includes/item_adjustments_ui.inc:88
-#: inventory/includes/stock_transfers_ui.inc:80
-#: manufacturing/includes/work_order_issue_ui.inc:59
-#: purchasing/includes/ui/invoice_ui.inc:533
-#: purchasing/includes/ui/po_ui.inc:264
-#: sales/includes/ui/sales_credit_ui.inc:198
-#: sales/includes/ui/sales_order_ui.inc:209
+#: ../gl/includes/ui/gl_bank_ui.inc:187
+#: ../includes/ui/simple_crud_class.inc:52
+#: ../inventory/includes/item_adjustments_ui.inc:88
+#: ../inventory/includes/stock_transfers_ui.inc:80
+#: ../manufacturing/includes/work_order_issue_ui.inc:59
+#: ../purchasing/includes/ui/invoice_ui.inc:557
+#: ../purchasing/includes/ui/po_ui.inc:276
+#: ../sales/includes/ui/sales_credit_ui.inc:198
+#: ../sales/includes/ui/sales_order_ui.inc:210
 msgid "Edit document line"
 msgstr ""
 
-#: gl/includes/ui/gl_bank_ui.inc:189 includes/ui/simple_crud_class.inc:54
-#: inventory/includes/item_adjustments_ui.inc:90
-#: inventory/includes/stock_transfers_ui.inc:82
-#: manufacturing/includes/work_order_issue_ui.inc:61
-#: purchasing/includes/ui/invoice_ui.inc:298
-#: purchasing/includes/ui/po_ui.inc:266
-#: sales/includes/ui/sales_credit_ui.inc:200
-#: sales/includes/ui/sales_order_ui.inc:211
+#: ../gl/includes/ui/gl_bank_ui.inc:189
+#: ../includes/ui/simple_crud_class.inc:54
+#: ../inventory/includes/item_adjustments_ui.inc:90
+#: ../inventory/includes/stock_transfers_ui.inc:82
+#: ../manufacturing/includes/work_order_issue_ui.inc:61
+#: ../purchasing/includes/ui/invoice_ui.inc:320
+#: ../purchasing/includes/ui/po_ui.inc:278
+#: ../sales/includes/ui/sales_credit_ui.inc:200
+#: ../sales/includes/ui/sales_order_ui.inc:212
 msgid "Remove line from document"
 msgstr ""
 
-#: gl/includes/ui/gl_bank_ui.inc:278 gl/includes/ui/gl_journal_ui.inc:222
-#: includes/ui/simple_crud_class.inc:56
-#: inventory/includes/item_adjustments_ui.inc:158
-#: inventory/includes/stock_transfers_ui.inc:138
-#: manufacturing/includes/work_order_issue_ui.inc:132
-#: purchasing/includes/ui/po_ui.inc:440
-#: sales/includes/ui/sales_credit_ui.inc:294
-#: sales/includes/ui/sales_order_ui.inc:561
+#: ../gl/includes/ui/gl_bank_ui.inc:278
+#: ../gl/includes/ui/gl_journal_ui.inc:258
+#: ../includes/ui/simple_crud_class.inc:56
+#: ../inventory/includes/item_adjustments_ui.inc:158
+#: ../inventory/includes/stock_transfers_ui.inc:138
+#: ../manufacturing/includes/work_order_issue_ui.inc:132
+#: ../purchasing/includes/ui/po_ui.inc:460
+#: ../sales/includes/ui/sales_credit_ui.inc:294
+#: ../sales/includes/ui/sales_order_ui.inc:562
 msgid "Confirm changes"
 msgstr ""
 
-#: gl/includes/ui/gl_bank_ui.inc:280 gl/includes/ui/gl_journal_ui.inc:224
-#: includes/ui/simple_crud_class.inc:58
-#: inventory/includes/item_adjustments_ui.inc:160
-#: inventory/includes/stock_transfers_ui.inc:140
-#: manufacturing/includes/work_order_issue_ui.inc:134
-#: purchasing/includes/ui/po_ui.inc:442
-#: sales/includes/ui/sales_credit_ui.inc:296
-#: sales/includes/ui/sales_order_ui.inc:563
+#: ../gl/includes/ui/gl_bank_ui.inc:280
+#: ../gl/includes/ui/gl_journal_ui.inc:260
+#: ../includes/ui/simple_crud_class.inc:58
+#: ../inventory/includes/item_adjustments_ui.inc:160
+#: ../inventory/includes/stock_transfers_ui.inc:140
+#: ../manufacturing/includes/work_order_issue_ui.inc:134
+#: ../purchasing/includes/ui/po_ui.inc:462
+#: ../sales/includes/ui/sales_credit_ui.inc:296
+#: ../sales/includes/ui/sales_order_ui.inc:564
 msgid "Cancel changes"
 msgstr ""
 
-#: gl/includes/ui/gl_bank_ui.inc:285 gl/includes/ui/gl_journal_ui.inc:228
-#: inventory/includes/item_adjustments_ui.inc:166
-#: inventory/includes/stock_transfers_ui.inc:146
-#: manufacturing/includes/work_order_issue_ui.inc:140
-#: purchasing/includes/ui/po_ui.inc:448
-#: sales/includes/ui/sales_credit_ui.inc:302
-#: sales/includes/ui/sales_order_ui.inc:569
+#: ../gl/includes/ui/gl_bank_ui.inc:285
+#: ../gl/includes/ui/gl_journal_ui.inc:264
+#: ../inventory/includes/item_adjustments_ui.inc:166
+#: ../inventory/includes/stock_transfers_ui.inc:146
+#: ../manufacturing/includes/work_order_issue_ui.inc:140
+#: ../purchasing/includes/ui/po_ui.inc:468
+#: ../sales/includes/ui/sales_credit_ui.inc:302
+#: ../sales/includes/ui/sales_order_ui.inc:570
 msgid "Add Item"
 msgstr ""
 
-#: gl/includes/ui/gl_bank_ui.inc:286
-#: inventory/includes/item_adjustments_ui.inc:167
-#: inventory/includes/stock_transfers_ui.inc:147
-#: manufacturing/includes/work_order_issue_ui.inc:141
-#: purchasing/includes/ui/po_ui.inc:449
-#: sales/includes/ui/sales_credit_ui.inc:303
-#: sales/includes/ui/sales_order_ui.inc:570
+#: ../gl/includes/ui/gl_bank_ui.inc:286
+#: ../inventory/includes/item_adjustments_ui.inc:167
+#: ../inventory/includes/stock_transfers_ui.inc:147
+#: ../manufacturing/includes/work_order_issue_ui.inc:141
+#: ../purchasing/includes/ui/po_ui.inc:469
+#: ../sales/includes/ui/sales_credit_ui.inc:303
+#: ../sales/includes/ui/sales_order_ui.inc:571
 msgid "Add new item to document"
 msgstr ""
 
-#: gl/includes/ui/gl_bank_ui.inc:309
+#: ../gl/includes/ui/gl_bank_ui.inc:309
 msgid "Settled AR Amount:"
 msgstr ""
 
-#: gl/includes/ui/gl_bank_ui.inc:309
+#: ../gl/includes/ui/gl_bank_ui.inc:309
 msgid "Settled AP Amount:"
 msgstr ""
 
-#: gl/includes/ui/gl_journal_ui.inc:38
+#: ../gl/includes/ui/gl_journal_ui.inc:38
 msgid "Reverse Transaction:"
 msgstr ""
 
-#: gl/includes/ui/gl_journal_ui.inc:46 includes/sysnames.inc:98
+#: ../gl/includes/ui/gl_journal_ui.inc:46
+#: ../includes/sysnames.inc:98
 msgid "Quick Entry"
 msgstr ""
 
-#: gl/includes/ui/gl_journal_ui.inc:57
+#: ../gl/includes/ui/gl_journal_ui.inc:57
 msgid "balance from account"
 msgstr ""
 
-#: gl/includes/ui/gl_journal_ui.inc:123
+#: ../gl/includes/ui/gl_journal_ui.inc:135
 msgid "Edit journal line"
 msgstr ""
 
-#: gl/includes/ui/gl_journal_ui.inc:125
+#: ../gl/includes/ui/gl_journal_ui.inc:137
 msgid "Remove line from journal"
 msgstr ""
 
-#: gl/includes/ui/gl_journal_ui.inc:229
+#: ../gl/includes/ui/gl_journal_ui.inc:200
+#: ../gl/includes/ui/gl_journal_ui.inc:232
+msgid "[Select account]"
+msgstr ""
+
+#: ../gl/includes/ui/gl_journal_ui.inc:265
 msgid "Add new line to journal"
 msgstr ""
 
-#: includes/access_levels.inc:56
+#: ../includes/access_levels.inc:56
 msgid "System administration"
 msgstr ""
 
-#: includes/access_levels.inc:57
+#: ../includes/access_levels.inc:57
 msgid "Company setup"
 msgstr ""
 
-#: includes/access_levels.inc:58
+#: ../includes/access_levels.inc:58
 msgid "Special maintenance"
 msgstr ""
 
-#: includes/access_levels.inc:59
+#: ../includes/access_levels.inc:59
 msgid "Sales configuration"
 msgstr ""
 
-#: includes/access_levels.inc:60
+#: ../includes/access_levels.inc:60
 msgid "Sales transactions"
 msgstr ""
 
-#: includes/access_levels.inc:61
+#: ../includes/access_levels.inc:61
 msgid "Sales related reports"
 msgstr ""
 
-#: includes/access_levels.inc:62
+#: ../includes/access_levels.inc:62
 msgid "Purchase configuration"
 msgstr ""
 
-#: includes/access_levels.inc:63
+#: ../includes/access_levels.inc:63
 msgid "Purchase transactions"
 msgstr ""
 
-#: includes/access_levels.inc:64
+#: ../includes/access_levels.inc:64
 msgid "Purchase analytics"
 msgstr ""
 
-#: includes/access_levels.inc:65
+#: ../includes/access_levels.inc:65
 msgid "Inventory configuration"
 msgstr ""
 
-#: includes/access_levels.inc:66
+#: ../includes/access_levels.inc:66
 msgid "Inventory operations"
 msgstr ""
 
-#: includes/access_levels.inc:67
+#: ../includes/access_levels.inc:67
 msgid "Inventory analytics"
 msgstr ""
 
-#: includes/access_levels.inc:68
+#: ../includes/access_levels.inc:68
 msgid "Manufacturing configuration"
 msgstr ""
 
-#: includes/access_levels.inc:69
+#: ../includes/access_levels.inc:69
 msgid "Manufacturing transactions"
 msgstr ""
 
-#: includes/access_levels.inc:70
+#: ../includes/access_levels.inc:70
 msgid "Manufacturing analytics"
 msgstr ""
 
-#: includes/access_levels.inc:71
+#: ../includes/access_levels.inc:71
 msgid "Dimensions configuration"
 msgstr ""
 
-#: includes/access_levels.inc:72 inventory/manage/items.php:341
-#: reporting/reports_main.php:294
+#: ../includes/access_levels.inc:72
+#: ../inventory/manage/items.php:352
+#: ../reporting/reports_main.php:294
 msgid "Dimensions"
 msgstr ""
 
-#: includes/access_levels.inc:73
+#: ../includes/access_levels.inc:73
 msgid "Banking & GL configuration"
 msgstr ""
 
-#: includes/access_levels.inc:74
+#: ../includes/access_levels.inc:74
 msgid "Banking & GL transactions"
 msgstr ""
 
-#: includes/access_levels.inc:75
+#: ../includes/access_levels.inc:75
 msgid "Banking & GL analytics"
 msgstr ""
 
-#: includes/access_levels.inc:93
+#: ../includes/access_levels.inc:93
 msgid "Install/update companies"
 msgstr ""
 
-#: includes/access_levels.inc:94
+#: ../includes/access_levels.inc:94
 msgid "Install/update languages"
 msgstr ""
 
-#: includes/access_levels.inc:95
+#: ../includes/access_levels.inc:95
 msgid "Install/upgrade modules"
 msgstr ""
 
-#: includes/access_levels.inc:96
+#: ../includes/access_levels.inc:96
 msgid "Software upgrades"
 msgstr ""
 
-#: includes/access_levels.inc:100
+#: ../includes/access_levels.inc:100
 msgid "Company parameters"
 msgstr ""
 
-#: includes/access_levels.inc:101
+#: ../includes/access_levels.inc:101
 msgid "Access levels edition"
 msgstr ""
 
-#: includes/access_levels.inc:102
+#: ../includes/access_levels.inc:102
 msgid "Users setup"
 msgstr ""
 
-#: includes/access_levels.inc:103
+#: ../includes/access_levels.inc:103
 msgid "Point of sales definitions"
 msgstr ""
 
-#: includes/access_levels.inc:104
+#: ../includes/access_levels.inc:104
 msgid "Printers configuration"
 msgstr ""
 
-#: includes/access_levels.inc:105
+#: ../includes/access_levels.inc:105
 msgid "Print profiles"
 msgstr ""
 
-#: includes/access_levels.inc:106
+#: ../includes/access_levels.inc:106
 msgid "Payment terms"
 msgstr ""
 
-#: includes/access_levels.inc:107
+#: ../includes/access_levels.inc:107
 msgid "Shipping ways"
 msgstr ""
 
-#: includes/access_levels.inc:108
+#: ../includes/access_levels.inc:108
 msgid "Credit status definitions changes"
 msgstr ""
 
-#: includes/access_levels.inc:109
+#: ../includes/access_levels.inc:109
 msgid "Inventory locations changes"
 msgstr ""
 
-#: includes/access_levels.inc:110
+#: ../includes/access_levels.inc:110
 msgid "Inventory movement types"
 msgstr ""
 
-#: includes/access_levels.inc:111
+#: ../includes/access_levels.inc:111
 msgid "Manufacture work centres"
 msgstr ""
 
-#: includes/access_levels.inc:112
+#: ../includes/access_levels.inc:112
 msgid "Forms setup"
 msgstr ""
 
-#: includes/access_levels.inc:113
+#: ../includes/access_levels.inc:113
 msgid "Contact categories"
 msgstr ""
 
-#: includes/access_levels.inc:117
+#: ../includes/access_levels.inc:117
 msgid "Voiding transactions"
 msgstr ""
 
-#: includes/access_levels.inc:118
+#: ../includes/access_levels.inc:118
 msgid "Database backup/restore"
 msgstr ""
 
-#: includes/access_levels.inc:119
+#: ../includes/access_levels.inc:119
 msgid "Common view/print transactions interface"
 msgstr ""
 
-#: includes/access_levels.inc:120
+#: ../includes/access_levels.inc:120
 msgid "Attaching documents"
 msgstr ""
 
-#: includes/access_levels.inc:121
+#: ../includes/access_levels.inc:121
 msgid "Display preferences"
 msgstr ""
 
-#: includes/access_levels.inc:122
+#: ../includes/access_levels.inc:122
 msgid "Password changes"
 msgstr ""
 
-#: includes/access_levels.inc:127
+#: ../includes/access_levels.inc:123
+msgid "Edit other users transactions"
+msgstr ""
+
+#: ../includes/access_levels.inc:127
 msgid "Sales types"
 msgstr ""
 
-#: includes/access_levels.inc:128
+#: ../includes/access_levels.inc:128
 msgid "Sales prices edition"
 msgstr ""
 
-#: includes/access_levels.inc:129
+#: ../includes/access_levels.inc:129
 msgid "Sales staff maintenance"
 msgstr ""
 
-#: includes/access_levels.inc:130
+#: ../includes/access_levels.inc:130
 msgid "Sales areas maintenance"
 msgstr ""
 
-#: includes/access_levels.inc:131
+#: ../includes/access_levels.inc:131
 msgid "Sales groups changes"
 msgstr ""
 
-#: includes/access_levels.inc:132
+#: ../includes/access_levels.inc:132
 msgid "Sales templates"
 msgstr ""
 
-#: includes/access_levels.inc:133
+#: ../includes/access_levels.inc:133
 msgid "Recurrent invoices definitions"
 msgstr ""
 
-#: includes/access_levels.inc:135
+#: ../includes/access_levels.inc:135
 msgid "Sales transactions view"
 msgstr ""
 
-#: includes/access_levels.inc:136
+#: ../includes/access_levels.inc:136
 msgid "Sales customer and branches changes"
 msgstr ""
 
-#: includes/access_levels.inc:137
+#: ../includes/access_levels.inc:137
 msgid "Sales quotations"
 msgstr ""
 
-#: includes/access_levels.inc:138
+#: ../includes/access_levels.inc:138
 msgid "Sales orders edition"
 msgstr ""
 
-#: includes/access_levels.inc:139
+#: ../includes/access_levels.inc:139
 msgid "Sales deliveries edition"
 msgstr ""
 
-#: includes/access_levels.inc:140
+#: ../includes/access_levels.inc:140
 msgid "Sales invoices edition"
 msgstr ""
 
-#: includes/access_levels.inc:141
+#: ../includes/access_levels.inc:141
 msgid "Sales credit notes against invoice"
 msgstr ""
 
-#: includes/access_levels.inc:142
+#: ../includes/access_levels.inc:142
 msgid "Sales freehand credit notes"
 msgstr ""
 
-#: includes/access_levels.inc:143
+#: ../includes/access_levels.inc:143
 msgid "Customer payments entry"
 msgstr ""
 
-#: includes/access_levels.inc:144
+#: ../includes/access_levels.inc:144
 msgid "Customer payments allocation"
 msgstr ""
 
-#: includes/access_levels.inc:146
+#: ../includes/access_levels.inc:146
 msgid "Sales analytical reports"
 msgstr ""
 
-#: includes/access_levels.inc:147
+#: ../includes/access_levels.inc:147
 msgid "Sales document bulk reports"
 msgstr ""
 
-#: includes/access_levels.inc:148
+#: ../includes/access_levels.inc:148
 msgid "Sales prices listing"
 msgstr ""
 
-#: includes/access_levels.inc:149
+#: ../includes/access_levels.inc:149
 msgid "Sales staff listing"
 msgstr ""
 
-#: includes/access_levels.inc:150
+#: ../includes/access_levels.inc:150
 msgid "Customer bulk listing"
 msgstr ""
 
-#: includes/access_levels.inc:151
+#: ../includes/access_levels.inc:151
 msgid "Customer status report"
 msgstr ""
 
-#: includes/access_levels.inc:152
+#: ../includes/access_levels.inc:152
 msgid "Customer payments report"
 msgstr ""
 
-#: includes/access_levels.inc:157
+#: ../includes/access_levels.inc:157
 msgid "Purchase price changes"
 msgstr ""
 
-#: includes/access_levels.inc:159
+#: ../includes/access_levels.inc:159
 msgid "Supplier transactions view"
 msgstr ""
 
-#: includes/access_levels.inc:160
+#: ../includes/access_levels.inc:160
 msgid "Suppliers changes"
 msgstr ""
 
-#: includes/access_levels.inc:161
+#: ../includes/access_levels.inc:161
 msgid "Purchase order entry"
 msgstr ""
 
-#: includes/access_levels.inc:162
+#: ../includes/access_levels.inc:162
 msgid "Purchase receive"
 msgstr ""
 
-#: includes/access_levels.inc:163
+#: ../includes/access_levels.inc:163
 msgid "Supplier invoices"
 msgstr ""
 
-#: includes/access_levels.inc:164
+#: ../includes/access_levels.inc:164
 msgid "Deleting GRN items during invoice entry"
 msgstr ""
 
-#: includes/access_levels.inc:165
+#: ../includes/access_levels.inc:165
 msgid "Supplier credit notes"
 msgstr ""
 
-#: includes/access_levels.inc:166
+#: ../includes/access_levels.inc:166
 msgid "Supplier payments"
 msgstr ""
 
-#: includes/access_levels.inc:167
+#: ../includes/access_levels.inc:167
 msgid "Supplier payments allocations"
 msgstr ""
 
-#: includes/access_levels.inc:169
+#: ../includes/access_levels.inc:169
 msgid "Supplier analytical reports"
 msgstr ""
 
-#: includes/access_levels.inc:170
+#: ../includes/access_levels.inc:170
 msgid "Supplier document bulk reports"
 msgstr ""
 
-#: includes/access_levels.inc:171
+#: ../includes/access_levels.inc:171
 msgid "Supplier payments report"
 msgstr ""
 
-#: includes/access_levels.inc:175
+#: ../includes/access_levels.inc:175
 msgid "Stock items add/edit"
 msgstr ""
 
-#: includes/access_levels.inc:176
+#: ../includes/access_levels.inc:176
 msgid "Sales kits"
 msgstr ""
 
-#: includes/access_levels.inc:177
+#: ../includes/access_levels.inc:177
 msgid "Item categories"
 msgstr ""
 
-#: includes/access_levels.inc:178
+#: ../includes/access_levels.inc:178
 msgid "Units of measure"
 msgstr ""
 
-#: includes/access_levels.inc:180
+#: ../includes/access_levels.inc:180
 msgid "Stock status view"
 msgstr ""
 
-#: includes/access_levels.inc:181
+#: ../includes/access_levels.inc:181
 msgid "Stock transactions view"
 msgstr ""
 
-#: includes/access_levels.inc:182
+#: ../includes/access_levels.inc:182
 msgid "Foreign item codes entry"
 msgstr ""
 
-#: includes/access_levels.inc:183
+#: ../includes/access_levels.inc:183
 msgid "Inventory location transfers"
 msgstr ""
 
-#: includes/access_levels.inc:184
+#: ../includes/access_levels.inc:184
 msgid "Inventory adjustments"
 msgstr ""
 
-#: includes/access_levels.inc:186
+#: ../includes/access_levels.inc:186
 msgid "Reorder levels"
 msgstr ""
 
-#: includes/access_levels.inc:187
+#: ../includes/access_levels.inc:187
 msgid "Items analytical reports and inquiries"
 msgstr ""
 
-#: includes/access_levels.inc:188
+#: ../includes/access_levels.inc:188
 msgid "Inventory valuation report"
 msgstr ""
 
-#: includes/access_levels.inc:193
+#: ../includes/access_levels.inc:193
 msgid "Bill of Materials"
 msgstr ""
 
-#: includes/access_levels.inc:195
+#: ../includes/access_levels.inc:195
 msgid "Manufacturing operations view"
 msgstr ""
 
-#: includes/access_levels.inc:196
+#: ../includes/access_levels.inc:196
 msgid "Work order entry"
 msgstr ""
 
-#: includes/access_levels.inc:197
+#: ../includes/access_levels.inc:197
 msgid "Material issues entry"
 msgstr ""
 
-#: includes/access_levels.inc:198
+#: ../includes/access_levels.inc:198
 msgid "Final product receive"
 msgstr ""
 
-#: includes/access_levels.inc:199
+#: ../includes/access_levels.inc:199
 msgid "Work order releases"
 msgstr ""
 
-#: includes/access_levels.inc:201
+#: ../includes/access_levels.inc:201
 msgid "Work order analytical reports and inquiries"
 msgstr ""
 
-#: includes/access_levels.inc:202
+#: ../includes/access_levels.inc:202
 msgid "Manufacturing cost inquiry"
 msgstr ""
 
-#: includes/access_levels.inc:203
+#: ../includes/access_levels.inc:203
 msgid "Work order bulk reports"
 msgstr ""
 
-#: includes/access_levels.inc:204
+#: ../includes/access_levels.inc:204
 msgid "Bill of materials reports"
 msgstr ""
 
-#: includes/access_levels.inc:208
+#: ../includes/access_levels.inc:208
 msgid "Dimension tags"
 msgstr ""
 
-#: includes/access_levels.inc:210
+#: ../includes/access_levels.inc:210
 msgid "Dimension view"
 msgstr ""
 
-#: includes/access_levels.inc:212
+#: ../includes/access_levels.inc:212
 msgid "Dimension entry"
 msgstr ""
 
-#: includes/access_levels.inc:214
+#: ../includes/access_levels.inc:214
 msgid "Dimension reports"
 msgstr ""
 
-#: includes/access_levels.inc:218
+#: ../includes/access_levels.inc:218
 msgid "Item tax type definitions"
 msgstr ""
 
-#: includes/access_levels.inc:219
+#: ../includes/access_levels.inc:219
 msgid "GL accounts edition"
 msgstr ""
 
-#: includes/access_levels.inc:220
+#: ../includes/access_levels.inc:220
 msgid "GL account groups"
 msgstr ""
 
-#: includes/access_levels.inc:221
+#: ../includes/access_levels.inc:221
 msgid "GL account classes"
 msgstr ""
 
-#: includes/access_levels.inc:222
+#: ../includes/access_levels.inc:222
 msgid "Quick GL entry definitions"
 msgstr ""
 
-#: includes/access_levels.inc:224
+#: ../includes/access_levels.inc:224
 msgid "Bank accounts"
 msgstr ""
 
-#: includes/access_levels.inc:225
+#: ../includes/access_levels.inc:225
 msgid "Tax rates"
 msgstr ""
 
-#: includes/access_levels.inc:226
+#: ../includes/access_levels.inc:226
 msgid "Tax groups"
 msgstr ""
 
-#: includes/access_levels.inc:227
+#: ../includes/access_levels.inc:227
 msgid "Fiscal years maintenance"
 msgstr ""
 
-#: includes/access_levels.inc:228
+#: ../includes/access_levels.inc:228
 msgid "Company GL setup"
 msgstr ""
 
-#: includes/access_levels.inc:229
+#: ../includes/access_levels.inc:229
 msgid "GL Account tags"
 msgstr ""
 
-#: includes/access_levels.inc:230
+#: ../includes/access_levels.inc:230
+msgid "Closing GL transactions"
+msgstr ""
+
+#: ../includes/access_levels.inc:231
+msgid "Reopening GL transactions"
+msgstr ""
+
+#: ../includes/access_levels.inc:232
 msgid "Allow entry on non closed Fiscal years"
 msgstr ""
 
-#: includes/access_levels.inc:232
+#: ../includes/access_levels.inc:234
 msgid "Bank transactions view"
 msgstr ""
 
-#: includes/access_levels.inc:233
+#: ../includes/access_levels.inc:235
 msgid "GL postings view"
 msgstr ""
 
-#: includes/access_levels.inc:234
+#: ../includes/access_levels.inc:236
 msgid "Exchange rate table changes"
 msgstr ""
 
-#: includes/access_levels.inc:235
+#: ../includes/access_levels.inc:237
 msgid "Bank payments"
 msgstr ""
 
-#: includes/access_levels.inc:236
+#: ../includes/access_levels.inc:238
 msgid "Bank deposits"
 msgstr ""
 
-#: includes/access_levels.inc:237
+#: ../includes/access_levels.inc:239
 msgid "Bank account transfers"
 msgstr ""
 
-#: includes/access_levels.inc:238
+#: ../includes/access_levels.inc:240
 msgid "Bank reconciliation"
 msgstr ""
 
-#: includes/access_levels.inc:239
+#: ../includes/access_levels.inc:241
 msgid "Manual journal entries"
 msgstr ""
 
-#: includes/access_levels.inc:240
+#: ../includes/access_levels.inc:242
 msgid "Journal entries to bank related accounts"
 msgstr ""
 
-#: includes/access_levels.inc:241
+#: ../includes/access_levels.inc:243
 msgid "Budget edition"
 msgstr ""
 
-#: includes/access_levels.inc:242
+#: ../includes/access_levels.inc:244
 msgid "Item standard costs"
 msgstr ""
 
-#: includes/access_levels.inc:245
+#: ../includes/access_levels.inc:247
 msgid "GL analytical reports and inquiries"
 msgstr ""
 
-#: includes/access_levels.inc:246
+#: ../includes/access_levels.inc:248
 msgid "Tax reports and inquiries"
 msgstr ""
 
-#: includes/access_levels.inc:247
+#: ../includes/access_levels.inc:249
 msgid "Bank reports and inquiries"
 msgstr ""
 
-#: includes/access_levels.inc:248
+#: ../includes/access_levels.inc:250
 msgid "GL reports and inquiries"
 msgstr ""
 
-#: includes/banking.inc:100 includes/data_checks.inc:52
+#: ../includes/banking.inc:100
+#: ../includes/data_checks.inc:52
 #, php-format
 msgid ""
 "Cannot retrieve exchange rate for currency %s as of %s. Please add exchange "
 "rate manually on Exchange Rates page."
 msgstr ""
 
-#: includes/current_user.inc:91
+#: ../includes/current_user.inc:101
 msgid ""
 "Before software upgrade you have to include old $security_groups and "
 "$security_headings arrays from old config.php file to the new one."
 msgstr ""
 
-#: includes/current_user.inc:92 includes/ui/ui_controls.inc:190
-#: includes/ui/ui_view.inc:903
+#: ../includes/current_user.inc:102
+#: ../includes/ui/ui_controls.inc:197
+#: ../includes/ui/ui_view.inc:904
 msgid "Back"
 msgstr ""
 
-#: includes/current_user.inc:102
+#: ../includes/current_user.inc:112
 msgid "System is available for site admin only until full database upgrade"
 msgstr ""
 
-#: includes/current_user.inc:523
+#: ../includes/current_user.inc:163
+msgid "New password for"
+msgstr ""
+
+#: ../includes/current_user.inc:570
 msgid "Requesting data..."
 msgstr ""
 
-#: includes/errors.inc:125
+#: ../includes/data_checks.inc:508
+#, php-format
+msgid "%s #%s is closed for further edition."
+msgstr ""
+
+#: ../includes/data_checks.inc:534
+msgid "You have no edit access to transactions created by other users."
+msgstr ""
+
+#: ../includes/errors.inc:125
 msgid "in file"
 msgstr ""
 
-#: includes/errors.inc:125
+#: ../includes/errors.inc:125
 msgid "at line "
 msgstr ""
 
-#: includes/errors.inc:179
+#: ../includes/errors.inc:179
 msgid "Debug mode database warning:"
 msgstr ""
 
-#: includes/errors.inc:181
+#: ../includes/errors.inc:181
 msgid "DATABASE ERROR :"
 msgstr ""
 
-#: includes/errors.inc:212
+#: ../includes/errors.inc:216
 msgid ""
 "The entered information is a duplicate. Please go back and enter different "
 "values."
 msgstr ""
 
-#: includes/main.inc:41 includes/main.inc.orig:41
+#: ../includes/main.inc:44
 msgid "This page is usable only with javascript enabled browsers."
 msgstr ""
 
-#: includes/packages.inc:189
+#: ../includes/packages.inc:189
 #, php-format
 msgid "No key field '%s' in file '%s'"
 msgstr ""
 
-#: includes/packages.inc:294
+#: ../includes/packages.inc:294
 msgid "Cannot download repo index file."
 msgstr ""
 
-#: includes/packages.inc:306 includes/packages.inc:343
+#: ../includes/packages.inc:306
+#: ../includes/packages.inc:343
 #, php-format
 msgid "Cannot delete outdated '%s' file."
 msgstr ""
 
-#: includes/packages.inc:310
+#: ../includes/packages.inc:310
 msgid "Release file in repository is invalid, or public key is outdated."
 msgstr ""
 
-#: includes/packages.inc:327
+#: ../includes/packages.inc:327
 msgid "Repository version does not match application version."
 msgstr ""
 
-#: includes/packages.inc:335 includes/packages.inc:377
+#: ../includes/packages.inc:335
+#: ../includes/packages.inc:377
 #, php-format
 msgid "Cannot download '%s' file."
 msgstr ""
 
-#: includes/packages.inc:347
+#: ../includes/packages.inc:347
 #, php-format
 msgid ""
 "Security alert: broken index file in repository '%s'. Please inform "
 "repository administrator about this issue."
 msgstr ""
 
-#: includes/packages.inc:383
+#: ../includes/packages.inc:383
 #, php-format
 msgid ""
 "Security alert: broken package '%s' in repository. Please inform repository "
 "administrator about this issue."
 msgstr ""
 
-#: includes/packages.inc:638 includes/packages.inc:699
+#: ../includes/packages.inc:638
+#: ../includes/packages.inc:699
 #, php-format
 msgid "Package '%s' not found."
 msgstr ""
 
-#: includes/session.inc:136
+#: ../includes/session.inc:136
 msgid "Incorrect Password"
 msgstr ""
 
-#: includes/session.inc:137
+#: ../includes/session.inc:137
 msgid "The user and password combination is not valid for the system."
 msgstr ""
 
-#: includes/session.inc:139
+#: ../includes/session.inc:139
+#: ../includes/session.inc:154
 msgid ""
 "If you are not an authorized user, please contact your system administrator "
 "to obtain an account to enable you to use the system."
 msgstr ""
 
-#: includes/session.inc:140
+#: ../includes/session.inc:140
+#: ../includes/session.inc:155
 msgid "Try again"
 msgstr ""
 
-#: includes/session.inc:180
+#: ../includes/session.inc:151
+msgid "Incorrect Email"
+msgstr ""
+
+#: ../includes/session.inc:152
+msgid "The email address does not exist in the system."
+msgstr ""
+
+#: ../includes/session.inc:166
+msgid "New password sent"
+msgstr ""
+
+#: ../includes/session.inc:167
+msgid "A new password has been sent to your mailbox."
+msgstr ""
+
+#: ../includes/session.inc:169
+msgid "Login here"
+msgstr ""
+
+#: ../includes/session.inc:209
 #, php-format
 msgid ""
 "Brute force attack on account '%s' detected. Access for non-logged users "
 "temporarily blocked."
 msgstr ""
 
-#: includes/session.inc:211
+#: ../includes/session.inc:240
 msgid "Security settings have not been defined for your user account."
 msgstr ""
 
-#: includes/session.inc:212
+#: ../includes/session.inc:241
 msgid "Please contact your system administrator."
 msgstr ""
 
-#: includes/session.inc:213
+#: ../includes/session.inc:242
 msgid ""
 "Please remove $security_groups and $security_headings arrays from config.php "
 "file!"
 msgstr ""
 
-#: includes/session.inc:215
+#: ../includes/session.inc:244
 msgid ""
 "Access to application has been blocked until database upgrade is completed "
 "by system administrator."
 msgstr ""
 
-#: includes/session.inc:229
+#: ../includes/session.inc:258
 msgid ""
 "The security settings on your account do not permit you to access this "
 "function"
 msgstr ""
 
-#: includes/session.inc:238
+#: ../includes/session.inc:267
 msgid ""
 "System is blocked after source upgrade until database is updated on System/"
 "Software Upgrade page"
 msgstr ""
 
-#: includes/sysnames.inc:23 includes/sysnames.inc:148
+#: ../includes/sysnames.inc:23
+#: ../includes/sysnames.inc:149
 msgid "Bank Payment"
 msgstr ""
 
-#: includes/sysnames.inc:24 includes/sysnames.inc:147
+#: ../includes/sysnames.inc:24
+#: ../includes/sysnames.inc:148
 msgid "Bank Deposit"
 msgstr ""
 
-#: includes/sysnames.inc:25
+#: ../includes/sysnames.inc:25
 msgid "Funds Transfer"
 msgstr ""
 
-#: includes/sysnames.inc:26
+#: ../includes/sysnames.inc:26
 msgid "Sales Invoice"
 msgstr ""
 
-#: includes/sysnames.inc:27 sales/credit_note_entry.php:37
+#: ../includes/sysnames.inc:27
+#: ../sales/credit_note_entry.php:37
 msgid "Customer Credit Note"
 msgstr ""
 
-#: includes/sysnames.inc:28
+#: ../includes/sysnames.inc:28
 msgid "Customer Payment"
 msgstr ""
 
-#: includes/sysnames.inc:29
+#: ../includes/sysnames.inc:29
 msgid "Delivery Note"
 msgstr ""
 
-#: includes/sysnames.inc:30
+#: ../includes/sysnames.inc:30
 msgid "Location Transfer"
 msgstr ""
 
-#: includes/sysnames.inc:31
+#: ../includes/sysnames.inc:31
 msgid "Inventory Adjustment"
 msgstr ""
 
-#: includes/sysnames.inc:32 purchasing/includes/ui/po_ui.inc:320
-#: purchasing/view/view_po.php:30
+#: ../includes/sysnames.inc:32
+#: ../purchasing/includes/ui/po_ui.inc:332
+#: ../purchasing/view/view_po.php:30
 msgid "Purchase Order"
 msgstr ""
 
-#: includes/sysnames.inc:33
+#: ../includes/sysnames.inc:33
 msgid "Supplier Invoice"
 msgstr ""
 
-#: includes/sysnames.inc:34 purchasing/supplier_credit.php:28
+#: ../includes/sysnames.inc:34
+#: ../purchasing/supplier_credit.php:58
+#: ../purchasing/supplier_credit.php:62
 msgid "Supplier Credit Note"
 msgstr ""
 
-#: includes/sysnames.inc:35
+#: ../includes/sysnames.inc:35
 msgid "Supplier Payment"
 msgstr ""
 
-#: includes/sysnames.inc:36 purchasing/view/view_grn.php:33
+#: ../includes/sysnames.inc:36
+#: ../purchasing/view/view_grn.php:33
 msgid "Purchase Order Delivery"
 msgstr ""
 
-#: includes/sysnames.inc:37 includes/sysnames.inc:95
+#: ../includes/sysnames.inc:37
+#: ../includes/sysnames.inc:95
 msgid "Work Order"
 msgstr ""
 
-#: includes/sysnames.inc:38
+#: ../includes/sysnames.inc:38
 msgid "Work Order Issue"
 msgstr ""
 
-#: includes/sysnames.inc:39
+#: ../includes/sysnames.inc:39
 msgid "Work Order Production"
 msgstr ""
 
-#: includes/sysnames.inc:40 sales/inquiry/sales_orders_view.php:139
-#: sales/inquiry/sales_orders_view.php:161
+#: ../includes/sysnames.inc:40
+#: ../sales/inquiry/sales_orders_view.php:151
+#: ../sales/inquiry/sales_orders_view.php:173
 msgid "Sales Order"
 msgstr ""
 
-#: includes/sysnames.inc:41 sales/sales_order_entry.php:640
+#: ../includes/sysnames.inc:41
+#: ../sales/sales_order_entry.php:657
 msgid "Sales Quotation"
 msgstr ""
 
-#: includes/sysnames.inc:42
+#: ../includes/sysnames.inc:42
 msgid "Cost Update"
 msgstr ""
 
-#: includes/sysnames.inc:47
+#: ../includes/sysnames.inc:47
 msgid "GJ"
 msgstr ""
 
-#: includes/sysnames.inc:48
+#: ../includes/sysnames.inc:48
 msgid "BP"
 msgstr ""
 
-#: includes/sysnames.inc:49
+#: ../includes/sysnames.inc:49
 msgid "BD"
 msgstr ""
 
-#: includes/sysnames.inc:50
+#: ../includes/sysnames.inc:50
 msgid "BT"
 msgstr ""
 
-#: includes/sysnames.inc:51
+#: ../includes/sysnames.inc:51
 msgid "SI"
 msgstr ""
 
-#: includes/sysnames.inc:52
+#: ../includes/sysnames.inc:52
 msgid "CN"
 msgstr ""
 
-#: includes/sysnames.inc:53
+#: ../includes/sysnames.inc:53
 msgid "CP"
 msgstr ""
 
-#: includes/sysnames.inc:54 sales/customer_invoice.php:482
+#: ../includes/sysnames.inc:54
+#: ../sales/customer_invoice.php:556
 msgid "DN"
 msgstr ""
 
-#: includes/sysnames.inc:55
+#: ../includes/sysnames.inc:55
 msgid "IT"
 msgstr ""
 
-#: includes/sysnames.inc:56
+#: ../includes/sysnames.inc:56
 msgid "IA"
 msgstr ""
 
-#: includes/sysnames.inc:57
+#: ../includes/sysnames.inc:57
 msgid "PO"
 msgstr ""
 
-#: includes/sysnames.inc:58
+#: ../includes/sysnames.inc:58
 msgid "PI"
 msgstr ""
 
-#: includes/sysnames.inc:59
+#: ../includes/sysnames.inc:59
 msgid "PC"
 msgstr ""
 
-#: includes/sysnames.inc:60
+#: ../includes/sysnames.inc:60
 msgid "SP"
 msgstr ""
 
-#: includes/sysnames.inc:61 reporting/rep204.php:84 reporting/rep305.php:101
+#: ../includes/sysnames.inc:61
+#: ../reporting/rep204.php:84
+#: ../reporting/rep305.php:101
 msgid "GRN"
 msgstr ""
 
-#: includes/sysnames.inc:62
+#: ../includes/sysnames.inc:62
 msgid "WO"
 msgstr ""
 
-#: includes/sysnames.inc:63
+#: ../includes/sysnames.inc:63
 msgid "WI"
 msgstr ""
 
-#: includes/sysnames.inc:64
+#: ../includes/sysnames.inc:64
 msgid "WP"
 msgstr ""
 
-#: includes/sysnames.inc:65
+#: ../includes/sysnames.inc:65
 msgid "SO"
 msgstr ""
 
-#: includes/sysnames.inc:66
+#: ../includes/sysnames.inc:66
 msgid "SQ"
 msgstr ""
 
-#: includes/sysnames.inc:67
+#: ../includes/sysnames.inc:67
 msgid "CU"
 msgstr ""
 
-#: includes/sysnames.inc:68
+#: ../includes/sysnames.inc:68
 msgid "Dim"
 msgstr ""
 
-#: includes/sysnames.inc:76
+#: ../includes/sysnames.inc:76
 msgid "Savings Account"
 msgstr ""
 
-#: includes/sysnames.inc:77
+#: ../includes/sysnames.inc:77
 msgid "Chequing Account"
 msgstr ""
 
-#: includes/sysnames.inc:78 manufacturing/work_order_costs.php:161
+#: ../includes/sysnames.inc:78
+#: ../manufacturing/work_order_costs.php:145
 msgid "Credit Account"
 msgstr ""
 
-#: includes/sysnames.inc:79
+#: ../includes/sysnames.inc:79
 msgid "Cash Account"
 msgstr ""
 
-#: includes/sysnames.inc:83
+#: ../includes/sysnames.inc:83
 msgid "Transfer"
 msgstr ""
 
-#: includes/sysnames.inc:84
+#: ../includes/sysnames.inc:84
 msgid "Cheque"
 msgstr ""
 
-#: includes/sysnames.inc:86 includes/sysnames.inc:180
+#: ../includes/sysnames.inc:86
+#: ../includes/sysnames.inc:181
 msgid "Cash"
 msgstr ""
 
-#: includes/sysnames.inc:96 reporting/rep101.php:127 reporting/rep102.php:125
-#: reporting/rep102.php:132 reporting/rep105.php:109 reporting/rep106.php:83
-#: reporting/rep114.php:95 reporting/rep304.php:114 reporting/rep304.php:124
-#: reporting/reports_main.php:32 reporting/reports_main.php:36
-#: reporting/reports_main.php:45 reporting/reports_main.php:102
-#: reporting/reports_main.php:121 reporting/reports_main.php:237
-#: sales/create_recurrent_invoices.php:134
-#: sales/customer_credit_invoice.php:235 sales/customer_delivery.php:338
-#: sales/customer_invoice.php:389
-#: sales/allocations/customer_allocation_main.php:97
-#: sales/allocations/customer_allocation_main.php:105
-#: sales/manage/recurrent_invoices.php:102 sales/view/view_credit.php:47
-#: sales/inquiry/customer_allocation_inquiry.php:150
-#: sales/inquiry/customer_allocation_inquiry.php:160
-#: sales/inquiry/customer_inquiry.php:223
-#: sales/inquiry/customer_inquiry.php:237
-#: sales/inquiry/sales_deliveries_view.php:180
-#: sales/inquiry/sales_orders_view.php:264
-#: sales/inquiry/sales_orders_view.php:278
+#: ../includes/sysnames.inc:96
+#: ../includes/sysnames.inc:195
+#: ../reporting/rep101.php:127
+#: ../reporting/rep102.php:125
+#: ../reporting/rep102.php:132
+#: ../reporting/rep105.php:109
+#: ../reporting/rep106.php:83
+#: ../reporting/rep114.php:95
+#: ../reporting/rep304.php:114
+#: ../reporting/rep304.php:124
+#: ../reporting/reports_main.php:32
+#: ../reporting/reports_main.php:36
+#: ../reporting/reports_main.php:45
+#: ../reporting/reports_main.php:102
+#: ../reporting/reports_main.php:121
+#: ../reporting/reports_main.php:237
+#: ../sales/create_recurrent_invoices.php:134
+#: ../sales/customer_credit_invoice.php:235
+#: ../sales/customer_delivery.php:352
+#: ../sales/customer_invoice.php:455
+#: ../sales/allocations/customer_allocation_main.php:97
+#: ../sales/allocations/customer_allocation_main.php:105
+#: ../sales/manage/recurrent_invoices.php:102
+#: ../sales/view/view_credit.php:47
+#: ../sales/inquiry/customer_allocation_inquiry.php:150
+#: ../sales/inquiry/customer_allocation_inquiry.php:160
+#: ../sales/inquiry/customer_inquiry.php:206
+#: ../sales/inquiry/customer_inquiry.php:220
+#: ../sales/inquiry/sales_deliveries_view.php:180
+#: ../sales/inquiry/sales_orders_view.php:287
+#: ../sales/inquiry/sales_orders_view.php:301
 msgid "Customer"
 msgstr ""
 
-#: includes/sysnames.inc:97 includes/sysnames.inc:172
-#: inventory/purchasing_data.php:147 purchasing/includes/ui/grn_ui.inc:20
-#: purchasing/includes/ui/grn_ui.inc:52 purchasing/includes/ui/po_ui.inc:313
-#: purchasing/view/view_supp_credit.php:42
-#: purchasing/view/view_supp_invoice.php:45
-#: purchasing/inquiry/po_search_completed.php:123
-#: purchasing/inquiry/po_search.php:132
-#: purchasing/inquiry/supplier_allocation_inquiry.php:129
-#: purchasing/inquiry/supplier_allocation_inquiry.php:142
-#: purchasing/inquiry/supplier_inquiry.php:171
-#: purchasing/inquiry/supplier_inquiry.php:185
-#: purchasing/allocations/supplier_allocation_main.php:98
-#: purchasing/allocations/supplier_allocation_main.php:106
-#: reporting/rep201.php:119 reporting/rep202.php:130 reporting/rep202.php:137
-#: reporting/rep203.php:100 reporting/rep204.php:90 reporting/rep306.php:141
-#: reporting/rep306.php:151 reporting/reports_main.php:149
-#: reporting/reports_main.php:153 reporting/reports_main.php:162
-#: reporting/reports_main.php:173 reporting/reports_main.php:180
-#: reporting/reports_main.php:252
+#: ../includes/sysnames.inc:97
+#: ../includes/sysnames.inc:173
+#: ../includes/sysnames.inc:196
+#: ../inventory/purchasing_data.php:148
+#: ../purchasing/includes/ui/grn_ui.inc:20
+#: ../purchasing/includes/ui/grn_ui.inc:52
+#: ../purchasing/includes/ui/po_ui.inc:325
+#: ../purchasing/view/view_supp_credit.php:42
+#: ../purchasing/view/view_supp_invoice.php:46
+#: ../purchasing/inquiry/po_search_completed.php:122
+#: ../purchasing/inquiry/po_search.php:132
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:129
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:142
+#: ../purchasing/inquiry/supplier_inquiry.php:176
+#: ../purchasing/inquiry/supplier_inquiry.php:191
+#: ../purchasing/allocations/supplier_allocation_main.php:98
+#: ../purchasing/allocations/supplier_allocation_main.php:106
+#: ../reporting/rep201.php:119
+#: ../reporting/rep202.php:130
+#: ../reporting/rep202.php:137
+#: ../reporting/rep203.php:100
+#: ../reporting/rep204.php:90
+#: ../reporting/rep306.php:141
+#: ../reporting/rep306.php:151
+#: ../reporting/reports_main.php:149
+#: ../reporting/reports_main.php:153
+#: ../reporting/reports_main.php:162
+#: ../reporting/reports_main.php:173
+#: ../reporting/reports_main.php:180
+#: ../reporting/reports_main.php:252
 msgid "Supplier"
 msgstr ""
 
-#: includes/sysnames.inc:105
+#: ../includes/sysnames.inc:105
 msgid "Assemble"
 msgstr ""
 
-#: includes/sysnames.inc:106
+#: ../includes/sysnames.inc:106
 msgid "Unassemble"
 msgstr ""
 
-#: includes/sysnames.inc:107
+#: ../includes/sysnames.inc:107
 msgid "Advanced Manufacture"
 msgstr ""
 
-#: includes/sysnames.inc:111
+#: ../includes/sysnames.inc:111
 msgid "Labour Cost"
 msgstr ""
 
-#: includes/sysnames.inc:112
+#: ../includes/sysnames.inc:112
 msgid "Overhead Cost"
 msgstr ""
 
-#: includes/sysnames.inc:119
+#: ../includes/sysnames.inc:113
+msgid "Materials"
+msgstr ""
+
+#: ../includes/sysnames.inc:120
 msgid "Assets"
 msgstr ""
 
-#: includes/sysnames.inc:121
+#: ../includes/sysnames.inc:122
 msgid "Equity"
 msgstr ""
 
-#: includes/sysnames.inc:122
+#: ../includes/sysnames.inc:123
 msgid "Income"
 msgstr ""
 
-#: includes/sysnames.inc:123
+#: ../includes/sysnames.inc:124
 msgid "Cost of Goods Sold"
 msgstr ""
 
-#: includes/sysnames.inc:124
+#: ../includes/sysnames.inc:125
 msgid "Expense"
 msgstr ""
 
-#: includes/sysnames.inc:131
+#: ../includes/sysnames.inc:132
 msgid "Remainder"
 msgstr ""
 
-#: includes/sysnames.inc:133
+#: ../includes/sysnames.inc:134
 msgid "Amount, increase base"
 msgstr ""
 
-#: includes/sysnames.inc:134
+#: ../includes/sysnames.inc:135
 msgid "Amount, reduce base"
 msgstr ""
 
-#: includes/sysnames.inc:135
+#: ../includes/sysnames.inc:136
 msgid "% amount of base"
 msgstr ""
 
-#: includes/sysnames.inc:136
+#: ../includes/sysnames.inc:137
 msgid "% amount of base, increase base"
 msgstr ""
 
-#: includes/sysnames.inc:137
+#: ../includes/sysnames.inc:138
 msgid "% amount of base, reduce base"
 msgstr ""
 
-#: includes/sysnames.inc:138
+#: ../includes/sysnames.inc:139
 msgid "Taxes added"
 msgstr ""
 
-#: includes/sysnames.inc:139
+#: ../includes/sysnames.inc:140
 msgid "Taxes added, increase base"
 msgstr ""
 
-#: includes/sysnames.inc:140
+#: ../includes/sysnames.inc:141
 msgid "Taxes added, reduce base"
 msgstr ""
 
-#: includes/sysnames.inc:141
+#: ../includes/sysnames.inc:142
 msgid "Taxes included"
 msgstr ""
 
-#: includes/sysnames.inc:142
+#: ../includes/sysnames.inc:143
 msgid "Taxes included, increase base"
 msgstr ""
 
-#: includes/sysnames.inc:143
+#: ../includes/sysnames.inc:144
 msgid "Taxes included, reduce base"
 msgstr ""
 
-#: includes/sysnames.inc:150
+#: ../includes/sysnames.inc:151
 msgid "Supplier Invoice/Credit"
 msgstr ""
 
-#: includes/sysnames.inc:156 manufacturing/search_work_orders.php:165
-#: manufacturing/includes/manufacturing_ui.inc:278
+#: ../includes/sysnames.inc:157
+#: ../manufacturing/search_work_orders.php:165
+#: ../manufacturing/includes/manufacturing_ui.inc:278
 msgid "Manufactured"
 msgstr ""
 
-#: includes/sysnames.inc:157
+#: ../includes/sysnames.inc:158
 msgid "Purchased"
 msgstr ""
 
-#: includes/sysnames.inc:158
+#: ../includes/sysnames.inc:159
 msgid "Service"
 msgstr ""
 
-#: includes/sysnames.inc:171
+#: ../includes/sysnames.inc:172
 msgid "Customer branch"
 msgstr ""
 
-#: includes/sysnames.inc:173
+#: ../includes/sysnames.inc:174
 msgid "Shipper"
 msgstr ""
 
-#: includes/sysnames.inc:174
+#: ../includes/sysnames.inc:175
 msgid "Company internal"
 msgstr ""
 
-#: includes/sysnames.inc:179
+#: ../includes/sysnames.inc:180
 msgid "Prepayment"
 msgstr ""
 
-#: includes/sysnames.inc:181
+#: ../includes/sysnames.inc:182
 msgid "After No. of Days"
 msgstr ""
 
-#: includes/sysnames.inc:182
+#: ../includes/sysnames.inc:183
 msgid "Day In Following Month"
 msgstr ""
 
-#: includes/sysnames.inc:187
+#: ../includes/sysnames.inc:187
+msgid "Sum per line taxes"
+msgstr ""
+
+#: ../includes/sysnames.inc:188
+msgid "Taxes from totals"
+msgstr ""
+
+#: ../includes/sysnames.inc:200
 msgid "Jan"
 msgstr ""
 
-#: includes/sysnames.inc:187
+#: ../includes/sysnames.inc:200
 msgid "Feb"
 msgstr ""
 
-#: includes/sysnames.inc:187
+#: ../includes/sysnames.inc:200
 msgid "Mar"
 msgstr ""
 
-#: includes/sysnames.inc:187
+#: ../includes/sysnames.inc:200
 msgid "Apr"
 msgstr ""
 
-#: includes/sysnames.inc:187 includes/ui/ui_view.inc:900
+#: ../includes/sysnames.inc:200
+#: ../includes/ui/ui_view.inc:901
 msgid "May"
 msgstr ""
 
-#: includes/sysnames.inc:187
+#: ../includes/sysnames.inc:200
 msgid "Jun"
 msgstr ""
 
-#: includes/sysnames.inc:187
+#: ../includes/sysnames.inc:200
 msgid "Jul"
 msgstr ""
 
-#: includes/sysnames.inc:187
+#: ../includes/sysnames.inc:200
 msgid "Aug"
 msgstr ""
 
-#: includes/sysnames.inc:187
+#: ../includes/sysnames.inc:200
 msgid "Sep"
 msgstr ""
 
-#: includes/sysnames.inc:187
+#: ../includes/sysnames.inc:200
 msgid "Oct"
 msgstr ""
 
-#: includes/sysnames.inc:187
+#: ../includes/sysnames.inc:200
 msgid "Nov"
 msgstr ""
 
-#: includes/sysnames.inc:187
+#: ../includes/sysnames.inc:200
 msgid "Dec"
 msgstr ""
 
-#: includes/system_tests.inc:15 includes/ui/ui_view.inc:210
-#: reporting/rep705.php:254 reporting/rep705.php:265 reporting/rep705.php:274
+#: ../includes/system_tests.inc:15
+#: ../includes/ui/ui_view.inc:210
+#: ../reporting/rep705.php:254
+#: ../reporting/rep705.php:265
+#: ../reporting/rep705.php:274
 msgid "Info"
 msgstr ""
 
-#: includes/system_tests.inc:16
+#: ../includes/system_tests.inc:16
 msgid "Optional"
 msgstr ""
 
-#: includes/system_tests.inc:17
+#: ../includes/system_tests.inc:17
 msgid "Recommended"
 msgstr ""
 
-#: includes/system_tests.inc:18
+#: ../includes/system_tests.inc:18
 msgid "Required "
 msgstr ""
 
-#: includes/system_tests.inc:24
+#: ../includes/system_tests.inc:24
 msgid "MySQL version"
 msgstr ""
 
-#: includes/system_tests.inc:28
+#: ../includes/system_tests.inc:28
 msgid "Upgrade MySQL server to version at least 4.1"
 msgstr ""
 
-#: includes/system_tests.inc:35
+#: ../includes/system_tests.inc:35
 msgid "PHP MySQL extension"
 msgstr ""
 
-#: includes/system_tests.inc:40
+#: ../includes/system_tests.inc:40
 msgid "Your PHP has to have MySQL extension enabled."
 msgstr ""
 
-#: includes/system_tests.inc:46
+#: ../includes/system_tests.inc:46
 msgid "PHP version"
 msgstr ""
 
-#: includes/system_tests.inc:50
+#: ../includes/system_tests.inc:50
 msgid "Upgrade PHP to version at least 4.3.3"
 msgstr ""
 
-#: includes/system_tests.inc:57
+#: ../includes/system_tests.inc:57
 msgid "Server system"
 msgstr ""
 
-#: includes/system_tests.inc:67
+#: ../includes/system_tests.inc:67
 msgid "Session save path"
 msgstr ""
 
-#: includes/system_tests.inc:79
+#: ../includes/system_tests.inc:79
 msgid "Removed install wizard folder"
 msgstr ""
 
-#: includes/system_tests.inc:82
+#: ../includes/system_tests.inc:82
 msgid "Not removed"
 msgstr ""
 
-#: includes/system_tests.inc:83
+#: ../includes/system_tests.inc:83
 msgid "Remove or rename install wizard folder for security reasons."
 msgstr ""
 
-#: includes/system_tests.inc:90
+#: ../includes/system_tests.inc:90
 msgid "Browser type"
 msgstr ""
 
-#: includes/system_tests.inc:94
+#: ../includes/system_tests.inc:94
 msgid "Any browser is supported"
 msgstr ""
 
-#: includes/system_tests.inc:101
+#: ../includes/system_tests.inc:101
 msgid "Http server type"
 msgstr ""
 
-#: includes/system_tests.inc:105
+#: ../includes/system_tests.inc:105
 msgid "Any server is supported"
 msgstr ""
 
-#: includes/system_tests.inc:112
+#: ../includes/system_tests.inc:112
 msgid "Native gettext"
 msgstr ""
 
-#: includes/system_tests.inc:116
+#: ../includes/system_tests.inc:116
 msgid "In case of no gettext support, php emulation is used"
 msgstr ""
 
-#: includes/system_tests.inc:124
+#: ../includes/system_tests.inc:124
 msgid "Debugging mode"
 msgstr ""
 
-#: includes/system_tests.inc:128
+#: ../includes/system_tests.inc:128
 msgid "To switch debugging on set $go_debug>0 in config.php file"
 msgstr ""
 
-#: includes/system_tests.inc:137
+#: ../includes/system_tests.inc:137
 msgid "Error logging"
 msgstr ""
 
-#: includes/system_tests.inc:145
+#: ../includes/system_tests.inc:145
 msgid "Disabled"
 msgstr ""
 
-#: includes/system_tests.inc:148
+#: ../includes/system_tests.inc:148
 msgid "To switch error logging set $error_logging in config.php file"
 msgstr ""
 
-#: includes/system_tests.inc:151
+#: ../includes/system_tests.inc:151
 msgid "Log file is not writeable"
 msgstr ""
 
-#: includes/system_tests.inc:161
+#: ../includes/system_tests.inc:161
 msgid "Current database version"
 msgstr ""
 
-#: includes/system_tests.inc:165
+#: ../includes/system_tests.inc:165
 msgid "Database structure seems to be not upgraded to current version"
 msgstr ""
 
-#: includes/system_tests.inc:180
+#: ../includes/system_tests.inc:180
 msgid "Company subdirectories consistency"
 msgstr ""
 
-#: includes/system_tests.inc:193 includes/system_tests.inc:200
-#: includes/system_tests.inc:208 includes/system_tests.inc:225
-#: includes/system_tests.inc:340 includes/system_tests.inc:349
-#: includes/system_tests.inc:358 includes/system_tests.inc:366
+#: ../includes/system_tests.inc:193
+#: ../includes/system_tests.inc:200
+#: ../includes/system_tests.inc:208
+#: ../includes/system_tests.inc:225
+#: ../includes/system_tests.inc:340
+#: ../includes/system_tests.inc:349
+#: ../includes/system_tests.inc:358
+#: ../includes/system_tests.inc:366
 #, php-format
 msgid "'%s' is not writeable"
 msgstr ""
 
-#: includes/system_tests.inc:221
+#: ../includes/system_tests.inc:221
 msgid "Temporary directory"
 msgstr ""
 
-#: includes/system_tests.inc:233
+#: ../includes/system_tests.inc:233
 msgid "Language configuration consistency"
 msgstr ""
 
-#: includes/system_tests.inc:242
+#: ../includes/system_tests.inc:242
 msgid "Languages folder should be writeable."
 msgstr ""
 
-#: includes/system_tests.inc:251
+#: ../includes/system_tests.inc:251
 msgid "Languages configuration file should be writeable."
 msgstr ""
 
-#: includes/system_tests.inc:270
+#: ../includes/system_tests.inc:270
 #, php-format
 msgid "Missing %s translation file."
 msgstr ""
 
-#: includes/system_tests.inc:275
+#: ../includes/system_tests.inc:275
 #, php-format
 msgid "Missing system locale: %s"
 msgstr ""
 
-#: includes/system_tests.inc:288
+#: ../includes/system_tests.inc:288
 msgid "Main config file"
 msgstr ""
 
-#: includes/system_tests.inc:295 includes/system_tests.inc:317
+#: ../includes/system_tests.inc:295
+#: ../includes/system_tests.inc:317
 #, php-format
 msgid "Can't write '%s' file. Check FA directory write permissions."
 msgstr ""
 
-#: includes/system_tests.inc:296 includes/system_tests.inc:318
+#: ../includes/system_tests.inc:296
+#: ../includes/system_tests.inc:318
 #, php-format
 msgid "'%s' file exists."
 msgstr ""
 
-#: includes/system_tests.inc:300
+#: ../includes/system_tests.inc:300
 #, php-format
 msgid "'%s' file should be read-only"
 msgstr ""
 
-#: includes/system_tests.inc:309
+#: ../includes/system_tests.inc:309
 msgid "Database auth file"
 msgstr ""
 
-#: includes/system_tests.inc:322
+#: ../includes/system_tests.inc:322
 #, php-format
 msgid ""
 "'%s' file should be read-only if you do not plan to add or change companies"
 msgstr ""
 
-#: includes/system_tests.inc:333
+#: ../includes/system_tests.inc:333
 msgid "Extensions system"
 msgstr ""
 
-#: includes/system_tests.inc:371
+#: ../includes/system_tests.inc:371
 msgid "Extensions configuration files and directories should be writeable"
 msgstr ""
 
-#: includes/system_tests.inc:384
+#: ../includes/system_tests.inc:384
 #, php-format
 msgid "Non-standard theme directory '%s' is not writable"
 msgstr ""
 
-#: includes/system_tests.inc:394
+#: ../includes/system_tests.inc:394
 msgid ""
 "OpenSSL PHP extension have to be enabled to use extension repository system."
 msgstr ""
 
-#: includes/system_tests.inc:397
+#: ../includes/system_tests.inc:397
 msgid ""
 "OpenSSL have to be available on your server to use extension repository "
 "system."
 msgstr ""
 
-#: includes/system_tests.inc:420
+#: ../includes/system_tests.inc:420
 msgid "Test"
 msgstr ""
 
-#: includes/system_tests.inc:420
+#: ../includes/system_tests.inc:420
 msgid "Test type"
 msgstr ""
 
-#: includes/system_tests.inc:420 includes/ui/view_package.php:47
-#: reporting/rep204.php:85 reporting/rep301.php:105 reporting/rep308.php:150
+#: ../includes/system_tests.inc:420
+#: ../includes/ui/view_package.php:47
+#: ../reporting/rep204.php:85
+#: ../reporting/rep301.php:105
+#: ../reporting/rep308.php:150
 msgid "Value"
 msgstr ""
 
-#: includes/system_tests.inc:420 reporting/reports_main.php:40
-#: reporting/reports_main.php:51 reporting/reports_main.php:60
-#: reporting/reports_main.php:67 reporting/reports_main.php:76
-#: reporting/reports_main.php:85 reporting/reports_main.php:92
-#: reporting/reports_main.php:101 reporting/reports_main.php:111
-#: reporting/reports_main.php:118 reporting/reports_main.php:125
-#: reporting/reports_main.php:133 reporting/reports_main.php:140
-#: reporting/reports_main.php:146 reporting/reports_main.php:157
-#: reporting/reports_main.php:168 reporting/reports_main.php:176
-#: reporting/reports_main.php:181 reporting/reports_main.php:188
-#: reporting/reports_main.php:196 reporting/reports_main.php:203
-#: reporting/reports_main.php:212 reporting/reports_main.php:218
-#: reporting/reports_main.php:229 reporting/reports_main.php:238
-#: reporting/reports_main.php:244 reporting/reports_main.php:254
-#: reporting/reports_main.php:262 reporting/reports_main.php:270
-#: reporting/reports_main.php:277 reporting/reports_main.php:285
-#: reporting/reports_main.php:292 reporting/reports_main.php:301
-#: reporting/reports_main.php:314 reporting/reports_main.php:321
-#: reporting/reports_main.php:328 reporting/reports_main.php:343
-#: reporting/reports_main.php:351 reporting/reports_main.php:362
-#: reporting/reports_main.php:374 reporting/reports_main.php:384
-#: reporting/reports_main.php:396 reporting/reports_main.php:403
-#: reporting/reports_main.php:413 reporting/reports_main.php:424
-#: reporting/reports_main.php:433 reporting/reports_main.php:444
-#: reporting/reports_main.php:450 reporting/reports_main.php:459
-#: reporting/reports_main.php:469 reporting/reports_main.php:477
-#: reporting/reports_main.php:485 reporting/reports_main.php:493
-#: reporting/includes/excel_report.inc:295
-#: reporting/includes/excel_report.inc:428
-#: reporting/includes/pdf_report.inc:346 reporting/includes/pdf_report.inc:619
-#: sales/view/view_sales_order.php:85
+#: ../includes/system_tests.inc:420
+#: ../reporting/reports_main.php:40
+#: ../reporting/reports_main.php:51
+#: ../reporting/reports_main.php:60
+#: ../reporting/reports_main.php:67
+#: ../reporting/reports_main.php:76
+#: ../reporting/reports_main.php:85
+#: ../reporting/reports_main.php:92
+#: ../reporting/reports_main.php:101
+#: ../reporting/reports_main.php:111
+#: ../reporting/reports_main.php:118
+#: ../reporting/reports_main.php:125
+#: ../reporting/reports_main.php:133
+#: ../reporting/reports_main.php:140
+#: ../reporting/reports_main.php:146
+#: ../reporting/reports_main.php:157
+#: ../reporting/reports_main.php:168
+#: ../reporting/reports_main.php:176
+#: ../reporting/reports_main.php:181
+#: ../reporting/reports_main.php:188
+#: ../reporting/reports_main.php:196
+#: ../reporting/reports_main.php:203
+#: ../reporting/reports_main.php:212
+#: ../reporting/reports_main.php:218
+#: ../reporting/reports_main.php:229
+#: ../reporting/reports_main.php:238
+#: ../reporting/reports_main.php:244
+#: ../reporting/reports_main.php:254
+#: ../reporting/reports_main.php:262
+#: ../reporting/reports_main.php:270
+#: ../reporting/reports_main.php:277
+#: ../reporting/reports_main.php:285
+#: ../reporting/reports_main.php:292
+#: ../reporting/reports_main.php:301
+#: ../reporting/reports_main.php:314
+#: ../reporting/reports_main.php:321
+#: ../reporting/reports_main.php:327
+#: ../reporting/reports_main.php:334
+#: ../reporting/reports_main.php:349
+#: ../reporting/reports_main.php:357
+#: ../reporting/reports_main.php:368
+#: ../reporting/reports_main.php:380
+#: ../reporting/reports_main.php:390
+#: ../reporting/reports_main.php:402
+#: ../reporting/reports_main.php:409
+#: ../reporting/reports_main.php:419
+#: ../reporting/reports_main.php:430
+#: ../reporting/reports_main.php:439
+#: ../reporting/reports_main.php:450
+#: ../reporting/reports_main.php:456
+#: ../reporting/reports_main.php:465
+#: ../reporting/reports_main.php:475
+#: ../reporting/reports_main.php:483
+#: ../reporting/reports_main.php:491
+#: ../reporting/reports_main.php:499
+#: ../reporting/includes/excel_report.inc:295
+#: ../reporting/includes/excel_report.inc:428
+#: ../reporting/includes/pdf_report.inc:346
+#: ../reporting/includes/pdf_report.inc:618
+#: ../sales/view/view_sales_order.php:98
 msgid "Comments"
 msgstr ""
 
-#: includes/system_tests.inc:444
+#: ../includes/system_tests.inc:444
 msgid "Ok"
 msgstr ""
 
-#: includes/db/audit_trail_db.inc:93
+#: ../includes/db/audit_trail_db.inc:99
 msgid ""
 "Some transactions journal GL postings were not indexed due to lack of audit "
 "trail record."
 msgstr ""
 
-#: includes/db/inventory_db.inc:253
-#: inventory/includes/db/items_trans_db.inc:60
+#: ../includes/db/inventory_db.inc:253
+#: ../inventory/includes/db/items_trans_db.inc:66
 #, php-format
 msgid "Cost was %s changed to %s x quantity on hand for item '%s'"
 msgstr ""
 
-#: includes/db/inventory_db.inc:294
+#: ../includes/db/inventory_db.inc:294
 msgid "Zero/negative inventory handling"
 msgstr ""
 
-#: includes/ui/allocation_cart.inc:286 includes/ui/mk.allocation_cart.inc:286
+#: ../includes/ui/allocation_cart.inc:288
 #, php-format
 msgid "Allocated amounts in %s:"
 msgstr ""
 
-#: includes/ui/allocation_cart.inc:288 includes/ui/mk.allocation_cart.inc:288
-#: purchasing/allocations/supplier_allocation_main.php:94
-#: sales/allocations/customer_allocation_main.php:93
+#: ../includes/ui/allocation_cart.inc:290
+#: ../purchasing/allocations/supplier_allocation_main.php:94
+#: ../sales/allocations/customer_allocation_main.php:93
 msgid "Transaction Type"
 msgstr ""
 
-#: includes/ui/allocation_cart.inc:288 includes/ui/mk.allocation_cart.inc:288
+#: ../includes/ui/allocation_cart.inc:290
 msgid "Supplier Ref"
 msgstr ""
 
-#: includes/ui/allocation_cart.inc:288 includes/ui/mk.allocation_cart.inc:288
-#: reporting/rep704.php:83 reporting/rep704.php:86 reporting/rep704.php:89
-#: reporting/rep709.php:111 sales/view/view_credit.php:68
-#: sales/view/view_sales_order.php:96 sales/view/view_sales_order.php:129
-#: sales/view/view_sales_order.php:161 sales/inquiry/sales_orders_view.php:226
-#: sales/inquiry/sales_orders_view.php:263
-#: sales/inquiry/sales_orders_view.php:277
+#: ../includes/ui/allocation_cart.inc:290
+#: ../reporting/rep704.php:83
+#: ../reporting/rep704.php:86
+#: ../reporting/rep704.php:89
+#: ../reporting/rep709.php:111
+#: ../sales/view/view_credit.php:68
+#: ../sales/view/view_sales_order.php:109
+#: ../sales/view/view_sales_order.php:142
+#: ../sales/view/view_sales_order.php:179
+#: ../sales/inquiry/sales_orders_view.php:248
+#: ../sales/inquiry/sales_orders_view.php:286
+#: ../sales/inquiry/sales_orders_view.php:300
 msgid "Ref"
 msgstr ""
 
-#: includes/ui/allocation_cart.inc:289 includes/ui/mk.allocation_cart.inc:289
+#: ../includes/ui/allocation_cart.inc:291
 msgid "Other Allocations"
 msgstr ""
 
-#: includes/ui/allocation_cart.inc:289 includes/ui/allocation_cart.inc:342
-#: includes/ui/mk.allocation_cart.inc:289
-#: includes/ui/mk.allocation_cart.inc:343 includes/ui/ui_view.inc:548
-#: purchasing/allocations/supplier_allocation_main.php:101
-#: reporting/rep112.php:157 reporting/rep210.php:164
-#: reporting/includes/doctext.inc:145 reporting/includes/doctext.inc:186
-#: sales/allocations/customer_allocation_main.php:100
+#: ../includes/ui/allocation_cart.inc:291
+#: ../includes/ui/allocation_cart.inc:344
+#: ../includes/ui/ui_view.inc:548
+#: ../purchasing/allocations/supplier_allocation_main.php:101
+#: ../reporting/rep112.php:145
+#: ../reporting/rep210.php:152
+#: ../reporting/includes/doctext.inc:167
+#: ../reporting/includes/doctext.inc:208
+#: ../sales/allocations/customer_allocation_main.php:100
 msgid "Left to Allocate"
 msgstr ""
 
-#: includes/ui/allocation_cart.inc:289 includes/ui/mk.allocation_cart.inc:289
-#: includes/ui/ui_view.inc:548 reporting/includes/doctext.inc:145
-#: reporting/includes/doctext.inc:186
+#: ../includes/ui/allocation_cart.inc:291
+#: ../includes/ui/ui_view.inc:548
+#: ../reporting/includes/doctext.inc:167
+#: ../reporting/includes/doctext.inc:208
 msgid "This Allocation"
 msgstr ""
 
-#: includes/ui/allocation_cart.inc:322 includes/ui/mk.allocation_cart.inc:322
-#: reporting/rep112.php:154 reporting/rep210.php:161
+#: ../includes/ui/allocation_cart.inc:324
+#: ../reporting/rep112.php:142
+#: ../reporting/rep210.php:149
 msgid "Total Allocated"
 msgstr ""
 
-#: includes/ui/allocation_cart.inc:363 includes/ui/mk.allocation_cart.inc:364
+#: ../includes/ui/allocation_cart.inc:366
 msgid "The entry for one or more amounts is invalid or negative."
 msgstr ""
 
-#: includes/ui/allocation_cart.inc:374 includes/ui/mk.allocation_cart.inc:375
+#: ../includes/ui/allocation_cart.inc:377
 msgid "At least one transaction is overallocated."
 msgstr ""
 
-#: includes/ui/allocation_cart.inc:393 includes/ui/mk.allocation_cart.inc:395
+#: ../includes/ui/allocation_cart.inc:396
 msgid ""
 "These allocations cannot be processed because the amount allocated is more "
 "than the total amount left to allocate."
 msgstr ""
 
-#: includes/ui/contacts_view.inc:41
+#: ../includes/ui/contacts_view.inc:41
 msgid "Assignment"
 msgstr ""
 
-#: includes/ui/contacts_view.inc:41
+#: ../includes/ui/contacts_view.inc:41
 msgid "Sec Phone"
 msgstr ""
 
-#: includes/ui/contacts_view.inc:41 reporting/rep103.php:266
-#: reporting/rep205.php:184 reporting/includes/header2.inc:104
-#: sales/manage/sales_people.php:99
+#: ../includes/ui/contacts_view.inc:41
+#: ../reporting/rep103.php:266
+#: ../reporting/rep205.php:184
+#: ../reporting/includes/header2.inc:104
+#: ../sales/manage/sales_people.php:99
 msgid "Fax"
 msgstr ""
 
-#: includes/ui/contacts_view.inc:42
+#: ../includes/ui/contacts_view.inc:42
 msgid "email"
 msgstr ""
 
-#: includes/ui/contacts_view.inc:90
+#: ../includes/ui/contacts_view.inc:90
 msgid "Contact data"
 msgstr ""
 
-#: includes/ui/contacts_view.inc:92
+#: ../includes/ui/contacts_view.inc:92
 msgid "First Name:"
 msgstr ""
 
-#: includes/ui/contacts_view.inc:93
+#: ../includes/ui/contacts_view.inc:93
 msgid "Last Name:"
 msgstr ""
 
-#: includes/ui/contacts_view.inc:96
+#: ../includes/ui/contacts_view.inc:96
 msgid "Contact active for:"
 msgstr ""
 
-#: includes/ui/contacts_view.inc:102 sales/manage/customers.php:255
+#: ../includes/ui/contacts_view.inc:102
+#: ../sales/manage/customers.php:256
 msgid "Phone:"
 msgstr ""
 
-#: includes/ui/contacts_view.inc:105 inventory/manage/locations.php:207
-#: purchasing/manage/suppliers.php:160 sales/manage/customer_branches.php:263
-#: sales/manage/customers.php:258 sales/manage/sales_people.php:158
+#: ../includes/ui/contacts_view.inc:105
+#: ../inventory/manage/locations.php:207
+#: ../purchasing/manage/suppliers.php:141
+#: ../sales/manage/customer_branches.php:265
+#: ../sales/manage/customers.php:259
+#: ../sales/manage/sales_people.php:158
 msgid "E-mail:"
 msgstr ""
 
-#: includes/ui/contacts_view.inc:110 purchasing/manage/suppliers.php:161
-#: sales/manage/customer_branches.php:264
+#: ../includes/ui/contacts_view.inc:110
+#: ../purchasing/manage/suppliers.php:142
+#: ../sales/manage/customer_branches.php:266
 msgid "Document Language:"
 msgstr ""
 
-#: includes/ui/contacts_view.inc:110 sales/manage/customer_branches.php:264
+#: ../includes/ui/contacts_view.inc:110
+#: ../sales/manage/customer_branches.php:266
 msgid "Customer default"
 msgstr ""
 
-#: includes/ui/contacts_view.inc:112
+#: ../includes/ui/contacts_view.inc:112
 msgid "Notes:"
 msgstr ""
 
-#: includes/ui/contacts_view.inc:131
+#: ../includes/ui/contacts_view.inc:131
 msgid "The contact name cannot be empty."
 msgstr ""
 
-#: includes/ui/contacts_view.inc:136
+#: ../includes/ui/contacts_view.inc:136
 msgid "Contact reference cannot be empty."
 msgstr ""
 
-#: includes/ui/contacts_view.inc:141
+#: ../includes/ui/contacts_view.inc:141
 msgid "You have to select at least one category."
 msgstr ""
 
-#: includes/ui/db_pager_view.inc:166 includes/ui/ui_input.inc:903
+#: ../includes/ui/db_pager_view.inc:166
+#: ../includes/ui/ui_input.inc:904
 msgid "Show also Inactive"
 msgstr ""
 
-#: includes/ui/db_pager_view.inc:175
+#: ../includes/ui/db_pager_view.inc:175
 msgid "First"
 msgstr ""
 
-#: includes/ui/db_pager_view.inc:176
+#: ../includes/ui/db_pager_view.inc:176
 msgid "Prev"
 msgstr ""
 
-#: includes/ui/db_pager_view.inc:177
+#: ../includes/ui/db_pager_view.inc:177
 msgid "Next"
 msgstr ""
 
-#: includes/ui/db_pager_view.inc:178
+#: ../includes/ui/db_pager_view.inc:178
 msgid "Last"
 msgstr ""
 
-#: includes/ui/db_pager_view.inc:187
+#: ../includes/ui/db_pager_view.inc:187
 #, php-format
 msgid "Records %d-%d of %d"
 msgstr ""
 
-#: includes/ui/db_pager_view.inc:191
+#: ../includes/ui/db_pager_view.inc:191
 msgid "No records"
 msgstr ""
 
-#: includes/ui/simple_crud_class.inc:227 includes/ui/ui_input.inc:207
+#: ../includes/ui/simple_crud_class.inc:227
+#: ../includes/ui/ui_input.inc:208
+#: ../taxes/sav.tax_types.php:255
 msgid "Submit changes"
 msgstr ""
 
-#: includes/ui/simple_crud_class.inc:229 includes/ui/ui_input.inc:208
+#: ../includes/ui/simple_crud_class.inc:229
+#: ../includes/ui/ui_input.inc:209
 msgid "Clone"
 msgstr ""
 
-#: includes/ui/simple_crud_class.inc:229 includes/ui/ui_input.inc:209
+#: ../includes/ui/simple_crud_class.inc:229
+#: ../includes/ui/ui_input.inc:210
 msgid "Edit new record with current data"
 msgstr ""
 
-#: includes/ui/simple_crud_class.inc:231 includes/ui/ui_input.inc:210
+#: ../includes/ui/simple_crud_class.inc:231
+#: ../includes/ui/ui_input.inc:211
 msgid "Cancel edition"
 msgstr ""
 
-#: includes/ui/ui_controls.inc:72
+#: ../includes/ui/ui_controls.inc:79
 msgid "Request from outside of this page is forbidden."
 msgstr ""
 
-#: includes/ui/ui_controls.inc:73
+#: ../includes/ui/ui_controls.inc:80
 msgid "CSRF attack detected from: "
 msgstr ""
 
-#: includes/ui/ui_controls.inc:139
+#: ../includes/ui/ui_controls.inc:146
 msgid "You should automatically be forwarded."
 msgstr ""
 
-#: includes/ui/ui_controls.inc:140
+#: ../includes/ui/ui_controls.inc:147
 msgid "If this does not happen"
 msgstr ""
 
-#: includes/ui/ui_controls.inc:140
+#: ../includes/ui/ui_controls.inc:147
 msgid "click here"
 msgstr ""
 
-#: includes/ui/ui_controls.inc:140
+#: ../includes/ui/ui_controls.inc:147
 msgid "to continue"
 msgstr ""
 
-#: includes/ui/ui_controls.inc:190
+#: ../includes/ui/ui_controls.inc:197
 msgid "Close"
 msgstr ""
 
-#: includes/ui/ui_controls.inc:452 sales/manage/customers.php:23
+#: ../includes/ui/ui_controls.inc:459
+#: ../sales/manage/customers.php:23
 msgid "Customers"
 msgstr ""
 
-#: includes/ui/ui_controls.inc:454
+#: ../includes/ui/ui_controls.inc:461
 msgid "Branches"
 msgstr ""
 
-#: includes/ui/ui_controls.inc:456 purchasing/manage/suppliers.php:22
+#: ../includes/ui/ui_controls.inc:463
+#: ../purchasing/manage/suppliers.php:22
 msgid "Suppliers"
 msgstr ""
 
-#: includes/ui/ui_controls.inc:458 inventory/transfers.php:228
-#: inventory/manage/items.php:21 reporting/reports_main.php:253
+#: ../includes/ui/ui_controls.inc:465
+#: ../inventory/transfers.php:228
+#: ../inventory/manage/items.php:22
+#: ../reporting/reports_main.php:253
 msgid "Items"
 msgstr ""
 
-#: includes/ui/ui_controls.inc:603
+#: ../includes/ui/ui_controls.inc:610
 msgid "Entered data has not been saved yet.\\nDo you want to abandon changes?"
 msgstr ""
 
-#: includes/ui/ui_input.inc:631 reporting/includes/reports_classes.inc:219
+#: ../includes/ui/ui_input.inc:632
+#: ../reporting/includes/reports_classes.inc:219
 msgid "Click Here to Pick up the date"
 msgstr ""
 
-#: includes/ui/ui_input.inc:915 includes/ui/ui_lists.inc:2156
-#: reporting/rep301.php:155 reporting/rep302.php:170 reporting/rep303.php:184
-#: reporting/rep304.php:170 reporting/rep304.php:174 reporting/rep306.php:235
-#: reporting/rep306.php:242 sales/manage/customer_branches.php:302
+#: ../includes/ui/ui_input.inc:916
+#: ../includes/ui/ui_lists.inc:2160
+#: ../reporting/rep301.php:155
+#: ../reporting/rep302.php:170
+#: ../reporting/rep303.php:184
+#: ../reporting/rep304.php:170
+#: ../reporting/rep304.php:174
+#: ../reporting/rep306.php:235
+#: ../reporting/rep306.php:242
+#: ../sales/manage/customer_branches.php:304
 msgid "Inactive"
 msgstr ""
 
-#: includes/ui/ui_input.inc:925 includes/ui/ui_input.inc:937
+#: ../includes/ui/ui_input.inc:926
+#: ../includes/ui/ui_input.inc:938
 msgid "Current Credit:"
 msgstr ""
 
-#: includes/ui/ui_input.inc:951
+#: ../includes/ui/ui_input.inc:972
 msgid "Bank Balance:"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:17
+#: ../includes/ui/ui_lists.inc:17
 msgid "Set filter"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:100
+#: ../includes/ui/ui_lists.inc:100
 msgid "Press Space tab for search pattern entry"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:104
+#: ../includes/ui/ui_lists.inc:104
 msgid "Enter code fragment to search or * for all"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:105
+#: ../includes/ui/ui_lists.inc:105
 msgid "Enter description fragment to search or * for all"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:453 includes/ui/ui_lists.inc:1391
+#: ../includes/ui/ui_lists.inc:453
+#: ../includes/ui/ui_lists.inc:1389
 msgid "All Suppliers"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:457
+#: ../includes/ui/ui_lists.inc:457
 msgid "Press Space tab to filter by name fragment"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:458
+#: ../includes/ui/ui_lists.inc:458
 msgid "Select supplier"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:505
+#: ../includes/ui/ui_lists.inc:505
 msgid "All Customers"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:509
+#: ../includes/ui/ui_lists.inc:509
 msgid "Press Space tab to filter by name fragment; F2 - entry new customer"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:510
+#: ../includes/ui/ui_lists.inc:510
 msgid "Select customer"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:558
+#: ../includes/ui/ui_lists.inc:557
 msgid "All branches"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:561
+#: ../includes/ui/ui_lists.inc:560
 msgid "Select customer branch"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:601
+#: ../includes/ui/ui_lists.inc:600
 msgid "All Locations"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:753 includes/ui/ui_lists.inc:822
+#: ../includes/ui/ui_lists.inc:752
+#: ../includes/ui/ui_lists.inc:820
 msgid "All Items"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:1298
+#: ../includes/ui/ui_lists.inc:1296
 msgid "All Sales Types"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:1629
+#: ../includes/ui/ui_lists.inc:1633
 msgid "Use Item Sales Accounts"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:1940 includes/ui/ui_lists.inc:1957
-#: includes/ui/ui_lists.inc:1974
+#: ../includes/ui/ui_lists.inc:1944
+#: ../includes/ui/ui_lists.inc:1961
+#: ../includes/ui/ui_lists.inc:1978
 msgid "All Types"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:1941 sales/view/view_sales_order.php:127
+#: ../includes/ui/ui_lists.inc:1945
+#: ../sales/view/view_sales_order.php:140
 msgid "Sales Invoices"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:1942 includes/ui/ui_lists.inc:1959
-#: includes/ui/ui_lists.inc:1977
+#: ../includes/ui/ui_lists.inc:1946
+#: ../includes/ui/ui_lists.inc:1963
+#: ../includes/ui/ui_lists.inc:1981
 msgid "Overdue Invoices"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:1943 includes/ui/ui_lists.inc:1960
-#: includes/ui/ui_lists.inc:1978 includes/ui/ui_view.inc:543
+#: ../includes/ui/ui_lists.inc:1947
+#: ../includes/ui/ui_lists.inc:1964
+#: ../includes/ui/ui_lists.inc:1982
+#: ../includes/ui/ui_view.inc:610
+#: ../includes/ui/ui_view.inc:614
 msgid "Payments"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:1944 includes/ui/ui_lists.inc:1961
-#: includes/ui/ui_lists.inc:1979 sales/view/view_sales_order.php:158
+#: ../includes/ui/ui_lists.inc:1948
+#: ../includes/ui/ui_lists.inc:1965
+#: ../includes/ui/ui_lists.inc:1983
+#: ../sales/view/view_sales_order.php:176
 msgid "Credit Notes"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:1945 sales/view/view_sales_order.php:93
+#: ../includes/ui/ui_lists.inc:1949
+#: ../sales/view/view_sales_order.php:106
 msgid "Delivery Notes"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:1958 includes/ui/ui_lists.inc:1976
+#: ../includes/ui/ui_lists.inc:1962
+#: ../includes/ui/ui_lists.inc:1980
 msgid "Invoices"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:1962 includes/ui/ui_lists.inc:1980
+#: ../includes/ui/ui_lists.inc:1966
+#: ../includes/ui/ui_lists.inc:1984
 msgid "Overdue Credit Notes"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:1975
+#: ../includes/ui/ui_lists.inc:1979
 msgid "GRNs"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:1993
+#: ../includes/ui/ui_lists.inc:1997
 msgid "Automatically put balance on back order"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:1994
+#: ../includes/ui/ui_lists.inc:1998
 msgid "Cancel any quantites not delivered"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:2011
+#: ../includes/ui/ui_lists.inc:2015
 msgid "Items Returned to Inventory Location"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:2012
+#: ../includes/ui/ui_lists.inc:2016
 msgid "Items Written Off"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:2182
+#: ../includes/ui/ui_lists.inc:2186
 msgid "New role"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:2234
+#: ../includes/ui/ui_lists.inc:2238
 msgid "No tags defined."
 msgstr ""
 
-#: includes/ui/ui_lists.inc:2234
+#: ../includes/ui/ui_lists.inc:2238
 msgid "No active tags defined."
 msgstr ""
 
-#: includes/ui/ui_lists.inc:2272
+#: ../includes/ui/ui_lists.inc:2276
 #, php-format
 msgid "Activated for '%s'"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:2275
+#: ../includes/ui/ui_lists.inc:2279
 msgid "Available and/or installed"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:2345
+#: ../includes/ui/ui_lists.inc:2349
 msgid "Standard new company American COA (4 digit)"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:2347
+#: ../includes/ui/ui_lists.inc:2351
 msgid "Standard American COA (4 digit) with demo data"
 msgstr ""
 
-#: includes/ui/ui_lists.inc:2368
+#: ../includes/ui/ui_lists.inc:2372
 msgid "No payment Link"
 msgstr ""
 
-#: includes/ui/ui_msgs.inc:63
+#: ../includes/ui/ui_msgs.inc:63
 msgid "in units of : "
 msgstr ""
 
-#: includes/ui/ui_view.inc:301
+#: ../includes/ui/ui_view.inc:301
 #, php-format
 msgid ""
 "Cannot retrieve exchange rate for currency %s. Please adjust approximate "
 "rate if needed."
 msgstr ""
 
-#: includes/ui/ui_view.inc:342
+#: ../includes/ui/ui_view.inc:342
 msgid "Date Voided:"
 msgstr ""
 
-#: includes/ui/ui_view.inc:443 reporting/rep107.php:175
-#: reporting/rep109.php:180 reporting/rep110.php:184 reporting/rep111.php:165
-#: reporting/rep113.php:169 reporting/rep209.php:183
+#: ../includes/ui/ui_view.inc:443
+#: ../reporting/rep107.php:256
+#: ../reporting/rep109.php:186
+#: ../reporting/rep110.php:184
+#: ../reporting/rep111.php:165
+#: ../reporting/rep113.php:169
+#: ../reporting/rep209.php:186
 msgid "Total Tax Excluded"
 msgstr ""
 
-#: includes/ui/ui_view.inc:449 includes/ui/ui_view.inc:468
-#: includes/ui/ui_view.inc:492 includes/ui/ui_view.inc:509
-#: reporting/rep107.php:184 reporting/rep109.php:189 reporting/rep110.php:193
-#: reporting/rep111.php:174 reporting/rep113.php:178 reporting/rep209.php:192
+#: ../includes/ui/ui_view.inc:449
+#: ../includes/ui/ui_view.inc:468
+#: ../includes/ui/ui_view.inc:492
+#: ../includes/ui/ui_view.inc:509
+#: ../reporting/rep107.php:265
+#: ../reporting/rep109.php:195
+#: ../reporting/rep110.php:193
+#: ../reporting/rep111.php:174
+#: ../reporting/rep113.php:178
+#: ../reporting/rep209.php:195
 msgid "Included"
 msgstr ""
 
-#: includes/ui/ui_view.inc:543
-#: purchasing/inquiry/supplier_allocation_inquiry.php:100
-msgid "Allocations"
-msgstr ""
-
-#: includes/ui/ui_view.inc:547 reporting/includes/doctext.inc:145
-#: reporting/includes/doctext.inc:186
+#: ../includes/ui/ui_view.inc:547
+#: ../reporting/includes/doctext.inc:167
+#: ../reporting/includes/doctext.inc:208
 msgid "Total Amount"
 msgstr ""
 
-#: includes/ui/ui_view.inc:572
+#: ../includes/ui/ui_view.inc:571
 msgid "Total Allocated:"
 msgstr ""
 
-#: includes/ui/ui_view.inc:576
+#: ../includes/ui/ui_view.inc:577
 msgid "Left to Allocate:"
 msgstr ""
 
-#: includes/ui/ui_view.inc:629
+#: ../includes/ui/ui_view.inc:593
+#: ../includes/ui/ui_view.inc:597
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:100
+msgid "Allocations"
+msgstr ""
+
+#: ../includes/ui/ui_view.inc:610
+#: ../includes/ui/ui_view.inc:614
+msgid "Pre-Payments"
+msgstr ""
+
+#: ../includes/ui/ui_view.inc:630
 msgid "No Quick Entries are defined."
 msgstr ""
 
-#: includes/ui/ui_view.inc:657
+#: ../includes/ui/ui_view.inc:658
 msgid "No Quick Entry lines are defined."
 msgstr ""
 
-#: includes/ui/ui_view.inc:839 purchasing/includes/ui/invoice_ui.inc:465
+#: ../includes/ui/ui_view.inc:840
+#: ../purchasing/includes/ui/invoice_ui.inc:488
 msgid "and"
 msgstr ""
 
-#: includes/ui/ui_view.inc:900
+#: ../includes/ui/ui_view.inc:901
 msgid "January"
 msgstr ""
 
-#: includes/ui/ui_view.inc:900
+#: ../includes/ui/ui_view.inc:901
 msgid "February"
 msgstr ""
 
-#: includes/ui/ui_view.inc:900
+#: ../includes/ui/ui_view.inc:901
 msgid "March"
 msgstr ""
 
-#: includes/ui/ui_view.inc:900
+#: ../includes/ui/ui_view.inc:901
 msgid "April"
 msgstr ""
 
-#: includes/ui/ui_view.inc:900
+#: ../includes/ui/ui_view.inc:901
 msgid "June"
 msgstr ""
 
-#: includes/ui/ui_view.inc:900
+#: ../includes/ui/ui_view.inc:901
 msgid "July"
 msgstr ""
 
-#: includes/ui/ui_view.inc:900
+#: ../includes/ui/ui_view.inc:901
 msgid "August"
 msgstr ""
 
-#: includes/ui/ui_view.inc:900
+#: ../includes/ui/ui_view.inc:901
 msgid "September"
 msgstr ""
 
-#: includes/ui/ui_view.inc:900
+#: ../includes/ui/ui_view.inc:901
 msgid "October"
 msgstr ""
 
-#: includes/ui/ui_view.inc:900
+#: ../includes/ui/ui_view.inc:901
 msgid "November"
 msgstr ""
 
-#: includes/ui/ui_view.inc:900
+#: ../includes/ui/ui_view.inc:901
 msgid "December"
 msgstr ""
 
-#: includes/ui/ui_view.inc:901
+#: ../includes/ui/ui_view.inc:902
 msgid "Su"
 msgstr ""
 
-#: includes/ui/ui_view.inc:901
+#: ../includes/ui/ui_view.inc:902
 msgid "Mo"
 msgstr ""
 
-#: includes/ui/ui_view.inc:901
+#: ../includes/ui/ui_view.inc:902
 msgid "Tu"
 msgstr ""
 
-#: includes/ui/ui_view.inc:901
+#: ../includes/ui/ui_view.inc:902
 msgid "We"
 msgstr ""
 
-#: includes/ui/ui_view.inc:901
+#: ../includes/ui/ui_view.inc:902
 msgid "Th"
 msgstr ""
 
-#: includes/ui/ui_view.inc:901
+#: ../includes/ui/ui_view.inc:902
 msgid "Fr"
 msgstr ""
 
-#: includes/ui/ui_view.inc:901
+#: ../includes/ui/ui_view.inc:902
 msgid "Sa"
 msgstr ""
 
-#: includes/ui/ui_view.inc:902
+#: ../includes/ui/ui_view.inc:903
 msgid "W"
 msgstr ""
 
-#: includes/ui/view_package.php:17
+#: ../includes/ui/view_package.php:17
 msgid "Package Details"
 msgstr ""
 
-#: includes/ui/view_package.php:24
+#: ../includes/ui/view_package.php:24
 msgid ""
 "The script must be called with a valid package id to review the info for."
 msgstr ""
 
-#: includes/ui/view_package.php:29
+#: ../includes/ui/view_package.php:29
 msgid "Available version"
 msgstr ""
 
-#: includes/ui/view_package.php:30
+#: ../includes/ui/view_package.php:30
 msgid "Package type"
 msgstr ""
 
-#: includes/ui/view_package.php:31
+#: ../includes/ui/view_package.php:31
 msgid "Package content"
 msgstr ""
 
-#: includes/ui/view_package.php:33
+#: ../includes/ui/view_package.php:33
 msgid "Author"
 msgstr ""
 
-#: includes/ui/view_package.php:34
+#: ../includes/ui/view_package.php:34
 msgid "Home page"
 msgstr ""
 
-#: includes/ui/view_package.php:35
+#: ../includes/ui/view_package.php:35
 msgid "Package maintainer"
 msgstr ""
 
-#: includes/ui/view_package.php:36
+#: ../includes/ui/view_package.php:36
 msgid "Installation path"
 msgstr ""
 
-#: includes/ui/view_package.php:37
+#: ../includes/ui/view_package.php:37
 msgid "Minimal software versions"
 msgstr ""
 
-#: includes/ui/view_package.php:38
+#: ../includes/ui/view_package.php:38
 msgid "Right to left"
 msgstr ""
 
-#: includes/ui/view_package.php:39
+#: ../includes/ui/view_package.php:39
 msgid "Charset encoding"
 msgstr ""
 
-#: includes/ui/view_package.php:44
+#: ../includes/ui/view_package.php:44
 #, php-format
 msgid "Content information for package '%s'"
 msgstr ""
 
-#: includes/ui/view_package.php:47
+#: ../includes/ui/view_package.php:47
 msgid "Property"
 msgstr ""
 
-#: inventory/adjustments.php:28
+#: ../inventory/adjustments.php:28
 msgid "Item Adjustments Note"
 msgstr ""
 
-#: inventory/adjustments.php:32
+#: ../inventory/adjustments.php:32
 msgid ""
 "There are no inventory items defined in the system which can be adjusted "
 "(Purchased or Manufactured)."
 msgstr ""
 
-#: inventory/adjustments.php:34 inventory/transfers.php:34
+#: ../inventory/adjustments.php:34
+#: ../inventory/transfers.php:34
 msgid ""
 "There are no inventory movement types defined in the system. Please define "
 "at least one inventory adjustment type."
 msgstr ""
 
-#: inventory/adjustments.php:43
+#: ../inventory/adjustments.php:43
 msgid "Items adjustment has been processed"
 msgstr ""
 
-#: inventory/adjustments.php:44
+#: ../inventory/adjustments.php:44
 msgid "&View this adjustment"
 msgstr ""
 
-#: inventory/adjustments.php:46
+#: ../inventory/adjustments.php:46
 msgid "View the GL &Postings for this Adjustment"
 msgstr ""
 
-#: inventory/adjustments.php:48
+#: ../inventory/adjustments.php:48
 msgid "Enter &Another Adjustment"
 msgstr ""
 
-#: inventory/adjustments.php:88 inventory/transfers.php:85
-#: sales/sales_order_entry.php:363
+#: ../inventory/adjustments.php:88
+#: ../inventory/transfers.php:85
+#: ../sales/sales_order_entry.php:373
 msgid "You must enter at least one non empty item line."
 msgstr ""
 
-#: inventory/adjustments.php:108
+#: ../inventory/adjustments.php:108
 msgid "The entered date for the adjustment is invalid."
 msgstr ""
 
-#: inventory/adjustments.php:122
+#: ../inventory/adjustments.php:122
 msgid ""
 "The adjustment cannot be processed because an adjustment item would cause a "
 "negative inventory balance :"
 msgstr ""
 
-#: inventory/adjustments.php:152 manufacturing/work_order_issue.php:139
+#: ../inventory/adjustments.php:152
+#: ../manufacturing/work_order_issue.php:141
 msgid "The quantity entered is negative or invalid."
 msgstr ""
 
-#: inventory/adjustments.php:159 manufacturing/work_order_issue.php:146
+#: ../inventory/adjustments.php:159
+#: ../manufacturing/work_order_issue.php:148
 msgid "The entered standard cost is negative or invalid."
 msgstr ""
 
-#: inventory/adjustments.php:228
+#: ../inventory/adjustments.php:228
 msgid "Adjustment Items"
 msgstr ""
 
-#: inventory/adjustments.php:234
+#: ../inventory/adjustments.php:234
 msgid "Process Adjustment"
 msgstr ""
 
-#: inventory/cost_update.php:31
+#: ../inventory/cost_update.php:29
 msgid "Inventory Item Cost Update"
 msgstr ""
 
-#: inventory/cost_update.php:36
+#: ../inventory/cost_update.php:33
 msgid ""
 "There are no costable inventory items defined in the system (Purchased or "
 "manufactured items)."
 msgstr ""
 
-#: inventory/cost_update.php:57
+#: ../inventory/cost_update.php:54
 msgid "The entered cost is not numeric."
 msgstr ""
 
-#: inventory/cost_update.php:63
+#: ../inventory/cost_update.php:60
 msgid "The new cost is the same as the old cost. Cost was not updated."
 msgstr ""
 
-#: inventory/cost_update.php:73
+#: ../inventory/cost_update.php:70
 msgid "Cost has been updated."
 msgstr ""
 
-#: inventory/cost_update.php:77
+#: ../inventory/cost_update.php:74
 msgid "View the GL Journal Entries for this Cost Update"
 msgstr ""
 
-#: inventory/cost_update.php:95 inventory/prices.php:61
-#: inventory/purchasing_data.php:117 inventory/reorder_level.php:48
-#: inventory/inquiry/stock_movements.php:53
-#: inventory/inquiry/stock_status.php:47 inventory/manage/item_codes.php:105
-#: manufacturing/work_order_entry.php:396
-#: manufacturing/work_order_entry.php:401 purchasing/inquiry/po_search.php:74
-#: sales/inquiry/sales_deliveries_view.php:114
-#: sales/inquiry/sales_orders_view.php:241
+#: ../inventory/cost_update.php:94
+#: ../inventory/prices.php:62
+#: ../inventory/purchasing_data.php:118
+#: ../inventory/reorder_level.php:50
+#: ../inventory/inquiry/stock_movements.php:49
+#: ../inventory/inquiry/stock_status.php:41
+#: ../inventory/manage/item_codes.php:105
+#: ../manufacturing/work_order_entry.php:396
+#: ../manufacturing/work_order_entry.php:401
+#: ../purchasing/inquiry/po_search.php:74
+#: ../sales/inquiry/sales_deliveries_view.php:114
+#: ../sales/inquiry/sales_orders_view.php:263
 msgid "Item:"
 msgstr ""
 
-#: inventory/cost_update.php:116
+#: ../inventory/cost_update.php:115
 msgid "Standard Material Cost Per Unit"
 msgstr ""
 
-#: inventory/cost_update.php:125
+#: ../inventory/cost_update.php:123
 msgid "Standard Labour Cost Per Unit"
 msgstr ""
 
-#: inventory/cost_update.php:126
+#: ../inventory/cost_update.php:124
 msgid "Standard Overhead Cost Per Unit"
 msgstr ""
 
-#: inventory/prices.php:26
+#: ../inventory/prices.php:25
 msgid "Inventory Item Sales prices"
 msgstr ""
 
-#: inventory/prices.php:30 inventory/inquiry/stock_movements.php:32
-#: inventory/inquiry/stock_status.php:37 inventory/manage/sales_kits.php:24
-#: manufacturing/inquiry/where_used_inquiry.php:21
-#: sales/credit_note_entry.php:49
+#: ../inventory/prices.php:29
+#: ../inventory/inquiry/stock_movements.php:29
+#: ../inventory/inquiry/stock_status.php:32
+#: ../inventory/manage/sales_kits.php:24
+#: ../manufacturing/inquiry/where_used_inquiry.php:21
+#: ../sales/credit_note_entry.php:49
 msgid "There are no items defined in the system."
 msgstr ""
 
-#: inventory/prices.php:32
+#: ../inventory/prices.php:31
 msgid ""
 "There are no sales types in the system. Please set up sales types befor "
 "entering pricing."
 msgstr ""
 
-#: inventory/prices.php:77
+#: ../inventory/prices.php:78
 msgid "The price entered must be numeric."
 msgstr ""
 
-#: inventory/prices.php:83
+#: ../inventory/prices.php:84
 msgid ""
 "The sales pricing for this item, sales type and currency has already been "
 "added."
 msgstr ""
 
-#: inventory/prices.php:96
+#: ../inventory/prices.php:97
 msgid "This price has been updated."
 msgstr ""
 
-#: inventory/prices.php:104
+#: ../inventory/prices.php:105
 msgid "The new price has been added."
 msgstr ""
 
-#: inventory/prices.php:118
+#: ../inventory/prices.php:119
 msgid "The selected price has been deleted."
 msgstr ""
 
-#: inventory/prices.php:146 reporting/rep104.php:118
-#: sales/customer_delivery.php:355 sales/customer_invoice.php:411
-#: sales/view/view_credit.php:73 sales/view/view_dispatch.php:93
-#: sales/view/view_invoice.php:92 sales/includes/ui/sales_credit_ui.inc:102
+#: ../inventory/prices.php:147
+#: ../reporting/rep104.php:118
+#: ../sales/customer_delivery.php:369
+#: ../sales/customer_invoice.php:477
+#: ../sales/view/view_credit.php:73
+#: ../sales/view/view_dispatch.php:93
+#: ../sales/view/view_invoice.php:93
+#: ../sales/includes/ui/sales_credit_ui.inc:102
 msgid "Sales Type"
 msgstr ""
 
-#: inventory/prices.php:146 inventory/purchasing_data.php:147
-#: purchasing/includes/ui/invoice_ui.inc:497
-#: purchasing/po_receive_items.php:63 purchasing/view/view_grn.php:41
-#: purchasing/view/view_po.php:45 reporting/rep104.php:111
-#: reporting/includes/doctext.inc:30 reporting/includes/doctext.inc:170
-#: sales/customer_credit_invoice.php:281 sales/customer_delivery.php:433
-#: sales/customer_invoice.php:479 sales/view/view_credit.php:91
-#: sales/view/view_dispatch.php:113 sales/view/view_invoice.php:114
-#: sales/view/view_sales_order.php:202
-#: sales/includes/ui/sales_credit_ui.inc:168
+#: ../inventory/prices.php:147
+#: ../inventory/purchasing_data.php:148
+#: ../purchasing/includes/ui/invoice_ui.inc:520
+#: ../purchasing/po_receive_items.php:63
+#: ../purchasing/view/view_grn.php:41
+#: ../purchasing/view/view_po.php:45
+#: ../reporting/rep104.php:111
+#: ../reporting/includes/doctext.inc:30
+#: ../reporting/includes/doctext.inc:192
+#: ../sales/customer_credit_invoice.php:281
+#: ../sales/customer_delivery.php:447
+#: ../sales/customer_invoice.php:551
+#: ../sales/customer_invoice.php:554
+#: ../sales/view/view_credit.php:91
+#: ../sales/view/view_dispatch.php:113
+#: ../sales/view/view_invoice.php:116
+#: ../sales/view/view_sales_order.php:220
+#: ../sales/includes/ui/sales_credit_ui.inc:168
 msgid "Price"
 msgstr ""
 
-#: inventory/prices.php:168
+#: ../inventory/prices.php:169
 msgid "There are no prices set up for this part."
 msgstr ""
 
-#: inventory/prices.php:192
+#: ../inventory/prices.php:192
 msgid "Currency:"
 msgstr ""
 
-#: inventory/prices.php:194
+#: ../inventory/prices.php:194
 msgid "Sales Type:"
 msgstr ""
 
-#: inventory/prices.php:202 inventory/purchasing_data.php:215
+#: ../inventory/prices.php:202
+#: ../inventory/purchasing_data.php:215
 msgid "Price:"
 msgstr ""
 
-#: inventory/prices.php:202
+#: ../inventory/prices.php:202
 msgid "per"
 msgstr ""
 
-#: inventory/prices.php:206
+#: ../inventory/prices.php:206
 msgid "The price is calculated."
 msgstr ""
 
-#: inventory/purchasing_data.php:25
+#: ../inventory/purchasing_data.php:24
 msgid "Supplier Purchasing Data"
 msgstr ""
 
-#: inventory/purchasing_data.php:27 purchasing/po_entry_items.php:67
+#: ../inventory/purchasing_data.php:26
+#: ../purchasing/po_entry_items.php:70
 msgid "There are no purchasable inventory items defined in the system."
 msgstr ""
 
-#: inventory/purchasing_data.php:28 purchasing/po_entry_items.php:65
-#: purchasing/supplier_credit.php:32 purchasing/supplier_invoice.php:32
-#: purchasing/supplier_payment.php:40
+#: ../inventory/purchasing_data.php:27
+#: ../purchasing/po_entry_items.php:68
+#: ../purchasing/supplier_credit.php:31
+#: ../purchasing/supplier_invoice.php:30
+#: ../purchasing/supplier_payment.php:40
 msgid "There are no suppliers defined in the system."
 msgstr ""
 
-#: inventory/purchasing_data.php:46 inventory/manage/item_codes.php:35
+#: ../inventory/purchasing_data.php:45
+#: ../inventory/manage/item_codes.php:35
 msgid "There is no item selected."
 msgstr ""
 
-#: inventory/purchasing_data.php:52
+#: ../inventory/purchasing_data.php:51
 msgid "The price entered was not numeric."
 msgstr ""
 
-#: inventory/purchasing_data.php:58
+#: ../inventory/purchasing_data.php:57
 msgid ""
 "The conversion factor entered was not numeric. The conversion factor is the "
 "number by which the price must be divided by to get the unit price in our "
 "unit of measure."
 msgstr ""
 
-#: inventory/purchasing_data.php:64
+#: ../inventory/purchasing_data.php:63
 msgid "The purchasing data for this supplier has already been added."
 msgstr ""
 
-#: inventory/purchasing_data.php:73
+#: ../inventory/purchasing_data.php:72
 msgid "This supplier purchasing data has been added."
 msgstr ""
 
-#: inventory/purchasing_data.php:79
+#: ../inventory/purchasing_data.php:78
 msgid "Supplier purchasing data has been updated."
 msgstr ""
 
-#: inventory/purchasing_data.php:90
+#: ../inventory/purchasing_data.php:89
 msgid "The purchasing data item has been sucessfully deleted."
 msgstr ""
 
-#: inventory/purchasing_data.php:132
+#: ../inventory/purchasing_data.php:133
 msgid "Entered item is not defined. Please re-enter."
 msgstr ""
 
-#: inventory/purchasing_data.php:141
+#: ../inventory/purchasing_data.php:142
 msgid "There is no purchasing data set up for the part selected"
 msgstr ""
 
-#: inventory/purchasing_data.php:148
+#: ../inventory/purchasing_data.php:149
 msgid "Supplier's Unit"
 msgstr ""
 
-#: inventory/purchasing_data.php:148
+#: ../inventory/purchasing_data.php:149
 msgid "Conversion Factor"
 msgstr ""
 
-#: inventory/purchasing_data.php:148
+#: ../inventory/purchasing_data.php:149
 msgid "Supplier's Description"
 msgstr ""
 
-#: inventory/purchasing_data.php:216
+#: ../inventory/purchasing_data.php:216
 msgid "Suppliers Unit of Measure:"
 msgstr ""
 
-#: inventory/purchasing_data.php:222
+#: ../inventory/purchasing_data.php:222
 msgid "Conversion Factor (to our UOM):"
 msgstr ""
 
-#: inventory/purchasing_data.php:224
+#: ../inventory/purchasing_data.php:224
 msgid "Supplier's Code or Description:"
 msgstr ""
 
-#: inventory/reorder_level.php:25
+#: ../inventory/reorder_level.php:24
 msgid "Reorder Levels"
 msgstr ""
 
-#: inventory/reorder_level.php:27 inventory/transfers.php:32
+#: ../inventory/reorder_level.php:26
+#: ../inventory/transfers.php:32
 msgid ""
 "There are no inventory items defined in the system (Purchased or "
 "manufactured items)."
 msgstr ""
 
-#: inventory/reorder_level.php:65 inventory/inquiry/stock_movements.php:83
-#: inventory/inquiry/stock_status.php:72 inventory/inquiry/stock_status.php:76
-#: manufacturing/search_work_orders.php:162
-#: manufacturing/inquiry/where_used_inquiry.php:45
-#: manufacturing/manage/bom_edit.php:70
-#: purchasing/inquiry/po_search_completed.php:124
-#: purchasing/inquiry/po_search_completed.php:134
-#: purchasing/inquiry/po_search.php:133 purchasing/inquiry/po_search.php:144
-#: reporting/rep105.php:120 reporting/rep301.php:112 reporting/rep302.php:132
-#: reporting/rep303.php:134 reporting/rep304.php:123 reporting/rep306.php:150
-#: reporting/rep307.php:124 reporting/rep308.php:157
-#: reporting/reports_main.php:210 reporting/reports_main.php:217
-#: reporting/reports_main.php:223 reporting/reports_main.php:236
-#: reporting/reports_main.php:251 reporting/reports_main.php:261
-#: reporting/reports_main.php:269 sales/manage/sales_points.php:84
+#: ../inventory/reorder_level.php:67
+#: ../inventory/inquiry/stock_movements.php:79
+#: ../inventory/inquiry/stock_status.php:66
+#: ../inventory/inquiry/stock_status.php:70
+#: ../manufacturing/search_work_orders.php:162
+#: ../manufacturing/inquiry/where_used_inquiry.php:45
+#: ../manufacturing/manage/bom_edit.php:70
+#: ../purchasing/inquiry/po_search_completed.php:123
+#: ../purchasing/inquiry/po_search_completed.php:133
+#: ../purchasing/inquiry/po_search.php:133
+#: ../purchasing/inquiry/po_search.php:144
+#: ../reporting/rep105.php:120
+#: ../reporting/rep301.php:112
+#: ../reporting/rep302.php:132
+#: ../reporting/rep303.php:134
+#: ../reporting/rep304.php:123
+#: ../reporting/rep306.php:150
+#: ../reporting/rep307.php:124
+#: ../reporting/rep308.php:157
+#: ../reporting/reports_main.php:210
+#: ../reporting/reports_main.php:217
+#: ../reporting/reports_main.php:223
+#: ../reporting/reports_main.php:236
+#: ../reporting/reports_main.php:251
+#: ../reporting/reports_main.php:261
+#: ../reporting/reports_main.php:269
+#: ../sales/manage/sales_points.php:84
 msgid "Location"
 msgstr ""
 
-#: inventory/reorder_level.php:65 inventory/inquiry/stock_movements.php:84
-#: inventory/inquiry/stock_status.php:76 purchasing/supplier_credit.php:203
-#: sales/sales_order_entry.php:518 sales/includes/ui/sales_order_ui.inc:181
+#: ../inventory/reorder_level.php:67
+#: ../inventory/inquiry/stock_movements.php:80
+#: ../inventory/inquiry/stock_status.php:70
+#: ../purchasing/supplier_credit.php:229
+#: ../sales/sales_order_entry.php:534
+#: ../sales/includes/ui/sales_order_ui.inc:182
 msgid "Quantity On Hand"
 msgstr ""
 
-#: inventory/reorder_level.php:65 inventory/inquiry/stock_status.php:76
-#: sales/includes/db/sales_order_db.inc:110
-#: sales/includes/db/sales_order_db.inc:283
+#: ../inventory/reorder_level.php:67
+#: ../inventory/includes/inventory_db.inc:72
+#: ../inventory/inquiry/stock_status.php:70
+#: ../sales/includes/db/old.sales_order_db.inc:110
+#: ../sales/includes/db/old.sales_order_db.inc:263
+#: ../sales/includes/db/sales_order_db.inc.orig:112
+#: ../sales/includes/db/sales_order_db.inc.orig:291
 msgid "Re-Order Level"
 msgstr ""
 
-#: inventory/reorder_level.php:89
+#: ../inventory/reorder_level.php:90
 msgid "Reorder levels has been updated."
 msgstr ""
 
-#: inventory/transfers.php:28
+#: ../inventory/transfers.php:28
 msgid "Inventory Location Transfers"
 msgstr ""
 
-#: inventory/transfers.php:43
+#: ../inventory/transfers.php:43
 msgid "Inventory transfer has been processed"
 msgstr ""
 
-#: inventory/transfers.php:44
+#: ../inventory/transfers.php:44
 msgid "&View this transfer"
 msgstr ""
 
-#: inventory/transfers.php:46
+#: ../inventory/transfers.php:46
 msgid "Enter &Another Inventory Transfer"
 msgstr ""
 
-#: inventory/transfers.php:103
+#: ../inventory/transfers.php:103
 msgid "The entered transfer date is invalid."
 msgstr ""
 
-#: inventory/transfers.php:115
+#: ../inventory/transfers.php:115
 msgid "The locations to transfer from and to must be different."
 msgstr ""
 
-#: inventory/transfers.php:125
+#: ../inventory/transfers.php:125
 msgid ""
 "The quantity entered is greater than the available quantity for this item at "
 "the source location :"
 msgstr ""
 
-#: inventory/transfers.php:158
+#: ../inventory/transfers.php:158
 msgid "The quantity entered must be a positive number."
 msgstr ""
 
-#: inventory/transfers.php:235
+#: ../inventory/transfers.php:235
 msgid "Process Transfer"
 msgstr ""
 
-#: inventory/includes/item_adjustments_ui.inc:20
-#: inventory/includes/stock_transfers_ui.inc:20
-#: manufacturing/includes/work_order_issue_ui.inc:20
-#: sales/includes/ui/sales_order_ui.inc:60
+#: ../inventory/includes/inventory_db.inc:69
+#: ../sales/includes/db/old.sales_order_db.inc:107
+#: ../sales/includes/db/old.sales_order_db.inc:259
+#: ../sales/includes/db/sales_order_db.inc.orig:109
+#: ../sales/includes/db/sales_order_db.inc.orig:287
+msgid "Stocks below Re-Order Level at "
+msgstr ""
+
+#: ../inventory/includes/inventory_db.inc:72
+#: ../sales/includes/db/old.sales_order_db.inc:110
+#: ../sales/includes/db/old.sales_order_db.inc:264
+#: ../sales/includes/db/sales_order_db.inc.orig:112
+#: ../sales/includes/db/sales_order_db.inc.orig:292
+msgid "Below"
+msgstr ""
+
+#: ../inventory/includes/inventory_db.inc:73
+#: ../sales/includes/db/old.sales_order_db.inc:111
+#: ../sales/includes/db/old.sales_order_db.inc:265
+#: ../sales/includes/db/sales_order_db.inc.orig:113
+#: ../sales/includes/db/sales_order_db.inc.orig:293
+msgid "Please reorder"
+msgstr ""
+
+#: ../inventory/includes/item_adjustments_ui.inc:20
+#: ../inventory/includes/stock_transfers_ui.inc:20
+#: ../manufacturing/includes/work_order_issue_ui.inc:20
+#: ../sales/includes/ui/sales_order_ui.inc:60
 msgid "For Part :"
 msgstr ""
 
-#: inventory/includes/item_adjustments_ui.inc:34
-#: manufacturing/work_order_entry.php:210 purchasing/inquiry/po_search.php:67
-#: sales/inquiry/sales_deliveries_view.php:107
-#: sales/inquiry/sales_orders_view.php:232
+#: ../inventory/includes/item_adjustments_ui.inc:34
+#: ../manufacturing/work_order_entry.php:210
+#: ../purchasing/inquiry/po_search.php:67
+#: ../sales/inquiry/sales_deliveries_view.php:107
+#: ../sales/inquiry/sales_orders_view.php:254
 msgid "Location:"
 msgstr ""
 
-#: inventory/includes/item_adjustments_ui.inc:43
+#: ../inventory/includes/item_adjustments_ui.inc:43
 msgid "Detail:"
 msgstr ""
 
-#: inventory/includes/item_adjustments_ui.inc:48
+#: ../inventory/includes/item_adjustments_ui.inc:48
 msgid "Positive Adjustment"
 msgstr ""
 
-#: inventory/includes/item_adjustments_ui.inc:48
+#: ../inventory/includes/item_adjustments_ui.inc:48
 msgid "Negative Adjustment"
 msgstr ""
 
-#: inventory/includes/item_adjustments_ui.inc:62
-#: inventory/includes/stock_transfers_ui.inc:60
-#: manufacturing/includes/work_order_issue_ui.inc:33
-#: purchasing/includes/ui/po_ui.inc:233 purchasing/po_receive_items.php:62
-#: purchasing/view/view_grn.php:40 purchasing/view/view_po.php:45
-#: reporting/includes/doctext.inc:29 reporting/includes/doctext.inc:169
-#: reporting/includes/doctext.inc:206 sales/customer_credit_invoice.php:280
-#: sales/customer_delivery.php:431 sales/customer_invoice.php:478
-#: sales/view/view_credit.php:90 sales/view/view_dispatch.php:112
-#: sales/view/view_invoice.php:113 sales/view/view_sales_order.php:201
-#: sales/includes/ui/sales_credit_ui.inc:167
-#: sales/includes/ui/sales_order_ui.inc:144
+#: ../inventory/includes/item_adjustments_ui.inc:62
+#: ../inventory/includes/stock_transfers_ui.inc:60
+#: ../manufacturing/includes/work_order_issue_ui.inc:33
+#: ../purchasing/includes/ui/po_ui.inc:245
+#: ../purchasing/po_receive_items.php:62
+#: ../purchasing/view/view_grn.php:40
+#: ../purchasing/view/view_po.php:45
+#: ../reporting/includes/doctext.inc:29
+#: ../reporting/includes/doctext.inc:191
+#: ../reporting/includes/doctext.inc:228
+#: ../sales/customer_credit_invoice.php:280
+#: ../sales/customer_delivery.php:445
+#: ../sales/customer_invoice.php:550
+#: ../sales/customer_invoice.php:553
+#: ../sales/view/view_credit.php:90
+#: ../sales/view/view_dispatch.php:112
+#: ../sales/view/view_invoice.php:115
+#: ../sales/view/view_sales_order.php:219
+#: ../sales/includes/ui/sales_credit_ui.inc:167
+#: ../sales/includes/ui/sales_order_ui.inc:145
 msgid "Item Code"
 msgstr ""
 
-#: inventory/includes/item_adjustments_ui.inc:62
-#: inventory/includes/stock_transfers_ui.inc:60
-#: manufacturing/includes/work_order_issue_ui.inc:33
-#: purchasing/includes/ui/po_ui.inc:233 purchasing/view/view_grn.php:40
-#: purchasing/view/view_po.php:45 reporting/includes/doctext.inc:29
-#: reporting/includes/doctext.inc:169 reporting/includes/doctext.inc:206
-#: sales/customer_credit_invoice.php:280 sales/customer_delivery.php:431
-#: sales/customer_invoice.php:478 sales/view/view_credit.php:90
-#: sales/view/view_dispatch.php:112 sales/view/view_invoice.php:113
-#: sales/view/view_sales_order.php:201
-#: sales/includes/ui/sales_credit_ui.inc:167
-#: sales/includes/ui/sales_order_ui.inc:144
+#: ../inventory/includes/item_adjustments_ui.inc:62
+#: ../inventory/includes/stock_transfers_ui.inc:60
+#: ../manufacturing/includes/work_order_issue_ui.inc:33
+#: ../purchasing/includes/ui/po_ui.inc:245
+#: ../purchasing/view/view_grn.php:40
+#: ../purchasing/view/view_po.php:45
+#: ../reporting/includes/doctext.inc:29
+#: ../reporting/includes/doctext.inc:191
+#: ../reporting/includes/doctext.inc:228
+#: ../sales/customer_credit_invoice.php:280
+#: ../sales/customer_delivery.php:445
+#: ../sales/customer_invoice.php:550
+#: ../sales/customer_invoice.php:553
+#: ../sales/view/view_credit.php:90
+#: ../sales/view/view_dispatch.php:112
+#: ../sales/view/view_invoice.php:115
+#: ../sales/view/view_sales_order.php:219
+#: ../sales/includes/ui/sales_credit_ui.inc:167
+#: ../sales/includes/ui/sales_order_ui.inc:145
 msgid "Item Description"
 msgstr ""
 
-#: inventory/includes/item_adjustments_ui.inc:62
-#: inventory/includes/stock_transfers_ui.inc:60
-#: inventory/manage/item_codes.php:124 inventory/manage/sales_kits.php:40
-#: inventory/view/view_adjustment.php:56 inventory/view/view_transfer.php:56
-#: manufacturing/view/wo_issue_view.php:77
-#: manufacturing/manage/bom_edit.php:71
-#: manufacturing/includes/manufacturing_ui.inc:29
-#: manufacturing/includes/manufacturing_ui.inc:157
-#: manufacturing/includes/manufacturing_ui.inc:332
-#: manufacturing/includes/work_order_issue_ui.inc:33
-#: purchasing/includes/ui/invoice_ui.inc:497
-#: purchasing/includes/ui/po_ui.inc:233 purchasing/view/view_grn.php:40
-#: purchasing/view/view_po.php:45 reporting/rep301.php:105
-#: reporting/rep303.php:121 reporting/rep303.php:127 reporting/rep401.php:71
-#: reporting/includes/doctext.inc:29 reporting/includes/doctext.inc:170
-#: reporting/includes/doctext.inc:203 sales/view/view_credit.php:90
-#: sales/view/view_dispatch.php:112 sales/view/view_invoice.php:113
-#: sales/view/view_sales_order.php:201
-#: sales/includes/ui/sales_credit_ui.inc:167
-#: sales/includes/ui/sales_order_ui.inc:144
+#: ../inventory/includes/item_adjustments_ui.inc:62
+#: ../inventory/includes/stock_transfers_ui.inc:60
+#: ../inventory/manage/item_codes.php:124
+#: ../inventory/manage/sales_kits.php:40
+#: ../inventory/view/view_adjustment.php:56
+#: ../inventory/view/view_transfer.php:56
+#: ../manufacturing/view/wo_issue_view.php:77
+#: ../manufacturing/manage/bom_edit.php:71
+#: ../manufacturing/includes/manufacturing_ui.inc:29
+#: ../manufacturing/includes/manufacturing_ui.inc:157
+#: ../manufacturing/includes/manufacturing_ui.inc:332
+#: ../manufacturing/includes/work_order_issue_ui.inc:33
+#: ../purchasing/includes/ui/invoice_ui.inc:520
+#: ../purchasing/includes/ui/po_ui.inc:245
+#: ../purchasing/view/view_grn.php:40
+#: ../purchasing/view/view_po.php:45
+#: ../reporting/rep301.php:105
+#: ../reporting/rep303.php:121
+#: ../reporting/rep303.php:127
+#: ../reporting/rep401.php:71
+#: ../reporting/includes/doctext.inc:29
+#: ../reporting/includes/doctext.inc:192
+#: ../reporting/includes/doctext.inc:225
+#: ../sales/customer_invoice.php:550
+#: ../sales/view/view_credit.php:90
+#: ../sales/view/view_dispatch.php:112
+#: ../sales/view/view_invoice.php:115
+#: ../sales/view/view_sales_order.php:219
+#: ../sales/includes/ui/sales_credit_ui.inc:167
+#: ../sales/includes/ui/sales_order_ui.inc:145
 msgid "Quantity"
 msgstr ""
 
-#: inventory/includes/item_adjustments_ui.inc:63
-#: inventory/includes/stock_transfers_ui.inc:60
-#: inventory/manage/item_units.php:94
-#: manufacturing/includes/work_order_issue_ui.inc:34
-#: purchasing/includes/ui/po_ui.inc:234 purchasing/view/view_grn.php:41
-#: purchasing/view/view_po.php:45 reporting/includes/doctext.inc:30
-#: reporting/includes/doctext.inc:170 sales/view/view_credit.php:91
-#: sales/view/view_dispatch.php:113 sales/view/view_invoice.php:114
-#: sales/view/view_sales_order.php:201
-#: sales/includes/ui/sales_credit_ui.inc:167
-#: sales/includes/ui/sales_order_ui.inc:146
+#: ../inventory/includes/item_adjustments_ui.inc:63
+#: ../inventory/includes/stock_transfers_ui.inc:60
+#: ../inventory/manage/item_units.php:94
+#: ../manufacturing/includes/work_order_issue_ui.inc:34
+#: ../purchasing/includes/ui/po_ui.inc:246
+#: ../purchasing/view/view_grn.php:41
+#: ../purchasing/view/view_po.php:45
+#: ../reporting/includes/doctext.inc:30
+#: ../reporting/includes/doctext.inc:192
+#: ../sales/view/view_credit.php:91
+#: ../sales/view/view_dispatch.php:113
+#: ../sales/view/view_invoice.php:116
+#: ../sales/view/view_sales_order.php:219
+#: ../sales/includes/ui/sales_credit_ui.inc:167
+#: ../sales/includes/ui/sales_order_ui.inc:147
 msgid "Unit"
 msgstr ""
 
-#: inventory/includes/item_adjustments_ui.inc:63
-#: inventory/view/view_adjustment.php:57
-#: manufacturing/includes/manufacturing_ui.inc:29
-#: manufacturing/includes/work_order_issue_ui.inc:34 reporting/rep301.php:105
+#: ../inventory/includes/item_adjustments_ui.inc:63
+#: ../inventory/view/view_adjustment.php:57
+#: ../manufacturing/includes/manufacturing_ui.inc:29
+#: ../manufacturing/includes/work_order_issue_ui.inc:34
+#: ../reporting/rep301.php:105
 msgid "Unit Cost"
 msgstr ""
 
-#: inventory/includes/stock_transfers_ui.inc:35
-#: inventory/inquiry/stock_movements.php:60
-#: manufacturing/includes/work_order_issue_ui.inc:164
+#: ../inventory/includes/stock_transfers_ui.inc:35
+#: ../inventory/inquiry/stock_movements.php:56
+#: ../manufacturing/includes/work_order_issue_ui.inc:164
 msgid "From Location:"
 msgstr ""
 
-#: inventory/includes/stock_transfers_ui.inc:36
+#: ../inventory/includes/stock_transfers_ui.inc:36
 msgid "To Location:"
 msgstr ""
 
-#: inventory/includes/stock_transfers_ui.inc:46
+#: ../inventory/includes/stock_transfers_ui.inc:46
 msgid "Transfer Type:"
 msgstr ""
 
-#: inventory/includes/db/items_db.inc:119
+#: ../inventory/includes/db/items_db.inc:121
 msgid ""
 "Cannot delete this item because there are stock movements that refer to this "
 "item."
 msgstr ""
 
-#: inventory/includes/db/items_db.inc:122
+#: ../inventory/includes/db/items_db.inc:124
 msgid ""
 "Cannot delete this item record because there are bills of material that "
 "require this part as a component."
 msgstr ""
 
-#: inventory/includes/db/items_db.inc:125
-#: inventory/includes/db/items_db.inc:128
+#: ../inventory/includes/db/items_db.inc:127
+#: ../inventory/includes/db/items_db.inc:130
 msgid ""
 "Cannot delete this item because there are existing purchase order items for "
 "it."
 msgstr ""
 
-#: inventory/includes/db/items_db.inc:146
+#: ../inventory/includes/db/items_db.inc:148
 msgid ""
 "This item cannot be deleted because some code aliases \n"
 "\t\t\t\tor foreign codes was entered for it, or there are kits defined \n"
 "\t\t\t\tusing this item as component"
 msgstr ""
 
-#: inventory/inquiry/stock_movements.php:28
+#: ../inventory/inquiry/stock_movements.php:26
 msgid "Inventory Item Movement"
 msgstr ""
 
-#: inventory/inquiry/stock_movements.php:65
+#: ../inventory/inquiry/stock_movements.php:61
 msgid "Show Movements"
 msgstr ""
 
-#: inventory/inquiry/stock_movements.php:65
-#: purchasing/includes/ui/invoice_ui.inc:466
-#: purchasing/inquiry/supplier_allocation_inquiry.php:57
-#: purchasing/inquiry/supplier_inquiry.php:58
-#: sales/inquiry/customer_allocation_inquiry.php:51
-#: sales/inquiry/customer_inquiry.php:58
+#: ../inventory/inquiry/stock_movements.php:61
+#: ../purchasing/includes/ui/invoice_ui.inc:489
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:57
+#: ../purchasing/inquiry/supplier_inquiry.php:55
+#: ../sales/inquiry/customer_allocation_inquiry.php:51
+#: ../sales/inquiry/customer_inquiry.php:54
 msgid "Refresh Inquiry"
 msgstr ""
 
-#: inventory/inquiry/stock_movements.php:84
+#: ../inventory/inquiry/stock_movements.php:80
 msgid "Detail"
 msgstr ""
 
-#: inventory/inquiry/stock_movements.php:84 reporting/rep307.php:117
+#: ../inventory/inquiry/stock_movements.php:80
+#: ../reporting/rep307.php:117
 msgid "Quantity In"
 msgstr ""
 
-#: inventory/inquiry/stock_movements.php:84 reporting/rep307.php:117
+#: ../inventory/inquiry/stock_movements.php:80
+#: ../reporting/rep307.php:117
 msgid "Quantity Out"
 msgstr ""
 
-#: inventory/inquiry/stock_movements.php:101
+#: ../inventory/inquiry/stock_movements.php:97
 msgid "Quantity on hand before"
 msgstr ""
 
-#: inventory/inquiry/stock_movements.php:192
+#: ../inventory/inquiry/stock_movements.php:188
 msgid "Quantity on hand after"
 msgstr ""
 
-#: inventory/inquiry/stock_status.php:19 inventory/inquiry/stock_status.php:21
+#: ../inventory/inquiry/stock_status.php:16
 msgid "Inventory Item Status"
 msgstr ""
 
-#: inventory/inquiry/stock_status.php:62
+#: ../inventory/inquiry/stock_status.php:56
 msgid ""
 "This is a service and cannot have a stock holding, only the total quantity "
 "on outstanding sales orders is shown."
 msgstr ""
 
-#: inventory/inquiry/stock_status.php:72 inventory/inquiry/stock_status.php:77
-#: reporting/rep303.php:121 reporting/rep303.php:127
+#: ../inventory/inquiry/stock_status.php:66
+#: ../inventory/inquiry/stock_status.php:71
+#: ../reporting/rep303.php:121
+#: ../reporting/rep303.php:127
 msgid "Demand"
 msgstr ""
 
-#: inventory/inquiry/stock_status.php:77 reporting/rep303.php:121
-#: reporting/rep303.php:127
+#: ../inventory/inquiry/stock_status.php:71
+#: ../reporting/rep303.php:121
+#: ../reporting/rep303.php:127
 msgid "On Order"
 msgstr ""
 
-#: inventory/manage/item_categories.php:16
+#: ../inventory/manage/item_categories.php:16
 msgid "Item Categories"
 msgstr ""
 
-#: inventory/manage/item_categories.php:34
+#: ../inventory/manage/item_categories.php:34
 msgid "The item category description cannot be empty."
 msgstr ""
 
-#: inventory/manage/item_categories.php:48
+#: ../inventory/manage/item_categories.php:48
 msgid "Selected item category has been updated"
 msgstr ""
 
-#: inventory/manage/item_categories.php:58
+#: ../inventory/manage/item_categories.php:58
 msgid "New item category has been added"
 msgstr ""
 
-#: inventory/manage/item_categories.php:72
+#: ../inventory/manage/item_categories.php:72
 msgid ""
 "Cannot delete this item category because items have been created using this "
 "item category."
 msgstr ""
 
-#: inventory/manage/item_categories.php:77
+#: ../inventory/manage/item_categories.php:77
 msgid "Selected item category has been deleted"
 msgstr ""
 
-#: inventory/manage/item_categories.php:98
+#: ../inventory/manage/item_categories.php:98
 msgid "Tax type"
 msgstr ""
 
-#: inventory/manage/item_categories.php:98 inventory/manage/item_codes.php:124
-#: inventory/manage/sales_kits.php:40 inventory/view/view_adjustment.php:57
-#: inventory/view/view_transfer.php:56 manufacturing/view/wo_issue_view.php:77
-#: manufacturing/manage/bom_edit.php:71 purchasing/po_receive_items.php:62
-#: sales/customer_credit_invoice.php:280 sales/customer_delivery.php:432
-#: sales/customer_invoice.php:478
+#: ../inventory/manage/item_categories.php:98
+#: ../inventory/manage/item_codes.php:124
+#: ../inventory/manage/sales_kits.php:40
+#: ../inventory/view/view_adjustment.php:57
+#: ../inventory/view/view_transfer.php:56
+#: ../manufacturing/view/wo_issue_view.php:77
+#: ../manufacturing/manage/bom_edit.php:71
+#: ../purchasing/po_receive_items.php:62
+#: ../sales/customer_credit_invoice.php:280
+#: ../sales/customer_delivery.php:446
+#: ../sales/customer_invoice.php:550
+#: ../sales/customer_invoice.php:553
 msgid "Units"
 msgstr ""
 
-#: inventory/manage/item_categories.php:98
+#: ../inventory/manage/item_categories.php:98
 msgid "Sales Act"
 msgstr ""
 
-#: inventory/manage/item_categories.php:99
+#: ../inventory/manage/item_categories.php:99
 msgid "Inventory Account"
 msgstr ""
 
-#: inventory/manage/item_categories.php:99
+#: ../inventory/manage/item_categories.php:99
 msgid "COGS Account"
 msgstr ""
 
-#: inventory/manage/item_categories.php:99
+#: ../inventory/manage/item_categories.php:99
 msgid "Adjustment Account"
 msgstr ""
 
-#: inventory/manage/item_categories.php:100
+#: ../inventory/manage/item_categories.php:100
 msgid "Assembly Account"
 msgstr ""
 
-#: inventory/manage/item_categories.php:180
+#: ../inventory/manage/item_categories.php:182
 msgid "Category Name:"
 msgstr ""
 
-#: inventory/manage/item_categories.php:182
+#: ../inventory/manage/item_categories.php:184
 msgid "Default values for new items"
 msgstr ""
 
-#: inventory/manage/item_categories.php:184 inventory/manage/items.php:326
+#: ../inventory/manage/item_categories.php:186
+#: ../inventory/manage/items.php:335
 msgid "Item Tax Type:"
 msgstr ""
 
-#: inventory/manage/item_categories.php:186 inventory/manage/items.php:328
+#: ../inventory/manage/item_categories.php:188
+#: ../inventory/manage/items.php:337
 msgid "Item Type:"
 msgstr ""
 
-#: inventory/manage/item_categories.php:188 inventory/manage/items.php:330
+#: ../inventory/manage/item_categories.php:190
+#: ../inventory/manage/items.php:339
 msgid "Units of Measure:"
 msgstr ""
 
-#: inventory/manage/item_categories.php:190 inventory/manage/items.php:334
+#: ../inventory/manage/item_categories.php:192
+#: ../inventory/manage/items.php:343
 msgid "Exclude from sales:"
 msgstr ""
 
-#: inventory/manage/item_codes.php:16
+#: ../inventory/manage/item_categories.php:194
+#: ../inventory/manage/items.php:345
+msgid "Exclude from purchases:"
+msgstr ""
+
+#: ../inventory/manage/item_codes.php:16
 msgid "Foreign Item Codes"
 msgstr ""
 
-#: inventory/manage/item_codes.php:23 sales/sales_order_entry.php:685
+#: ../inventory/manage/item_codes.php:23
+#: ../sales/sales_order_entry.php:702
 msgid "There are no inventory items defined in the system."
 msgstr ""
 
-#: inventory/manage/item_codes.php:41
+#: ../inventory/manage/item_codes.php:41
 msgid "The price entered was not positive number."
 msgstr ""
 
-#: inventory/manage/item_codes.php:47 inventory/manage/sales_kits.php:78
+#: ../inventory/manage/item_codes.php:47
+#: ../inventory/manage/sales_kits.php:78
 msgid "Item code description cannot be empty."
 msgstr ""
 
-#: inventory/manage/item_codes.php:55 inventory/manage/items.php:156
-#: inventory/manage/sales_kits.php:88
+#: ../inventory/manage/item_codes.php:55
+#: ../inventory/manage/items.php:163
+#: ../inventory/manage/sales_kits.php:88
 msgid "This item code is already assigned to stock item or sale kit."
 msgstr ""
 
-#: inventory/manage/item_codes.php:67
+#: ../inventory/manage/item_codes.php:67
 msgid "New item code has been added."
 msgstr ""
 
-#: inventory/manage/item_codes.php:73
+#: ../inventory/manage/item_codes.php:73
 msgid "Item code has been updated."
 msgstr ""
 
-#: inventory/manage/item_codes.php:85
+#: ../inventory/manage/item_codes.php:85
 msgid "Item code has been sucessfully deleted."
 msgstr ""
 
-#: inventory/manage/item_codes.php:124
+#: ../inventory/manage/item_codes.php:124
 msgid "EAN/UPC Code"
 msgstr ""
 
-#: inventory/manage/item_codes.php:125 reporting/rep104.php:117
-#: reporting/rep105.php:119 reporting/rep301.php:105 reporting/rep301.php:111
-#: reporting/rep302.php:124 reporting/rep302.php:131 reporting/rep303.php:133
-#: reporting/rep304.php:114 reporting/rep304.php:122 reporting/rep306.php:141
-#: reporting/rep306.php:149 reporting/rep307.php:117 reporting/rep307.php:123
-#: reporting/rep308.php:149 reporting/rep308.php:156 reporting/rep309.php:104
+#: ../inventory/manage/item_codes.php:125
+#: ../reporting/rep104.php:117
+#: ../reporting/rep105.php:119
+#: ../reporting/rep301.php:105
+#: ../reporting/rep301.php:111
+#: ../reporting/rep302.php:124
+#: ../reporting/rep302.php:131
+#: ../reporting/rep303.php:133
+#: ../reporting/rep304.php:114
+#: ../reporting/rep304.php:122
+#: ../reporting/rep306.php:141
+#: ../reporting/rep306.php:149
+#: ../reporting/rep307.php:117
+#: ../reporting/rep307.php:123
+#: ../reporting/rep308.php:149
+#: ../reporting/rep308.php:156
+#: ../reporting/rep309.php:104
 msgid "Category"
 msgstr ""
 
-#: inventory/manage/item_codes.php:178
+#: ../inventory/manage/item_codes.php:178
 msgid "UPC/EAN code:"
 msgstr ""
 
-#: inventory/manage/item_codes.php:179 inventory/manage/sales_kits.php:245
-#: manufacturing/work_order_add_finished.php:206
-#: manufacturing/work_order_entry.php:424
-#: manufacturing/manage/bom_edit.php:228
+#: ../inventory/manage/item_codes.php:179
+#: ../inventory/manage/sales_kits.php:245
+#: ../manufacturing/work_order_add_finished.php:206
+#: ../manufacturing/work_order_entry.php:424
+#: ../manufacturing/manage/bom_edit.php:228
 msgid "Quantity:"
 msgstr ""
 
-#: inventory/manage/item_codes.php:180 inventory/manage/items.php:301
-#: inventory/manage/movement_types.php:129 inventory/manage/sales_kits.php:206
-#: inventory/manage/sales_kits.php:232
-#: manufacturing/manage/work_centres.php:138
-#: sales/manage/credit_status.php:145 sales/manage/recurrent_invoices.php:165
-#: taxes/item_tax_types.php:173 taxes/tax_groups.php:167
-#: taxes/tax_types.php:158
+#: ../inventory/manage/item_codes.php:180
+#: ../inventory/manage/items.php:309
+#: ../inventory/manage/movement_types.php:129
+#: ../inventory/manage/sales_kits.php:206
+#: ../inventory/manage/sales_kits.php:232
+#: ../manufacturing/manage/work_centres.php:138
+#: ../sales/manage/credit_status.php:145
+#: ../sales/manage/recurrent_invoices.php:165
+#: ../taxes/item_tax_types.php:173
+#: ../taxes/sav.tax_types.php:241
+#: ../taxes/tax_groups.php:162
+#: ../taxes/tax_types.php:158
 msgid "Description:"
 msgstr ""
 
-#: inventory/manage/item_codes.php:181 inventory/manage/items.php:303
-#: inventory/manage/sales_kits.php:207 inventory/manage/sales_kits.php:233
+#: ../inventory/manage/item_codes.php:181
+#: ../inventory/manage/items.php:311
+#: ../inventory/manage/sales_kits.php:207
+#: ../inventory/manage/sales_kits.php:233
 msgid "Category:"
 msgstr ""
 
-#: inventory/manage/items.php:80
+#: ../inventory/manage/items.php:81
 msgid ""
 "Only graphics files are supported - a file extension of .jpg, .png or .gif "
 "is expected"
 msgstr ""
 
-#: inventory/manage/items.php:106
+#: ../inventory/manage/items.php:112
 msgid ""
 "There are no item categories defined in the system. At least one item "
 "category is required to add a item."
 msgstr ""
 
-#: inventory/manage/items.php:108
+#: ../inventory/manage/items.php:114
 msgid ""
 "There are no item tax types defined in the system. At least one item tax "
 "type is required to add a item."
 msgstr ""
 
-#: inventory/manage/items.php:135
+#: ../inventory/manage/items.php:142
 msgid "The item name must be entered."
 msgstr ""
 
-#: inventory/manage/items.php:141
+#: ../inventory/manage/items.php:148
 msgid "The item code cannot be empty"
 msgstr ""
 
-#: inventory/manage/items.php:149
+#: ../inventory/manage/items.php:156
 msgid ""
 "The item code cannot contain any of the following characters -  & + OR a "
 "space OR quotes"
 msgstr ""
 
-#: inventory/manage/items.php:185
+#: ../inventory/manage/items.php:192
 msgid "Item has been updated."
 msgstr ""
 
-#: inventory/manage/items.php:198
+#: ../inventory/manage/items.php:205
 msgid "A new item has been added."
 msgstr ""
 
-#: inventory/manage/items.php:241
+#: ../inventory/manage/items.php:248
 msgid "Selected item has been deleted."
 msgstr ""
 
-#: inventory/manage/items.php:258 inventory/view/view_adjustment.php:56
-#: inventory/view/view_transfer.php:39 inventory/view/view_transfer.php:56
-#: manufacturing/search_work_orders.php:163
-#: manufacturing/view/wo_issue_view.php:44
-#: manufacturing/view/wo_production_view.php:45
-#: purchasing/includes/ui/invoice_ui.inc:484
-#: purchasing/includes/ui/invoice_ui.inc:496 reporting/rep204.php:84
-#: reporting/rep306.php:152
+#: ../inventory/manage/items.php:265
+#: ../inventory/view/view_adjustment.php:56
+#: ../inventory/view/view_transfer.php:39
+#: ../inventory/view/view_transfer.php:56
+#: ../manufacturing/search_work_orders.php:163
+#: ../manufacturing/view/wo_issue_view.php:44
+#: ../manufacturing/view/wo_production_view.php:45
+#: ../purchasing/includes/ui/invoice_ui.inc:507
+#: ../purchasing/includes/ui/invoice_ui.inc:519
+#: ../reporting/rep204.php:84
+#: ../reporting/rep306.php:152
 msgid "Item"
 msgstr ""
 
-#: inventory/manage/items.php:263 inventory/manage/items.php:294
+#: ../inventory/manage/items.php:270
+#: ../inventory/manage/items.php:302
 msgid "Item Code:"
 msgstr ""
 
-#: inventory/manage/items.php:332
+#: ../inventory/manage/items.php:341
 msgid "Editable description:"
 msgstr ""
 
-#: inventory/manage/items.php:352 sales/manage/customer_branches.php:248
+#: ../inventory/manage/items.php:363
+#: ../sales/manage/customer_branches.php:249
 msgid "GL Accounts"
 msgstr ""
 
-#: inventory/manage/items.php:375
+#: ../inventory/manage/items.php:386
 msgid "Other"
 msgstr ""
 
-#: inventory/manage/items.php:378
+#: ../inventory/manage/items.php:389
 msgid "Image File (.jpg)"
 msgstr ""
 
-#: inventory/manage/items.php:393
+#: ../inventory/manage/items.php:404
 msgid "No image"
 msgstr ""
 
-#: inventory/manage/items.php:398
+#: ../inventory/manage/items.php:409
 msgid "Delete Image:"
 msgstr ""
 
-#: inventory/manage/items.php:400
+#: ../inventory/manage/items.php:411
 msgid "Item status:"
 msgstr ""
 
-#: inventory/manage/items.php:406
+#: ../inventory/manage/items.php:417
 msgid "Insert New Item"
 msgstr ""
 
-#: inventory/manage/items.php:410
+#: ../inventory/manage/items.php:421
 msgid "Update Item"
 msgstr ""
 
-#: inventory/manage/items.php:413
+#: ../inventory/manage/items.php:424
 msgid "Select this items and return to document entry."
 msgstr ""
 
-#: inventory/manage/items.php:414
+#: ../inventory/manage/items.php:425
 msgid "Clone This Item"
 msgstr ""
 
-#: inventory/manage/items.php:415
+#: ../inventory/manage/items.php:426
 msgid "Delete This Item"
 msgstr ""
 
-#: inventory/manage/items.php:430
+#: ../inventory/manage/items.php:441
 msgid "Select an item:"
 msgstr ""
 
-#: inventory/manage/items.php:431
+#: ../inventory/manage/items.php:442
 msgid "New item"
 msgstr ""
 
-#: inventory/manage/items.php:454 purchasing/manage/suppliers.php:306
-#: sales/manage/customer_branches.php:322 sales/manage/customers.php:347
+#: ../inventory/manage/items.php:465
+#: ../purchasing/manage/suppliers.php:310
+#: ../sales/manage/customer_branches.php:324
+#: ../sales/manage/customers.php:348
 msgid "&General settings"
 msgstr ""
 
-#: inventory/manage/items.php:455
+#: ../inventory/manage/items.php:466
 msgid "S&ales Pricing"
 msgstr ""
 
-#: inventory/manage/items.php:456
+#: ../inventory/manage/items.php:467
 msgid "&Purchasing Pricing"
 msgstr ""
 
-#: inventory/manage/items.php:459 purchasing/manage/suppliers.php:308
-#: sales/manage/customers.php:349
+#: ../inventory/manage/items.php:470
+#: ../purchasing/manage/suppliers.php:312
+#: ../sales/manage/customers.php:350
 msgid "&Transactions"
 msgstr ""
 
-#: inventory/manage/items.php:460
+#: ../inventory/manage/items.php:471
 msgid "&Status"
 msgstr ""
 
-#: inventory/manage/item_units.php:16
+#: ../inventory/manage/item_units.php:16
 msgid "Units of Measure"
 msgstr ""
 
-#: inventory/manage/item_units.php:34
+#: ../inventory/manage/item_units.php:34
 msgid "The unit of measure code cannot be empty."
 msgstr ""
 
-#: inventory/manage/item_units.php:40
+#: ../inventory/manage/item_units.php:40
 msgid "The unit of measure code is too long."
 msgstr ""
 
-#: inventory/manage/item_units.php:46
+#: ../inventory/manage/item_units.php:46
 msgid "The unit of measure description cannot be empty."
 msgstr ""
 
-#: inventory/manage/item_units.php:53
+#: ../inventory/manage/item_units.php:53
 msgid "Selected unit has been updated"
 msgstr ""
 
-#: inventory/manage/item_units.php:55
+#: ../inventory/manage/item_units.php:55
 msgid "New unit has been added"
 msgstr ""
 
-#: inventory/manage/item_units.php:69
+#: ../inventory/manage/item_units.php:69
 msgid ""
 "Cannot delete this unit of measure because items have been created using "
 "this unit."
 msgstr ""
 
-#: inventory/manage/item_units.php:75
+#: ../inventory/manage/item_units.php:75
 msgid "Selected unit has been deleted"
 msgstr ""
 
-#: inventory/manage/item_units.php:94
+#: ../inventory/manage/item_units.php:94
 msgid "Decimals"
 msgstr ""
 
-#: inventory/manage/item_units.php:107 inventory/manage/item_units.php:142
+#: ../inventory/manage/item_units.php:107
+#: ../inventory/manage/item_units.php:142
 msgid "User Quantity Decimals"
 msgstr ""
 
-#: inventory/manage/item_units.php:136 inventory/manage/item_units.php:139
+#: ../inventory/manage/item_units.php:136
+#: ../inventory/manage/item_units.php:139
 msgid "Unit Abbreviation:"
 msgstr ""
 
-#: inventory/manage/item_units.php:140
+#: ../inventory/manage/item_units.php:140
 msgid "Descriptive Name:"
 msgstr ""
 
-#: inventory/manage/item_units.php:142
+#: ../inventory/manage/item_units.php:142
 msgid "Decimal Places:"
 msgstr ""
 
-#: inventory/manage/locations.php:16
+#: ../inventory/manage/locations.php:16
 msgid "Inventory Locations"
 msgstr ""
 
-#: inventory/manage/locations.php:39
+#: ../inventory/manage/locations.php:39
 msgid ""
 "The location code must be five characters or less long (including converted "
 "special chars)."
 msgstr ""
 
-#: inventory/manage/locations.php:45
+#: ../inventory/manage/locations.php:45
 msgid "The location name must be entered."
 msgstr ""
 
-#: inventory/manage/locations.php:56
+#: ../inventory/manage/locations.php:56
 msgid "Selected location has been updated"
 msgstr ""
 
-#: inventory/manage/locations.php:65
+#: ../inventory/manage/locations.php:65
 msgid "New location has been added"
 msgstr ""
 
-#: inventory/manage/locations.php:76
+#: ../inventory/manage/locations.php:76
 msgid ""
 "Cannot delete this location because item movements have been created using "
 "this location."
 msgstr ""
 
-#: inventory/manage/locations.php:82
+#: ../inventory/manage/locations.php:82
 msgid ""
 "Cannot delete this location because it is used by some work orders records."
 msgstr ""
 
-#: inventory/manage/locations.php:88
+#: ../inventory/manage/locations.php:88
 msgid ""
 "Cannot delete this location because it is used by some branch records as the "
 "default location to deliver from."
 msgstr ""
 
-#: inventory/manage/locations.php:94 inventory/manage/locations.php:100
-#: inventory/manage/locations.php:105 inventory/manage/locations.php:110
-#: inventory/manage/locations.php:115
+#: ../inventory/manage/locations.php:94
+#: ../inventory/manage/locations.php:100
+#: ../inventory/manage/locations.php:105
+#: ../inventory/manage/locations.php:110
+#: ../inventory/manage/locations.php:115
 msgid ""
 "Cannot delete this location because it is used by some related records in "
 "other tables."
 msgstr ""
 
-#: inventory/manage/locations.php:129
+#: ../inventory/manage/locations.php:129
 msgid "Selected location has been deleted"
 msgstr ""
 
-#: inventory/manage/locations.php:146
+#: ../inventory/manage/locations.php:146
 msgid "Location Code"
 msgstr ""
 
-#: inventory/manage/locations.php:146
+#: ../inventory/manage/locations.php:146
 msgid "Location Name"
 msgstr ""
 
-#: inventory/manage/locations.php:192 inventory/manage/locations.php:196
+#: ../inventory/manage/locations.php:192
+#: ../inventory/manage/locations.php:196
 msgid "Location Code:"
 msgstr ""
 
-#: inventory/manage/locations.php:199
+#: ../inventory/manage/locations.php:199
 msgid "Location Name:"
 msgstr ""
 
-#: inventory/manage/locations.php:200
+#: ../inventory/manage/locations.php:200
 msgid "Contact for deliveries:"
 msgstr ""
 
-#: inventory/manage/locations.php:204
+#: ../inventory/manage/locations.php:204
 msgid "Telephone No:"
 msgstr ""
 
-#: inventory/manage/locations.php:206
+#: ../inventory/manage/locations.php:206
 msgid "Facsimile No:"
 msgstr ""
 
-#: inventory/manage/movement_types.php:16
+#: ../inventory/manage/movement_types.php:16
 msgid "Inventory Movement Types"
 msgstr ""
 
-#: inventory/manage/movement_types.php:34
+#: ../inventory/manage/movement_types.php:34
 msgid "The inventory movement type name cannot be empty."
 msgstr ""
 
-#: inventory/manage/movement_types.php:43
+#: ../inventory/manage/movement_types.php:43
 msgid "Selected movement type has been updated"
 msgstr ""
 
-#: inventory/manage/movement_types.php:48
+#: ../inventory/manage/movement_types.php:48
 msgid "New movement type has been added"
 msgstr ""
 
-#: inventory/manage/movement_types.php:61
+#: ../inventory/manage/movement_types.php:61
 msgid ""
 "Cannot delete this inventory movement type because item transactions have "
 "been created referring to it."
 msgstr ""
 
-#: inventory/manage/movement_types.php:76
+#: ../inventory/manage/movement_types.php:76
 msgid "Selected movement type has been deleted"
 msgstr ""
 
-#: inventory/manage/sales_kits.php:16
+#: ../inventory/manage/sales_kits.php:16
 msgid "Sales Kits & Alias Codes"
 msgstr ""
 
-#: inventory/manage/sales_kits.php:40
+#: ../inventory/manage/sales_kits.php:40
 msgid "Stock Item"
 msgstr ""
 
-#: inventory/manage/sales_kits.php:54
+#: ../inventory/manage/sales_kits.php:54
 msgid "kit"
 msgstr ""
 
-#: inventory/manage/sales_kits.php:72 manufacturing/manage/bom_edit.php:101
+#: ../inventory/manage/sales_kits.php:72
+#: ../manufacturing/manage/bom_edit.php:101
 msgid "The quantity entered must be numeric and greater than zero."
 msgstr ""
 
-#: inventory/manage/sales_kits.php:93
+#: ../inventory/manage/sales_kits.php:93
 msgid "Kit/alias code cannot be empty."
 msgstr ""
 
-#: inventory/manage/sales_kits.php:101
+#: ../inventory/manage/sales_kits.php:101
 msgid ""
 "The selected component contains directly or on any lower level the kit under "
 "edition. Recursive kits are not allowed."
 msgstr ""
 
-#: inventory/manage/sales_kits.php:108
+#: ../inventory/manage/sales_kits.php:108
 msgid ""
 "The selected component is already in this kit. You can modify it's quantity "
 "but it cannot appear more than once in the same kit."
 msgstr ""
 
-#: inventory/manage/sales_kits.php:116
+#: ../inventory/manage/sales_kits.php:116
 msgid "New alias code has been created."
 msgstr ""
 
-#: inventory/manage/sales_kits.php:119
+#: ../inventory/manage/sales_kits.php:119
 msgid "New component has been added to selected kit."
 msgstr ""
 
-#: inventory/manage/sales_kits.php:129
+#: ../inventory/manage/sales_kits.php:129
 msgid "Component of selected kit has been updated."
 msgstr ""
 
-#: inventory/manage/sales_kits.php:139
+#: ../inventory/manage/sales_kits.php:139
 msgid "Kit common properties has been updated"
 msgstr ""
 
-#: inventory/manage/sales_kits.php:157
+#: ../inventory/manage/sales_kits.php:157
 msgid ""
 "This item cannot be deleted because it is the last item in the kit used by "
 "following kits"
 msgstr ""
 
-#: inventory/manage/sales_kits.php:168 manufacturing/manage/bom_edit.php:153
+#: ../inventory/manage/sales_kits.php:168
+#: ../manufacturing/manage/bom_edit.php:153
 msgid "The component item has been deleted from this bom"
 msgstr ""
 
-#: inventory/manage/sales_kits.php:183
+#: ../inventory/manage/sales_kits.php:183
 msgid "Select a sale kit:"
 msgstr ""
 
-#: inventory/manage/sales_kits.php:184
+#: ../inventory/manage/sales_kits.php:184
 msgid "New kit"
 msgstr ""
 
-#: inventory/manage/sales_kits.php:199
+#: ../inventory/manage/sales_kits.php:199
 msgid "Alias/kit code:"
 msgstr ""
 
-#: inventory/manage/sales_kits.php:208
+#: ../inventory/manage/sales_kits.php:208
 msgid "Update kit/alias name"
 msgstr ""
 
-#: inventory/manage/sales_kits.php:223 manufacturing/manage/bom_edit.php:204
-#: manufacturing/manage/bom_edit.php:211
+#: ../inventory/manage/sales_kits.php:223
+#: ../manufacturing/manage/bom_edit.php:204
+#: ../manufacturing/manage/bom_edit.php:211
 msgid "Component:"
 msgstr ""
 
-#: inventory/manage/sales_kits.php:237
+#: ../inventory/manage/sales_kits.php:237
 msgid "kits"
 msgstr ""
 
-#: inventory/view/view_adjustment.php:17
+#: ../inventory/view/view_adjustment.php:17
 msgid "View Inventory Adjustment"
 msgstr ""
 
-#: inventory/view/view_adjustment.php:43
+#: ../inventory/view/view_adjustment.php:43
 msgid "At Location"
 msgstr ""
 
-#: inventory/view/view_adjustment.php:46 inventory/view/view_transfer.php:46
+#: ../inventory/view/view_adjustment.php:46
+#: ../inventory/view/view_transfer.php:46
 msgid "Adjustment Type"
 msgstr ""
 
-#: inventory/view/view_adjustment.php:73
+#: ../inventory/view/view_adjustment.php:73
 msgid "This adjustment has been voided."
 msgstr ""
 
-#: inventory/view/view_transfer.php:17
+#: ../inventory/view/view_transfer.php:17
 msgid "View Inventory Transfer"
 msgstr ""
 
-#: inventory/view/view_transfer.php:40 manufacturing/view/wo_issue_view.php:44
-#: manufacturing/includes/manufacturing_ui.inc:29
-#: manufacturing/includes/manufacturing_ui.inc:83
-#: reporting/includes/doctext.inc:207
+#: ../inventory/view/view_transfer.php:40
+#: ../manufacturing/view/wo_issue_view.php:44
+#: ../manufacturing/includes/manufacturing_ui.inc:29
+#: ../manufacturing/includes/manufacturing_ui.inc:83
+#: ../reporting/includes/doctext.inc:229
 msgid "From Location"
 msgstr ""
 
-#: inventory/view/view_transfer.php:41
+#: ../inventory/view/view_transfer.php:41
 msgid "To Location"
 msgstr ""
 
-#: manufacturing/search_work_orders.php:26
+#: ../manufacturing/search_work_orders.php:26
 msgid "Search Outstanding Work Orders"
 msgstr ""
 
-#: manufacturing/search_work_orders.php:31
+#: ../manufacturing/search_work_orders.php:31
 msgid "Search Work Orders"
 msgstr ""
 
-#: manufacturing/search_work_orders.php:69
+#: ../manufacturing/search_work_orders.php:69
 msgid "at Location:"
 msgstr ""
 
-#: manufacturing/search_work_orders.php:76
-#: purchasing/inquiry/po_search_completed.php:75
+#: ../manufacturing/search_work_orders.php:76
+#: ../purchasing/inquiry/po_search_completed.php:72
 msgid "for item:"
 msgstr ""
 
-#: manufacturing/search_work_orders.php:78
-#: purchasing/inquiry/po_search_completed.php:77
-#: purchasing/inquiry/po_search.php:76
-#: sales/inquiry/sales_deliveries_view.php:116
-#: sales/inquiry/sales_orders_view.php:247
+#: ../manufacturing/search_work_orders.php:78
+#: ../purchasing/inquiry/po_search_completed.php:74
+#: ../purchasing/inquiry/po_search.php:76
+#: ../sales/inquiry/sales_deliveries_view.php:116
+#: ../sales/inquiry/sales_orders_view.php:270
 msgid "Select documents"
 msgstr ""
 
-#: manufacturing/search_work_orders.php:117
+#: ../manufacturing/search_work_orders.php:117
 msgid "Release"
 msgstr ""
 
-#: manufacturing/search_work_orders.php:120
+#: ../manufacturing/search_work_orders.php:120
 msgid "Issue"
 msgstr ""
 
-#: manufacturing/search_work_orders.php:127
+#: ../manufacturing/search_work_orders.php:127
 msgid "Produce"
 msgstr ""
 
-#: manufacturing/search_work_orders.php:140
+#: ../manufacturing/search_work_orders.php:140
 msgid "Costs"
 msgstr ""
 
-#: manufacturing/search_work_orders.php:164
+#: ../manufacturing/search_work_orders.php:164
 msgid "Required"
 msgstr ""
 
-#: manufacturing/search_work_orders.php:167
-#: manufacturing/includes/manufacturing_ui.inc:277
-#: manufacturing/includes/manufacturing_ui.inc:281
-#: reporting/includes/doctext.inc:205 sales/inquiry/sales_orders_view.php:268
+#: ../manufacturing/search_work_orders.php:167
+#: ../manufacturing/includes/manufacturing_ui.inc:277
+#: ../manufacturing/includes/manufacturing_ui.inc:281
+#: ../reporting/includes/doctext.inc:227
+#: ../sales/inquiry/sales_orders_view.php:291
 msgid "Required By"
 msgstr ""
 
-#: manufacturing/search_work_orders.php:176
+#: ../manufacturing/search_work_orders.php:176
 msgid "Marked orders are overdue."
 msgstr ""
 
-#: manufacturing/work_order_add_finished.php:29
+#: ../manufacturing/work_order_add_finished.php:29
 msgid "Produce or Unassemble Finished Items From Work Order"
 msgstr ""
 
-#: manufacturing/work_order_add_finished.php:44
+#: ../manufacturing/work_order_add_finished.php:44
 msgid "The manufacturing process has been entered."
 msgstr ""
 
-#: manufacturing/work_order_add_finished.php:46
-#: manufacturing/work_order_costs.php:45 manufacturing/work_order_entry.php:56
-#: manufacturing/work_order_issue.php:38
-#: manufacturing/work_order_release.php:75
+#: ../manufacturing/work_order_add_finished.php:46
+#: ../manufacturing/work_order_costs.php:45
+#: ../manufacturing/work_order_entry.php:56
+#: ../manufacturing/work_order_issue.php:40
+#: ../manufacturing/work_order_release.php:75
 msgid "View this Work Order"
 msgstr ""
 
-#: manufacturing/work_order_add_finished.php:48
-#: manufacturing/work_order_costs.php:47 manufacturing/work_order_entry.php:64
-#: manufacturing/work_order_issue.php:40
+#: ../manufacturing/work_order_add_finished.php:48
+#: ../manufacturing/work_order_entry.php:64
+#: ../manufacturing/work_order_issue.php:42
 msgid "View the GL Journal Entries for this Work Order"
 msgstr ""
 
-#: manufacturing/work_order_add_finished.php:50
-#: manufacturing/work_order_entry.php:67
+#: ../manufacturing/work_order_add_finished.php:50
+#: ../manufacturing/work_order_entry.php:67
 msgid "Print the GL Journal Entries for this Work Order"
 msgstr ""
 
-#: manufacturing/work_order_add_finished.php:52
-#: manufacturing/work_order_costs.php:51 manufacturing/work_order_issue.php:42
+#: ../manufacturing/work_order_add_finished.php:52
+#: ../manufacturing/work_order_costs.php:49
+#: ../manufacturing/work_order_issue.php:44
 msgid "Select another &Work Order to Process"
 msgstr ""
 
-#: manufacturing/work_order_add_finished.php:65
-#: manufacturing/work_order_costs.php:64
-#: manufacturing/work_order_entry.php:341
-#: manufacturing/includes/db/work_order_issues_db.inc:30
-#: manufacturing/includes/db/work_order_produce_items_db.inc:27
+#: ../manufacturing/work_order_add_finished.php:65
+#: ../manufacturing/work_order_costs.php:62
+#: ../manufacturing/work_order_entry.php:341
+#: ../manufacturing/includes/db/work_order_issues_db.inc:30
+#: ../manufacturing/includes/db/work_order_produce_items_db.inc:27
 msgid "The order number sent is not valid."
 msgstr ""
 
-#: manufacturing/work_order_add_finished.php:91
+#: ../manufacturing/work_order_add_finished.php:91
 msgid "The quantity entered is not a valid number or less then zero."
 msgstr ""
 
-#: manufacturing/work_order_add_finished.php:110
+#: ../manufacturing/work_order_add_finished.php:110
 msgid ""
 "The production date cannot be before the release date of the work order."
 msgstr ""
 
-#: manufacturing/work_order_add_finished.php:117
+#: ../manufacturing/work_order_add_finished.php:117
 msgid ""
 "The production exceeds the quantity needed. Please change the Work Order."
 msgstr ""
 
-#: manufacturing/work_order_add_finished.php:129
+#: ../manufacturing/work_order_add_finished.php:129
 msgid ""
 "The unassembling cannot be processed because there is insufficient stock."
 msgstr ""
 
-#: manufacturing/work_order_add_finished.php:147
+#: ../manufacturing/work_order_add_finished.php:147
 msgid ""
 "The production cannot be processed because a required item would cause a "
 "negative inventory balance :"
 msgstr ""
 
-#: manufacturing/work_order_add_finished.php:204
+#: ../manufacturing/work_order_add_finished.php:204
 msgid "Produce Finished Items"
 msgstr ""
 
-#: manufacturing/work_order_add_finished.php:204
+#: ../manufacturing/work_order_add_finished.php:204
 msgid "Return Items to Work Order"
 msgstr ""
 
-#: manufacturing/work_order_add_finished.php:214
-#: purchasing/allocations/supplier_allocate.php:74
-#: sales/allocations/customer_allocate.php:72
+#: ../manufacturing/work_order_add_finished.php:214
+#: ../purchasing/allocations/supplier_allocate.php:75
+#: ../sales/allocations/customer_allocate.php:73
 msgid "Process"
 msgstr ""
 
-#: manufacturing/work_order_add_finished.php:215
+#: ../manufacturing/work_order_add_finished.php:215
 msgid "Process And Close Order"
 msgstr ""
 
-#: manufacturing/work_order_costs.php:29
+#: ../manufacturing/work_order_costs.php:29
 msgid "Work Order Additional Costs"
 msgstr ""
 
-#: manufacturing/work_order_costs.php:43
+#: ../manufacturing/work_order_costs.php:43
 msgid "The additional cost has been entered."
 msgstr ""
 
-#: manufacturing/work_order_costs.php:49
+#: ../manufacturing/work_order_costs.php:47
 msgid "Enter another additional cost."
 msgstr ""
 
-#: manufacturing/work_order_costs.php:76
+#: ../manufacturing/work_order_costs.php:73
 msgid "The amount entered is not a valid number or less then zero."
 msgstr ""
 
-#: manufacturing/work_order_costs.php:95
+#: ../manufacturing/work_order_costs.php:92
 msgid ""
 "The additional cost date cannot be before the release date of the work order."
 msgstr ""
 
-#: manufacturing/work_order_costs.php:159
+#: ../manufacturing/work_order_costs.php:143
 msgid "Additional Costs:"
 msgstr ""
 
-#: manufacturing/work_order_costs.php:160
+#: ../manufacturing/work_order_costs.php:144
 msgid "Debit Account"
 msgstr ""
 
-#: manufacturing/work_order_costs.php:167
+#: ../manufacturing/work_order_costs.php:151
 msgid "Process Additional Cost"
 msgstr ""
 
-#: manufacturing/work_order_entry.php:29
+#: ../manufacturing/work_order_entry.php:29
 msgid "Work Order Entry"
 msgstr ""
 
-#: manufacturing/work_order_entry.php:32
+#: ../manufacturing/work_order_entry.php:32
 msgid "There are no manufacturable items defined in the system."
 msgstr ""
 
-#: manufacturing/work_order_entry.php:54
+#: ../manufacturing/work_order_entry.php:54
 msgid "The work order been added."
 msgstr ""
 
-#: manufacturing/work_order_entry.php:62
+#: ../manufacturing/work_order_entry.php:62
 msgid "&Print This Work Order"
 msgstr ""
 
-#: manufacturing/work_order_entry.php:63
+#: ../manufacturing/work_order_entry.php:63
 msgid "&Email This Work Order"
 msgstr ""
 
-#: manufacturing/work_order_entry.php:80
+#: ../manufacturing/work_order_entry.php:80
 msgid "The work order been updated."
 msgstr ""
 
-#: manufacturing/work_order_entry.php:90
+#: ../manufacturing/work_order_entry.php:90
 msgid "Work order has been deleted."
 msgstr ""
 
-#: manufacturing/work_order_entry.php:100
+#: ../manufacturing/work_order_entry.php:100
 msgid ""
 "This work order has been closed. There can be no more issues against it."
 msgstr ""
 
-#: manufacturing/work_order_entry.php:110
+#: ../manufacturing/work_order_entry.php:110
 msgid "Enter a new work order"
 msgstr ""
 
-#: manufacturing/work_order_entry.php:111
+#: ../manufacturing/work_order_entry.php:111
 msgid "Select an existing work order"
 msgstr ""
 
-#: manufacturing/work_order_entry.php:147
+#: ../manufacturing/work_order_entry.php:147
 msgid "The quantity entered is invalid or less than zero."
 msgstr ""
 
-#: manufacturing/work_order_entry.php:169
+#: ../manufacturing/work_order_entry.php:169
 msgid "The selected item to manufacture does not have a bom."
 msgstr ""
 
-#: manufacturing/work_order_entry.php:178
+#: ../manufacturing/work_order_entry.php:178
 msgid "The labour cost entered is invalid or less than zero."
 msgstr ""
 
-#: manufacturing/work_order_entry.php:186
+#: ../manufacturing/work_order_entry.php:186
 msgid "The cost entered is invalid or less than zero."
 msgstr ""
 
-#: manufacturing/work_order_entry.php:209
+#: ../manufacturing/work_order_entry.php:209
 msgid ""
 "The work order cannot be processed because there is an insufficient quantity "
 "for component:"
 msgstr ""
 
-#: manufacturing/work_order_entry.php:223
+#: ../manufacturing/work_order_entry.php:223
 msgid ""
 "The selected item cannot be unassembled because there is insufficient stock."
 msgstr ""
 
-#: manufacturing/work_order_entry.php:249
+#: ../manufacturing/work_order_entry.php:249
 msgid ""
 "The quantity cannot be changed to be less than the quantity already "
 "manufactured for this order."
 msgstr ""
 
-#: manufacturing/work_order_entry.php:298
+#: ../manufacturing/work_order_entry.php:298
 msgid ""
 "This work order cannot be deleted because it has already been processed."
 msgstr ""
 
-#: manufacturing/work_order_entry.php:349
+#: ../manufacturing/work_order_entry.php:349
 msgid "This work order is closed and cannot be edited."
 msgstr ""
 
-#: manufacturing/work_order_entry.php:397
-#: manufacturing/work_order_entry.php:405
+#: ../manufacturing/work_order_entry.php:397
+#: ../manufacturing/work_order_entry.php:405
 msgid "Destination Location:"
 msgstr ""
 
-#: manufacturing/work_order_entry.php:416
+#: ../manufacturing/work_order_entry.php:416
 msgid "Quantity Required:"
 msgstr ""
 
-#: manufacturing/work_order_entry.php:418
+#: ../manufacturing/work_order_entry.php:418
 msgid "Quantity Manufactured:"
 msgstr ""
 
-#: manufacturing/work_order_entry.php:437
+#: ../manufacturing/work_order_entry.php:437
 msgid "Credit Labour Account"
 msgstr ""
 
-#: manufacturing/work_order_entry.php:444
+#: ../manufacturing/work_order_entry.php:444
 msgid "Credit Overhead Account"
 msgstr ""
 
-#: manufacturing/work_order_entry.php:449
+#: ../manufacturing/work_order_entry.php:449
 msgid "Released On:"
 msgstr ""
 
-#: manufacturing/work_order_entry.php:459
+#: ../manufacturing/work_order_entry.php:459
 msgid "Save changes to work order"
 msgstr ""
 
-#: manufacturing/work_order_entry.php:462
+#: ../manufacturing/work_order_entry.php:462
 msgid "Close This Work Order"
 msgstr ""
 
-#: manufacturing/work_order_entry.php:464
+#: ../manufacturing/work_order_entry.php:464
 msgid "Delete This Work Order"
 msgstr ""
 
-#: manufacturing/work_order_entry.php:470
+#: ../manufacturing/work_order_entry.php:470
 msgid "Add Workorder"
 msgstr ""
 
-#: manufacturing/work_order_issue.php:29
+#: ../manufacturing/work_order_issue.php:31
 msgid "Issue Items to Work Order"
 msgstr ""
 
-#: manufacturing/work_order_issue.php:36
+#: ../manufacturing/work_order_issue.php:38
 msgid "The work order issue has been entered."
 msgstr ""
 
-#: manufacturing/work_order_issue.php:77
+#: ../manufacturing/work_order_issue.php:78
 msgid "The entered date for the issue is invalid."
 msgstr ""
 
-#: manufacturing/work_order_issue.php:104
+#: ../manufacturing/work_order_issue.php:106
 msgid ""
 "The issue cannot be processed because an entered item would cause a negative "
 "inventory balance :"
 msgstr ""
 
-#: manufacturing/work_order_issue.php:122
+#: ../manufacturing/work_order_issue.php:124
 msgid ""
 "The process cannot be completed because there is an insufficient total "
 "quantity for a component."
 msgstr ""
 
-#: manufacturing/work_order_issue.php:123
+#: ../manufacturing/work_order_issue.php:125
 msgid "Component is :"
 msgstr ""
 
-#: manufacturing/work_order_issue.php:124
+#: ../manufacturing/work_order_issue.php:126
 msgid "From location :"
 msgstr ""
 
-#: manufacturing/work_order_issue.php:217
+#: ../manufacturing/work_order_issue.php:219
 msgid "Items to Issue"
 msgstr ""
 
-#: manufacturing/work_order_issue.php:223
+#: ../manufacturing/work_order_issue.php:225
 msgid "Process Issue"
 msgstr ""
 
-#: manufacturing/work_order_release.php:27
+#: ../manufacturing/work_order_release.php:27
 msgid "Work Order Release to Manufacturing"
 msgstr ""
 
-#: manufacturing/work_order_release.php:49
+#: ../manufacturing/work_order_release.php:49
 msgid "This work order has already been released."
 msgstr ""
 
-#: manufacturing/work_order_release.php:60
+#: ../manufacturing/work_order_release.php:60
 msgid ""
 "This Work Order cannot be released. The selected item to manufacture does "
 "not have a bom."
 msgstr ""
 
-#: manufacturing/work_order_release.php:73
+#: ../manufacturing/work_order_release.php:73
 msgid "The work order has been released to manufacturing."
 msgstr ""
 
-#: manufacturing/work_order_release.php:77
+#: ../manufacturing/work_order_release.php:77
 msgid "Select another &work order"
 msgstr ""
 
-#: manufacturing/work_order_release.php:98
+#: ../manufacturing/work_order_release.php:98
 msgid "Work Order #:"
 msgstr ""
 
-#: manufacturing/work_order_release.php:99
+#: ../manufacturing/work_order_release.php:99
 msgid "Work Order Reference:"
 msgstr ""
 
-#: manufacturing/work_order_release.php:101
-#: manufacturing/includes/manufacturing_ui.inc:278
+#: ../manufacturing/work_order_release.php:101
+#: ../manufacturing/includes/manufacturing_ui.inc:278
 msgid "Released Date"
 msgstr ""
 
-#: manufacturing/work_order_release.php:107
+#: ../manufacturing/work_order_release.php:107
 msgid "Release Work Order"
 msgstr ""
 
-#: manufacturing/view/wo_issue_view.php:19
+#: ../manufacturing/view/wo_costs_view.php:20
+msgid "View Work Order Costs"
+msgstr ""
+
+#: ../manufacturing/view/wo_costs_view.php:62
+#, php-format
+msgid "Production Costs for Work Order # %d"
+msgstr ""
+
+#: ../manufacturing/view/wo_issue_view.php:19
 msgid "View Work Order Issue"
 msgstr ""
 
-#: manufacturing/view/wo_issue_view.php:43
+#: ../manufacturing/view/wo_issue_view.php:43
 msgid "Issue #"
 msgstr ""
 
-#: manufacturing/view/wo_issue_view.php:43
-#: manufacturing/view/wo_production_view.php:44
+#: ../manufacturing/view/wo_issue_view.php:43
+#: ../manufacturing/view/wo_production_view.php:44
 msgid "For Work Order #"
 msgstr ""
 
-#: manufacturing/view/wo_issue_view.php:44
+#: ../manufacturing/view/wo_issue_view.php:44
 msgid "To Work Centre"
 msgstr ""
 
-#: manufacturing/view/wo_issue_view.php:44
+#: ../manufacturing/view/wo_issue_view.php:44
 msgid "Date of Issue"
 msgstr ""
 
-#: manufacturing/view/wo_issue_view.php:61
+#: ../manufacturing/view/wo_issue_view.php:61
 msgid "This issue has been voided."
 msgstr ""
 
-#: manufacturing/view/wo_issue_view.php:72
+#: ../manufacturing/view/wo_issue_view.php:72
 msgid "There are no items for this issue."
 msgstr ""
 
-#: manufacturing/view/wo_issue_view.php:77
-#: manufacturing/includes/manufacturing_ui.inc:28
-#: manufacturing/includes/manufacturing_ui.inc:83 reporting/rep401.php:71
-#: reporting/rep401.php:76
+#: ../manufacturing/view/wo_issue_view.php:77
+#: ../manufacturing/includes/manufacturing_ui.inc:28
+#: ../manufacturing/includes/manufacturing_ui.inc:83
+#: ../reporting/rep401.php:71
+#: ../reporting/rep401.php:76
 msgid "Component"
 msgstr ""
 
-#: manufacturing/view/wo_issue_view.php:114
+#: ../manufacturing/view/wo_issue_view.php:114
 msgid "Items for this Issue"
 msgstr ""
 
-#: manufacturing/view/wo_production_view.php:20
+#: ../manufacturing/view/wo_production_view.php:20
 msgid "View Work Order Production"
 msgstr ""
 
-#: manufacturing/view/wo_production_view.php:44
+#: ../manufacturing/view/wo_production_view.php:44
 msgid "Production #"
 msgstr ""
 
-#: manufacturing/view/wo_production_view.php:45
+#: ../manufacturing/view/wo_production_view.php:45
 msgid "Quantity Manufactured"
 msgstr ""
 
-#: manufacturing/view/wo_production_view.php:61
+#: ../manufacturing/view/wo_production_view.php:61
 msgid "This production has been voided."
 msgstr ""
 
-#: manufacturing/view/work_order_view.php:26
+#: ../manufacturing/view/work_order_view.php:26
 msgid "View Work Order"
 msgstr ""
 
-#: manufacturing/view/work_order_view.php:51
+#: ../manufacturing/view/work_order_view.php:51
 msgid "BOM for item:"
 msgstr ""
 
-#: manufacturing/view/work_order_view.php:56 reporting/rep409.php:88
+#: ../manufacturing/view/work_order_view.php:56
+#: ../reporting/rep409.php:87
 msgid "Work Order Requirements"
 msgstr ""
 
-#: manufacturing/view/work_order_view.php:61
+#: ../manufacturing/view/work_order_view.php:61
 msgid "Issues"
 msgstr ""
 
-#: manufacturing/view/work_order_view.php:64
+#: ../manufacturing/view/work_order_view.php:64
 msgid "Productions"
 msgstr ""
 
-#: manufacturing/view/work_order_view.php:67
-#: manufacturing/view/work_order_view.php:74
+#: ../manufacturing/view/work_order_view.php:67
+#: ../manufacturing/view/work_order_view.php:74
 msgid "Additional Costs"
 msgstr ""
 
-#: manufacturing/view/work_order_view.php:82
+#: ../manufacturing/view/work_order_view.php:82
 msgid "This work order has been voided."
 msgstr ""
 
-#: manufacturing/inquiry/bom_cost_inquiry.php:24
-#: manufacturing/manage/bom_edit.php:24
+#: ../manufacturing/inquiry/bom_cost_inquiry.php:24
+#: ../manufacturing/manage/bom_edit.php:24
 msgid "There are no manufactured or kit items defined in the system."
 msgstr ""
 
-#: manufacturing/inquiry/bom_cost_inquiry.php:35
-#: manufacturing/manage/bom_edit.php:170
+#: ../manufacturing/inquiry/bom_cost_inquiry.php:35
+#: ../manufacturing/manage/bom_edit.php:170
 msgid "Select a manufacturable item:"
 msgstr ""
 
-#: manufacturing/inquiry/bom_cost_inquiry.php:38
+#: ../manufacturing/inquiry/bom_cost_inquiry.php:38
 msgid "All Costs Are In:"
 msgstr ""
 
-#: manufacturing/inquiry/where_used_inquiry.php:17
+#: ../manufacturing/inquiry/where_used_inquiry.php:17
 msgid "Inventory Item Where Used Inquiry"
 msgstr ""
 
-#: manufacturing/inquiry/where_used_inquiry.php:28
+#: ../manufacturing/inquiry/where_used_inquiry.php:28
 msgid "Select an item to display its parent item(s)."
 msgstr ""
 
-#: manufacturing/inquiry/where_used_inquiry.php:43
+#: ../manufacturing/inquiry/where_used_inquiry.php:43
 msgid "Parent Item"
 msgstr ""
 
-#: manufacturing/inquiry/where_used_inquiry.php:44
-#: manufacturing/manage/bom_edit.php:71
-#: manufacturing/includes/manufacturing_ui.inc:28
-#: manufacturing/includes/manufacturing_ui.inc:83
-#: reporting/includes/doctext.inc:207
+#: ../manufacturing/inquiry/where_used_inquiry.php:44
+#: ../manufacturing/manage/bom_edit.php:71
+#: ../manufacturing/includes/manufacturing_ui.inc:28
+#: ../manufacturing/includes/manufacturing_ui.inc:83
+#: ../reporting/includes/doctext.inc:229
 msgid "Work Centre"
 msgstr ""
 
-#: manufacturing/inquiry/where_used_inquiry.php:46
-#: manufacturing/includes/manufacturing_ui.inc:277
-#: manufacturing/includes/manufacturing_ui.inc:281
+#: ../manufacturing/inquiry/where_used_inquiry.php:46
+#: ../manufacturing/includes/manufacturing_ui.inc:277
+#: ../manufacturing/includes/manufacturing_ui.inc:281
 msgid "Quantity Required"
 msgstr ""
 
-#: manufacturing/manage/bom_edit.php:16
+#: ../manufacturing/manage/bom_edit.php:16
 msgid "Bill Of Materials"
 msgstr ""
 
-#: manufacturing/manage/bom_edit.php:26
+#: ../manufacturing/manage/bom_edit.php:26
 msgid ""
 "There are no work centres defined in the system. BOMs require at least one "
 "work centre be defined."
 msgstr ""
 
-#: manufacturing/manage/bom_edit.php:70 reporting/rep105.php:114
+#: ../manufacturing/manage/bom_edit.php:70
+#: ../reporting/rep105.php:114
 msgid "Code"
 msgstr ""
 
-#: manufacturing/manage/bom_edit.php:110
+#: ../manufacturing/manage/bom_edit.php:110
 msgid "Selected component has been updated"
 msgstr ""
 
-#: manufacturing/manage/bom_edit.php:130
+#: ../manufacturing/manage/bom_edit.php:130
 msgid ""
 "A new component part has been added to the bill of material for this item."
 msgstr ""
 
-#: manufacturing/manage/bom_edit.php:136
+#: ../manufacturing/manage/bom_edit.php:136
 msgid ""
 "The selected component is already on this bom. You can modify it's quantity "
 "but it cannot appear more than once on the same bom."
 msgstr ""
 
-#: manufacturing/manage/bom_edit.php:142
+#: ../manufacturing/manage/bom_edit.php:142
 msgid ""
 "The selected component is a parent of the current item. Recursive BOMs are "
 "not allowed."
 msgstr ""
 
-#: manufacturing/manage/bom_edit.php:224
+#: ../manufacturing/manage/bom_edit.php:224
 msgid "Location to Draw From:"
 msgstr ""
 
-#: manufacturing/manage/bom_edit.php:225
+#: ../manufacturing/manage/bom_edit.php:225
 msgid "Work Centre Added:"
 msgstr ""
 
-#: manufacturing/manage/work_centres.php:16
+#: ../manufacturing/manage/work_centres.php:16
 msgid "Work Centres"
 msgstr ""
 
-#: manufacturing/manage/work_centres.php:34
+#: ../manufacturing/manage/work_centres.php:34
 msgid "The work centre name cannot be empty."
 msgstr ""
 
-#: manufacturing/manage/work_centres.php:44
+#: ../manufacturing/manage/work_centres.php:44
 msgid "Selected work center has been updated"
 msgstr ""
 
-#: manufacturing/manage/work_centres.php:49
+#: ../manufacturing/manage/work_centres.php:49
 msgid "New work center has been added"
 msgstr ""
 
-#: manufacturing/manage/work_centres.php:61
+#: ../manufacturing/manage/work_centres.php:61
 msgid ""
 "Cannot delete this work centre because BOMs have been created referring to "
 "it."
 msgstr ""
 
-#: manufacturing/manage/work_centres.php:67
+#: ../manufacturing/manage/work_centres.php:67
 msgid ""
 "Cannot delete this work centre because work order requirements have been "
 "created referring to it."
 msgstr ""
 
-#: manufacturing/manage/work_centres.php:83
+#: ../manufacturing/manage/work_centres.php:83
 msgid "Selected work center has been deleted"
 msgstr ""
 
-#: manufacturing/manage/work_centres.php:101
+#: ../manufacturing/manage/work_centres.php:101
 msgid "description"
 msgstr ""
 
-#: manufacturing/includes/manufacturing_ui.inc:22
+#: ../manufacturing/includes/manufacturing_ui.inc:22
 msgid "The bill of material for this item is empty."
 msgstr ""
 
-#: manufacturing/includes/manufacturing_ui.inc:29
-#: manufacturing/includes/manufacturing_ui.inc:61
+#: ../manufacturing/includes/manufacturing_ui.inc:29
+#: ../manufacturing/includes/manufacturing_ui.inc:61
 msgid "Total Cost"
 msgstr ""
 
-#: manufacturing/includes/manufacturing_ui.inc:77
+#: ../manufacturing/includes/manufacturing_ui.inc:77
 msgid "There are no Requirements for this Order."
 msgstr ""
 
-#: manufacturing/includes/manufacturing_ui.inc:84
-#: reporting/includes/doctext.inc:207
+#: ../manufacturing/includes/manufacturing_ui.inc:84
+#: ../reporting/includes/doctext.inc:229
 msgid "Unit Quantity"
 msgstr ""
 
-#: manufacturing/includes/manufacturing_ui.inc:84
-#: reporting/includes/doctext.inc:207
+#: ../manufacturing/includes/manufacturing_ui.inc:84
+#: ../reporting/includes/doctext.inc:229
 msgid "Total Quantity"
 msgstr ""
 
-#: manufacturing/includes/manufacturing_ui.inc:84
-#: reporting/includes/doctext.inc:207
+#: ../manufacturing/includes/manufacturing_ui.inc:84
+#: ../reporting/includes/doctext.inc:229
 msgid "Units Issued"
 msgstr ""
 
-#: manufacturing/includes/manufacturing_ui.inc:84
+#: ../manufacturing/includes/manufacturing_ui.inc:84
 msgid "On Hand"
 msgstr ""
 
-#: manufacturing/includes/manufacturing_ui.inc:138
+#: ../manufacturing/includes/manufacturing_ui.inc:138
 msgid "Marked items have insufficient quantities in stock."
 msgstr ""
 
-#: manufacturing/includes/manufacturing_ui.inc:152
+#: ../manufacturing/includes/manufacturing_ui.inc:152
 msgid "There are no Productions for this Order."
 msgstr ""
 
-#: manufacturing/includes/manufacturing_ui.inc:195
+#: ../manufacturing/includes/manufacturing_ui.inc:195
 msgid "There are no Issues for this Order."
 msgstr ""
 
-#: manufacturing/includes/manufacturing_ui.inc:231
+#: ../manufacturing/includes/manufacturing_ui.inc:231
 msgid "There are no additional costs for this Order."
 msgstr ""
 
-#: manufacturing/includes/manufacturing_ui.inc:269
-#: manufacturing/includes/manufacturing_ui.inc:325
+#: ../manufacturing/includes/manufacturing_ui.inc:269
+#: ../manufacturing/includes/manufacturing_ui.inc:325
 msgid "The work order number sent is not valid."
 msgstr ""
 
-#: manufacturing/includes/manufacturing_ui.inc:276
-#: manufacturing/includes/manufacturing_ui.inc:280
-#: manufacturing/includes/manufacturing_ui.inc:331
-#: reporting/includes/doctext.inc:201
+#: ../manufacturing/includes/manufacturing_ui.inc:276
+#: ../manufacturing/includes/manufacturing_ui.inc:280
+#: ../manufacturing/includes/manufacturing_ui.inc:331
+#: ../reporting/includes/doctext.inc:223
 msgid "Manufactured Item"
 msgstr ""
 
-#: manufacturing/includes/manufacturing_ui.inc:277
-#: manufacturing/includes/manufacturing_ui.inc:281
-#: manufacturing/includes/manufacturing_ui.inc:332
-#: reporting/includes/doctext.inc:202
+#: ../manufacturing/includes/manufacturing_ui.inc:277
+#: ../manufacturing/includes/manufacturing_ui.inc:281
+#: ../manufacturing/includes/manufacturing_ui.inc:332
+#: ../reporting/includes/doctext.inc:224
 msgid "Into Location"
 msgstr ""
 
-#: manufacturing/includes/manufacturing_ui.inc:311
-#: manufacturing/includes/manufacturing_ui.inc:356
+#: ../manufacturing/includes/manufacturing_ui.inc:311
+#: ../manufacturing/includes/manufacturing_ui.inc:356
 msgid "This work order is closed."
 msgstr ""
 
-#: manufacturing/includes/work_order_issue_ui.inc:162
+#: ../manufacturing/includes/work_order_issue_ui.inc:162
 msgid "Return Items to Location"
 msgstr ""
 
-#: manufacturing/includes/work_order_issue_ui.inc:162
+#: ../manufacturing/includes/work_order_issue_ui.inc:162
 msgid "Issue Items to Work order"
 msgstr ""
 
-#: manufacturing/includes/work_order_issue_ui.inc:165
+#: ../manufacturing/includes/work_order_issue_ui.inc:165
 msgid "To Work Centre:"
 msgstr ""
 
-#: manufacturing/includes/work_order_issue_ui.inc:167
+#: ../manufacturing/includes/work_order_issue_ui.inc:167
 msgid "Issue Date:"
 msgstr ""
 
-#: manufacturing/includes/db/work_order_issues_db.inc:81
+#: ../manufacturing/includes/db/work_order_issues_db.inc:81
 msgid "Issue of"
 msgstr ""
 
-#: manufacturing/includes/db/work_order_issues_db.inc:90
+#: ../manufacturing/includes/db/work_order_issues_db.inc:90
 msgid "Issue to"
 msgstr ""
 
-#: manufacturing/includes/db/work_order_issues_db.inc:208
+#: ../manufacturing/includes/db/work_order_issues_db.inc:208
 msgid "Reversed the issue of"
 msgstr ""
 
-#: manufacturing/includes/db/work_order_issues_db.inc:220
+#: ../manufacturing/includes/db/work_order_issues_db.inc:220
 msgid "Reversed the issue to"
 msgstr ""
 
-#: manufacturing/includes/db/work_order_produce_items_db.inc:74
+#: ../manufacturing/includes/db/work_order_produce_items_db.inc:73
 msgid "Production."
 msgstr ""
 
-#: manufacturing/includes/db/work_order_produce_items_db.inc:158
+#: ../manufacturing/includes/db/work_order_produce_items_db.inc:157
 msgid "Reversed the production "
 msgstr ""
 
-#: manufacturing/includes/db/work_orders_db.inc:278
-#: purchasing/includes/db/po_db.inc:116
-#: sales/includes/db/cust_trans_db.inc:111
-#: sales/includes/db/sales_order_db.inc:267
+#: ../manufacturing/includes/db/work_orders_db.inc:79
+#: ../purchasing/includes/db/po_db.inc:123
+#: ../sales/includes/db/cust_trans_db.inc:114
+#: ../sales/includes/db/old.sales_order_db.inc:249
+#: ../sales/includes/db/sales_order_db.inc:213
+#: ../sales/includes/db/sales_order_db.inc.orig:275
 msgid "Updated."
 msgstr ""
 
-#: manufacturing/includes/db/work_orders_db.inc:297
+#: ../manufacturing/includes/db/work_orders_db.inc:100
 msgid "Canceled."
 msgstr ""
 
-#: manufacturing/includes/db/work_orders_db.inc:373
+#: ../manufacturing/includes/db/work_orders_db.inc:176
 msgid "Released."
 msgstr ""
 
-#: manufacturing/includes/db/work_orders_db.inc:445
-#: manufacturing/includes/db/work_orders_db.inc:461
-msgid "Voiding Work Order Trans # "
-msgstr ""
-
-#: manufacturing/includes/db/work_orders_quick_db.inc:106
+#: ../manufacturing/includes/db/work_orders_quick_db.inc:104
 msgid "Quick production."
 msgstr ""
 
-#: manufacturing/includes/db/work_orders_quick_db.inc:220
+#: ../manufacturing/includes/db/work_orders_quick_db.inc:184
 msgid "Produced"
 msgstr ""
 
-#: purchasing/includes/db/invoice_db.inc:311
+#: ../purchasing/includes/purchasing_db.inc:219
+msgid "Payment for:"
+msgstr ""
+
+#: ../purchasing/includes/db/invoice_db.inc:334
 msgid "Supplier invoice adjustment for zero inventory of "
 msgstr ""
 
-#: purchasing/includes/db/invoice_db.inc:311 reporting/rep106.php:83
-#: sales/inquiry/sales_deliveries_view.php:166
-#: sales/inquiry/sales_orders_view.php:147
+#: ../purchasing/includes/db/invoice_db.inc:334
+#: ../reporting/rep106.php:83
+#: ../sales/inquiry/sales_deliveries_view.php:166
+#: ../sales/inquiry/sales_orders_view.php:159
 msgid "Invoice"
 msgstr ""
 
-#: purchasing/includes/db/invoice_db.inc:659
-#: purchasing/includes/db/invoice_db.inc:661
+#: ../purchasing/includes/db/invoice_db.inc:693
+#: ../purchasing/includes/db/invoice_db.inc:695
 msgid "GRN Removal"
 msgstr ""
 
-#: purchasing/includes/ui/grn_ui.inc:23 purchasing/includes/ui/grn_ui.inc:55
-#: purchasing/includes/ui/po_ui.inc:316 sales/view/view_sales_order.php:74
+#: ../purchasing/includes/ui/grn_ui.inc:23
+#: ../purchasing/includes/ui/grn_ui.inc:55
+#: ../purchasing/includes/ui/po_ui.inc:328
+#: ../sales/view/view_sales_order.php:74
 msgid "Order Currency"
 msgstr ""
 
-#: purchasing/includes/ui/grn_ui.inc:25 purchasing/includes/ui/grn_ui.inc:57
+#: ../purchasing/includes/ui/grn_ui.inc:25
+#: ../purchasing/includes/ui/grn_ui.inc:57
 msgid "For Purchase Order"
 msgstr ""
 
-#: purchasing/includes/ui/grn_ui.inc:28 purchasing/includes/ui/grn_ui.inc:59
-#: sales/view/view_sales_order.php:67
+#: ../purchasing/includes/ui/grn_ui.inc:28
+#: ../purchasing/includes/ui/grn_ui.inc:59
+#: ../sales/view/view_sales_order.php:67
 msgid "Ordered On"
 msgstr ""
 
-#: purchasing/includes/ui/grn_ui.inc:33 purchasing/includes/ui/grn_ui.inc:69
-#: purchasing/includes/ui/po_ui.inc:331 purchasing/includes/ui/po_ui.inc:336
+#: ../purchasing/includes/ui/grn_ui.inc:33
+#: ../purchasing/includes/ui/grn_ui.inc:69
+#: ../purchasing/includes/ui/po_ui.inc:343
+#: ../purchasing/includes/ui/po_ui.inc:348
 msgid "Deliver Into Location"
 msgstr ""
 
-#: purchasing/includes/ui/grn_ui.inc:34 purchasing/includes/ui/grn_ui.inc:79
-#: purchasing/includes/ui/po_ui.inc:341
-#: purchasing/view/view_supp_credit.php:44
-#: purchasing/view/view_supp_invoice.php:47
-#: purchasing/inquiry/po_search_completed.php:125
-#: purchasing/inquiry/po_search.php:134
-#: purchasing/inquiry/supplier_inquiry.php:172
-#: reporting/includes/doctext.inc:142 reporting/includes/doctext.inc:165
+#: ../purchasing/includes/ui/grn_ui.inc:34
+#: ../purchasing/includes/ui/grn_ui.inc:79
+#: ../purchasing/includes/ui/po_ui.inc:353
+#: ../purchasing/view/view_supp_credit.php:44
+#: ../purchasing/view/view_supp_invoice.php:48
+#: ../purchasing/inquiry/po_search_completed.php:124
+#: ../purchasing/inquiry/po_search.php:134
+#: ../purchasing/inquiry/supplier_inquiry.php:177
+#: ../reporting/includes/doctext.inc:164
+#: ../reporting/includes/doctext.inc:187
 msgid "Supplier's Reference"
 msgstr ""
 
-#: purchasing/includes/ui/grn_ui.inc:38 purchasing/includes/ui/grn_ui.inc:81
-#: purchasing/includes/ui/po_ui.inc:345 sales/view/view_sales_order.php:79
+#: ../purchasing/includes/ui/grn_ui.inc:38
+#: ../purchasing/includes/ui/grn_ui.inc:81
+#: ../purchasing/includes/ui/po_ui.inc:357
+#: ../sales/view/view_sales_order.php:92
 msgid "Delivery Address"
 msgstr ""
 
-#: purchasing/includes/ui/grn_ui.inc:41 purchasing/includes/ui/grn_ui.inc:84
-#: purchasing/includes/ui/po_ui.inc:349
+#: ../purchasing/includes/ui/grn_ui.inc:41
+#: ../purchasing/includes/ui/grn_ui.inc:84
+#: ../purchasing/includes/ui/po_ui.inc:369
 msgid "Order Comments"
 msgstr ""
 
-#: purchasing/includes/ui/grn_ui.inc:74
+#: ../purchasing/includes/ui/grn_ui.inc:74
 msgid "Date Items Received"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:109
-#: purchasing/includes/ui/invoice_ui.inc:112
+#: ../purchasing/includes/ui/invoice_ui.inc:123
+msgid "Source Invoices:"
+msgstr ""
+
+#: ../purchasing/includes/ui/invoice_ui.inc:125
 msgid "Supplier's Ref.:"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:127
+#: ../purchasing/includes/ui/invoice_ui.inc:140
 msgid "Terms:"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:139
-#: purchasing/manage/suppliers.php:98 purchasing/manage/suppliers.php:103
+#: ../purchasing/includes/ui/invoice_ui.inc:152
+#: ../purchasing/manage/suppliers.php:101
+#: ../purchasing/manage/suppliers.php:106
 msgid "Supplier's Currency:"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:143
-#: purchasing/manage/suppliers.php:105 sales/manage/customer_branches.php:246
-#: sales/manage/customers.php:297
+#: ../purchasing/includes/ui/invoice_ui.inc:156
+#: ../purchasing/manage/suppliers.php:108
+#: ../sales/manage/customer_branches.php:247
+#: ../sales/manage/customers.php:298
 msgid "Tax Group:"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:158
+#: ../purchasing/includes/ui/invoice_ui.inc:174
 msgid "Sub-total:"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:166
+#: ../purchasing/includes/ui/invoice_ui.inc:182
 msgid "Invoice Total:"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:169
-#: sales/customer_credit_invoice.php:330
-#: sales/includes/ui/sales_credit_ui.inc:233
+#: ../purchasing/includes/ui/invoice_ui.inc:185
+#: ../sales/customer_credit_invoice.php:330
+#: ../sales/includes/ui/sales_credit_ui.inc:233
 msgid "Credit Note Total"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:200
+#: ../purchasing/includes/ui/invoice_ui.inc:190
+#: ../purchasing/includes/ui/po_ui.inc:489
+#: ../purchasing/po_entry_items.php:481
+msgid "Tax algorithm:"
+msgstr ""
+
+#: ../purchasing/includes/ui/invoice_ui.inc:222
 msgid "Add GL Line"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:201
+#: ../purchasing/includes/ui/invoice_ui.inc:223
 msgid "Reset"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:202
-#: purchasing/po_receive_items.php:335
+#: ../purchasing/includes/ui/invoice_ui.inc:224
+#: ../purchasing/po_receive_items.php:333
 msgid "Clear all GL entry fields"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:220
+#: ../purchasing/includes/ui/invoice_ui.inc:242
 msgid "GL Items for this Invoice"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:222
+#: ../purchasing/includes/ui/invoice_ui.inc:244
 msgid "GL Items for this Credit Note"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:232
+#: ../purchasing/includes/ui/invoice_ui.inc:254
 msgid "Quick Entry:"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:405
+#: ../purchasing/includes/ui/invoice_ui.inc:427
 msgid "Add to Invoice"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:407
+#: ../purchasing/includes/ui/invoice_ui.inc:429
 msgid "Add to Credit Note"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:409 sales/customer_invoice.php:533
+#: ../purchasing/includes/ui/invoice_ui.inc:431
+#: ../sales/customer_invoice.php:612
 msgid "Remove"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:409
-#: purchasing/includes/ui/invoice_ui.inc:444
+#: ../purchasing/includes/ui/invoice_ui.inc:431
+#: ../purchasing/includes/ui/invoice_ui.inc:466
 msgid ""
 "WARNING! Be careful with removal. The operation is executed immediately and "
 "cannot be undone !!!"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:411
+#: ../purchasing/includes/ui/invoice_ui.inc:433
+#, php-format
 msgid ""
-"You are about to remove all yet non-invoiced items from selected delivery "
-"line. This operation also irreversibly changes related order line. Do you "
-"want to continue ?"
+"You are about to remove all yet non-invoiced items from delivery line #%d. "
+"This operation also irreversibly changes related order line. Do you want to "
+"continue ?"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:442
+#: ../purchasing/includes/ui/invoice_ui.inc:464
 msgid "Items Received Yet to be Invoiced"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:447
+#: ../purchasing/includes/ui/invoice_ui.inc:469
 msgid "Delivery Item Selected For Adding To A Supplier Credit Note"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:452
+#: ../purchasing/includes/ui/invoice_ui.inc:474
 msgid "Received Items Charged on this Invoice"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:454
+#: ../purchasing/includes/ui/invoice_ui.inc:476
 msgid "Received Items Credited on this Note"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:464
+#: ../purchasing/includes/ui/invoice_ui.inc:486
 msgid "Received between"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:475
+#: ../purchasing/includes/ui/invoice_ui.inc:498
 msgid "Add All Items"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:484
-#: purchasing/includes/ui/invoice_ui.inc:496 reporting/rep308.php:149
-#: sales/inquiry/sales_orders_view.php:155
+#: ../purchasing/includes/ui/invoice_ui.inc:507
+#: ../purchasing/includes/ui/invoice_ui.inc:519
+#: ../reporting/rep308.php:149
+#: ../sales/inquiry/sales_orders_view.php:167
 msgid "Delivery"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:484
+#: ../purchasing/includes/ui/invoice_ui.inc:507
+msgid "Sequence #"
+msgstr ""
+
+#: ../purchasing/includes/ui/invoice_ui.inc:507
 msgid "P.O."
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:485
+#: ../purchasing/includes/ui/invoice_ui.inc:508
 msgid "Received On"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:485 purchasing/view/view_po.php:46
+#: ../purchasing/includes/ui/invoice_ui.inc:508
+#: ../purchasing/view/view_po.php:46
 msgid "Quantity Received"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:485 purchasing/view/view_grn.php:41
-#: purchasing/view/view_po.php:46
+#: ../purchasing/includes/ui/invoice_ui.inc:508
+#: ../purchasing/view/view_grn.php:41
+#: ../purchasing/view/view_po.php:46
 msgid "Quantity Invoiced"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:486
+#: ../purchasing/includes/ui/invoice_ui.inc:509
 msgid "Qty Yet To Invoice"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:486
-#: purchasing/includes/ui/po_ui.inc:235
-#: sales/includes/ui/sales_order_ui.inc:146
+#: ../purchasing/includes/ui/invoice_ui.inc:509
+#: ../purchasing/includes/ui/po_ui.inc:247
+#: ../sales/includes/ui/sales_order_ui.inc:147
 msgid "Price after Tax"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:486
-#: purchasing/includes/ui/po_ui.inc:235
-#: sales/includes/ui/sales_order_ui.inc:146
+#: ../purchasing/includes/ui/invoice_ui.inc:509
+#: ../purchasing/includes/ui/po_ui.inc:247
+#: ../sales/includes/ui/sales_order_ui.inc:147
 msgid "Price before Tax"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:492
+#: ../purchasing/includes/ui/invoice_ui.inc:515
 msgid "Qty Yet To Credit"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:497
+#: ../purchasing/includes/ui/invoice_ui.inc:520
 msgid "Line Value"
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:564
+#: ../purchasing/includes/ui/invoice_ui.inc:588
 msgid ""
 "There are no outstanding items received from this supplier that have not "
 "been invoiced by them."
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:567
+#: ../purchasing/includes/ui/invoice_ui.inc:591
 msgid ""
 "There are no received items for the selected supplier that have been "
 "invoiced."
 msgstr ""
 
-#: purchasing/includes/ui/invoice_ui.inc:568
+#: ../purchasing/includes/ui/invoice_ui.inc:592
 msgid "Credits can only be applied to invoiced items."
 msgstr ""
 
-#: purchasing/includes/ui/po_ui.inc:154 sales/sales_order_entry.php:709
+#: ../purchasing/includes/ui/po_ui.inc:166
+#: ../sales/sales_order_entry.php:726
 msgid "Order Date:"
 msgstr ""
 
-#: purchasing/includes/ui/po_ui.inc:155 sales/sales_order_entry.php:696
+#: ../purchasing/includes/ui/po_ui.inc:167
+#: ../sales/sales_order_entry.php:713
 msgid "Delivery Date:"
 msgstr ""
 
-#: purchasing/includes/ui/po_ui.inc:155 sales/sales_order_entry.php:690
+#: ../purchasing/includes/ui/po_ui.inc:167
+#: ../sales/sales_order_entry.php:707
 msgid "Invoice Date:"
 msgstr ""
 
-#: purchasing/includes/ui/po_ui.inc:168
+#: ../purchasing/includes/ui/po_ui.inc:180
 msgid "Supplier Currency:"
 msgstr ""
 
-#: purchasing/includes/ui/po_ui.inc:187
+#: ../purchasing/includes/ui/po_ui.inc:199
 msgid "Due Date:"
 msgstr ""
 
-#: purchasing/includes/ui/po_ui.inc:189
+#: ../purchasing/includes/ui/po_ui.inc:201
 msgid "Supplier's Reference:"
 msgstr ""
 
-#: purchasing/includes/ui/po_ui.inc:190
+#: ../purchasing/includes/ui/po_ui.inc:202
 msgid "Receive Into:"
 msgstr ""
 
-#: purchasing/includes/ui/po_ui.inc:215
+#: ../purchasing/includes/ui/po_ui.inc:227
 msgid ""
 "The default stock location set up for this user is not a currently defined "
 "stock location. Your system administrator needs to amend your user record."
 msgstr ""
 
-#: purchasing/includes/ui/po_ui.inc:219
+#: ../purchasing/includes/ui/po_ui.inc:231
 msgid "Deliver to:"
 msgstr ""
 
-#: purchasing/includes/ui/po_ui.inc:228
+#: ../purchasing/includes/ui/po_ui.inc:240
 msgid "Order Items"
 msgstr ""
 
-#: purchasing/includes/ui/po_ui.inc:234 purchasing/po_receive_items.php:62
+#: ../purchasing/includes/ui/po_ui.inc:246
+#: ../purchasing/po_receive_items.php:62
 msgid "Received"
 msgstr ""
 
-#: purchasing/includes/ui/po_ui.inc:235
-#: sales/includes/ui/sales_order_ui.inc:616
+#: ../purchasing/includes/ui/po_ui.inc:247
+#: ../sales/includes/ui/sales_order_ui.inc:617
 msgid "Required Delivery Date"
 msgstr ""
 
-#: purchasing/includes/ui/po_ui.inc:235 purchasing/view/view_grn.php:41
-#: purchasing/view/view_po.php:46
+#: ../purchasing/includes/ui/po_ui.inc:247
+#: ../purchasing/view/view_grn.php:41
+#: ../purchasing/view/view_po.php:46
 msgid "Line Total"
 msgstr ""
 
-#: purchasing/includes/ui/po_ui.inc:286 purchasing/po_receive_items.php:114
-#: reporting/rep107.php:150 reporting/rep109.php:149 reporting/rep110.php:159
-#: reporting/rep111.php:134 reporting/rep113.php:144 reporting/rep209.php:162
-#: sales/customer_credit_invoice.php:322 sales/customer_delivery.php:511
-#: sales/customer_invoice.php:574 sales/view/view_dispatch.php:146
-#: sales/view/view_invoice.php:148 sales/includes/ui/sales_credit_ui.inc:217
-#: sales/includes/ui/sales_order_ui.inc:235
+#: ../purchasing/includes/ui/po_ui.inc:298
+#: ../purchasing/po_receive_items.php:114
+#: ../reporting/rep107.php:231
+#: ../reporting/rep109.php:155
+#: ../reporting/rep110.php:159
+#: ../reporting/rep111.php:134
+#: ../reporting/rep113.php:144
+#: ../reporting/rep209.php:162
+#: ../sales/customer_credit_invoice.php:322
+#: ../sales/customer_delivery.php:525
+#: ../sales/customer_invoice.php:656
+#: ../sales/view/view_dispatch.php:146
+#: ../sales/view/view_invoice.php:150
+#: ../sales/includes/ui/sales_credit_ui.inc:217
+#: ../sales/includes/ui/sales_order_ui.inc:236
 msgid "Sub-total"
 msgstr ""
 
-#: purchasing/includes/ui/po_ui.inc:295 purchasing/po_receive_items.php:122
-#: purchasing/view/view_grn.php:79 purchasing/view/view_po.php:93
-#: sales/customer_delivery.php:518 sales/view/view_sales_order.php:244
-#: sales/includes/ui/sales_order_ui.inc:242
+#: ../purchasing/includes/ui/po_ui.inc:307
+#: ../purchasing/po_receive_items.php:122
+#: ../purchasing/view/view_grn.php:79
+#: ../purchasing/view/view_po.php:93
+#: ../sales/customer_delivery.php:532
+#: ../sales/view/view_sales_order.php:262
+#: ../sales/includes/ui/sales_order_ui.inc:243
 msgid "Amount Total"
 msgstr ""
 
-#: purchasing/includes/ui/po_ui.inc:296
-#: purchasing/allocations/supplier_allocate.php:73
-#: sales/allocations/customer_allocate.php:71
-#: sales/includes/ui/sales_order_ui.inc:243
+#: ../purchasing/includes/ui/po_ui.inc:308
+#: ../purchasing/allocations/supplier_allocate.php:74
+#: ../sales/allocations/customer_allocate.php:72
+#: ../sales/includes/ui/sales_order_ui.inc:244
 msgid "Refresh"
 msgstr ""
 
-#: purchasing/po_entry_items.php:41
+#: ../purchasing/includes/ui/po_ui.inc:363
+#: ../sales/view/view_sales_order.php:83
+msgid "Required Pre-Payment"
+msgstr ""
+
+#: ../purchasing/includes/ui/po_ui.inc:364
+msgid "Pre-Payments Allocated"
+msgstr ""
+
+#: ../purchasing/includes/ui/po_ui.inc:490
+#: ../purchasing/po_entry_items.php:482
+#: ../sales/customer_invoice.php:463
+#: ../sales/includes/ui/sales_order_ui.inc:413
+#: ../sales/includes/ui/sales_order_ui.inc:415
+msgid "Payment:"
+msgstr ""
+
+#: ../purchasing/includes/ui/po_ui.inc:490
+#: ../purchasing/po_entry_items.php:482
+msgid "Delayed"
+msgstr ""
+
+#: ../purchasing/includes/ui/po_ui.inc:492
+#: ../sales/includes/ui/sales_order_ui.inc:628
+#: ../sales/includes/ui/sales_order_ui.inc:630
+msgid "Pre-Payment Required:"
+msgstr ""
+
+#: ../purchasing/po_entry_items.php:41
 msgid "Modify Purchase Order #"
 msgstr ""
 
-#: purchasing/po_entry_items.php:46
+#: ../purchasing/po_entry_items.php:46
 msgid "Purchase Order Entry"
 msgstr ""
 
-#: purchasing/po_entry_items.php:51
+#: ../purchasing/po_entry_items.php:51
 msgid "Direct GRN Entry"
 msgstr ""
 
-#: purchasing/po_entry_items.php:56
+#: ../purchasing/po_entry_items.php:56
 msgid "Direct Purchase Invoice Entry"
 msgstr ""
 
-#: purchasing/po_entry_items.php:77
+#: ../purchasing/po_entry_items.php:80
 msgid "Purchase Order has been entered"
 msgstr ""
 
-#: purchasing/po_entry_items.php:79
+#: ../purchasing/po_entry_items.php:82
 msgid "Purchase Order has been updated"
 msgstr ""
 
-#: purchasing/po_entry_items.php:80
+#: ../purchasing/po_entry_items.php:83
 msgid "&View this order"
 msgstr ""
 
-#: purchasing/po_entry_items.php:82 sales/sales_order_entry.php:113
-#: sales/sales_order_entry.php:133
+#: ../purchasing/po_entry_items.php:85
+#: ../sales/sales_order_entry.php:119
+#: ../sales/sales_order_entry.php:139
 msgid "&Print This Order"
 msgstr ""
 
-#: purchasing/po_entry_items.php:84 sales/sales_order_entry.php:114
-#: sales/sales_order_entry.php:134
+#: ../purchasing/po_entry_items.php:87
+#: ../sales/sales_order_entry.php:120
+#: ../sales/sales_order_entry.php:140
 msgid "&Email This Order"
 msgstr ""
 
-#: purchasing/po_entry_items.php:86
+#: ../purchasing/po_entry_items.php:89
 msgid "&Receive Items on this Purchase Order"
 msgstr ""
 
-#: purchasing/po_entry_items.php:88
+#: ../purchasing/po_entry_items.php:91
 msgid "Enter &Another Purchase Order"
 msgstr ""
 
-#: purchasing/po_entry_items.php:90
+#: ../purchasing/po_entry_items.php:93
 msgid "Select An &Outstanding Purchase Order"
 msgstr ""
 
-#: purchasing/po_entry_items.php:99
+#: ../purchasing/po_entry_items.php:102
 msgid "Direct GRN has been entered"
 msgstr ""
 
-#: purchasing/po_entry_items.php:101
+#: ../purchasing/po_entry_items.php:104
 msgid "&View this GRN"
 msgstr ""
 
-#: purchasing/po_entry_items.php:105 purchasing/po_receive_items.php:40
+#: ../purchasing/po_entry_items.php:108
+#: ../purchasing/po_receive_items.php:40
 msgid "View the GL Journal Entries for this Delivery"
 msgstr ""
 
-#: purchasing/po_entry_items.php:110 purchasing/po_receive_items.php:42
+#: ../purchasing/po_entry_items.php:113
+#: ../purchasing/po_receive_items.php:42
 msgid "Entry purchase &invoice for this receival"
 msgstr ""
 
-#: purchasing/po_entry_items.php:115
+#: ../purchasing/po_entry_items.php:118
 msgid "Enter &Another GRN"
 msgstr ""
 
-#: purchasing/po_entry_items.php:124
+#: ../purchasing/po_entry_items.php:127
 msgid "Direct Purchase Invoice has been entered"
 msgstr ""
 
-#: purchasing/po_entry_items.php:126
+#: ../purchasing/po_entry_items.php:129
 msgid "&View this Invoice"
 msgstr ""
 
-#: purchasing/po_entry_items.php:131 purchasing/supplier_invoice.php:46
+#: ../purchasing/po_entry_items.php:134
+#: ../purchasing/supplier_invoice.php:69
 msgid "View the GL Journal Entries for this Invoice"
 msgstr ""
 
-#: purchasing/po_entry_items.php:133 purchasing/supplier_invoice.php:48
-msgid "Entry supplier &payment for this invoice"
-msgstr ""
-
-#: purchasing/po_entry_items.php:139
+#: ../purchasing/po_entry_items.php:139
 msgid "Enter &Another Direct Invoice"
 msgstr ""
 
-#: purchasing/po_entry_items.php:171
+#: ../purchasing/po_entry_items.php:171
 msgid ""
 "This item cannot be deleted because some of it has already been received."
 msgstr ""
 
-#: purchasing/po_entry_items.php:186
+#: ../purchasing/po_entry_items.php:186
 msgid ""
 "This order cannot be cancelled because some of it has already been received."
 msgstr ""
 
-#: purchasing/po_entry_items.php:187
+#: ../purchasing/po_entry_items.php:187
 msgid ""
 "The line item quantities may be modified to quantities more than already "
 "received. prices cannot be altered for lines that have already been received "
 "and quantities cannot be reduced below the quantity already received."
 msgstr ""
 
-#: purchasing/po_entry_items.php:202
+#: ../purchasing/po_entry_items.php:202
 msgid "This purchase order has been cancelled."
 msgstr ""
 
-#: purchasing/po_entry_items.php:204
+#: ../purchasing/po_entry_items.php:204
 msgid "Enter a new purchase order"
 msgstr ""
 
-#: purchasing/po_entry_items.php:216 sales/sales_order_entry.php:490
+#: ../purchasing/po_entry_items.php:216
+#: ../sales/sales_order_entry.php:506
 msgid "Item description cannot be empty."
 msgstr ""
 
-#: purchasing/po_entry_items.php:226
+#: ../purchasing/po_entry_items.php:226
 msgid "The quantity of the order item must be numeric and not less than "
 msgstr ""
 
-#: purchasing/po_entry_items.php:233
+#: ../purchasing/po_entry_items.php:233
 msgid "The price entered must be numeric and not less than zero."
 msgstr ""
 
-#: purchasing/po_entry_items.php:257
+#: ../purchasing/po_entry_items.php:257
 msgid ""
 "You are attempting to make the quantity ordered a quantity less than has "
 "already been invoiced or received.  This is prohibited."
 msgstr ""
 
-#: purchasing/po_entry_items.php:258
+#: ../purchasing/po_entry_items.php:258
 msgid ""
 "The quantity received can only be modified by entering a negative receipt "
 "and the quantity invoiced can only be reduced by entering a credit note "
 "against this item."
 msgstr ""
 
-#: purchasing/po_entry_items.php:286
+#: ../purchasing/po_entry_items.php:286
 msgid "The selected item is already on this order."
 msgstr ""
 
-#: purchasing/po_entry_items.php:313
+#: ../purchasing/po_entry_items.php:313
 msgid ""
 "The selected item does not exist or it is a kit part and therefore cannot be "
 "purchased."
 msgstr ""
 
-#: purchasing/po_entry_items.php:329 purchasing/supplier_invoice.php:355
-#: purchasing/supplier_payment.php:123
+#: ../purchasing/po_entry_items.php:329
+#: ../purchasing/supplier_invoice.php:394
+#: ../purchasing/supplier_payment.php:123
 msgid "There is no supplier selected."
 msgstr ""
 
-#: purchasing/po_entry_items.php:336
+#: ../purchasing/po_entry_items.php:336
 msgid "The entered order date is invalid."
 msgstr ""
 
-#: purchasing/po_entry_items.php:343 purchasing/po_receive_items.php:181
-#: sales/sales_order_entry.php:358
-msgid "The entered date is not in fiscal year"
-msgstr ""
-
-#: purchasing/po_entry_items.php:350
+#: ../purchasing/po_entry_items.php:349
 msgid "The entered due date is invalid."
 msgstr ""
 
-#: purchasing/po_entry_items.php:359
+#: ../purchasing/po_entry_items.php:358
 msgid "There is no reference entered for this purchase order."
 msgstr ""
 
-#: purchasing/po_entry_items.php:374 purchasing/supplier_invoice.php:172
+#: ../purchasing/po_entry_items.php:373
+#: ../purchasing/supplier_invoice.php:197
 msgid "You must enter a supplier's invoice reference."
 msgstr ""
 
-#: purchasing/po_entry_items.php:381 purchasing/supplier_invoice.php:198
+#: ../purchasing/po_entry_items.php:380
+#: ../purchasing/supplier_invoice.php:223
 msgid ""
 "This invoice number has already been entered. It cannot be entered again."
 msgstr ""
 
-#: purchasing/po_entry_items.php:387
+#: ../purchasing/po_entry_items.php:386
 msgid "There is no delivery address specified."
 msgstr ""
 
-#: purchasing/po_entry_items.php:393
+#: ../purchasing/po_entry_items.php:392
 msgid "There is no location specified to move any items into."
 msgstr ""
 
-#: purchasing/po_entry_items.php:401
+#: ../purchasing/po_entry_items.php:400
 msgid ""
 "The order cannot be placed because there are no lines entered on this order."
 msgstr ""
 
-#: purchasing/po_entry_items.php:534 sales/sales_order_entry.php:713
+#: ../purchasing/po_entry_items.php:405
+msgid "Required prepayment is greater than total invoice value."
+msgstr ""
+
+#: ../purchasing/po_entry_items.php:490
+#: ../sales/sales_order_entry.php:730
 msgid "Place Order"
 msgstr ""
 
-#: purchasing/po_entry_items.php:535
+#: ../purchasing/po_entry_items.php:491
 msgid "Update Order"
 msgstr ""
 
-#: purchasing/po_entry_items.php:536 sales/sales_order_entry.php:712
+#: ../purchasing/po_entry_items.php:492
+#: ../sales/sales_order_entry.php:729
 msgid "Cancel Order"
 msgstr ""
 
-#: purchasing/po_entry_items.php:538
+#: ../purchasing/po_entry_items.php:494
 msgid "Process GRN"
 msgstr ""
 
-#: purchasing/po_entry_items.php:539
+#: ../purchasing/po_entry_items.php:495
 msgid "Update GRN"
 msgstr ""
 
-#: purchasing/po_entry_items.php:540
+#: ../purchasing/po_entry_items.php:496
 msgid "Cancel GRN"
 msgstr ""
 
-#: purchasing/po_entry_items.php:543 sales/customer_invoice.php:593
+#: ../purchasing/po_entry_items.php:499
+#: ../sales/customer_invoice.php:695
 msgid "Process Invoice"
 msgstr ""
 
-#: purchasing/po_entry_items.php:544
+#: ../purchasing/po_entry_items.php:500
 msgid "Update Invoice"
 msgstr ""
 
-#: purchasing/po_entry_items.php:545 sales/sales_order_entry.php:693
+#: ../purchasing/po_entry_items.php:501
+#: ../sales/sales_order_entry.php:710
 msgid "Cancel Invoice"
 msgstr ""
 
-#: purchasing/po_receive_items.php:25
+#: ../purchasing/po_receive_items.php:25
 msgid "Receive Purchase Order Items"
 msgstr ""
 
-#: purchasing/po_receive_items.php:34
+#: ../purchasing/po_receive_items.php:34
 msgid "Purchase Order Delivery has been processed"
 msgstr ""
 
-#: purchasing/po_receive_items.php:36
+#: ../purchasing/po_receive_items.php:36
 msgid "&View this Delivery"
 msgstr ""
 
-#: purchasing/po_receive_items.php:44
+#: ../purchasing/po_receive_items.php:44
 msgid "Select a different &purchase order for receiving items against"
 msgstr ""
 
-#: purchasing/po_receive_items.php:53
+#: ../purchasing/po_receive_items.php:53
 msgid ""
 "This page can only be opened if a purchase order has been selected. Please "
 "select a purchase order first."
 msgstr ""
 
-#: purchasing/po_receive_items.php:62 reporting/rep105.php:114
-#: sales/customer_delivery.php:432
+#: ../purchasing/po_receive_items.php:62
+#: ../reporting/rep105.php:114
+#: ../sales/customer_delivery.php:446
 msgid "Ordered"
 msgstr ""
 
-#: purchasing/po_receive_items.php:63 reporting/rep101.php:119
-#: reporting/rep105.php:115 reporting/rep105.php:166 reporting/rep201.php:111
-#: reporting/includes/doctext.inc:225
+#: ../purchasing/po_receive_items.php:63
+#: ../reporting/rep101.php:119
+#: ../reporting/rep105.php:115
+#: ../reporting/rep105.php:166
+#: ../reporting/rep201.php:111
+#: ../reporting/includes/doctext.inc:247
 msgid "Outstanding"
 msgstr ""
 
-#: purchasing/po_receive_items.php:63 sales/customer_delivery.php:433
+#: ../purchasing/po_receive_items.php:63
+#: ../sales/customer_delivery.php:447
 msgid "This Delivery"
 msgstr ""
 
-#: purchasing/po_receive_items.php:168 purchasing/po_receive_items.php:224
+#: ../purchasing/po_receive_items.php:168
+#: ../purchasing/po_receive_items.php:222
 msgid ""
 "There is nothing to process. Please enter valid quantities greater than zero."
 msgstr ""
 
-#: purchasing/po_receive_items.php:229
+#: ../purchasing/po_receive_items.php:227
 msgid ""
 "Entered quantities cannot be greater than the quantity entered on the "
 "purchase order including the allowed over-receive percentage"
 msgstr ""
 
-#: purchasing/po_receive_items.php:231
+#: ../purchasing/po_receive_items.php:229
 msgid ""
 "Modify the ordered items on the purchase order if you wish to increase the "
 "quantities."
 msgstr ""
 
-#: purchasing/po_receive_items.php:249
+#: ../purchasing/po_receive_items.php:247
 msgid ""
 "This order has been changed or invoiced since this delivery was started to "
 "be actioned. Processing halted. To enter a delivery against this purchase "
@@ -9451,153 +10936,166 @@ msgid ""
 "by the other user."
 msgstr ""
 
-#: purchasing/po_receive_items.php:252
+#: ../purchasing/po_receive_items.php:250
 msgid "Select a different purchase order for receiving goods against"
 msgstr ""
 
-#: purchasing/po_receive_items.php:255
+#: ../purchasing/po_receive_items.php:253
 msgid "Re-Read the updated purchase order for receiving goods against"
 msgstr ""
 
-#: purchasing/po_receive_items.php:330
+#: ../purchasing/po_receive_items.php:328
 msgid "Items to Receive"
 msgstr ""
 
-#: purchasing/po_receive_items.php:335
+#: ../purchasing/po_receive_items.php:333
 msgid "Process Receive Items"
 msgstr ""
 
-#: purchasing/supplier_credit.php:43
+#: ../purchasing/supplier_credit.php:77
 msgid "Supplier credit note has been processed."
 msgstr ""
 
-#: purchasing/supplier_credit.php:44
+#: ../purchasing/supplier_credit.php:78
 msgid "View this Credit Note"
 msgstr ""
 
-#: purchasing/supplier_credit.php:46
+#: ../purchasing/supplier_credit.php:80
 msgid "View the GL Journal Entries for this Credit Note"
 msgstr ""
 
-#: purchasing/supplier_credit.php:48
+#: ../purchasing/supplier_credit.php:82
 msgid "Enter Another Credit Note"
 msgstr ""
 
-#: purchasing/supplier_credit.php:102 purchasing/supplier_invoice.php:112
+#: ../purchasing/supplier_credit.php:127
+#: ../purchasing/supplier_invoice.php:137
 msgid ""
 "The account code entered is not a valid code, this line cannot be added to "
 "the transaction."
 msgstr ""
 
-#: purchasing/supplier_credit.php:112 purchasing/supplier_invoice.php:122
+#: ../purchasing/supplier_credit.php:137
+#: ../purchasing/supplier_invoice.php:147
 msgid ""
 "The amount entered is not numeric. This line cannot be added to the "
 "transaction."
 msgstr ""
 
-#: purchasing/supplier_credit.php:142
+#: ../purchasing/supplier_credit.php:168
 msgid ""
 "The credit note cannot be processed because the there are no items or values "
 "on the invoice.  Credit notes are expected to have a charge."
 msgstr ""
 
-#: purchasing/supplier_credit.php:149
+#: ../purchasing/supplier_credit.php:175
 msgid "You must enter an credit note reference."
 msgstr ""
 
-#: purchasing/supplier_credit.php:163
+#: ../purchasing/supplier_credit.php:189
 msgid "You must enter a supplier's credit note reference."
 msgstr ""
 
-#: purchasing/supplier_credit.php:170
+#: ../purchasing/supplier_credit.php:196
 msgid ""
 "The credit note as entered cannot be processed because the date entered is "
 "not valid."
 msgstr ""
 
-#: purchasing/supplier_credit.php:182 purchasing/supplier_invoice.php:191
+#: ../purchasing/supplier_credit.php:208
+#: ../purchasing/supplier_invoice.php:216
 msgid ""
 "The invoice as entered cannot be processed because the due date is in an "
 "incorrect format."
 msgstr ""
 
-#: purchasing/supplier_credit.php:189
+#: ../purchasing/supplier_credit.php:215
 msgid ""
 "The credit note total as entered is less than the sum of the the general "
 "ledger entires (if any) and the charges for goods received. There must be a "
 "mistake somewhere, the credit note as entered will not be processed."
 msgstr ""
 
-#: purchasing/supplier_credit.php:201
+#: ../purchasing/supplier_credit.php:227
 msgid ""
 "The return cannot be processed because there is an insufficient quantity for "
 "item:"
 msgstr ""
 
-#: purchasing/supplier_credit.php:244
+#: ../purchasing/supplier_credit.php:270
 msgid "The quantity to credit must be numeric and greater than zero."
 msgstr ""
 
-#: purchasing/supplier_credit.php:251
+#: ../purchasing/supplier_credit.php:277
 msgid "The price is either not numeric or negative."
 msgstr ""
 
-#: purchasing/supplier_credit.php:353
+#: ../purchasing/supplier_credit.php:379
 msgid "Enter Credit Note"
 msgstr ""
 
-#: purchasing/supplier_invoice.php:28
+#: ../purchasing/supplier_invoice.php:43
 msgid "Enter Supplier Invoice"
 msgstr ""
 
-#: purchasing/supplier_invoice.php:43
+#: ../purchasing/supplier_invoice.php:48
+#, php-format
+msgid "Modifying Purchase Invoice # %d"
+msgstr ""
+
+#: ../purchasing/supplier_invoice.php:66
 msgid "Supplier invoice has been processed."
 msgstr ""
 
-#: purchasing/supplier_invoice.php:44
+#: ../purchasing/supplier_invoice.php:67
 msgid "View this Invoice"
 msgstr ""
 
-#: purchasing/supplier_invoice.php:51
+#: ../purchasing/supplier_invoice.php:71
+msgid "Entry supplier &payment for this invoice"
+msgstr ""
+
+#: ../purchasing/supplier_invoice.php:74
 msgid "Enter Another Invoice"
 msgstr ""
 
-#: purchasing/supplier_invoice.php:152
+#: ../purchasing/supplier_invoice.php:177
 msgid ""
 "The invoice cannot be processed because the there are no items or values on "
 "the invoice.  Invoices are expected to have a charge."
 msgstr ""
 
-#: purchasing/supplier_invoice.php:158
+#: ../purchasing/supplier_invoice.php:183
 msgid "You must enter an invoice reference."
 msgstr ""
 
-#: purchasing/supplier_invoice.php:179
+#: ../purchasing/supplier_invoice.php:204
 msgid ""
 "The invoice as entered cannot be processed because the invoice date is in an "
 "incorrect format."
 msgstr ""
 
-#: purchasing/supplier_invoice.php:235
+#: ../purchasing/supplier_invoice.php:265
 msgid "The quantity to invoice must be numeric and greater than zero."
 msgstr ""
 
-#: purchasing/supplier_invoice.php:242
+#: ../purchasing/supplier_invoice.php:272
 msgid "The price is not numeric."
 msgstr ""
 
-#: purchasing/supplier_invoice.php:255
+#: ../purchasing/supplier_invoice.php:285
 msgid ""
 "The price being invoiced is more than the purchase order price by more than "
 "the allowed over-charge percentage. The system is set up to prohibit this. "
 "See the system administrator to modify the set up parameters if necessary."
 msgstr ""
 
-#: purchasing/supplier_invoice.php:256 purchasing/supplier_invoice.php:269
+#: ../purchasing/supplier_invoice.php:286
+#: ../purchasing/supplier_invoice.php:299
 msgid "The over-charge percentage allowance is :"
 msgstr ""
 
-#: purchasing/supplier_invoice.php:268
+#: ../purchasing/supplier_invoice.php:298
 msgid ""
 "The quantity being invoiced is more than the outstanding quantity by more "
 "than the allowed over-charge percentage. The system is set up to prohibit "
@@ -9605,3918 +11103,4383 @@ msgid ""
 "necessary."
 msgstr ""
 
-#: purchasing/supplier_invoice.php:337
+#: ../purchasing/supplier_invoice.php:376
 #, php-format
 msgid "All yet non-invoiced items on delivery line # %d has been removed."
 msgstr ""
 
-#: purchasing/supplier_invoice.php:379
+#: ../purchasing/supplier_invoice.php:418
 msgid "Enter Invoice"
 msgstr ""
 
-#: purchasing/supplier_payment.php:31
+#: ../purchasing/supplier_payment.php:31
 msgid "Supplier Payment Entry"
 msgstr ""
 
-#: purchasing/supplier_payment.php:92
+#: ../purchasing/supplier_payment.php:92
 msgid "Invalid purchase invoice number."
 msgstr ""
 
-#: purchasing/supplier_payment.php:98
+#: ../purchasing/supplier_payment.php:98
 msgid "Payment has been sucessfully entered"
 msgstr ""
 
-#: purchasing/supplier_payment.php:100
+#: ../purchasing/supplier_payment.php:100
 msgid "&Print This Remittance"
 msgstr ""
 
-#: purchasing/supplier_payment.php:101
+#: ../purchasing/supplier_payment.php:101
 msgid "&Email This Remittance"
 msgstr ""
 
-#: purchasing/supplier_payment.php:103
+#: ../purchasing/supplier_payment.php:103
 msgid "View this Payment"
 msgstr ""
 
-#: purchasing/supplier_payment.php:104
+#: ../purchasing/supplier_payment.php:104
 msgid "View the GL &Journal Entries for this Payment"
 msgstr ""
 
-#: purchasing/supplier_payment.php:106
+#: ../purchasing/supplier_payment.php:106
 msgid "Enter another supplier &payment"
 msgstr ""
 
-#: purchasing/supplier_payment.php:107 sales/customer_payments.php:106
+#: ../purchasing/supplier_payment.php:107
+#: ../sales/customer_payments.php:106
 msgid "Enter Other &Payment"
 msgstr ""
 
-#: purchasing/supplier_payment.php:108
+#: ../purchasing/supplier_payment.php:108
 msgid "Enter &Customer Payment"
 msgstr ""
 
-#: purchasing/supplier_payment.php:109 sales/customer_payments.php:104
+#: ../purchasing/supplier_payment.php:109
+#: ../sales/customer_payments.php:104
 msgid "Enter Other &Deposit"
 msgstr ""
 
-#: purchasing/supplier_payment.php:110 sales/customer_payments.php:107
+#: ../purchasing/supplier_payment.php:110
+#: ../sales/customer_payments.php:107
 msgid "Bank Account &Transfer"
 msgstr ""
 
-#: purchasing/supplier_payment.php:162
+#: ../purchasing/supplier_payment.php:162
 msgid "The entered discount is invalid or less than zero."
 msgstr ""
 
-#: purchasing/supplier_payment.php:170
+#: ../purchasing/supplier_payment.php:170
 msgid ""
 "The total of the amount and the discount is zero or negative. Please enter "
 "positive values."
 msgstr ""
 
-#: purchasing/supplier_payment.php:177
+#: ../purchasing/supplier_payment.php:177
 msgid "The entered bank amount is zero or negative."
 msgstr ""
 
-#: purchasing/supplier_payment.php:191
-msgid ""
-"The entered date is out of fiscal year or is closed for further data entry."
-msgstr ""
-
-#: purchasing/supplier_payment.php:275
+#: ../purchasing/supplier_payment.php:275
 msgid "Payment To:"
 msgstr ""
 
-#: purchasing/supplier_payment.php:290
+#: ../purchasing/supplier_payment.php:290
 msgid "From Bank Account:"
 msgstr ""
 
-#: purchasing/supplier_payment.php:296
-#: purchasing/view/view_supp_payment.php:55
+#: ../purchasing/supplier_payment.php:296
+#: ../purchasing/view/view_supp_payment.php:55
 msgid "Date Paid"
 msgstr ""
 
-#: purchasing/supplier_payment.php:310
+#: ../purchasing/supplier_payment.php:310
 msgid "Bank Amount:"
 msgstr ""
 
-#: purchasing/supplier_payment.php:323 sales/customer_payments.php:395
+#: ../purchasing/supplier_payment.php:323
+#: ../sales/customer_payments.php:398
 msgid "Amount of Discount:"
 msgstr ""
 
-#: purchasing/supplier_payment.php:324
+#: ../purchasing/supplier_payment.php:324
 msgid "Amount of Payment:"
 msgstr ""
 
-#: purchasing/supplier_payment.php:328
+#: ../purchasing/supplier_payment.php:328
 msgid "Enter Payment"
 msgstr ""
 
-#: purchasing/view/view_grn.php:21
+#: ../purchasing/view/view_grn.php:21
 msgid "View Purchase Order Delivery"
 msgstr ""
 
-#: purchasing/view/view_grn.php:27
+#: ../purchasing/view/view_grn.php:27
 msgid ""
 "This page must be called with a Purchase Order Delivery number to review."
 msgstr ""
 
-#: purchasing/view/view_grn.php:37 purchasing/view/view_po.php:41
-#: sales/view/view_sales_order.php:198
+#: ../purchasing/view/view_grn.php:37
+#: ../purchasing/view/view_po.php:41
+#: ../sales/view/view_sales_order.php:216
 msgid "Line Details"
 msgstr ""
 
-#: purchasing/view/view_grn.php:40 reporting/includes/doctext.inc:65
-#: reporting/includes/doctext.inc:170 reporting/includes/doctext.inc:222
-#: sales/inquiry/sales_deliveries_view.php:186
+#: ../purchasing/view/view_grn.php:40
+#: ../reporting/includes/doctext.inc:77
+#: ../reporting/includes/doctext.inc:192
+#: ../reporting/includes/doctext.inc:244
+#: ../sales/inquiry/sales_deliveries_view.php:186
 msgid "Delivery Date"
 msgstr ""
 
-#: purchasing/view/view_grn.php:70 purchasing/view/view_po.php:84
-#: purchasing/view/view_supp_credit.php:60
-#: purchasing/view/view_supp_invoice.php:65 sales/view/view_credit.php:136
-#: sales/view/view_sales_order.php:234
+#: ../purchasing/view/view_grn.php:70
+#: ../purchasing/view/view_po.php:84
+#: ../purchasing/view/view_supp_credit.php:60
+#: ../purchasing/view/view_supp_invoice.php:66
+#: ../sales/view/view_credit.php:136
+#: ../sales/view/view_sales_order.php:252
 msgid "Sub Total"
 msgstr ""
 
-#: purchasing/view/view_grn.php:86
+#: ../purchasing/view/view_grn.php:86
 msgid "This delivery has been voided."
 msgstr ""
 
-#: purchasing/view/view_po.php:22
+#: ../purchasing/view/view_po.php:22
 msgid "View Purchase Order"
 msgstr ""
 
-#: purchasing/view/view_po.php:27
+#: ../purchasing/view/view_po.php:27
 msgid "This page must be called with a purchase order number to review."
 msgstr ""
 
-#: purchasing/view/view_po.php:46
+#: ../purchasing/view/view_po.php:46
 msgid "Requested By"
 msgstr ""
 
-#: purchasing/view/view_po.php:100
-#: purchasing/inquiry/supplier_allocation_inquiry.php:148
-#: purchasing/inquiry/supplier_inquiry.php:193
-#: sales/inquiry/customer_allocation_inquiry.php:165
-#: sales/inquiry/customer_inquiry.php:244
-#: sales/inquiry/sales_deliveries_view.php:206
-#: sales/inquiry/sales_orders_view.php:318
+#: ../purchasing/view/view_po.php:100
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:148
+#: ../purchasing/inquiry/supplier_inquiry.php:197
+#: ../sales/inquiry/customer_allocation_inquiry.php:165
+#: ../sales/inquiry/customer_inquiry.php:227
+#: ../sales/inquiry/sales_deliveries_view.php:206
+#: ../sales/inquiry/sales_orders_view.php:345
 msgid "Marked items are overdue."
 msgstr ""
 
-#: purchasing/view/view_po.php:113 sales/view/view_invoice.php:97
-#: sales/view/view_sales_order.php:51
+#: ../purchasing/view/view_po.php:113
+#: ../sales/view/view_invoice.php:98
+#: ../sales/view/view_sales_order.php:51
 msgid "Deliveries"
 msgstr ""
 
-#: purchasing/view/view_po.php:115
+#: ../purchasing/view/view_po.php:115
 msgid "Delivered On"
 msgstr ""
 
-#: purchasing/view/view_po.php:138 sales/view/view_sales_order.php:53
+#: ../purchasing/view/view_po.php:138
+#: ../sales/view/view_sales_order.php:53
 msgid "Invoices/Credits"
 msgstr ""
 
-#: purchasing/view/view_supp_credit.php:23
+#: ../purchasing/view/view_supp_credit.php:23
 msgid "View Supplier Credit Note"
 msgstr ""
 
-#: purchasing/view/view_supp_credit.php:38
+#: ../purchasing/view/view_supp_credit.php:38
 msgid "SUPPLIER CREDIT NOTE"
 msgstr ""
 
-#: purchasing/view/view_supp_credit.php:47
-#: purchasing/view/view_supp_invoice.php:50
-#: sales/customer_credit_invoice.php:268 sales/view/view_invoice.php:95
+#: ../purchasing/view/view_supp_credit.php:47
+#: ../purchasing/view/view_supp_invoice.php:51
+#: ../reporting/includes/doctext.inc:141
+#: ../sales/customer_credit_invoice.php:268
+#: ../sales/view/view_invoice.php:100
 msgid "Invoice Date"
 msgstr ""
 
-#: purchasing/view/view_supp_credit.php:66
+#: ../purchasing/view/view_supp_credit.php:66
 msgid "TOTAL CREDIT NOTE"
 msgstr ""
 
-#: purchasing/view/view_supp_credit.php:71 sales/view/view_credit.php:147
+#: ../purchasing/view/view_supp_credit.php:71
+#: ../sales/view/view_credit.php:147
 msgid "This credit note has been voided."
 msgstr ""
 
-#: purchasing/view/view_supp_invoice.php:23
+#: ../purchasing/view/view_supp_invoice.php:24
 msgid "View Supplier Invoice"
 msgstr ""
 
-#: purchasing/view/view_supp_invoice.php:40
+#: ../purchasing/view/view_supp_invoice.php:41
 msgid "SUPPLIER INVOICE"
 msgstr ""
 
-#: purchasing/view/view_supp_invoice.php:72 reporting/rep107.php:198
-#: sales/view/view_invoice.php:164
+#: ../purchasing/view/view_supp_invoice.php:73
+#: ../reporting/rep107.php:280
+#: ../reporting/rep107.php:286
+#: ../sales/view/view_invoice.php:166
 msgid "TOTAL INVOICE"
 msgstr ""
 
-#: purchasing/view/view_supp_invoice.php:76 sales/view/view_invoice.php:168
+#: ../purchasing/view/view_supp_invoice.php:77
+#: ../sales/view/view_invoice.php:170
 msgid "This invoice has been voided."
 msgstr ""
 
-#: purchasing/view/view_supp_payment.php:22
+#: ../purchasing/view/view_supp_payment.php:22
 msgid "View Payment to Supplier"
 msgstr ""
 
-#: purchasing/view/view_supp_payment.php:47
+#: ../purchasing/view/view_supp_payment.php:47
 msgid "Payment to Supplier"
 msgstr ""
 
-#: purchasing/view/view_supp_payment.php:53
+#: ../purchasing/view/view_supp_payment.php:53
 msgid "To Supplier"
 msgstr ""
 
-#: purchasing/view/view_supp_payment.php:59
+#: ../purchasing/view/view_supp_payment.php:59
 msgid "Payment Currency"
 msgstr ""
 
-#: purchasing/view/view_supp_payment.php:62 reporting/rep112.php:162
-#: reporting/rep210.php:171 sales/customer_delivery.php:433
-#: sales/customer_invoice.php:479 sales/view/view_receipt.php:45
-#: sales/view/view_sales_order.php:202
+#: ../purchasing/view/view_supp_payment.php:62
+#: ../reporting/rep112.php:150
+#: ../reporting/rep210.php:159
+#: ../sales/customer_delivery.php:447
+#: ../sales/customer_invoice.php:551
+#: ../sales/customer_invoice.php:554
+#: ../sales/view/view_receipt.php:45
+#: ../sales/view/view_sales_order.php:220
 msgid "Discount"
 msgstr ""
 
-#: purchasing/view/view_supp_payment.php:69
+#: ../purchasing/view/view_supp_payment.php:69
 msgid "Supplier's Currency"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:27 sales/manage/customer_branches.php:33
+#: ../purchasing/manage/suppliers.php:27
+#: ../sales/manage/customer_branches.php:33
 msgid ""
 "There are no tax groups defined in the system. At least one tax group is "
 "required before proceeding."
 msgstr ""
 
-#: purchasing/manage/suppliers.php:89
+#: ../purchasing/manage/suppliers.php:91
 msgid "Basic Data"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:91
+#: ../purchasing/manage/suppliers.php:93
 msgid "Supplier Name:"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:92
+#: ../purchasing/manage/suppliers.php:94
 msgid "Supplier Short Name:"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:95
+#: ../purchasing/manage/suppliers.php:97
 msgid "Website:"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:106
+#: ../purchasing/manage/suppliers.php:109
 msgid "Our Customer No:"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:108
+#: ../purchasing/manage/suppliers.php:111
 msgid "Purchasing"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:109
+#: ../purchasing/manage/suppliers.php:112
 msgid "Bank Name/Account:"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:110 sales/manage/customers.php:267
+#: ../purchasing/manage/suppliers.php:113
+#: ../sales/manage/customers.php:268
 msgid "Credit Limit:"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:111 sales/manage/customers.php:269
+#: ../purchasing/manage/suppliers.php:114
+#: ../sales/manage/customers.php:270
 msgid "Payment Terms:"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:117 purchasing/manage/suppliers.php:120
+#: ../purchasing/manage/suppliers.php:120
+#: ../purchasing/manage/suppliers.php:123
 msgid "Prices contain tax included:"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:122 reporting/rep704.php:96
-#: reporting/rep704.php:106 reporting/rep704.php:114
+#: ../purchasing/manage/suppliers.php:125
+msgid "Tax Calculation Algorithm:"
+msgstr ""
+
+#: ../purchasing/manage/suppliers.php:129
+#: ../reporting/rep704.php:96
+#: ../reporting/rep704.php:106
+#: ../reporting/rep704.php:114
 msgid "Accounts"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:123
+#: ../purchasing/manage/suppliers.php:130
 msgid "Accounts Payable Account:"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:124
+#: ../purchasing/manage/suppliers.php:131
 msgid "Purchase Account:"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:125
+#: ../purchasing/manage/suppliers.php:132
 msgid "Use Item Inventory/COGS Account"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:128 purchasing/manage/suppliers.php:157
+#: ../purchasing/manage/suppliers.php:135
+#: ../purchasing/manage/suppliers.php:139
 msgid "Contact Data"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:148 sales/manage/customer_branches.php:266
+#: ../purchasing/manage/suppliers.php:142
+msgid "System default"
+msgstr ""
+
+#: ../purchasing/manage/suppliers.php:159
+#: ../sales/manage/customer_branches.php:268
 msgid "Addresses"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:149 reporting/rep205.php:102
-#: sales/manage/customer_branches.php:267
+#: ../purchasing/manage/suppliers.php:160
+#: ../reporting/rep205.php:102
+#: ../sales/manage/customer_branches.php:269
 msgid "Mailing Address:"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:150
+#: ../purchasing/manage/suppliers.php:161
 msgid "Physical Address:"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:152
+#: ../purchasing/manage/suppliers.php:163
 msgid "General"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:153 sales/manage/customer_branches.php:269
-#: sales/manage/customers.php:290
+#: ../purchasing/manage/suppliers.php:164
+#: ../sales/manage/customer_branches.php:271
+#: ../sales/manage/customers.php:291
 msgid "General Notes:"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:155
+#: ../purchasing/manage/suppliers.php:166
 msgid "Supplier status:"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:161
-msgid "System default"
-msgstr ""
-
-#: purchasing/manage/suppliers.php:168
+#: ../purchasing/manage/suppliers.php:172
 msgid "Update Supplier"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:169
+#: ../purchasing/manage/suppliers.php:173
 msgid "Update supplier data"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:170
+#: ../purchasing/manage/suppliers.php:174
 msgid "Select this supplier and return to document entry."
 msgstr ""
 
-#: purchasing/manage/suppliers.php:171
+#: ../purchasing/manage/suppliers.php:175
 msgid "Delete Supplier"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:172
+#: ../purchasing/manage/suppliers.php:176
 msgid "Delete supplier data if have been never used"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:176
+#: ../purchasing/manage/suppliers.php:180
 msgid "Add New Supplier Details"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:195
+#: ../purchasing/manage/suppliers.php:199
 msgid "The supplier name must be entered."
 msgstr ""
 
-#: purchasing/manage/suppliers.php:202
+#: ../purchasing/manage/suppliers.php:206
 msgid "The supplier short name must be entered."
 msgstr ""
 
-#: purchasing/manage/suppliers.php:222
+#: ../purchasing/manage/suppliers.php:226
 msgid "Supplier has been updated."
 msgstr ""
 
-#: purchasing/manage/suppliers.php:240
+#: ../purchasing/manage/suppliers.php:244
 msgid "A new supplier has been added."
 msgstr ""
 
-#: purchasing/manage/suppliers.php:258
+#: ../purchasing/manage/suppliers.php:262
 msgid ""
 "Cannot delete this supplier because there are transactions that refer to "
 "this supplier."
 msgstr ""
 
-#: purchasing/manage/suppliers.php:266
+#: ../purchasing/manage/suppliers.php:270
 msgid ""
 "Cannot delete the supplier record because purchase orders have been created "
 "against this supplier."
 msgstr ""
 
-#: purchasing/manage/suppliers.php:287
-#: purchasing/inquiry/supplier_allocation_inquiry.php:48
+#: ../purchasing/manage/suppliers.php:291
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:48
 msgid "Select a supplier: "
 msgstr ""
 
-#: purchasing/manage/suppliers.php:288
+#: ../purchasing/manage/suppliers.php:292
 msgid "New supplier"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:307 sales/manage/customer_branches.php:323
-#: sales/manage/customers.php:348
+#: ../purchasing/manage/suppliers.php:311
+#: ../sales/manage/customer_branches.php:325
+#: ../sales/manage/customers.php:349
 msgid "&Contacts"
 msgstr ""
 
-#: purchasing/manage/suppliers.php:309
+#: ../purchasing/manage/suppliers.php:313
 msgid "Purchase &Orders"
 msgstr ""
 
-#: purchasing/inquiry/po_search_completed.php:26
+#: ../purchasing/inquiry/po_search_completed.php:24
 msgid "Search Purchase Orders"
 msgstr ""
 
-#: purchasing/inquiry/po_search_completed.php:63
-#: purchasing/inquiry/po_search.php:62
-#: sales/inquiry/sales_deliveries_view.php:103
-#: sales/inquiry/sales_orders_view.php:225
+#: ../purchasing/inquiry/po_search_completed.php:60
+#: ../purchasing/inquiry/po_search.php:62
+#: ../sales/inquiry/sales_deliveries_view.php:103
+#: ../sales/inquiry/sales_orders_view.php:247
 msgid "#:"
 msgstr ""
 
-#: purchasing/inquiry/po_search_completed.php:68
+#: ../purchasing/inquiry/po_search_completed.php:65
 msgid "into location:"
 msgstr ""
 
-#: purchasing/inquiry/po_search_completed.php:126
-#: purchasing/inquiry/po_search.php:135 reporting/includes/doctext.inc:166
-#: sales/inquiry/sales_orders_view.php:267
+#: ../purchasing/inquiry/po_search_completed.php:125
+#: ../purchasing/inquiry/po_search.php:135
+#: ../reporting/includes/doctext.inc:188
+#: ../sales/inquiry/sales_orders_view.php:290
 msgid "Order Date"
 msgstr ""
 
-#: purchasing/inquiry/po_search_completed.php:128
-#: purchasing/inquiry/po_search.php:137
-#: sales/inquiry/sales_orders_view.php:270
+#: ../purchasing/inquiry/po_search_completed.php:127
+#: ../purchasing/inquiry/po_search.php:137
+#: ../sales/inquiry/sales_orders_view.php:293
 msgid "Order Total"
 msgstr ""
 
-#: purchasing/inquiry/po_search.php:25
+#: ../purchasing/inquiry/po_search.php:25
 msgid "Search Outstanding Purchase Orders"
 msgstr ""
 
-#: purchasing/inquiry/po_search.php:98
+#: ../purchasing/inquiry/po_search.php:98
 msgid "Receive"
 msgstr ""
 
-#: purchasing/inquiry/po_search.php:148
+#: ../purchasing/inquiry/po_search.php:148
 msgid "Marked orders have overdue items."
 msgstr ""
 
-#: purchasing/inquiry/supplier_allocation_inquiry.php:23
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:23
 msgid "Supplier Allocation Inquiry"
 msgstr ""
 
-#: purchasing/inquiry/supplier_allocation_inquiry.php:55
-#: sales/inquiry/customer_allocation_inquiry.php:49
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:55
+#: ../sales/inquiry/customer_allocation_inquiry.php:49
 msgid "show settled:"
 msgstr ""
 
-#: purchasing/inquiry/supplier_allocation_inquiry.php:103
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:103
 msgid "Pay"
 msgstr ""
 
-#: purchasing/inquiry/supplier_allocation_inquiry.php:130
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:130
 msgid "Supp Reference"
 msgstr ""
 
-#: purchasing/inquiry/supplier_allocation_inquiry.php:136
-#: reporting/rep101.php:119 reporting/rep201.php:111
-#: reporting/includes/doctext.inc:225
-#: sales/inquiry/customer_allocation_inquiry.php:154
+#: ../purchasing/inquiry/supplier_allocation_inquiry.php:136
+#: ../reporting/rep101.php:119
+#: ../reporting/rep201.php:111
+#: ../reporting/includes/doctext.inc:247
+#: ../sales/inquiry/customer_allocation_inquiry.php:154
 msgid "Allocated"
 msgstr ""
 
-#: purchasing/inquiry/supplier_inquiry.php:27
+#: ../purchasing/inquiry/supplier_inquiry.php:25
 msgid "Supplier Inquiry"
 msgstr ""
 
-#: purchasing/inquiry/supplier_inquiry.php:51
+#: ../purchasing/inquiry/supplier_inquiry.php:48
 msgid "Select a supplier:"
 msgstr ""
 
-#: purchasing/inquiry/supplier_inquiry.php:70
-#: purchasing/inquiry/supplier_inquiry.php:71
-#: purchasing/inquiry/supplier_inquiry.php:72 reporting/rep102.php:120
-#: reporting/rep102.php:121 reporting/rep102.php:122 reporting/rep102.php:244
-#: reporting/rep108.php:151 reporting/rep108.php:152 reporting/rep108.php:153
-#: reporting/rep202.php:124 reporting/rep202.php:125 reporting/rep202.php:126
-#: reporting/rep202.php:158 reporting/rep202.php:159 reporting/rep202.php:160
-#: reporting/rep202.php:252 sales/create_recurrent_invoices.php:134
-#: sales/manage/recurrent_invoices.php:102
-#: sales/inquiry/customer_inquiry.php:75 sales/inquiry/customer_inquiry.php:76
-#: sales/inquiry/customer_inquiry.php:77
+#: ../purchasing/inquiry/supplier_inquiry.php:67
+#: ../purchasing/inquiry/supplier_inquiry.php:68
+#: ../purchasing/inquiry/supplier_inquiry.php:69
+#: ../reporting/rep102.php:120
+#: ../reporting/rep102.php:121
+#: ../reporting/rep102.php:122
+#: ../reporting/rep102.php:244
+#: ../reporting/rep108.php:151
+#: ../reporting/rep108.php:152
+#: ../reporting/rep108.php:153
+#: ../reporting/rep202.php:124
+#: ../reporting/rep202.php:125
+#: ../reporting/rep202.php:126
+#: ../reporting/rep202.php:158
+#: ../reporting/rep202.php:159
+#: ../reporting/rep202.php:160
+#: ../reporting/rep202.php:252
+#: ../sales/create_recurrent_invoices.php:134
+#: ../sales/manage/recurrent_invoices.php:102
+#: ../sales/inquiry/customer_inquiry.php:71
+#: ../sales/inquiry/customer_inquiry.php:72
+#: ../sales/inquiry/customer_inquiry.php:73
 msgid "Days"
 msgstr ""
 
-#: purchasing/inquiry/supplier_inquiry.php:72 reporting/rep102.php:122
-#: reporting/rep108.php:153 reporting/rep202.php:126 reporting/rep202.php:160
-#: sales/inquiry/customer_inquiry.php:77
+#: ../purchasing/inquiry/supplier_inquiry.php:69
+#: ../reporting/rep102.php:122
+#: ../reporting/rep108.php:153
+#: ../reporting/rep202.php:126
+#: ../reporting/rep202.php:160
+#: ../sales/inquiry/customer_inquiry.php:73
 msgid "Over"
 msgstr ""
 
-#: purchasing/inquiry/supplier_inquiry.php:76
-#: sales/inquiry/customer_inquiry.php:80
+#: ../purchasing/inquiry/supplier_inquiry.php:73
+#: ../sales/inquiry/customer_inquiry.php:76
 msgid "Terms"
 msgstr ""
 
-#: purchasing/inquiry/supplier_inquiry.php:76 reporting/rep102.php:125
-#: reporting/rep102.php:242 reporting/rep108.php:155 reporting/rep202.php:130
-#: reporting/rep202.php:250 sales/inquiry/customer_inquiry.php:80
+#: ../purchasing/inquiry/supplier_inquiry.php:73
+#: ../reporting/rep102.php:125
+#: ../reporting/rep102.php:242
+#: ../reporting/rep108.php:155
+#: ../reporting/rep202.php:130
+#: ../reporting/rep202.php:250
+#: ../sales/inquiry/customer_inquiry.php:76
 msgid "Current"
 msgstr ""
 
-#: purchasing/inquiry/supplier_inquiry.php:77 reporting/rep102.php:126
-#: reporting/rep108.php:155 reporting/rep202.php:131
-#: sales/inquiry/customer_inquiry.php:81
+#: ../purchasing/inquiry/supplier_inquiry.php:74
+#: ../reporting/rep102.php:126
+#: ../reporting/rep108.php:155
+#: ../reporting/rep202.php:131
+#: ../sales/inquiry/customer_inquiry.php:77
 msgid "Total Balance"
 msgstr ""
 
-#: purchasing/inquiry/supplier_inquiry.php:133
-#: sales/inquiry/customer_inquiry.php:164
+#: ../purchasing/inquiry/supplier_inquiry.php:133
+#: ../sales/inquiry/customer_inquiry.php:162
 msgid "Credit This"
 msgstr ""
 
-#: purchasing/inquiry/supplier_inquiry.php:155
+#: ../purchasing/inquiry/supplier_inquiry.php:155
 msgid "Print Remittance"
 msgstr ""
 
-#: purchasing/allocations/supplier_allocate.php:29
+#: ../purchasing/allocations/supplier_allocate.php:29
 msgid "Allocate Supplier Payment or Credit Note"
 msgstr ""
 
-#: purchasing/allocations/supplier_allocate.php:52
+#: ../purchasing/allocations/supplier_allocate.php:52
 msgid "Allocation of"
 msgstr ""
 
-#: purchasing/allocations/supplier_allocate.php:58
-#: sales/allocations/customer_allocate.php:55
+#: ../purchasing/allocations/supplier_allocate.php:58
+#: ../sales/allocations/customer_allocate.php:55
 msgid "Total:"
 msgstr ""
 
-#: purchasing/allocations/supplier_allocate.php:62
-#: sales/allocations/customer_allocate.php:59
-msgid "Total in clearing currency:"
+#: ../purchasing/allocations/supplier_allocate.php:62
+#: ../sales/allocations/customer_allocate.php:59
+msgid "Amount ot be settled:"
 msgstr ""
 
-#: purchasing/allocations/supplier_allocate.php:73
-#: sales/allocations/customer_allocate.php:71
+#: ../purchasing/allocations/supplier_allocate.php:74
+#: ../sales/allocations/customer_allocate.php:72
 msgid "Start again allocation of selected amount"
 msgstr ""
 
-#: purchasing/allocations/supplier_allocate.php:74
-#: sales/allocations/customer_allocate.php:72
+#: ../purchasing/allocations/supplier_allocate.php:75
+#: ../sales/allocations/customer_allocate.php:73
 msgid "Process allocations"
 msgstr ""
 
-#: purchasing/allocations/supplier_allocate.php:75
-#: purchasing/allocations/supplier_allocate.php:81
-#: sales/allocations/customer_allocate.php:73
-#: sales/allocations/customer_allocate.php:79
+#: ../purchasing/allocations/supplier_allocate.php:76
+#: ../purchasing/allocations/supplier_allocate.php:82
+#: ../sales/allocations/customer_allocate.php:74
+#: ../sales/allocations/customer_allocate.php:80
 msgid "Back to Allocations"
 msgstr ""
 
-#: purchasing/allocations/supplier_allocate.php:76
-#: purchasing/allocations/supplier_allocate.php:82
-#: sales/allocations/customer_allocate.php:73
-#: sales/allocations/customer_allocate.php:80
+#: ../purchasing/allocations/supplier_allocate.php:77
+#: ../purchasing/allocations/supplier_allocate.php:83
+#: ../sales/allocations/customer_allocate.php:74
+#: ../sales/allocations/customer_allocate.php:81
 msgid "Abandon allocations and return to selection of allocatable amounts"
 msgstr ""
 
-#: purchasing/allocations/supplier_allocate.php:80
-#: sales/allocations/customer_allocate.php:77
+#: ../purchasing/allocations/supplier_allocate.php:81
+#: ../sales/allocations/customer_allocate.php:78
 msgid "There are no unsettled transactions to allocate."
 msgstr ""
 
-#: purchasing/allocations/supplier_allocation_main.php:26
+#: ../purchasing/allocations/supplier_allocation_main.php:26
 msgid "Supplier Allocations"
 msgstr ""
 
-#: purchasing/allocations/supplier_allocation_main.php:36
+#: ../purchasing/allocations/supplier_allocation_main.php:36
 msgid "Select a Supplier: "
 msgstr ""
 
-#: purchasing/allocations/supplier_allocation_main.php:39
-#: sales/allocations/customer_allocation_main.php:35
+#: ../purchasing/allocations/supplier_allocation_main.php:39
+#: ../sales/allocations/customer_allocation_main.php:35
 msgid "Show Settled Items:"
 msgstr ""
 
-#: purchasing/allocations/supplier_allocation_main.php:70
-#: sales/allocations/customer_allocation_main.php:74
+#: ../purchasing/allocations/supplier_allocation_main.php:70
+#: ../sales/allocations/customer_allocation_main.php:74
 msgid "Allocate"
 msgstr ""
 
-#: purchasing/allocations/supplier_allocation_main.php:111
-#: sales/allocations/customer_allocation_main.php:110
+#: ../purchasing/allocations/supplier_allocation_main.php:111
+#: ../sales/allocations/customer_allocation_main.php:110
 msgid "Marked items are settled."
 msgstr ""
 
-#: reporting/rep101.php:108 reporting/rep102.php:108 reporting/rep114.php:108
-#: reporting/rep202.php:112 reporting/rep203.php:83
+#: ../reporting/rep101.php:108
+#: ../reporting/rep102.php:108
+#: ../reporting/rep114.php:108
+#: ../reporting/rep202.php:112
+#: ../reporting/rep203.php:83
 msgid "Balances in Home Currency"
 msgstr ""
 
-#: reporting/rep101.php:118 reporting/rep201.php:110 reporting/rep203.php:93
-#: reporting/rep709.php:111 reporting/includes/doctext.inc:145
-#: reporting/includes/doctext.inc:186 reporting/includes/doctext.inc:224
+#: ../reporting/rep101.php:118
+#: ../reporting/rep201.php:110
+#: ../reporting/rep203.php:93
+#: ../reporting/rep709.php:111
+#: ../reporting/includes/doctext.inc:167
+#: ../reporting/includes/doctext.inc:208
+#: ../reporting/includes/doctext.inc:246
 msgid "Trans Type"
 msgstr ""
 
-#: reporting/rep101.php:118 reporting/rep201.php:110
-#: reporting/includes/doctext.inc:224
+#: ../reporting/rep101.php:118
+#: ../reporting/rep201.php:110
+#: ../reporting/includes/doctext.inc:246
 msgid "Charges"
 msgstr ""
 
-#: reporting/rep101.php:118 reporting/rep201.php:111
-#: reporting/includes/doctext.inc:225
+#: ../reporting/rep101.php:118
+#: ../reporting/rep201.php:111
+#: ../reporting/includes/doctext.inc:247
 msgid "Credits"
 msgstr ""
 
-#: reporting/rep101.php:129 reporting/rep102.php:136 reporting/rep201.php:121
-#: reporting/rep202.php:141 reporting/rep203.php:102 reporting/rep303.php:136
-#: reporting/reports_main.php:39 reporting/reports_main.php:49
-#: reporting/reports_main.php:156 reporting/reports_main.php:166
-#: reporting/reports_main.php:175 reporting/reports_main.php:227
+#: ../reporting/rep101.php:129
+#: ../reporting/rep102.php:136
+#: ../reporting/rep201.php:121
+#: ../reporting/rep202.php:141
+#: ../reporting/rep203.php:102
+#: ../reporting/rep303.php:136
+#: ../reporting/reports_main.php:39
+#: ../reporting/reports_main.php:49
+#: ../reporting/reports_main.php:156
+#: ../reporting/reports_main.php:166
+#: ../reporting/reports_main.php:175
+#: ../reporting/reports_main.php:227
 msgid "Suppress Zeros"
 msgstr ""
 
-#: reporting/rep101.php:131
+#: ../reporting/rep101.php:131
 msgid "Customer Balances"
 msgstr ""
 
-#: reporting/rep101.php:241 reporting/rep102.php:228 reporting/rep106.php:171
-#: reporting/rep201.php:233 reporting/rep202.php:235 reporting/rep203.php:181
-#: reporting/rep204.php:148 reporting/rep301.php:179 reporting/rep304.php:195
-#: reporting/rep305.php:188 reporting/rep306.php:293 reporting/rep309.php:158
+#: ../reporting/rep101.php:241
+#: ../reporting/rep102.php:228
+#: ../reporting/rep106.php:171
+#: ../reporting/rep201.php:233
+#: ../reporting/rep202.php:235
+#: ../reporting/rep203.php:181
+#: ../reporting/rep204.php:148
+#: ../reporting/rep301.php:179
+#: ../reporting/rep304.php:195
+#: ../reporting/rep305.php:188
+#: ../reporting/rep306.php:293
+#: ../reporting/rep309.php:158
 msgid "Grand Total"
 msgstr ""
 
-#: reporting/rep102.php:102 reporting/rep106.php:93 reporting/rep202.php:106
-#: reporting/rep709.php:95 reporting/reports_main.php:48
-#: reporting/reports_main.php:91 reporting/reports_main.php:165
-#: reporting/reports_main.php:211 reporting/reports_main.php:484
+#: ../reporting/rep102.php:102
+#: ../reporting/rep106.php:93
+#: ../reporting/rep202.php:106
+#: ../reporting/rep709.php:95
+#: ../reporting/reports_main.php:48
+#: ../reporting/reports_main.php:91
+#: ../reporting/reports_main.php:165
+#: ../reporting/reports_main.php:211
+#: ../reporting/reports_main.php:490
 msgid "Summary Only"
 msgstr ""
 
-#: reporting/rep102.php:104 reporting/rep202.php:108 reporting/rep709.php:97
+#: ../reporting/rep102.php:104
+#: ../reporting/rep202.php:108
+#: ../reporting/rep709.php:97
 msgid "Detailed Report"
 msgstr ""
 
-#: reporting/rep102.php:131 reporting/rep202.php:136 reporting/rep203.php:99
-#: reporting/rep301.php:110 reporting/reports_main.php:35
-#: reporting/reports_main.php:44 reporting/reports_main.php:65
-#: reporting/reports_main.php:81 reporting/reports_main.php:90
-#: reporting/reports_main.php:152 reporting/reports_main.php:161
-#: reporting/reports_main.php:172 reporting/reports_main.php:208
-#: reporting/reports_main.php:234 reporting/reports_main.php:243
-#: reporting/reports_main.php:249 reporting/reports_main.php:259
-#: reporting/reports_main.php:267 reporting/reports_main.php:275
-#: reporting/reports_main.php:312 reporting/reports_main.php:326
-#: reporting/reports_main.php:338 reporting/reports_main.php:356
-#: reporting/reports_main.php:367 reporting/reports_main.php:379
-#: reporting/reports_main.php:392 reporting/reports_main.php:408
-#: reporting/reports_main.php:418 reporting/reports_main.php:429
-#: reporting/reports_main.php:441 reporting/reports_main.php:455
-#: reporting/reports_main.php:464 reporting/reports_main.php:474
-#: reporting/reports_main.php:483 reporting/reports_main.php:490
+#: ../reporting/rep102.php:131
+#: ../reporting/rep202.php:136
+#: ../reporting/rep203.php:99
+#: ../reporting/rep301.php:110
+#: ../reporting/reports_main.php:35
+#: ../reporting/reports_main.php:44
+#: ../reporting/reports_main.php:65
+#: ../reporting/reports_main.php:81
+#: ../reporting/reports_main.php:90
+#: ../reporting/reports_main.php:152
+#: ../reporting/reports_main.php:161
+#: ../reporting/reports_main.php:172
+#: ../reporting/reports_main.php:208
+#: ../reporting/reports_main.php:234
+#: ../reporting/reports_main.php:243
+#: ../reporting/reports_main.php:249
+#: ../reporting/reports_main.php:259
+#: ../reporting/reports_main.php:267
+#: ../reporting/reports_main.php:275
+#: ../reporting/reports_main.php:312
+#: ../reporting/reports_main.php:320
+#: ../reporting/reports_main.php:332
+#: ../reporting/reports_main.php:344
+#: ../reporting/reports_main.php:362
+#: ../reporting/reports_main.php:373
+#: ../reporting/reports_main.php:385
+#: ../reporting/reports_main.php:398
+#: ../reporting/reports_main.php:414
+#: ../reporting/reports_main.php:424
+#: ../reporting/reports_main.php:435
+#: ../reporting/reports_main.php:447
+#: ../reporting/reports_main.php:461
+#: ../reporting/reports_main.php:470
+#: ../reporting/reports_main.php:480
+#: ../reporting/reports_main.php:489
+#: ../reporting/reports_main.php:496
 msgid "End Date"
 msgstr ""
 
-#: reporting/rep102.php:135 reporting/rep202.php:140
-#: reporting/reports_main.php:47 reporting/reports_main.php:123
-#: reporting/reports_main.php:164
+#: ../reporting/rep102.php:135
+#: ../reporting/rep202.php:140
+#: ../reporting/reports_main.php:47
+#: ../reporting/reports_main.php:123
+#: ../reporting/reports_main.php:164
 msgid "Show Also Allocated"
 msgstr ""
 
-#: reporting/rep102.php:140
+#: ../reporting/rep102.php:140
 msgid "Aged Customer Analysis"
 msgstr ""
 
-#: reporting/rep103.php:134
+#: ../reporting/rep103.php:134
 msgid "All Areas"
 msgstr ""
 
-#: reporting/rep103.php:138
+#: ../reporting/rep103.php:138
 msgid "All Sales Folk"
 msgstr ""
 
-#: reporting/rep103.php:142 reporting/rep205.php:89
+#: ../reporting/rep103.php:142
+#: ../reporting/rep205.php:89
 msgid "Greater than "
 msgstr ""
 
-#: reporting/rep103.php:146 reporting/rep205.php:93
+#: ../reporting/rep103.php:146
+#: ../reporting/rep205.php:93
 msgid "Less than "
 msgstr ""
 
-#: reporting/rep103.php:155
+#: ../reporting/rep103.php:155
 msgid "Customer Postal Address"
 msgstr ""
 
-#: reporting/rep103.php:155
+#: ../reporting/rep103.php:155
 msgid "Price/Turnover"
 msgstr ""
 
-#: reporting/rep103.php:155
+#: ../reporting/rep103.php:155
 msgid "Branch Contact Information"
 msgstr ""
 
-#: reporting/rep103.php:156
+#: ../reporting/rep103.php:156
 msgid "Branch Delivery Address"
 msgstr ""
 
-#: reporting/rep103.php:161 reporting/rep205.php:108
-#: reporting/reports_main.php:55 reporting/reports_main.php:185
+#: ../reporting/rep103.php:161
+#: ../reporting/rep205.php:108
+#: ../reporting/reports_main.php:55
+#: ../reporting/reports_main.php:185
 msgid "Activity Since"
 msgstr ""
 
-#: reporting/rep103.php:162 reporting/reports_main.php:56
-#: sales/manage/sales_areas.php:16
+#: ../reporting/rep103.php:162
+#: ../reporting/reports_main.php:56
+#: ../sales/manage/sales_areas.php:16
 msgid "Sales Areas"
 msgstr ""
 
-#: reporting/rep103.php:163 reporting/reports_main.php:57
+#: ../reporting/rep103.php:163
+#: ../reporting/reports_main.php:57
 msgid "Sales Folk"
 msgstr ""
 
-#: reporting/rep103.php:164 reporting/rep205.php:109
+#: ../reporting/rep103.php:164
+#: ../reporting/rep205.php:109
 msgid "Activity"
 msgstr ""
 
-#: reporting/rep103.php:166
+#: ../reporting/rep103.php:166
 msgid "Customer Details Listing"
 msgstr ""
 
-#: reporting/rep103.php:197
+#: ../reporting/rep103.php:197
 msgid "Customers in"
 msgstr ""
 
-#: reporting/rep103.php:218
+#: ../reporting/rep103.php:218
 msgid "Price List"
 msgstr ""
 
-#: reporting/rep103.php:246 reporting/rep205.php:164
+#: ../reporting/rep103.php:246
+#: ../reporting/rep205.php:164
 msgid "Ph"
 msgstr ""
 
-#: reporting/rep103.php:261 reporting/rep205.php:179
+#: ../reporting/rep103.php:261
+#: ../reporting/rep205.php:179
 msgid "Gereral Notes:"
 msgstr ""
 
-#: reporting/rep103.php:270 reporting/rep205.php:102 reporting/rep205.php:188
+#: ../reporting/rep103.php:270
+#: ../reporting/rep205.php:102
+#: ../reporting/rep205.php:188
 msgid "Turnover"
 msgstr ""
 
-#: reporting/rep103.php:277 reporting/rep106.php:88 reporting/rep205.php:195
-#: reporting/includes/header2.inc:110 sales/manage/sales_people.php:99
-msgid "Email"
-msgstr ""
-
-#: reporting/rep104.php:111
+#: ../reporting/rep104.php:111
 msgid "Category/Items"
 msgstr ""
 
-#: reporting/rep104.php:111 reporting/rep301.php:105 reporting/rep303.php:121
-#: reporting/rep303.php:127 reporting/rep307.php:117 reporting/rep308.php:149
+#: ../reporting/rep104.php:111
+#: ../reporting/rep301.php:105
+#: ../reporting/rep303.php:121
+#: ../reporting/rep303.php:127
+#: ../reporting/rep307.php:117
+#: ../reporting/rep308.php:149
 msgid "UOM"
 msgstr ""
 
-#: reporting/rep104.php:111
+#: ../reporting/rep104.php:111
 msgid "GP %"
 msgstr ""
 
-#: reporting/rep104.php:119 reporting/reports_main.php:75
+#: ../reporting/rep104.php:119
+#: ../reporting/reports_main.php:75
 msgid "Show GP %"
 msgstr ""
 
-#: reporting/rep104.php:126
+#: ../reporting/rep104.php:126
 msgid "Price Listing"
 msgstr ""
 
-#: reporting/rep104.php:195
+#: ../reporting/rep104.php:195
 msgid "Sales Kits"
 msgstr ""
 
-#: reporting/rep105.php:103
+#: ../reporting/rep105.php:103
 msgid "All Orders"
 msgstr ""
 
-#: reporting/rep105.php:105 reporting/reports_main.php:84
+#: ../reporting/rep105.php:105
+#: ../reporting/reports_main.php:84
 msgid "Back Orders Only"
 msgstr ""
 
-#: reporting/rep105.php:109 reporting/rep204.php:84
-#: sales/inquiry/customer_allocation_inquiry.php:147
-#: sales/inquiry/customer_inquiry.php:219
+#: ../reporting/rep105.php:109
+#: ../reporting/rep204.php:84
+#: ../sales/inquiry/customer_allocation_inquiry.php:147
+#: ../sales/inquiry/customer_inquiry.php:202
 msgid "Order"
 msgstr ""
 
-#: reporting/rep105.php:109 reporting/rep106.php:83 reporting/rep112.php:187
-#: sales/create_recurrent_invoices.php:134
-#: sales/customer_credit_invoice.php:236 sales/customer_delivery.php:339
-#: sales/customer_invoice.php:390 sales/manage/customers.php:254
-#: sales/manage/customers.php:293 sales/manage/recurrent_invoices.php:102
-#: sales/view/view_credit.php:58 sales/inquiry/customer_inquiry.php:224
-#: sales/inquiry/sales_deliveries_view.php:182
-#: sales/inquiry/sales_orders_view.php:265
-#: sales/inquiry/sales_orders_view.php:279
+#: ../reporting/rep105.php:109
+#: ../reporting/rep106.php:83
+#: ../reporting/rep112.php:175
+#: ../sales/create_recurrent_invoices.php:134
+#: ../sales/customer_credit_invoice.php:236
+#: ../sales/customer_delivery.php:353
+#: ../sales/customer_invoice.php:456
+#: ../sales/manage/customers.php:255
+#: ../sales/manage/customers.php:294
+#: ../sales/manage/recurrent_invoices.php:102
+#: ../sales/view/view_credit.php:58
+#: ../sales/inquiry/customer_inquiry.php:207
+#: ../sales/inquiry/sales_deliveries_view.php:182
+#: ../sales/inquiry/sales_orders_view.php:288
+#: ../sales/inquiry/sales_orders_view.php:302
 msgid "Branch"
 msgstr ""
 
-#: reporting/rep105.php:109 reporting/rep106.php:83
+#: ../reporting/rep105.php:109
+#: ../reporting/rep106.php:83
 msgid "Customer Ref"
 msgstr ""
 
-#: reporting/rep105.php:110
+#: ../reporting/rep105.php:110
 msgid "Ord Date"
 msgstr ""
 
-#: reporting/rep105.php:110
+#: ../reporting/rep105.php:110
 msgid "Del Date"
 msgstr ""
 
-#: reporting/rep105.php:110 reporting/rep401.php:71
+#: ../reporting/rep105.php:110
+#: ../reporting/rep401.php:71
 msgid "Loc"
 msgstr ""
 
-#: reporting/rep105.php:114 sales/customer_delivery.php:432
-#: sales/customer_invoice.php:478 sales/includes/ui/sales_order_ui.inc:145
+#: ../reporting/rep105.php:114
+#: ../sales/customer_delivery.php:446
+#: ../sales/customer_invoice.php:553
+#: ../sales/includes/ui/sales_order_ui.inc:146
 msgid "Delivered"
 msgstr ""
 
-#: reporting/rep105.php:121
+#: ../reporting/rep105.php:121
 msgid "Selection"
 msgstr ""
 
-#: reporting/rep105.php:125
+#: ../reporting/rep105.php:125
 msgid "Order Status Listing"
 msgstr ""
 
-#: reporting/rep106.php:84
+#: ../reporting/rep106.php:84
 msgid "Inv Date"
 msgstr ""
 
-#: reporting/rep106.php:84 reporting/rep106.php:88 reporting/rep106.php:89
-#: sales/manage/sales_people.php:99 sales/manage/sales_people.php:159
-#: sales/manage/sales_people.php:161
+#: ../reporting/rep106.php:84
+#: ../reporting/rep106.php:88
+#: ../reporting/rep106.php:89
+#: ../sales/manage/sales_people.php:99
+#: ../sales/manage/sales_people.php:159
+#: ../sales/manage/sales_people.php:161
 msgid "Provision"
 msgstr ""
 
-#: reporting/rep106.php:88
+#: ../reporting/rep106.php:88
 msgid "Salesman"
 msgstr ""
 
-#: reporting/rep106.php:89 sales/manage/sales_people.php:99
+#: ../reporting/rep106.php:89
+#: ../sales/manage/sales_people.php:99
 msgid "Break Pt."
 msgstr ""
 
-#: reporting/rep106.php:97
+#: ../reporting/rep106.php:97
 msgid "Salesman Listing"
 msgstr ""
 
-#: reporting/rep107.php:68 reporting/rep107.php:89
-#: reporting/includes/doctext.inc:105
+#: ../reporting/rep107.php:88
+#: ../reporting/rep107.php:111
+#: ../reporting/includes/doctext.inc:118
 msgid "INVOICE"
 msgstr ""
 
-#: reporting/rep107.php:153 reporting/rep109.php:152 reporting/rep110.php:162
-#: reporting/rep111.php:137 reporting/rep113.php:147
-#: sales/view/view_credit.php:138 sales/view/view_dispatch.php:155
-#: sales/view/view_invoice.php:157 sales/view/view_sales_order.php:227
-#: sales/includes/ui/sales_credit_ui.inc:222
+#: ../reporting/rep107.php:196
+msgid "Prepayments invoiced to this order up to day:"
+msgstr ""
+
+#: ../reporting/rep107.php:203
+msgid "Invoice reference"
+msgstr ""
+
+#: ../reporting/rep107.php:220
+msgid "Total payments:"
+msgstr ""
+
+#: ../reporting/rep107.php:234
+#: ../reporting/rep109.php:158
+#: ../reporting/rep110.php:162
+#: ../reporting/rep111.php:137
+#: ../reporting/rep113.php:147
+#: ../sales/view/view_credit.php:138
+#: ../sales/view/view_dispatch.php:155
+#: ../sales/view/view_invoice.php:159
+#: ../sales/view/view_sales_order.php:245
+#: ../sales/includes/ui/sales_credit_ui.inc:222
 msgid "Shipping"
 msgstr ""
 
-#: reporting/rep108.php:85 reporting/rep108.php:110
-#: reporting/includes/doctext.inc:216
+#: ../reporting/rep107.php:280
+#: ../reporting/rep109.php:210
+#: ../reporting/rep111.php:189
+msgid "TOTAL ORDER VAT INCL."
+msgstr ""
+
+#: ../reporting/rep107.php:286
+msgid "THIS INVOICE"
+msgstr ""
+
+#: ../reporting/rep108.php:85
+#: ../reporting/rep108.php:110
+#: ../reporting/includes/doctext.inc:238
 msgid "STATEMENT"
 msgstr ""
 
-#: reporting/rep108.php:127
+#: ../reporting/rep108.php:127
 msgid "Outstanding Transactions"
 msgstr ""
 
-#: reporting/rep108.php:170
+#: ../reporting/rep108.php:170
 msgid "Statement"
 msgstr ""
 
-#: reporting/rep108.php:170
+#: ../reporting/rep108.php:170
 msgid "as of"
 msgstr ""
 
-#: reporting/rep109.php:65 reporting/rep109.php:88 reporting/rep109.php:93
-#: reporting/includes/doctext.inc:53
+#: ../reporting/rep109.php:66
+#: ../reporting/rep109.php:94
+#: ../reporting/rep109.php:99
+#: ../reporting/includes/doctext.inc:65
 msgid "SALES ORDER"
 msgstr ""
 
-#: reporting/rep109.php:67 reporting/rep109.php:83 reporting/rep109.php:93
-#: reporting/includes/doctext.inc:53
+#: ../reporting/rep109.php:68
+#: ../reporting/rep109.php:89
+#: ../reporting/rep109.php:99
+#: ../reporting/includes/doctext.inc:65
 msgid "QUOTE"
 msgstr ""
 
-#: reporting/rep109.php:158 reporting/rep111.php:143
+#: ../reporting/rep109.php:164
+#: ../reporting/rep111.php:143
 msgid "TOTAL ORDER EX VAT"
 msgstr ""
 
-#: reporting/rep109.php:204 reporting/rep111.php:189
-msgid "TOTAL ORDER VAT INCL."
-msgstr ""
-
-#: reporting/rep110.php:70
+#: ../reporting/rep110.php:70
 msgid "DELIVERY"
 msgstr ""
 
-#: reporting/rep110.php:72 reporting/rep110.php:93
-#: reporting/includes/doctext.inc:70
+#: ../reporting/rep110.php:72
+#: ../reporting/rep110.php:93
+#: ../reporting/includes/doctext.inc:82
 msgid "PACKING SLIP"
 msgstr ""
 
-#: reporting/rep110.php:88 reporting/includes/doctext.inc:70
+#: ../reporting/rep110.php:88
+#: ../reporting/includes/doctext.inc:82
 msgid "DELIVERY NOTE"
 msgstr ""
 
-#: reporting/rep110.php:206
+#: ../reporting/rep110.php:206
 msgid "TOTAL DELIVERY INCL. VAT"
 msgstr ""
 
-#: reporting/rep111.php:60 reporting/includes/doctext.inc:38
+#: ../reporting/rep111.php:60
+#: ../reporting/includes/doctext.inc:50
 msgid "SALES QUOTATION"
 msgstr ""
 
-#: reporting/rep112.php:95 reporting/includes/doctext.inc:176
+#: ../reporting/rep112.php:83
+#: ../reporting/includes/doctext.inc:198
 msgid "RECEIPT"
 msgstr ""
 
-#: reporting/rep112.php:126 reporting/rep210.php:134
+#: ../reporting/rep112.php:114
+#: ../reporting/rep210.php:122
 msgid "As advance / full / part / payment towards:"
 msgstr ""
 
-#: reporting/rep112.php:167
+#: ../reporting/rep112.php:155
 msgid "TOTAL RECEIPT"
 msgstr ""
 
-#: reporting/rep112.php:178
+#: ../reporting/rep112.php:166
 msgid "Received / Sign"
 msgstr ""
 
-#: reporting/rep112.php:180
+#: ../reporting/rep112.php:168
 msgid "By Cash / Cheque* / Draft No."
 msgstr ""
 
-#: reporting/rep112.php:182
+#: ../reporting/rep112.php:170
 msgid "Dated"
 msgstr ""
 
-#: reporting/rep112.php:185
+#: ../reporting/rep112.php:173
 msgid "Drawn on Bank"
 msgstr ""
 
-#: reporting/rep113.php:67 reporting/rep113.php:86
-#: reporting/includes/doctext.inc:91
+#: ../reporting/rep113.php:67
+#: ../reporting/rep113.php:86
+#: ../reporting/includes/doctext.inc:103
 msgid "CREDIT NOTE"
 msgstr ""
 
-#: reporting/rep113.php:191 sales/view/view_credit.php:143
+#: ../reporting/rep113.php:191
+#: ../sales/view/view_credit.php:143
 msgid "TOTAL CREDIT"
 msgstr ""
 
-#: reporting/rep114.php:87
+#: ../reporting/rep114.php:87
 msgid "Sales Summary Report"
 msgstr ""
 
-#: reporting/rep114.php:91 reporting/reports_main.php:66
+#: ../reporting/rep114.php:91
+#: ../reporting/reports_main.php:66
 msgid "Tax Id Only"
 msgstr ""
 
-#: reporting/rep114.php:95
+#: ../reporting/rep114.php:95
 msgid "Tax Id"
 msgstr ""
 
-#: reporting/rep114.php:95
+#: ../reporting/rep114.php:95
 msgid "Total ex. Tax"
 msgstr ""
 
-#: reporting/rep114.php:95 reporting/rep709.php:112 taxes/tax_groups.php:177
+#: ../reporting/rep114.php:95
+#: ../reporting/rep709.php:112
+#: ../taxes/tax_groups.php:171
 msgid "Tax"
 msgstr ""
 
-#: reporting/rep201.php:100
+#: ../reporting/rep201.php:100
 msgid "Balances in Home currency"
 msgstr ""
 
-#: reporting/rep201.php:123
+#: ../reporting/rep201.php:123
 msgid "Supplier Balances"
 msgstr ""
 
-#: reporting/rep202.php:144
+#: ../reporting/rep202.php:144
 msgid "currency"
 msgstr ""
 
-#: reporting/rep202.php:145
+#: ../reporting/rep202.php:145
 msgid "Aged Supplier Analysis"
 msgstr ""
 
-#: reporting/rep203.php:104
+#: ../reporting/rep203.php:104
 msgid "Payment Report"
 msgstr ""
 
-#: reporting/rep204.php:84
+#: ../reporting/rep204.php:84
 msgid "Qty Recd"
 msgstr ""
 
-#: reporting/rep204.php:84
+#: ../reporting/rep204.php:84
 msgid "qty Inv"
 msgstr ""
 
-#: reporting/rep204.php:85
+#: ../reporting/rep204.php:85
 msgid "Act Price"
 msgstr ""
 
-#: reporting/rep204.php:92
+#: ../reporting/rep204.php:92
 msgid "Outstanding GRNs Report"
 msgstr ""
 
-#: reporting/rep205.php:102
+#: ../reporting/rep205.php:102
 msgid "Contact Information"
 msgstr ""
 
-#: reporting/rep205.php:103
+#: ../reporting/rep205.php:103
 msgid "Physical Address"
 msgstr ""
 
-#: reporting/rep205.php:111
+#: ../reporting/rep205.php:111
 msgid "Supplier Details Listing"
 msgstr ""
 
-#: reporting/rep205.php:139
+#: ../reporting/rep205.php:139
 msgid "Tax_Id"
 msgstr ""
 
-#: reporting/rep209.php:87 reporting/rep209.php:100
-#: reporting/includes/doctext.inc:149
+#: ../reporting/rep209.php:87
+#: ../reporting/rep209.php:100
+#: ../reporting/includes/doctext.inc:171
 msgid "PURCHASE ORDER"
 msgstr ""
 
-#: reporting/rep209.php:206
+#: ../reporting/rep209.php:209
 msgid "TOTAL PO"
 msgstr ""
 
-#: reporting/rep210.php:96 reporting/rep210.php:118
-#: reporting/includes/doctext.inc:129
+#: ../reporting/rep210.php:84
+#: ../reporting/rep210.php:106
+#: ../reporting/includes/doctext.inc:151
 msgid "REMITTANCE"
 msgstr ""
 
-#: reporting/rep210.php:177
+#: ../reporting/rep210.php:165
 msgid "TOTAL REMITTANCE"
 msgstr ""
 
-#: reporting/rep301.php:114
+#: ../reporting/rep301.php:114
 msgid "Inventory Valuation Report"
 msgstr ""
 
-#: reporting/rep302.php:125
+#: ../reporting/rep302.php:125
 msgid "QOH"
 msgstr ""
 
-#: reporting/rep302.php:125
+#: ../reporting/rep302.php:125
 msgid "Cust Ord"
 msgstr ""
 
-#: reporting/rep302.php:125
+#: ../reporting/rep302.php:125
 msgid "Supp Ord"
 msgstr ""
 
-#: reporting/rep302.php:125
+#: ../reporting/rep302.php:125
 msgid "Sugg Ord"
 msgstr ""
 
-#: reporting/rep302.php:134
+#: ../reporting/rep302.php:134
 msgid "Inventory Planning Report"
 msgstr ""
 
-#: reporting/rep303.php:109
+#: ../reporting/rep303.php:109
 msgid "Shortage"
 msgstr ""
 
-#: reporting/rep303.php:121 reporting/rep303.php:127 reporting/rep305.php:101
+#: ../reporting/rep303.php:121
+#: ../reporting/rep303.php:127
+#: ../reporting/rep305.php:101
 msgid "Stock ID"
 msgstr ""
 
-#: reporting/rep303.php:121
+#: ../reporting/rep303.php:121
 msgid "Check"
 msgstr ""
 
-#: reporting/rep303.php:135
+#: ../reporting/rep303.php:135
 msgid "Only Shortage"
 msgstr ""
 
-#: reporting/rep303.php:143
+#: ../reporting/rep303.php:143
 msgid "Stock Check Sheets"
 msgstr ""
 
-#: reporting/rep304.php:114 reporting/rep305.php:101 reporting/rep306.php:141
-#: reporting/rep309.php:98
+#: ../reporting/rep304.php:114
+#: ../reporting/rep305.php:101
+#: ../reporting/rep306.php:141
+#: ../reporting/rep309.php:98
 msgid "Qty"
 msgstr ""
 
-#: reporting/rep304.php:114 reporting/rep309.php:98
-#: sales/manage/customer_branches.php:240 sales/manage/customers.php:263
+#: ../reporting/rep304.php:114
+#: ../reporting/rep309.php:98
+#: ../sales/manage/customer_branches.php:241
+#: ../sales/manage/customers.php:264
 msgid "Sales"
 msgstr ""
 
-#: reporting/rep304.php:114
+#: ../reporting/rep304.php:114
 msgid "Cost"
 msgstr ""
 
-#: reporting/rep304.php:114
+#: ../reporting/rep304.php:114
 msgid "Contribution"
 msgstr ""
 
-#: reporting/rep304.php:126
+#: ../reporting/rep304.php:126
 msgid "Inventory Sales Report"
 msgstr ""
 
-#: reporting/rep305.php:101
+#: ../reporting/rep305.php:101
 msgid "PO No"
 msgstr ""
 
-#: reporting/rep305.php:101
+#: ../reporting/rep305.php:101
 msgid "Inv"
 msgstr ""
 
-#: reporting/rep305.php:101
+#: ../reporting/rep305.php:101
 msgid "Inv Price"
 msgstr ""
 
-#: reporting/rep305.php:101
+#: ../reporting/rep305.php:101
 msgid "PO Price"
 msgstr ""
 
-#: reporting/rep305.php:108
+#: ../reporting/rep305.php:108
 msgid "GRN Valuation Report"
 msgstr ""
 
-#: reporting/rep306.php:141 reporting/rep309.php:98
+#: ../reporting/rep306.php:141
+#: ../reporting/rep309.php:98
 msgid "Unit Price"
 msgstr ""
 
-#: reporting/rep306.php:154
+#: ../reporting/rep306.php:154
 msgid "Inventory Purchasing Report"
 msgstr ""
 
-#: reporting/rep307.php:117
+#: ../reporting/rep307.php:117
 msgid "Opening"
 msgstr ""
 
-#: reporting/rep307.php:126
+#: ../reporting/rep307.php:126
 msgid "Inventory Movements"
 msgstr ""
 
-#: reporting/rep308.php:149
+#: ../reporting/rep308.php:149
 msgid "OpeningStock"
 msgstr ""
 
-#: reporting/rep308.php:149
+#: ../reporting/rep308.php:149
 msgid "StockIn"
 msgstr ""
 
-#: reporting/rep308.php:149
+#: ../reporting/rep308.php:149
 msgid "ClosingStock"
 msgstr ""
 
-#: reporting/rep308.php:150
+#: ../reporting/rep308.php:150
 msgid "QTY"
 msgstr ""
 
-#: reporting/rep308.php:150 reporting/rep709.php:112
-#: taxes/item_tax_types.php:185
+#: ../reporting/rep308.php:150
+#: ../reporting/rep709.php:112
+#: ../taxes/item_tax_types.php:185
 msgid "Rate"
 msgstr ""
 
-#: reporting/rep308.php:159
+#: ../reporting/rep308.php:159
 msgid "Costed Inventory Movements"
 msgstr ""
 
-#: reporting/rep309.php:98
+#: ../reporting/rep309.php:98
 msgid "Item/Category"
 msgstr ""
 
-#: reporting/rep309.php:98
+#: ../reporting/rep309.php:98
 msgid "Remark"
 msgstr ""
 
-#: reporting/rep309.php:106
+#: ../reporting/rep309.php:106
 msgid "Item Sales Summary Report"
 msgstr ""
 
-#: reporting/rep309.php:147
+#: ../reporting/rep309.php:147
 msgid "Gift"
 msgstr ""
 
-#: reporting/rep401.php:71
+#: ../reporting/rep401.php:71
 msgid "Wrk Ctr"
 msgstr ""
 
-#: reporting/rep401.php:78
+#: ../reporting/rep401.php:78
 msgid "Bill of Material Listing"
 msgstr ""
 
-#: reporting/rep409.php:60 reporting/rep409.php:73
-#: reporting/includes/doctext.inc:192
+#: ../reporting/rep409.php:59
+#: ../reporting/rep409.php:72
+#: ../reporting/includes/doctext.inc:214
 msgid "WORK ORDER"
 msgstr ""
 
-#: reporting/rep409.php:129
+#: ../reporting/rep409.php:128
 msgid "Insufficient stock"
 msgstr ""
 
-#: reporting/rep501.php:87
+#: ../reporting/rep501.php:87
 msgid "YTD"
 msgstr ""
 
-#: reporting/rep501.php:94
+#: ../reporting/rep501.php:94
 msgid "Dimension Summary"
 msgstr ""
 
-#: reporting/rep601.php:86 reporting/includes/doctext.inc:247
+#: ../reporting/rep601.php:86
+#: ../reporting/rep602.php:87
+#: ../reporting/includes/doctext.inc:260
 msgid "Bank Account"
 msgstr ""
 
-#: reporting/rep601.php:151
+#: ../reporting/rep601.php:151
+#: ../reporting/rep602.php:151
 msgid "Total Debit / Credit"
 msgstr ""
 
-#: reporting/rep601.php:168
+#: ../reporting/rep601.php:168
+#: ../reporting/rep602.php:167
 msgid "Net Change"
 msgstr ""
 
-#: reporting/rep702.php:53
+#: ../reporting/rep602.php:73
+msgid "Bank Statement w/Reconcile"
+msgstr ""
+
+#: ../reporting/rep602.php:81
+msgid "Reco Date"
+msgstr ""
+
+#: ../reporting/rep602.php:81
+msgid "Narration"
+msgstr ""
+
+#: ../reporting/rep602.php:195
+msgid "Bank Balance"
+msgstr ""
+
+#: ../reporting/rep702.php:53
 msgid "Type/Account"
 msgstr ""
 
-#: reporting/rep702.php:53
+#: ../reporting/rep702.php:53
 msgid "Date/Dim."
 msgstr ""
 
-#: reporting/rep702.php:54
+#: ../reporting/rep702.php:54
 msgid "Person/Item/Memo"
 msgstr ""
 
-#: reporting/rep702.php:64
+#: ../reporting/rep702.php:64
 msgid "List of Journal Entries"
 msgstr ""
 
-#: reporting/rep704.php:71
+#: ../reporting/rep704.php:71
 msgid "GL Account Transactions"
 msgstr ""
 
-#: reporting/rep705.php:247 reporting/rep705.php:260 reporting/rep705.php:271
-#: reporting/reports_main.php:347 reporting/reports_main.php:400
-#: reporting/reports_main.php:448
+#: ../reporting/rep705.php:247
+#: ../reporting/rep705.php:260
+#: ../reporting/rep705.php:271
+#: ../reporting/reports_main.php:353
+#: ../reporting/reports_main.php:406
+#: ../reporting/reports_main.php:454
 msgid "Year"
 msgstr ""
 
-#: reporting/rep705.php:253 reporting/rep705.php:264 reporting/rep705.php:273
-#: reporting/rep706.php:198 reporting/rep706.php:206 reporting/rep706.php:212
-#: reporting/rep707.php:222 reporting/rep707.php:230 reporting/rep707.php:236
+#: ../reporting/rep705.php:253
+#: ../reporting/rep705.php:264
+#: ../reporting/rep705.php:273
+#: ../reporting/rep706.php:198
+#: ../reporting/rep706.php:206
+#: ../reporting/rep706.php:212
+#: ../reporting/rep707.php:222
+#: ../reporting/rep707.php:230
+#: ../reporting/rep707.php:236
 msgid "Tags"
 msgstr ""
 
-#: reporting/rep705.php:254 reporting/rep705.php:265 reporting/rep705.php:274
+#: ../reporting/rep705.php:254
+#: ../reporting/rep705.php:265
+#: ../reporting/rep705.php:274
 msgid "Amounts in thousands"
 msgstr ""
 
-#: reporting/rep705.php:278
+#: ../reporting/rep705.php:278
 msgid "Annual Expense Breakdown"
 msgstr ""
 
-#: reporting/rep706.php:186
+#: ../reporting/rep706.php:186
 msgid "Close Balance"
 msgstr ""
 
-#: reporting/rep707.php:258
+#: ../reporting/rep707.php:258
 msgid "Profit and Loss Statement"
 msgstr ""
 
-#: reporting/rep709.php:93
+#: ../reporting/rep709.php:93
 msgid "Tax Report"
 msgstr ""
 
-#: reporting/rep709.php:111
+#: ../reporting/rep709.php:111
 msgid "Branch Name"
 msgstr ""
 
-#: reporting/rep709.php:112
+#: ../reporting/rep709.php:112
 msgid "Net"
 msgstr ""
 
-#: reporting/rep709.php:183
+#: ../reporting/rep709.php:183
 msgid "Tax Rate"
 msgstr ""
 
-#: reporting/rep709.php:183
+#: ../reporting/rep709.php:183
 msgid "Net Tax"
 msgstr ""
 
-#: reporting/rep710.php:77
+#: ../reporting/rep710.php:77
 msgid "Time"
 msgstr ""
 
-#: reporting/rep710.php:77
+#: ../reporting/rep710.php:77
 msgid "Trans Date"
 msgstr ""
 
-#: reporting/rep710.php:78
+#: ../reporting/rep710.php:78
 msgid "Action"
 msgstr ""
 
-#: reporting/rep710.php:89 reporting/reports_main.php:488
+#: ../reporting/rep710.php:89
+#: ../reporting/reports_main.php:494
 msgid "Audit Trail"
 msgstr ""
 
-#: reporting/rep710.php:111
+#: ../reporting/rep710.php:111
 msgid "Changed"
 msgstr ""
 
-#: reporting/reports_main.php:26
+#: ../reporting/reports_main.php:26
 msgid "Reports and Analysis"
 msgstr ""
 
-#: reporting/reports_main.php:33
+#: ../reporting/reports_main.php:33
 msgid "Customer &Balances"
 msgstr ""
 
-#: reporting/reports_main.php:37 reporting/reports_main.php:154
-#: reporting/reports_main.php:300
+#: ../reporting/reports_main.php:37
+#: ../reporting/reports_main.php:154
+#: ../reporting/reports_main.php:300
 msgid "Show Balance"
 msgstr ""
 
-#: reporting/reports_main.php:38 reporting/reports_main.php:46
-#: reporting/reports_main.php:71 reporting/reports_main.php:98
-#: reporting/reports_main.php:108 reporting/reports_main.php:122
-#: reporting/reports_main.php:130 reporting/reports_main.php:138
-#: reporting/reports_main.php:145 reporting/reports_main.php:155
-#: reporting/reports_main.php:163 reporting/reports_main.php:174
-#: reporting/reports_main.php:194 reporting/reports_main.php:201
+#: ../reporting/reports_main.php:38
+#: ../reporting/reports_main.php:46
+#: ../reporting/reports_main.php:71
+#: ../reporting/reports_main.php:98
+#: ../reporting/reports_main.php:108
+#: ../reporting/reports_main.php:122
+#: ../reporting/reports_main.php:130
+#: ../reporting/reports_main.php:138
+#: ../reporting/reports_main.php:145
+#: ../reporting/reports_main.php:155
+#: ../reporting/reports_main.php:163
+#: ../reporting/reports_main.php:174
+#: ../reporting/reports_main.php:194
+#: ../reporting/reports_main.php:201
 msgid "Currency Filter"
 msgstr ""
 
-#: reporting/reports_main.php:41 reporting/reports_main.php:52
-#: reporting/reports_main.php:61 reporting/reports_main.php:68
-#: reporting/reports_main.php:77 reporting/reports_main.php:86
-#: reporting/reports_main.php:93 reporting/reports_main.php:103
-#: reporting/reports_main.php:112 reporting/reports_main.php:119
-#: reporting/reports_main.php:126 reporting/reports_main.php:134
-#: reporting/reports_main.php:141 reporting/reports_main.php:147
-#: reporting/reports_main.php:158 reporting/reports_main.php:169
-#: reporting/reports_main.php:177 reporting/reports_main.php:182
-#: reporting/reports_main.php:189 reporting/reports_main.php:197
-#: reporting/reports_main.php:204 reporting/reports_main.php:213
-#: reporting/reports_main.php:219 reporting/reports_main.php:230
-#: reporting/reports_main.php:239 reporting/reports_main.php:245
-#: reporting/reports_main.php:255 reporting/reports_main.php:263
-#: reporting/reports_main.php:271 reporting/reports_main.php:278
-#: reporting/reports_main.php:286 reporting/reports_main.php:293
-#: reporting/reports_main.php:302 reporting/reports_main.php:315
-#: reporting/reports_main.php:322 reporting/reports_main.php:329
-#: reporting/reports_main.php:344 reporting/reports_main.php:352
-#: reporting/reports_main.php:363 reporting/reports_main.php:375
-#: reporting/reports_main.php:385 reporting/reports_main.php:397
-#: reporting/reports_main.php:404 reporting/reports_main.php:414
-#: reporting/reports_main.php:425 reporting/reports_main.php:434
-#: reporting/reports_main.php:445 reporting/reports_main.php:451
-#: reporting/reports_main.php:460 reporting/reports_main.php:470
-#: reporting/reports_main.php:478 reporting/reports_main.php:486
-#: reporting/reports_main.php:494
+#: ../reporting/reports_main.php:41
+#: ../reporting/reports_main.php:52
+#: ../reporting/reports_main.php:61
+#: ../reporting/reports_main.php:68
+#: ../reporting/reports_main.php:77
+#: ../reporting/reports_main.php:86
+#: ../reporting/reports_main.php:93
+#: ../reporting/reports_main.php:103
+#: ../reporting/reports_main.php:112
+#: ../reporting/reports_main.php:119
+#: ../reporting/reports_main.php:126
+#: ../reporting/reports_main.php:134
+#: ../reporting/reports_main.php:141
+#: ../reporting/reports_main.php:147
+#: ../reporting/reports_main.php:158
+#: ../reporting/reports_main.php:169
+#: ../reporting/reports_main.php:177
+#: ../reporting/reports_main.php:182
+#: ../reporting/reports_main.php:189
+#: ../reporting/reports_main.php:197
+#: ../reporting/reports_main.php:204
+#: ../reporting/reports_main.php:213
+#: ../reporting/reports_main.php:219
+#: ../reporting/reports_main.php:230
+#: ../reporting/reports_main.php:239
+#: ../reporting/reports_main.php:245
+#: ../reporting/reports_main.php:255
+#: ../reporting/reports_main.php:263
+#: ../reporting/reports_main.php:271
+#: ../reporting/reports_main.php:278
+#: ../reporting/reports_main.php:286
+#: ../reporting/reports_main.php:293
+#: ../reporting/reports_main.php:302
+#: ../reporting/reports_main.php:315
+#: ../reporting/reports_main.php:328
+#: ../reporting/reports_main.php:335
+#: ../reporting/reports_main.php:350
+#: ../reporting/reports_main.php:358
+#: ../reporting/reports_main.php:369
+#: ../reporting/reports_main.php:381
+#: ../reporting/reports_main.php:391
+#: ../reporting/reports_main.php:403
+#: ../reporting/reports_main.php:410
+#: ../reporting/reports_main.php:420
+#: ../reporting/reports_main.php:431
+#: ../reporting/reports_main.php:440
+#: ../reporting/reports_main.php:451
+#: ../reporting/reports_main.php:457
+#: ../reporting/reports_main.php:466
+#: ../reporting/reports_main.php:476
+#: ../reporting/reports_main.php:484
+#: ../reporting/reports_main.php:492
+#: ../reporting/reports_main.php:500
 msgid "Orientation"
 msgstr ""
 
-#: reporting/reports_main.php:42 reporting/reports_main.php:53
-#: reporting/reports_main.php:62 reporting/reports_main.php:69
-#: reporting/reports_main.php:78 reporting/reports_main.php:87
-#: reporting/reports_main.php:94 reporting/reports_main.php:159
-#: reporting/reports_main.php:170 reporting/reports_main.php:178
-#: reporting/reports_main.php:183 reporting/reports_main.php:190
-#: reporting/reports_main.php:214 reporting/reports_main.php:220
-#: reporting/reports_main.php:231 reporting/reports_main.php:240
-#: reporting/reports_main.php:246 reporting/reports_main.php:256
-#: reporting/reports_main.php:264 reporting/reports_main.php:272
-#: reporting/reports_main.php:279 reporting/reports_main.php:287
-#: reporting/reports_main.php:303 reporting/reports_main.php:316
-#: reporting/reports_main.php:323 reporting/reports_main.php:330
-#: reporting/reports_main.php:345 reporting/reports_main.php:353
-#: reporting/reports_main.php:364 reporting/reports_main.php:376
-#: reporting/reports_main.php:386 reporting/reports_main.php:398
-#: reporting/reports_main.php:405 reporting/reports_main.php:415
-#: reporting/reports_main.php:426 reporting/reports_main.php:435
-#: reporting/reports_main.php:446 reporting/reports_main.php:452
-#: reporting/reports_main.php:461 reporting/reports_main.php:471
-#: reporting/reports_main.php:479 reporting/reports_main.php:487
-#: reporting/reports_main.php:495
+#: ../reporting/reports_main.php:42
+#: ../reporting/reports_main.php:53
+#: ../reporting/reports_main.php:62
+#: ../reporting/reports_main.php:69
+#: ../reporting/reports_main.php:78
+#: ../reporting/reports_main.php:87
+#: ../reporting/reports_main.php:94
+#: ../reporting/reports_main.php:159
+#: ../reporting/reports_main.php:170
+#: ../reporting/reports_main.php:178
+#: ../reporting/reports_main.php:183
+#: ../reporting/reports_main.php:190
+#: ../reporting/reports_main.php:214
+#: ../reporting/reports_main.php:220
+#: ../reporting/reports_main.php:231
+#: ../reporting/reports_main.php:240
+#: ../reporting/reports_main.php:246
+#: ../reporting/reports_main.php:256
+#: ../reporting/reports_main.php:264
+#: ../reporting/reports_main.php:272
+#: ../reporting/reports_main.php:279
+#: ../reporting/reports_main.php:287
+#: ../reporting/reports_main.php:303
+#: ../reporting/reports_main.php:316
+#: ../reporting/reports_main.php:322
+#: ../reporting/reports_main.php:329
+#: ../reporting/reports_main.php:336
+#: ../reporting/reports_main.php:351
+#: ../reporting/reports_main.php:359
+#: ../reporting/reports_main.php:370
+#: ../reporting/reports_main.php:382
+#: ../reporting/reports_main.php:392
+#: ../reporting/reports_main.php:404
+#: ../reporting/reports_main.php:411
+#: ../reporting/reports_main.php:421
+#: ../reporting/reports_main.php:432
+#: ../reporting/reports_main.php:441
+#: ../reporting/reports_main.php:452
+#: ../reporting/reports_main.php:458
+#: ../reporting/reports_main.php:467
+#: ../reporting/reports_main.php:477
+#: ../reporting/reports_main.php:485
+#: ../reporting/reports_main.php:493
+#: ../reporting/reports_main.php:501
 msgid "Destination"
 msgstr ""
 
-#: reporting/reports_main.php:43
+#: ../reporting/reports_main.php:43
 msgid "&Aged Customer Analysis"
 msgstr ""
 
-#: reporting/reports_main.php:50 reporting/reports_main.php:167
-#: reporting/reports_main.php:361 reporting/reports_main.php:373
-#: reporting/reports_main.php:412 reporting/reports_main.php:423
-#: reporting/reports_main.php:458 reporting/reports_main.php:468
+#: ../reporting/reports_main.php:50
+#: ../reporting/reports_main.php:167
+#: ../reporting/reports_main.php:367
+#: ../reporting/reports_main.php:379
+#: ../reporting/reports_main.php:418
+#: ../reporting/reports_main.php:429
+#: ../reporting/reports_main.php:464
+#: ../reporting/reports_main.php:474
 msgid "Graphics"
 msgstr ""
 
-#: reporting/reports_main.php:54
+#: ../reporting/reports_main.php:54
 msgid "Customer &Detail Listing"
 msgstr ""
 
-#: reporting/reports_main.php:58 reporting/reports_main.php:186
+#: ../reporting/reports_main.php:58
+#: ../reporting/reports_main.php:186
 msgid "Activity Greater Than"
 msgstr ""
 
-#: reporting/reports_main.php:59 reporting/reports_main.php:187
+#: ../reporting/reports_main.php:59
+#: ../reporting/reports_main.php:187
 msgid "Activity Less Than"
 msgstr ""
 
-#: reporting/reports_main.php:63
+#: ../reporting/reports_main.php:63
 msgid "Sales &Summary Report"
 msgstr ""
 
-#: reporting/reports_main.php:70
+#: ../reporting/reports_main.php:70
 msgid "&Price Listing"
 msgstr ""
 
-#: reporting/reports_main.php:72 reporting/reports_main.php:82
-#: reporting/reports_main.php:209 reporting/reports_main.php:216
-#: reporting/reports_main.php:222 reporting/reports_main.php:235
-#: reporting/reports_main.php:250 reporting/reports_main.php:260
-#: reporting/reports_main.php:268 reporting/reports_main.php:276
+#: ../reporting/reports_main.php:72
+#: ../reporting/reports_main.php:82
+#: ../reporting/reports_main.php:209
+#: ../reporting/reports_main.php:216
+#: ../reporting/reports_main.php:222
+#: ../reporting/reports_main.php:235
+#: ../reporting/reports_main.php:250
+#: ../reporting/reports_main.php:260
+#: ../reporting/reports_main.php:268
+#: ../reporting/reports_main.php:276
 msgid "Inventory Category"
 msgstr ""
 
-#: reporting/reports_main.php:73 sales/manage/sales_types.php:16
+#: ../reporting/reports_main.php:73
+#: ../sales/manage/sales_types.php:16
 msgid "Sales Types"
 msgstr ""
 
-#: reporting/reports_main.php:74 reporting/reports_main.php:224
+#: ../reporting/reports_main.php:74
+#: ../reporting/reports_main.php:224
 msgid "Show Pictures"
 msgstr ""
 
-#: reporting/reports_main.php:79
+#: ../reporting/reports_main.php:79
 msgid "&Order Status Listing"
 msgstr ""
 
-#: reporting/reports_main.php:83
+#: ../reporting/reports_main.php:83
 msgid "Stock Location"
 msgstr ""
 
-#: reporting/reports_main.php:88
+#: ../reporting/reports_main.php:88
 msgid "&Salesman Listing"
 msgstr ""
 
-#: reporting/reports_main.php:95
+#: ../reporting/reports_main.php:95
 msgid "Print &Invoices"
 msgstr ""
 
-#: reporting/reports_main.php:99 reporting/reports_main.php:109
-#: reporting/reports_main.php:116
+#: ../reporting/reports_main.php:99
+#: ../reporting/reports_main.php:109
+#: ../reporting/reports_main.php:116
 msgid "email Customers"
 msgstr ""
 
-#: reporting/reports_main.php:100 reporting/reports_main.php:110
+#: ../reporting/reports_main.php:100
+#: ../reporting/reports_main.php:110
 msgid "Payment Link"
 msgstr ""
 
-#: reporting/reports_main.php:105
+#: ../reporting/reports_main.php:105
 msgid "Print &Credit Notes"
 msgstr ""
 
-#: reporting/reports_main.php:113
+#: ../reporting/reports_main.php:113
 msgid "Print &Deliveries"
 msgstr ""
 
-#: reporting/reports_main.php:117
+#: ../reporting/reports_main.php:117
 msgid "Print as Packing Slip"
 msgstr ""
 
-#: reporting/reports_main.php:120
+#: ../reporting/reports_main.php:120
 msgid "Print &Statements"
 msgstr ""
 
-#: reporting/reports_main.php:124 reporting/reports_main.php:131
-#: reporting/reports_main.php:139 reporting/reports_main.php:195
-#: reporting/reports_main.php:202
+#: ../reporting/reports_main.php:124
+#: ../reporting/reports_main.php:131
+#: ../reporting/reports_main.php:139
 msgid "Email Customers"
 msgstr ""
 
-#: reporting/reports_main.php:127
+#: ../reporting/reports_main.php:127
 msgid "&Print Sales Orders"
 msgstr ""
 
-#: reporting/reports_main.php:132
+#: ../reporting/reports_main.php:132
 msgid "Print as Quote"
 msgstr ""
 
-#: reporting/reports_main.php:135
+#: ../reporting/reports_main.php:135
 msgid "&Print Sales Quotations"
 msgstr ""
 
-#: reporting/reports_main.php:142
+#: ../reporting/reports_main.php:142
 msgid "Print Receipts"
 msgstr ""
 
-#: reporting/reports_main.php:150
+#: ../reporting/reports_main.php:150
 msgid "Supplier &Balances"
 msgstr ""
 
-#: reporting/reports_main.php:160
+#: ../reporting/reports_main.php:160
 msgid "&Aged Supplier Analyses"
 msgstr ""
 
-#: reporting/reports_main.php:171
+#: ../reporting/reports_main.php:171
 msgid "&Payment Report"
 msgstr ""
 
-#: reporting/reports_main.php:179
+#: ../reporting/reports_main.php:179
 msgid "Outstanding &GRNs Report"
 msgstr ""
 
-#: reporting/reports_main.php:184
+#: ../reporting/reports_main.php:184
 msgid "Supplier &Detail Listing"
 msgstr ""
 
-#: reporting/reports_main.php:191
+#: ../reporting/reports_main.php:191
 msgid "Print Purchase &Orders"
 msgstr ""
 
-#: reporting/reports_main.php:198
-msgid "Print Remittances"
+#: ../reporting/reports_main.php:195
+#: ../reporting/reports_main.php:202
+msgid "Email Suppliers"
+msgstr ""
+
+#: ../reporting/reports_main.php:198
+msgid "Print Remi&ttances"
 msgstr ""
 
-#: reporting/reports_main.php:207
+#: ../reporting/reports_main.php:207
 msgid "Inventory &Valuation Report"
 msgstr ""
 
-#: reporting/reports_main.php:215
+#: ../reporting/reports_main.php:215
 msgid "Inventory &Planning Report"
 msgstr ""
 
-#: reporting/reports_main.php:221
+#: ../reporting/reports_main.php:221
 msgid "Stock &Check Sheets"
 msgstr ""
 
-#: reporting/reports_main.php:225
+#: ../reporting/reports_main.php:225
 msgid "Inventory Column"
 msgstr ""
 
-#: reporting/reports_main.php:226
+#: ../reporting/reports_main.php:226
 msgid "Show Shortage"
 msgstr ""
 
-#: reporting/reports_main.php:228
+#: ../reporting/reports_main.php:228
 msgid "Item Like"
 msgstr ""
 
-#: reporting/reports_main.php:232
+#: ../reporting/reports_main.php:232
 msgid "Inventory &Sales Report"
 msgstr ""
 
-#: reporting/reports_main.php:241
+#: ../reporting/reports_main.php:241
 msgid "&GRN Valuation Report"
 msgstr ""
 
-#: reporting/reports_main.php:247
+#: ../reporting/reports_main.php:247
 msgid "Inventory P&urchasing Report"
 msgstr ""
 
-#: reporting/reports_main.php:257
+#: ../reporting/reports_main.php:257
 msgid "Inventory &Movement Report"
 msgstr ""
 
-#: reporting/reports_main.php:265
+#: ../reporting/reports_main.php:265
 msgid "C&osted Inventory Movement Report"
 msgstr ""
 
-#: reporting/reports_main.php:273
+#: ../reporting/reports_main.php:273
 msgid "Item &Sales Summary Report"
 msgstr ""
 
-#: reporting/reports_main.php:281
+#: ../reporting/reports_main.php:281
 msgid "Manufacturing"
 msgstr ""
 
-#: reporting/reports_main.php:282
+#: ../reporting/reports_main.php:282
 msgid "&Bill of Material Listing"
 msgstr ""
 
-#: reporting/reports_main.php:283
+#: ../reporting/reports_main.php:283
 msgid "From product"
 msgstr ""
 
-#: reporting/reports_main.php:284
+#: ../reporting/reports_main.php:284
 msgid "To product"
 msgstr ""
 
-#: reporting/reports_main.php:288
+#: ../reporting/reports_main.php:288
 msgid "Print &Work Orders"
 msgstr ""
 
-#: reporting/reports_main.php:291
+#: ../reporting/reports_main.php:291
 msgid "Email Locations"
 msgstr ""
 
-#: reporting/reports_main.php:297
+#: ../reporting/reports_main.php:297
 msgid "Dimension &Summary"
 msgstr ""
 
-#: reporting/reports_main.php:298
+#: ../reporting/reports_main.php:298
 msgid "From Dimension"
 msgstr ""
 
-#: reporting/reports_main.php:299
+#: ../reporting/reports_main.php:299
 msgid "To Dimension"
 msgstr ""
 
-#: reporting/reports_main.php:308
+#: ../reporting/reports_main.php:308
 msgid "Banking"
 msgstr ""
 
-#: reporting/reports_main.php:309
+#: ../reporting/reports_main.php:309
 msgid "Bank &Statement"
 msgstr ""
 
-#: reporting/reports_main.php:313 reporting/reports_main.php:380
-#: reporting/reports_main.php:430 reporting/reports_main.php:475
+#: ../reporting/reports_main.php:313
+#: ../reporting/reports_main.php:386
+#: ../reporting/reports_main.php:436
+#: ../reporting/reports_main.php:481
 msgid "Zero values"
 msgstr ""
 
-#: reporting/reports_main.php:318
+#: ../reporting/reports_main.php:317
+msgid "Bank Statement w/ &Reconcile"
+msgstr ""
+
+#: ../reporting/reports_main.php:324
 msgid "General Ledger"
 msgstr ""
 
-#: reporting/reports_main.php:319
+#: ../reporting/reports_main.php:325
 msgid "Chart of &Accounts"
 msgstr ""
 
-#: reporting/reports_main.php:320
+#: ../reporting/reports_main.php:326
 msgid "Show Balances"
 msgstr ""
 
-#: reporting/reports_main.php:324
+#: ../reporting/reports_main.php:330
 msgid "List of &Journal Entries"
 msgstr ""
 
-#: reporting/reports_main.php:336 reporting/reports_main.php:390
-#: reporting/reports_main.php:439
+#: ../reporting/reports_main.php:342
+#: ../reporting/reports_main.php:396
+#: ../reporting/reports_main.php:445
 msgid "GL Account &Transactions"
 msgstr ""
 
-#: reporting/reports_main.php:339 reporting/reports_main.php:393
-#: reporting/reports_main.php:442
+#: ../reporting/reports_main.php:345
+#: ../reporting/reports_main.php:399
+#: ../reporting/reports_main.php:448
 msgid "From Account"
 msgstr ""
 
-#: reporting/reports_main.php:340 reporting/reports_main.php:394
-#: reporting/reports_main.php:443
+#: ../reporting/reports_main.php:346
+#: ../reporting/reports_main.php:400
+#: ../reporting/reports_main.php:449
 msgid "To Account"
 msgstr ""
 
-#: reporting/reports_main.php:346 reporting/reports_main.php:399
-#: reporting/reports_main.php:447
+#: ../reporting/reports_main.php:352
+#: ../reporting/reports_main.php:405
+#: ../reporting/reports_main.php:453
 msgid "Annual &Expense Breakdown"
 msgstr ""
 
-#: reporting/reports_main.php:354 reporting/reports_main.php:406
-#: reporting/reports_main.php:453
+#: ../reporting/reports_main.php:360
+#: ../reporting/reports_main.php:412
+#: ../reporting/reports_main.php:459
 msgid "&Balance Sheet"
 msgstr ""
 
-#: reporting/reports_main.php:360 reporting/reports_main.php:372
-#: reporting/reports_main.php:411 reporting/reports_main.php:422
-#: reporting/reports_main.php:457 reporting/reports_main.php:467
+#: ../reporting/reports_main.php:366
+#: ../reporting/reports_main.php:378
+#: ../reporting/reports_main.php:417
+#: ../reporting/reports_main.php:428
+#: ../reporting/reports_main.php:463
+#: ../reporting/reports_main.php:473
 msgid "Decimal values"
 msgstr ""
 
-#: reporting/reports_main.php:365 reporting/reports_main.php:416
-#: reporting/reports_main.php:462
+#: ../reporting/reports_main.php:371
+#: ../reporting/reports_main.php:422
+#: ../reporting/reports_main.php:468
 msgid "&Profit and Loss Statement"
 msgstr ""
 
-#: reporting/reports_main.php:481
+#: ../reporting/reports_main.php:487
 msgid "Ta&x Report"
 msgstr ""
 
-#: reporting/includes/doctext.inc:18 reporting/includes/doctext.inc:134
-#: sales/view/view_dispatch.php:51 sales/view/view_invoice.php:51
+#: ../reporting/includes/doctext.inc:18
+#: ../reporting/includes/doctext.inc:156
+#: ../sales/view/view_dispatch.php:51
+#: ../sales/view/view_invoice.php:53
 msgid "Charge To"
 msgstr ""
 
-#: reporting/includes/doctext.inc:23 sales/view/view_dispatch.php:74
+#: ../reporting/includes/doctext.inc:23
+#: ../sales/view/view_dispatch.php:74
 msgid "Delivered To"
 msgstr ""
 
-#: reporting/includes/doctext.inc:30 sales/customer_credit_invoice.php:281
-#: sales/view/view_credit.php:91 sales/view/view_dispatch.php:113
-#: sales/view/view_invoice.php:114 sales/includes/ui/sales_credit_ui.inc:168
-#: sales/includes/ui/sales_order_ui.inc:146
+#: ../reporting/includes/doctext.inc:30
+#: ../sales/customer_credit_invoice.php:281
+#: ../sales/view/view_credit.php:91
+#: ../sales/view/view_dispatch.php:113
+#: ../sales/view/view_invoice.php:116
+#: ../sales/includes/ui/sales_credit_ui.inc:168
+#: ../sales/includes/ui/sales_order_ui.inc:147
 msgid "Discount %"
 msgstr ""
 
-#: reporting/includes/doctext.inc:33
+#: ../reporting/includes/doctext.inc:33
 msgid "All amounts stated in"
 msgstr ""
 
-#: reporting/includes/doctext.inc:39
+#: ../reporting/includes/doctext.inc:51
 msgid "Quotation No."
 msgstr ""
 
-#: reporting/includes/doctext.inc:44 reporting/includes/doctext.inc:61
-#: reporting/includes/doctext.inc:82 reporting/includes/doctext.inc:96
-#: reporting/includes/doctext.inc:118 reporting/includes/doctext.inc:139
-#: reporting/includes/doctext.inc:162 reporting/includes/doctext.inc:180
-#: reporting/includes/doctext.inc:218
+#: ../reporting/includes/doctext.inc:56
+#: ../reporting/includes/doctext.inc:73
+#: ../reporting/includes/doctext.inc:94
+#: ../reporting/includes/doctext.inc:108
+#: ../reporting/includes/doctext.inc:131
+#: ../reporting/includes/doctext.inc:161
+#: ../reporting/includes/doctext.inc:184
+#: ../reporting/includes/doctext.inc:202
+#: ../reporting/includes/doctext.inc:240
 msgid "Customer's Reference"
 msgstr ""
 
-#: reporting/includes/doctext.inc:45 reporting/includes/doctext.inc:62
-#: reporting/includes/doctext.inc:83 reporting/includes/doctext.inc:97
-#: reporting/includes/doctext.inc:119 reporting/includes/doctext.inc:163
-#: reporting/includes/doctext.inc:219 sales/manage/customer_branches.php:296
+#: ../reporting/includes/doctext.inc:57
+#: ../reporting/includes/doctext.inc:74
+#: ../reporting/includes/doctext.inc:95
+#: ../reporting/includes/doctext.inc:109
+#: ../reporting/includes/doctext.inc:132
+#: ../reporting/includes/doctext.inc:185
+#: ../reporting/includes/doctext.inc:241
+#: ../sales/manage/customer_branches.php:298
 msgid "Sales Person"
 msgstr ""
 
-#: reporting/includes/doctext.inc:46 reporting/includes/doctext.inc:63
-#: reporting/includes/doctext.inc:84 reporting/includes/doctext.inc:98
-#: reporting/includes/doctext.inc:120 reporting/includes/doctext.inc:141
-#: reporting/includes/doctext.inc:164 reporting/includes/doctext.inc:182
-#: reporting/includes/doctext.inc:220
+#: ../reporting/includes/doctext.inc:58
+#: ../reporting/includes/doctext.inc:75
+#: ../reporting/includes/doctext.inc:96
+#: ../reporting/includes/doctext.inc:110
+#: ../reporting/includes/doctext.inc:133
+#: ../reporting/includes/doctext.inc:163
+#: ../reporting/includes/doctext.inc:186
+#: ../reporting/includes/doctext.inc:204
+#: ../reporting/includes/doctext.inc:242
 msgid "Your VAT no."
 msgstr ""
 
-#: reporting/includes/doctext.inc:47
+#: ../reporting/includes/doctext.inc:59
 msgid "Our Quotation No"
 msgstr ""
 
-#: reporting/includes/doctext.inc:48 sales/view/view_sales_order.php:69
-#: sales/inquiry/sales_orders_view.php:282
-#: sales/includes/ui/sales_order_ui.inc:611
+#: ../reporting/includes/doctext.inc:60
+#: ../sales/view/view_sales_order.php:69
+#: ../sales/inquiry/sales_orders_view.php:305
+#: ../sales/includes/ui/sales_order_ui.inc:612
 msgid "Valid until"
 msgstr ""
 
-#: reporting/includes/doctext.inc:54
+#: ../reporting/includes/doctext.inc:65
+msgid "PREPAYMENT ORDER"
+msgstr ""
+
+#: ../reporting/includes/doctext.inc:66
 msgid "Order No."
 msgstr ""
 
-#: reporting/includes/doctext.inc:64 reporting/includes/doctext.inc:85
-#: reporting/includes/doctext.inc:99 reporting/includes/doctext.inc:183
-#: reporting/includes/doctext.inc:221 sales/view/view_dispatch.php:87
-#: sales/view/view_invoice.php:86
+#: ../reporting/includes/doctext.inc:76
+#: ../reporting/includes/doctext.inc:97
+#: ../reporting/includes/doctext.inc:111
+#: ../reporting/includes/doctext.inc:138
+#: ../reporting/includes/doctext.inc:205
+#: ../reporting/includes/doctext.inc:243
+#: ../sales/view/view_dispatch.php:87
+#: ../sales/view/view_invoice.php:87
 msgid "Our Order No"
 msgstr ""
 
-#: reporting/includes/doctext.inc:71 reporting/includes/doctext.inc:121
+#: ../reporting/includes/doctext.inc:83
 msgid "Delivery Note No."
 msgstr ""
 
-#: reporting/includes/doctext.inc:86
+#: ../reporting/includes/doctext.inc:98
 msgid "To Be Invoiced Before"
 msgstr ""
 
-#: reporting/includes/doctext.inc:92
+#: ../reporting/includes/doctext.inc:104
 msgid "Credit No."
 msgstr ""
 
-#: reporting/includes/doctext.inc:93
+#: ../reporting/includes/doctext.inc:105
 msgid "Please quote Credit no. when paying. All amounts stated in"
 msgstr ""
 
-#: reporting/includes/doctext.inc:106
+#: ../reporting/includes/doctext.inc:117
+msgid "PREPAYMENT INVOICE"
+msgstr ""
+
+#: ../reporting/includes/doctext.inc:118
+msgid "FINAL INVOICE"
+msgstr ""
+
+#: ../reporting/includes/doctext.inc:119
 msgid "Invoice No."
 msgstr ""
 
-#: reporting/includes/doctext.inc:108
+#: ../reporting/includes/doctext.inc:121
 msgid "Please quote Invoice no. when paying. All amounts stated in"
 msgstr ""
 
-#: reporting/includes/doctext.inc:130
+#: ../reporting/includes/doctext.inc:137
+msgid "Date of Payment"
+msgstr ""
+
+#: ../reporting/includes/doctext.inc:143
+msgid "Date of Sale"
+msgstr ""
+
+#: ../reporting/includes/doctext.inc:152
 msgid "Remittance No."
 msgstr ""
 
-#: reporting/includes/doctext.inc:131 reporting/includes/doctext.inc:151
+#: ../reporting/includes/doctext.inc:153
+#: ../reporting/includes/doctext.inc:173
 msgid "Order To"
 msgstr ""
 
-#: reporting/includes/doctext.inc:150
+#: ../reporting/includes/doctext.inc:172
 msgid "Purchase Order No."
 msgstr ""
 
-#: reporting/includes/doctext.inc:154
+#: ../reporting/includes/doctext.inc:176
 msgid "Deliver To"
 msgstr ""
 
-#: reporting/includes/doctext.inc:177
+#: ../reporting/includes/doctext.inc:199
 msgid "Receipt No."
 msgstr ""
 
-#: reporting/includes/doctext.inc:178
+#: ../reporting/includes/doctext.inc:200
 msgid "With thanks from"
 msgstr ""
 
-#: reporting/includes/doctext.inc:193
+#: ../reporting/includes/doctext.inc:215
 msgid "Work Order No."
 msgstr ""
 
-#: reporting/includes/doctext.inc:224
+#: ../reporting/includes/doctext.inc:246
 msgid "DueDate"
 msgstr ""
 
-#: reporting/includes/doctext.inc:259 reporting/includes/pdf_report.inc:1020
+#: ../reporting/includes/doctext.inc:272
+#: ../reporting/includes/pdf_report.inc:1019
 msgid "You can pay through"
 msgstr ""
 
-#: reporting/includes/doctext.inc:263
+#: ../reporting/includes/doctext.inc:276
 msgid "* Subject to Realisation of the Cheque."
 msgstr ""
 
-#: reporting/includes/excel_report.inc:67 reporting/includes/pdf_report.inc:80
+#: ../reporting/includes/excel_report.inc:67
+#: ../reporting/includes/pdf_report.inc:80
 msgid ""
 "The security settings on your account do not permit you to print this report"
 msgstr ""
 
-#: reporting/includes/excel_report.inc:262
-#: reporting/includes/pdf_report.inc:316
+#: ../reporting/includes/excel_report.inc:262
+#: ../reporting/includes/pdf_report.inc:316
 msgid "Print Out Date"
 msgstr ""
 
-#: reporting/includes/excel_report.inc:268
-#: reporting/includes/pdf_report.inc:325
+#: ../reporting/includes/excel_report.inc:268
+#: ../reporting/includes/pdf_report.inc:325
 msgid "Fiscal Year"
 msgstr ""
 
-#: reporting/includes/excel_report.inc:396
+#: ../reporting/includes/excel_report.inc:396
 msgid "Report Date"
 msgstr ""
 
-#: reporting/includes/excel_report.inc:413
-#: reporting/includes/pdf_report.inc:601
+#: ../reporting/includes/excel_report.inc:413
+#: ../reporting/includes/pdf_report.inc:600
 msgid "Generated At"
 msgstr ""
 
-#: reporting/includes/excel_report.inc:419
-#: reporting/includes/pdf_report.inc:610
+#: ../reporting/includes/excel_report.inc:419
+#: ../reporting/includes/pdf_report.inc:609
 msgid "Generated By"
 msgstr ""
 
-#: reporting/includes/header2.inc:122
+#: ../reporting/includes/header2.inc:122
 msgid "Our VAT No."
 msgstr ""
 
-#: reporting/includes/header2.inc:128
+#: ../reporting/includes/header2.inc:128
 msgid "Domicile"
 msgstr ""
 
-#: reporting/includes/header2.inc:143 reporting/includes/pdf_report.inc:352
-#: reporting/includes/pdf_report.inc:501 reporting/includes/pdf_report.inc:629
+#: ../reporting/includes/header2.inc:143
+#: ../reporting/includes/pdf_report.inc:352
+#: ../reporting/includes/pdf_report.inc:501
+#: ../reporting/includes/pdf_report.inc:628
 msgid "Page"
 msgstr ""
 
-#: reporting/includes/pdf_report.inc:584
+#: ../reporting/includes/pdf_report.inc:583
 msgid "Report Period"
 msgstr ""
 
-#: reporting/includes/pdf_report.inc:987
-#: reporting/includes/pdf_report.inc:1035
+#: ../reporting/includes/pdf_report.inc:986
+#: ../reporting/includes/pdf_report.inc:1034
 #, php-format
 msgid "You have no email contact defined for this type of document for '%s'."
 msgstr ""
 
-#: reporting/includes/pdf_report.inc:1006
+#: ../reporting/includes/pdf_report.inc:1005
 msgid "Dear"
 msgstr ""
 
-#: reporting/includes/pdf_report.inc:1007
+#: ../reporting/includes/pdf_report.inc:1006
 msgid "Attached you will find "
 msgstr ""
 
-#: reporting/includes/pdf_report.inc:1023
+#: ../reporting/includes/pdf_report.inc:1022
 msgid "Kindest regards"
 msgstr ""
 
-#: reporting/includes/pdf_report.inc:1038
+#: ../reporting/includes/pdf_report.inc:1037
 msgid "Sending document by email failed"
 msgstr ""
 
-#: reporting/includes/pdf_report.inc:1038
-#: reporting/includes/pdf_report.inc:1041
+#: ../reporting/includes/pdf_report.inc:1037
+#: ../reporting/includes/pdf_report.inc:1040
 msgid "Email:"
 msgstr ""
 
-#: reporting/includes/pdf_report.inc:1041
+#: ../reporting/includes/pdf_report.inc:1040
 msgid "has been sent by email to destination."
 msgstr ""
 
-#: reporting/includes/pdf_report.inc:1071
+#: ../reporting/includes/pdf_report.inc:1070
 msgid "Report has been sent to network printer "
 msgstr ""
 
-#: reporting/includes/printer_class.inc:39
+#: ../reporting/includes/printer_class.inc:39
 msgid "Cannot open connection to printer"
 msgstr ""
 
-#: reporting/includes/printer_class.inc:50
+#: ../reporting/includes/printer_class.inc:50
 msgid "Printer does not acept the job"
 msgstr ""
 
-#: reporting/includes/printer_class.inc:61
+#: ../reporting/includes/printer_class.inc:61
 msgid "Error sending print job control file"
 msgstr ""
 
-#: reporting/includes/printer_class.inc:68
+#: ../reporting/includes/printer_class.inc:68
 msgid "Print control file not accepted"
 msgstr ""
 
-#: reporting/includes/printer_class.inc:76
+#: ../reporting/includes/printer_class.inc:76
 msgid "Cannot send report to printer"
 msgstr ""
 
-#: reporting/includes/printer_class.inc:86
+#: ../reporting/includes/printer_class.inc:86
 msgid "No ack after report printout"
 msgstr ""
 
-#: reporting/includes/printer_class.inc:100
+#: ../reporting/includes/printer_class.inc:100
 msgid "Cannot flush printing queue"
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:61
+#: ../reporting/includes/reports_classes.inc:61
 msgid "Report Classes:"
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:81
+#: ../reporting/includes/reports_classes.inc:81
 msgid "Reports For Class: "
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:101
+#: ../reporting/includes/reports_classes.inc:101
 msgid "Display: "
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:149
+#: ../reporting/includes/reports_classes.inc:149
 msgid "Unknown report parameter type:"
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:175
+#: ../reporting/includes/reports_classes.inc:175
 msgid "No Currency Filter"
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:231
+#: ../reporting/includes/reports_classes.inc:231
 msgid "PDF/Printer"
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:238
+#: ../reporting/includes/reports_classes.inc:238
 msgid "Portrait"
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:238
+#: ../reporting/includes/reports_classes.inc:238
 msgid "Landscape"
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:249
+#: ../reporting/includes/reports_classes.inc:249
 msgid "No Graphics"
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:249
+#: ../reporting/includes/reports_classes.inc:249
 msgid "Vertical bars"
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:249
+#: ../reporting/includes/reports_classes.inc:249
 msgid "Horizontal bars"
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:250
+#: ../reporting/includes/reports_classes.inc:250
 msgid "Dots"
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:250
+#: ../reporting/includes/reports_classes.inc:250
 msgid "Lines"
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:250
+#: ../reporting/includes/reports_classes.inc:250
 msgid "Pie"
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:250
+#: ../reporting/includes/reports_classes.inc:250
 msgid "Donut"
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:254
-#: reporting/includes/reports_classes.inc:257
+#: ../reporting/includes/reports_classes.inc:254
+#: ../reporting/includes/reports_classes.inc:257
 msgid "No Type Filter"
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:267
+#: ../reporting/includes/reports_classes.inc:267
 msgid "No Account Group Filter"
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:282
-#: reporting/includes/reports_classes.inc:288
-#: reporting/includes/reports_classes.inc:294
+#: ../reporting/includes/reports_classes.inc:282
+#: ../reporting/includes/reports_classes.inc:288
+#: ../reporting/includes/reports_classes.inc:294
 msgid "No Dimension Filter"
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:300
+#: ../reporting/includes/reports_classes.inc:300
 msgid "No Customer Filter"
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:308
+#: ../reporting/includes/reports_classes.inc:308
 msgid "No Supplier Filter"
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:393
+#: ../reporting/includes/reports_classes.inc:393
 msgid "No Location Filter"
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:396
+#: ../reporting/includes/reports_classes.inc:396
 msgid "No Category Filter"
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:405
+#: ../reporting/includes/reports_classes.inc:405
 msgid "No Sales Folk Filter"
 msgstr ""
 
-#: reporting/includes/reports_classes.inc:412
+#: ../reporting/includes/reports_classes.inc:412
 msgid "No Users Filter"
 msgstr ""
 
-#: sales/create_recurrent_invoices.php:26
+#: ../sales/create_recurrent_invoices.php:26
 msgid "Create and Print Recurrent Invoices"
 msgstr ""
 
-#: sales/create_recurrent_invoices.php:44
+#: ../sales/create_recurrent_invoices.php:44
 #, php-format
 msgid "Recurrent Invoice covers period %s - %s."
 msgstr ""
 
-#: sales/create_recurrent_invoices.php:110
+#: ../sales/create_recurrent_invoices.php:110
 #, php-format
 msgid "%s recurrent invoice(s) created, # %s - # %s."
 msgstr ""
 
-#: sales/create_recurrent_invoices.php:115
+#: ../sales/create_recurrent_invoices.php:115
 #, php-format
 msgid "&Print Recurrent Invoices # %s - # %s"
 msgstr ""
 
-#: sales/create_recurrent_invoices.php:117
+#: ../sales/create_recurrent_invoices.php:117
 #, php-format
 msgid "&Email Recurrent Invoices # %s - # %s"
 msgstr ""
 
-#: sales/create_recurrent_invoices.php:129
+#: ../sales/create_recurrent_invoices.php:129
 msgid "Invoice date:"
 msgstr ""
 
-#: sales/create_recurrent_invoices.php:134
-#: sales/manage/recurrent_invoices.php:102
+#: ../sales/create_recurrent_invoices.php:134
+#: ../sales/manage/recurrent_invoices.php:102
 msgid "Template No"
 msgstr ""
 
-#: sales/create_recurrent_invoices.php:134
-#: sales/manage/recurrent_invoices.php:102
+#: ../sales/create_recurrent_invoices.php:134
+#: ../sales/manage/recurrent_invoices.php:102
 msgid "Begin"
 msgstr ""
 
-#: sales/create_recurrent_invoices.php:134
-#: sales/manage/recurrent_invoices.php:102
+#: ../sales/create_recurrent_invoices.php:134
+#: ../sales/manage/recurrent_invoices.php:102
 msgid "End"
 msgstr ""
 
-#: sales/create_recurrent_invoices.php:134
-#: sales/manage/recurrent_invoices.php:102
-#: sales/manage/recurrent_invoices.php:185
+#: ../sales/create_recurrent_invoices.php:134
+#: ../sales/manage/recurrent_invoices.php:102
+#: ../sales/manage/recurrent_invoices.php:185
 msgid "Last Created"
 msgstr ""
 
-#: sales/create_recurrent_invoices.php:175
+#: ../sales/create_recurrent_invoices.php:175
 msgid "Create Invoices"
 msgstr ""
 
-#: sales/create_recurrent_invoices.php:183
+#: ../sales/create_recurrent_invoices.php:183
 msgid "Marked items are due."
 msgstr ""
 
-#: sales/create_recurrent_invoices.php:185
+#: ../sales/create_recurrent_invoices.php:185
 msgid "No recurrent invoices are due."
 msgstr ""
 
-#: sales/credit_note_entry.php:40
+#: ../sales/credit_note_entry.php:40
 #, php-format
 msgid "Modifying Customer Credit Note #%d"
 msgstr ""
 
-#: sales/credit_note_entry.php:51 sales/sales_order_entry.php:687
+#: ../sales/credit_note_entry.php:51
+#: ../sales/sales_order_entry.php:704
 msgid ""
 "There are no customers, or there are no customers with branches. Please "
 "define customers and customer branches."
 msgstr ""
 
-#: sales/credit_note_entry.php:66
+#: ../sales/credit_note_entry.php:66
 #, php-format
 msgid "Credit Note # %d has been processed"
 msgstr ""
 
-#: sales/credit_note_entry.php:68
+#: ../sales/credit_note_entry.php:68
 msgid "&View this credit note"
 msgstr ""
 
-#: sales/credit_note_entry.php:70
+#: ../sales/credit_note_entry.php:70
 msgid "&Print This Credit Invoice"
 msgstr ""
 
-#: sales/credit_note_entry.php:71
+#: ../sales/credit_note_entry.php:71
 msgid "&Email This Credit Invoice"
 msgstr ""
 
-#: sales/credit_note_entry.php:73 sales/customer_credit_invoice.php:60
-#: sales/customer_credit_invoice.php:77
+#: ../sales/credit_note_entry.php:73
+#: ../sales/customer_credit_invoice.php:60
+#: ../sales/customer_credit_invoice.php:77
 msgid "View the GL &Journal Entries for this Credit Note"
 msgstr ""
 
-#: sales/credit_note_entry.php:75
+#: ../sales/credit_note_entry.php:75
 msgid "Enter Another &Credit Note"
 msgstr ""
 
-#: sales/credit_note_entry.php:153
+#: ../sales/credit_note_entry.php:153
 msgid "The entered date for the credit note is invalid."
 msgstr ""
 
-#: sales/credit_note_entry.php:170
+#: ../sales/credit_note_entry.php:170
 msgid ""
 "For credit notes created to write off the stock, a general ledger account is "
 "required to be selected."
 msgstr ""
 
-#: sales/credit_note_entry.php:171
+#: ../sales/credit_note_entry.php:171
 msgid ""
 "Please select an account to write the cost of the stock off to, then click "
 "on Process again."
 msgstr ""
 
-#: sales/credit_note_entry.php:197
+#: ../sales/credit_note_entry.php:197
 msgid "The quantity must be greater than zero."
 msgstr ""
 
-#: sales/credit_note_entry.php:202
+#: ../sales/credit_note_entry.php:202
 msgid "The entered price is negative or invalid."
 msgstr ""
 
-#: sales/credit_note_entry.php:207
+#: ../sales/credit_note_entry.php:207
 msgid "The entered discount percent is negative, greater than 100 or invalid."
 msgstr ""
 
-#: sales/credit_note_entry.php:275
+#: ../sales/credit_note_entry.php:275
 msgid "Credit Note Items"
 msgstr ""
 
-#: sales/credit_note_entry.php:285 sales/customer_credit_invoice.php:382
+#: ../sales/credit_note_entry.php:285
+#: ../sales/customer_credit_invoice.php:382
 msgid "Process Credit Note"
 msgstr ""
 
-#: sales/customer_credit_invoice.php:38
+#: ../sales/customer_credit_invoice.php:38
 #, php-format
 msgid "Modifying Credit Invoice # %d."
 msgstr ""
 
-#: sales/customer_credit_invoice.php:42
+#: ../sales/customer_credit_invoice.php:42
 msgid "Credit all or part of an Invoice"
 msgstr ""
 
-#: sales/customer_credit_invoice.php:53
+#: ../sales/customer_credit_invoice.php:53
 msgid "Credit Note has been processed"
 msgstr ""
 
-#: sales/customer_credit_invoice.php:55 sales/customer_credit_invoice.php:72
+#: ../sales/customer_credit_invoice.php:55
+#: ../sales/customer_credit_invoice.php:72
 msgid "&View This Credit Note"
 msgstr ""
 
-#: sales/customer_credit_invoice.php:57 sales/customer_credit_invoice.php:74
+#: ../sales/customer_credit_invoice.php:57
+#: ../sales/customer_credit_invoice.php:74
 msgid "&Print This Credit Note"
 msgstr ""
 
-#: sales/customer_credit_invoice.php:58 sales/customer_credit_invoice.php:75
+#: ../sales/customer_credit_invoice.php:58
+#: ../sales/customer_credit_invoice.php:75
 msgid "&Email This Credit Note"
 msgstr ""
 
-#: sales/customer_credit_invoice.php:70
+#: ../sales/customer_credit_invoice.php:70
 msgid "Credit Note has been updated"
 msgstr ""
 
-#: sales/customer_credit_invoice.php:109
+#: ../sales/customer_credit_invoice.php:109
 msgid "The entered shipping cost is invalid or less than zero."
 msgstr ""
 
-#: sales/customer_credit_invoice.php:114 sales/customer_credit_invoice.php:136
+#: ../sales/customer_credit_invoice.php:114
+#: ../sales/customer_credit_invoice.php:136
 msgid ""
 "Selected quantity cannot be less than zero nor more than quantity not "
 "credited yet."
 msgstr ""
 
-#: sales/customer_credit_invoice.php:134
+#: ../sales/customer_credit_invoice.php:134
 msgid ""
 "This page can only be opened if an invoice has been selected for crediting."
 msgstr ""
 
-#: sales/customer_credit_invoice.php:249
+#: ../sales/customer_credit_invoice.php:249
 msgid "Crediting Invoice"
 msgstr ""
 
-#: sales/customer_credit_invoice.php:270
+#: ../sales/customer_credit_invoice.php:270
 msgid "Credit Note Date"
 msgstr ""
 
-#: sales/customer_credit_invoice.php:280
+#: ../sales/customer_credit_invoice.php:280
 msgid "Invoiced Quantity"
 msgstr ""
 
-#: sales/customer_credit_invoice.php:281
+#: ../sales/customer_credit_invoice.php:281
 msgid "Credit Quantity"
 msgstr ""
 
-#: sales/customer_credit_invoice.php:315
+#: ../sales/customer_credit_invoice.php:315
 msgid "Credit Shipping Cost"
 msgstr ""
 
-#: sales/customer_credit_invoice.php:348
-#: sales/includes/ui/sales_credit_ui.inc:323
+#: ../sales/customer_credit_invoice.php:348
+#: ../sales/includes/ui/sales_credit_ui.inc:323
 msgid "Credit Note Type"
 msgstr ""
 
-#: sales/customer_credit_invoice.php:356
-#: sales/includes/ui/sales_credit_ui.inc:331
+#: ../sales/customer_credit_invoice.php:356
+#: ../sales/includes/ui/sales_credit_ui.inc:331
 msgid "Items Returned to Location"
 msgstr ""
 
-#: sales/customer_credit_invoice.php:361
-#: sales/includes/ui/sales_credit_ui.inc:336
+#: ../sales/customer_credit_invoice.php:361
+#: ../sales/includes/ui/sales_credit_ui.inc:336
 msgid "Write off the cost of the items to"
 msgstr ""
 
-#: sales/customer_credit_invoice.php:380
+#: ../sales/customer_credit_invoice.php:380
 msgid "Update credit value for quantities entered"
 msgstr ""
 
-#: sales/customer_delivery.php:37
+#: ../sales/customer_delivery.php:37
 #, php-format
 msgid "Modifying Delivery Note # %d."
 msgstr ""
 
-#: sales/customer_delivery.php:41
+#: ../sales/customer_delivery.php:41
 msgid "Deliver Items for a Sales Order"
 msgstr ""
 
-#: sales/customer_delivery.php:50 sales/sales_order_entry.php:183
+#: ../sales/customer_delivery.php:50
+#: ../sales/sales_order_entry.php:189
 #, php-format
 msgid "Delivery # %d has been entered."
 msgstr ""
 
-#: sales/customer_delivery.php:52 sales/sales_order_entry.php:185
+#: ../sales/customer_delivery.php:52
+#: ../sales/sales_order_entry.php:191
 msgid "&View This Delivery"
 msgstr ""
 
-#: sales/customer_delivery.php:54 sales/customer_delivery.php:75
-#: sales/sales_order_entry.php:187
+#: ../sales/customer_delivery.php:54
+#: ../sales/customer_delivery.php:76
+#: ../sales/sales_order_entry.php:193
 msgid "&Print Delivery Note"
 msgstr ""
 
-#: sales/customer_delivery.php:55 sales/customer_delivery.php:76
-#: sales/sales_order_entry.php:188
+#: ../sales/customer_delivery.php:55
+#: ../sales/customer_delivery.php:77
+#: ../sales/sales_order_entry.php:194
 msgid "&Email Delivery Note"
 msgstr ""
 
-#: sales/customer_delivery.php:56 sales/customer_delivery.php:77
-#: sales/sales_order_entry.php:189
+#: ../sales/customer_delivery.php:56
+#: ../sales/customer_delivery.php:78
+#: ../sales/sales_order_entry.php:195
 msgid "P&rint as Packing Slip"
 msgstr ""
 
-#: sales/customer_delivery.php:57 sales/customer_delivery.php:78
-#: sales/sales_order_entry.php:190
+#: ../sales/customer_delivery.php:57
+#: ../sales/customer_delivery.php:79
+#: ../sales/sales_order_entry.php:196
 msgid "E&mail as Packing Slip"
 msgstr ""
 
-#: sales/customer_delivery.php:59 sales/sales_order_entry.php:193
+#: ../sales/customer_delivery.php:59
+#: ../sales/sales_order_entry.php:199
 msgid "View the GL Journal Entries for this Dispatch"
 msgstr ""
 
-#: sales/customer_delivery.php:61
+#: ../sales/customer_delivery.php:62
 msgid "Invoice This Delivery"
 msgstr ""
 
-#: sales/customer_delivery.php:63
+#: ../sales/customer_delivery.php:64
 msgid "Select Another Order For Dispatch"
 msgstr ""
 
-#: sales/customer_delivery.php:71
+#: ../sales/customer_delivery.php:72
 #, php-format
 msgid "Delivery Note # %d has been updated."
 msgstr ""
 
-#: sales/customer_delivery.php:73
+#: ../sales/customer_delivery.php:74
 msgid "View this delivery"
 msgstr ""
 
-#: sales/customer_delivery.php:80
+#: ../sales/customer_delivery.php:82
 msgid "Confirm Delivery and Invoice"
 msgstr ""
 
-#: sales/customer_delivery.php:82
+#: ../sales/customer_delivery.php:84
 msgid "Select A Different Delivery"
 msgstr ""
 
-#: sales/customer_delivery.php:94
+#: ../sales/customer_delivery.php:94
+#: ../sales/customer_invoice.php:161
+msgid ""
+"You have to set Deferred Income Account in GL Setup to entry prepayment "
+"invoices."
+msgstr ""
+
+#: ../sales/customer_delivery.php:98
+#: ../sales/customer_delivery.php:103
 msgid "Select a different sales order to delivery"
 msgstr ""
 
-#: sales/customer_delivery.php:95
+#: ../sales/customer_delivery.php:99
 msgid "This order has no items. There is nothing to delivery."
 msgstr ""
 
-#: sales/customer_delivery.php:110
+#: ../sales/customer_delivery.php:105
+msgid ""
+"This prepayment order is not yet ready for delivery due to insufficient "
+"amount received."
+msgstr ""
+
+#: ../sales/customer_delivery.php:122
 msgid "Select a different delivery"
 msgstr ""
 
-#: sales/customer_delivery.php:111
+#: ../sales/customer_delivery.php:123
 msgid "This delivery has all items invoiced. There is nothing to modify."
 msgstr ""
 
-#: sales/customer_delivery.php:121
+#: ../sales/customer_delivery.php:133
 msgid ""
 "This page can only be opened if an order or delivery note has been selected. "
 "Please select it first."
 msgstr ""
 
-#: sales/customer_delivery.php:123
+#: ../sales/customer_delivery.php:135
 msgid "Select a Sales Order to Delivery"
 msgstr ""
 
-#: sales/customer_delivery.php:132
+#: ../sales/customer_delivery.php:144
 msgid ""
 "Selected quantity cannot be less than quantity invoiced nor more than "
 "quantity\tnot dispatched on sales order."
 msgstr ""
 
-#: sales/customer_delivery.php:135
+#: ../sales/customer_delivery.php:147
 msgid "Freight cost cannot be less than zero"
 msgstr ""
 
-#: sales/customer_delivery.php:147
+#: ../sales/customer_delivery.php:159
 msgid "The entered date of delivery is invalid."
 msgstr ""
 
-#: sales/customer_delivery.php:153
-msgid "The entered date of delivery is not in fiscal year."
-msgstr ""
-
-#: sales/customer_delivery.php:159
+#: ../sales/customer_delivery.php:171
 msgid "The entered dead-line for invoice is invalid."
 msgstr ""
 
-#: sales/customer_delivery.php:176 sales/customer_invoice.php:300
+#: ../sales/customer_delivery.php:188
+#: ../sales/customer_invoice.php:354
 msgid "The entered shipping value is not numeric."
 msgstr ""
 
-#: sales/customer_delivery.php:182
+#: ../sales/customer_delivery.php:194
 msgid "There are no item quantities on this delivery note."
 msgstr ""
 
-#: sales/customer_delivery.php:285 sales/sales_order_entry.php:516
-#: sales/includes/ui/sales_order_ui.inc:250
+#: ../sales/customer_delivery.php:297
+#: ../sales/sales_order_entry.php:532
+#: ../sales/includes/ui/sales_order_ui.inc:251
 msgid ""
 "The delivery cannot be processed because there is an insufficient quantity "
 "for item:"
 msgstr ""
 
-#: sales/customer_delivery.php:353
+#: ../sales/customer_delivery.php:367
 msgid "For Sales Order"
 msgstr ""
 
-#: sales/customer_delivery.php:362
+#: ../sales/customer_delivery.php:376
 msgid "Delivery From"
 msgstr ""
 
-#: sales/customer_delivery.php:411
+#: ../sales/customer_delivery.php:425
 msgid "Invoice Dead-line"
 msgstr ""
 
-#: sales/customer_delivery.php:421 sales/customer_invoice.php:468
-#: sales/includes/ui/sales_order_ui.inc:84
-#: sales/includes/ui/sales_order_ui.inc:374
+#: ../sales/customer_delivery.php:435
+#: ../sales/customer_invoice.php:539
+#: ../sales/includes/ui/sales_order_ui.inc:84
+#: ../sales/includes/ui/sales_order_ui.inc:375
 msgid ""
 "The selected customer account is currently on hold. Please contact the "
 "credit control personnel to discuss."
 msgstr ""
 
-#: sales/customer_delivery.php:426
+#: ../sales/customer_delivery.php:440
 msgid "Delivery Items"
 msgstr ""
 
-#: sales/customer_delivery.php:432
+#: ../sales/customer_delivery.php:446
 msgid "Max. delivery"
 msgstr ""
 
-#: sales/customer_delivery.php:432 sales/customer_invoice.php:478
+#: ../sales/customer_delivery.php:446
+#: ../sales/customer_invoice.php:553
 msgid "Invoiced"
 msgstr ""
 
-#: sales/customer_delivery.php:503 sales/customer_invoice.php:563
+#: ../sales/customer_delivery.php:517
+#: ../sales/customer_invoice.php:642
 msgid "Shipping Cost"
 msgstr ""
 
-#: sales/customer_delivery.php:523 sales/includes/ui/sales_order_ui.inc:248
+#: ../sales/customer_delivery.php:537
+#: ../sales/includes/ui/sales_order_ui.inc:249
 msgid ""
 "Marked items have insufficient quantities in stock as on day of delivery."
 msgstr ""
 
-#: sales/customer_delivery.php:527
+#: ../sales/customer_delivery.php:541
 msgid "Action For Balance"
 msgstr ""
 
-#: sales/customer_delivery.php:534 sales/customer_delivery.php:536
-#: sales/customer_delivery.php:539 sales/customer_invoice.php:592
+#: ../sales/customer_delivery.php:548
+#: ../sales/customer_delivery.php:550
+#: ../sales/customer_delivery.php:553
+#: ../sales/customer_invoice.php:694
 msgid "Refresh document page"
 msgstr ""
 
-#: sales/customer_delivery.php:536
+#: ../sales/customer_delivery.php:550
 msgid "Reset quantity"
 msgstr ""
 
-#: sales/customer_delivery.php:539
+#: ../sales/customer_delivery.php:553
 msgid "Clear quantity"
 msgstr ""
 
-#: sales/customer_delivery.php:541
+#: ../sales/customer_delivery.php:555
 msgid "Process Dispatch"
 msgstr ""
 
-#: sales/customer_delivery.php:542 sales/customer_invoice.php:594
-#: sales/sales_order_entry.php:735
+#: ../sales/customer_delivery.php:556
+#: ../sales/customer_invoice.php:696
+#: ../sales/sales_order_entry.php:751
 msgid "Check entered data and save document"
 msgstr ""
 
-#: sales/customer_invoice.php:37
+#: ../sales/customer_invoice.php:38
 #, php-format
 msgid "Modifying Sales Invoice # %d."
 msgstr ""
 
-#: sales/customer_invoice.php:40
+#: ../sales/customer_invoice.php:41
 msgid "Issue an Invoice for Delivery Note"
 msgstr ""
 
-#: sales/customer_invoice.php:42
+#: ../sales/customer_invoice.php:43
 msgid "Issue Batch Invoice for Delivery Notes"
 msgstr ""
 
-#: sales/customer_invoice.php:55
+#: ../sales/customer_invoice.php:45
+msgid "Prepayment or Final Invoice Entry"
+msgstr ""
+
+#: ../sales/customer_invoice.php:58
 msgid "Selected deliveries has been processed"
 msgstr ""
 
-#: sales/customer_invoice.php:57 sales/customer_invoice.php:86
-#: sales/sales_order_entry.php:212
+#: ../sales/customer_invoice.php:60
+#: ../sales/customer_invoice.php:89
+#: ../sales/sales_order_entry.php:218
 msgid "&View This Invoice"
 msgstr ""
 
-#: sales/customer_invoice.php:59 sales/customer_invoice.php:88
+#: ../sales/customer_invoice.php:62
+#: ../sales/customer_invoice.php:91
 msgid "&Print This Invoice"
 msgstr ""
 
-#: sales/customer_invoice.php:60 sales/customer_invoice.php:89
+#: ../sales/customer_invoice.php:63
+#: ../sales/customer_invoice.php:92
 msgid "&Email This Invoice"
 msgstr ""
 
-#: sales/customer_invoice.php:62 sales/sales_order_entry.php:225
+#: ../sales/customer_invoice.php:65
+#: ../sales/sales_order_entry.php:231
 msgid "View the GL &Journal Entries for this Invoice"
 msgstr ""
 
-#: sales/customer_invoice.php:64
+#: ../sales/customer_invoice.php:67
 msgid "Select Another &Delivery For Invoicing"
 msgstr ""
 
-#: sales/customer_invoice.php:72 sales/sales_order_entry.php:235
+#: ../sales/customer_invoice.php:75
+#: ../sales/sales_order_entry.php:241
 msgid "Entry &customer payment for this invoice"
 msgstr ""
 
-#: sales/customer_invoice.php:84
+#: ../sales/customer_invoice.php:87
 #, php-format
 msgid "Sales Invoice # %d has been updated."
 msgstr ""
 
-#: sales/customer_invoice.php:91
+#: ../sales/customer_invoice.php:94
 msgid "Select Another &Invoice to Modify"
 msgstr ""
 
-#: sales/customer_invoice.php:130
+#: ../sales/customer_invoice.php:133
 msgid "Select a different delivery to invoice"
 msgstr ""
 
-#: sales/customer_invoice.php:131
+#: ../sales/customer_invoice.php:134
 msgid ""
 "There are no delivered items with a quantity left to invoice. There is "
 "nothing left to invoice."
 msgstr ""
 
-#: sales/customer_invoice.php:140
+#: ../sales/customer_invoice.php:155
 msgid ""
-"There are no delivery notes for this invoice.<br>\n"
-"\t\tMost likely this invoice was created in Front Accounting version prior "
-"to 2.0\n"
-"\t\tand therefore can not be modified."
+"All quantities on this invoice has been credited. There is nothing to modify "
+"on this invoice"
 msgstr ""
 
-#: sales/customer_invoice.php:149
+#: ../sales/customer_invoice.php:169
 msgid ""
-"All quantities on this invoice has been credited. There is nothing to modify "
-"on this invoice"
+"Please select correct Sales Order Prepayment to be invoiced and try again."
 msgstr ""
 
-#: sales/customer_invoice.php:155
+#: ../sales/customer_invoice.php:200
 msgid ""
 "This page can only be opened after delivery selection. Please select "
 "delivery to invoicing first."
 msgstr ""
 
-#: sales/customer_invoice.php:157
+#: ../sales/customer_invoice.php:202
 msgid "Select Delivery to Invoice"
 msgstr ""
 
-#: sales/customer_invoice.php:162 sales/customer_invoice.php:311
+#: ../sales/customer_invoice.php:207
+#: ../sales/customer_invoice.php:365
 msgid ""
 "Selected quantity cannot be less than quantity credited nor more than "
 "quantity not invoiced yet."
 msgstr ""
 
-#: sales/customer_invoice.php:270
+#: ../sales/customer_invoice.php:321
 msgid "The entered invoice date is invalid."
 msgstr ""
 
-#: sales/customer_invoice.php:276
-msgid "The entered invoice date is not in fiscal year."
-msgstr ""
-
-#: sales/customer_invoice.php:282
+#: ../sales/customer_invoice.php:334
 msgid "The entered invoice due date is invalid."
 msgstr ""
 
-#: sales/customer_invoice.php:306
+#: ../sales/customer_invoice.php:360
 msgid "There are no item quantities on this invoice."
 msgstr ""
 
-#: sales/customer_invoice.php:394
+#: ../sales/customer_invoice.php:370
+msgid ""
+"There is no non-invoiced payments for this order. If you want to issue final "
+"invoice, select delayed or cash payment terms."
+msgstr ""
+
+#: ../sales/customer_invoice.php:460
 msgid "Payment terms:"
 msgstr ""
 
-#: sales/customer_invoice.php:397 sales/includes/ui/sales_order_ui.inc:410
-#: sales/includes/ui/sales_order_ui.inc:414
-msgid "Payment:"
+#: ../sales/customer_invoice.php:545
+#: ../sales/sales_order_entry.php:727
+msgid "Sales Order Items"
 msgstr ""
 
-#: sales/customer_invoice.php:474
+#: ../sales/customer_invoice.php:545
 msgid "Invoice Items"
 msgstr ""
 
-#: sales/customer_invoice.php:479
+#: ../sales/customer_invoice.php:554
 msgid "This Invoice"
 msgstr ""
 
-#: sales/customer_invoice.php:487
+#: ../sales/customer_invoice.php:561
 msgid "Credited"
 msgstr ""
 
-#: sales/customer_invoice.php:581
+#: ../sales/customer_invoice.php:663
 msgid "Invoice Total"
 msgstr ""
 
-#: sales/customer_payments.php:32
+#: ../sales/customer_invoice.php:672
+msgid "Sales order:"
+msgstr ""
+
+#: ../sales/customer_invoice.php:684
+msgid "Payments received:"
+msgstr ""
+
+#: ../sales/customer_invoice.php:685
+msgid "Invoiced here:"
+msgstr ""
+
+#: ../sales/customer_invoice.php:686
+msgid "Left to be invoiced:"
+msgstr ""
+
+#: ../sales/customer_payments.php:32
 msgid "Customer Payment Entry"
 msgstr ""
 
-#: sales/customer_payments.php:36
+#: ../sales/customer_payments.php:36
 msgid "There are no customers defined in the system."
 msgstr ""
 
-#: sales/customer_payments.php:70
+#: ../sales/customer_payments.php:70
 msgid "Invalid sales invoice number."
 msgstr ""
 
-#: sales/customer_payments.php:97
+#: ../sales/customer_payments.php:97
 msgid "The customer payment has been successfully entered."
 msgstr ""
 
-#: sales/customer_payments.php:99 sales/customer_payments.php:118
+#: ../sales/customer_payments.php:99
+#: ../sales/customer_payments.php:118
 msgid "&Print This Receipt"
 msgstr ""
 
-#: sales/customer_payments.php:101
+#: ../sales/customer_payments.php:101
 msgid "&View this Customer Payment"
 msgstr ""
 
-#: sales/customer_payments.php:103 sales/customer_payments.php:126
+#: ../sales/customer_payments.php:103
+#: ../sales/customer_payments.php:126
 msgid "Enter Another &Customer Payment"
 msgstr ""
 
-#: sales/customer_payments.php:105
+#: ../sales/customer_payments.php:105
 msgid "Enter Payment to &Supplier"
 msgstr ""
 
-#: sales/customer_payments.php:109 sales/customer_payments.php:120
+#: ../sales/customer_payments.php:109
+#: ../sales/customer_payments.php:120
 msgid "&View the GL Journal Entries for this Customer Payment"
 msgstr ""
 
-#: sales/customer_payments.php:116
+#: ../sales/customer_payments.php:116
 msgid "The customer payment has been successfully updated."
 msgstr ""
 
-#: sales/customer_payments.php:124
+#: ../sales/customer_payments.php:124
 msgid "Select Another Customer Payment for &Edition"
 msgstr ""
 
-#: sales/customer_payments.php:139 sales/sales_order_entry.php:340
+#: ../sales/customer_payments.php:139
+#: ../sales/sales_order_entry.php:350
 msgid "There is no customer selected."
 msgstr ""
 
-#: sales/customer_payments.php:146 sales/sales_order_entry.php:347
+#: ../sales/customer_payments.php:146
+#: ../sales/sales_order_entry.php:357
 msgid "This customer has no branch defined."
 msgstr ""
 
-#: sales/customer_payments.php:152
+#: ../sales/customer_payments.php:152
 msgid "The entered date is invalid. Please enter a valid date for the payment."
 msgstr ""
 
-#: sales/customer_payments.php:182 sales/customer_payments.php:188
+#: ../sales/customer_payments.php:182
+#: ../sales/customer_payments.php:188
 msgid "The entered amount is invalid or negative and cannot be processed."
 msgstr ""
 
-#: sales/customer_payments.php:214
+#: ../sales/customer_payments.php:214
 msgid "The entered discount is not a valid number."
 msgstr ""
 
-#: sales/customer_payments.php:221
+#: ../sales/customer_payments.php:221
 msgid ""
 "The balance of the amount and discount is zero or negative. Please enter "
 "valid amounts."
 msgstr ""
 
-#: sales/customer_payments.php:228
+#: ../sales/customer_payments.php:228
 msgid "The entered payment amount is zero or negative."
 msgstr ""
 
-#: sales/customer_payments.php:335
+#: ../sales/customer_payments.php:332
 msgid "Into Bank Account:"
 msgstr ""
 
-#: sales/customer_payments.php:338 sales/customer_payments.php:340
+#: ../sales/customer_payments.php:335
+#: ../sales/customer_payments.php:337
 msgid "From Customer:"
 msgstr ""
 
-#: sales/customer_payments.php:366
+#: ../sales/customer_payments.php:369
 msgid "Date of Deposit:"
 msgstr ""
 
-#: sales/customer_payments.php:380
+#: ../sales/customer_payments.php:383
 msgid "Payment Amount:"
 msgstr ""
 
-#: sales/customer_payments.php:393
+#: ../sales/customer_payments.php:396
 msgid "Customer prompt payment discount :"
 msgstr ""
 
-#: sales/customer_payments.php:403
+#: ../sales/customer_payments.php:406
 msgid "Add Payment"
 msgstr ""
 
-#: sales/customer_payments.php:405
+#: ../sales/customer_payments.php:408
 msgid "Update Payment"
 msgstr ""
 
-#: sales/sales_order_entry.php:64
+#: ../sales/sales_order_entry.php:64
 msgid "Direct Sales Delivery"
 msgstr ""
 
-#: sales/sales_order_entry.php:69
+#: ../sales/sales_order_entry.php:69
 msgid "Direct Sales Invoice"
 msgstr ""
 
-#: sales/sales_order_entry.php:75
+#: ../sales/sales_order_entry.php:75
 #, php-format
 msgid "Modifying Sales Order # %d"
 msgstr ""
 
-#: sales/sales_order_entry.php:81
+#: ../sales/sales_order_entry.php:81
 #, php-format
 msgid "Modifying Sales Quotation # %d"
 msgstr ""
 
-#: sales/sales_order_entry.php:86
+#: ../sales/sales_order_entry.php:86
 msgid "New Sales Order Entry"
 msgstr ""
 
-#: sales/sales_order_entry.php:90
+#: ../sales/sales_order_entry.php:90
 msgid "New Sales Quotation Entry"
 msgstr ""
 
-#: sales/sales_order_entry.php:93
+#: ../sales/sales_order_entry.php:93
 msgid "Sales Order Entry"
 msgstr ""
 
-#: sales/sales_order_entry.php:109
+#: ../sales/sales_order_entry.php:115
 #, php-format
 msgid "Order # %d has been entered."
 msgstr ""
 
-#: sales/sales_order_entry.php:111 sales/sales_order_entry.php:131
+#: ../sales/sales_order_entry.php:117
+#: ../sales/sales_order_entry.php:137
 msgid "&View This Order"
 msgstr ""
 
-#: sales/sales_order_entry.php:117
+#: ../sales/sales_order_entry.php:123
 msgid "Make &Delivery Against This Order"
 msgstr ""
 
-#: sales/sales_order_entry.php:122
+#: ../sales/sales_order_entry.php:128
 msgid "Enter a &New Order"
 msgstr ""
 
-#: sales/sales_order_entry.php:129
+#: ../sales/sales_order_entry.php:135
 #, php-format
 msgid "Order # %d has been updated."
 msgstr ""
 
-#: sales/sales_order_entry.php:137
+#: ../sales/sales_order_entry.php:143
 msgid "Confirm Order Quantities and Make &Delivery"
 msgstr ""
 
-#: sales/sales_order_entry.php:140
+#: ../sales/sales_order_entry.php:146
 msgid "Select A Different &Order"
 msgstr ""
 
-#: sales/sales_order_entry.php:147
+#: ../sales/sales_order_entry.php:153
 #, php-format
 msgid "Quotation # %d has been entered."
 msgstr ""
 
-#: sales/sales_order_entry.php:149 sales/sales_order_entry.php:167
+#: ../sales/sales_order_entry.php:155
+#: ../sales/sales_order_entry.php:173
 msgid "&View This Quotation"
 msgstr ""
 
-#: sales/sales_order_entry.php:151 sales/sales_order_entry.php:169
+#: ../sales/sales_order_entry.php:157
+#: ../sales/sales_order_entry.php:175
 msgid "&Print This Quotation"
 msgstr ""
 
-#: sales/sales_order_entry.php:152 sales/sales_order_entry.php:170
+#: ../sales/sales_order_entry.php:158
+#: ../sales/sales_order_entry.php:176
 msgid "&Email This Quotation"
 msgstr ""
 
-#: sales/sales_order_entry.php:155 sales/sales_order_entry.php:173
+#: ../sales/sales_order_entry.php:161
+#: ../sales/sales_order_entry.php:179
 msgid "Make &Sales Order Against This Quotation"
 msgstr ""
 
-#: sales/sales_order_entry.php:158
+#: ../sales/sales_order_entry.php:164
 msgid "Enter a New &Quotation"
 msgstr ""
 
-#: sales/sales_order_entry.php:165
+#: ../sales/sales_order_entry.php:171
 #, php-format
 msgid "Quotation # %d has been updated."
 msgstr ""
 
-#: sales/sales_order_entry.php:176
+#: ../sales/sales_order_entry.php:182
 msgid "Select A Different &Quotation"
 msgstr ""
 
-#: sales/sales_order_entry.php:195
+#: ../sales/sales_order_entry.php:201
 msgid "Make &Invoice Against This Delivery"
 msgstr ""
 
-#: sales/sales_order_entry.php:199
+#: ../sales/sales_order_entry.php:205
 msgid "Enter a New Template &Delivery"
 msgstr ""
 
-#: sales/sales_order_entry.php:202
+#: ../sales/sales_order_entry.php:208
 msgid "Enter a &New Delivery"
 msgstr ""
 
-#: sales/sales_order_entry.php:210
+#: ../sales/sales_order_entry.php:216
 #, php-format
 msgid "Invoice # %d has been entered."
 msgstr ""
 
-#: sales/sales_order_entry.php:214
+#: ../sales/sales_order_entry.php:220
 msgid "&Print Sales Invoice"
 msgstr ""
 
-#: sales/sales_order_entry.php:215
+#: ../sales/sales_order_entry.php:221
 msgid "&Email Sales Invoice"
 msgstr ""
 
-#: sales/sales_order_entry.php:223
+#: ../sales/sales_order_entry.php:229
 msgid "Print &Receipt"
 msgstr ""
 
-#: sales/sales_order_entry.php:228
+#: ../sales/sales_order_entry.php:234
 msgid "Enter a &New Template Invoice"
 msgstr ""
 
-#: sales/sales_order_entry.php:231
+#: ../sales/sales_order_entry.php:237
 msgid "Enter a &New Direct Invoice"
 msgstr ""
 
-#: sales/sales_order_entry.php:369
+#: ../sales/sales_order_entry.php:380
+msgid "Pre-payment required have to be positive and less than total amount."
+msgstr ""
+
+#: ../sales/sales_order_entry.php:385
 msgid ""
 "You must enter the person or company to whom delivery should be made to."
 msgstr ""
 
-#: sales/sales_order_entry.php:376
+#: ../sales/sales_order_entry.php:392
 msgid ""
 "You should enter the street address in the box provided. Orders cannot be "
 "accepted without a valid street address."
 msgstr ""
 
-#: sales/sales_order_entry.php:385
+#: ../sales/sales_order_entry.php:401
 msgid "The shipping cost entered is expected to be numeric."
 msgstr ""
 
-#: sales/sales_order_entry.php:391
+#: ../sales/sales_order_entry.php:407
 msgid "The Valid date is invalid."
 msgstr ""
 
-#: sales/sales_order_entry.php:393
+#: ../sales/sales_order_entry.php:409
 msgid "The delivery date is invalid."
 msgstr ""
 
-#: sales/sales_order_entry.php:400
+#: ../sales/sales_order_entry.php:416
 msgid "The requested valid date is before the date of the quotation."
 msgstr ""
 
-#: sales/sales_order_entry.php:402
+#: ../sales/sales_order_entry.php:418
 msgid "The requested delivery date is before the date of the order."
 msgstr ""
 
-#: sales/sales_order_entry.php:411
+#: ../sales/sales_order_entry.php:427
 msgid "You need to define a cash account for your Sales Point."
 msgstr ""
 
-#: sales/sales_order_entry.php:449
+#: ../sales/sales_order_entry.php:465
 msgid ""
 "The reference number field has been increased. Please save the document "
 "again."
 msgstr ""
 
-#: sales/sales_order_entry.php:495
+#: ../sales/sales_order_entry.php:511
 msgid ""
 "The item could not be updated because you are attempting to set the quantity "
 "ordered to less than 0, or the discount percent to more than 100."
 msgstr ""
 
-#: sales/sales_order_entry.php:499
+#: ../sales/sales_order_entry.php:515
 msgid "Price for inventory item must be entered and can not be less than 0"
 msgstr ""
 
-#: sales/sales_order_entry.php:506
+#: ../sales/sales_order_entry.php:522
 msgid ""
 "You attempting to make the quantity ordered a quantity less than has already "
 "been delivered. The quantity delivered cannot be modified retrospectively."
 msgstr ""
 
-#: sales/sales_order_entry.php:537
+#: ../sales/sales_order_entry.php:553
 #, php-format
 msgid "Price %s is below Standard Cost %s"
 msgstr ""
 
-#: sales/sales_order_entry.php:562
+#: ../sales/sales_order_entry.php:578
 msgid ""
 "This item cannot be deleted because some of it has already been delivered."
 msgstr ""
 
-#: sales/sales_order_entry.php:591
+#: ../sales/sales_order_entry.php:607
 msgid "Direct delivery entry has been cancelled as requested."
 msgstr ""
 
-#: sales/sales_order_entry.php:592
+#: ../sales/sales_order_entry.php:608
 msgid "Enter a New Sales Delivery"
 msgstr ""
 
-#: sales/sales_order_entry.php:594
+#: ../sales/sales_order_entry.php:610
 msgid "Direct invoice entry has been cancelled as requested."
 msgstr ""
 
-#: sales/sales_order_entry.php:595
+#: ../sales/sales_order_entry.php:611
 msgid "Enter a New Sales Invoice"
 msgstr ""
 
-#: sales/sales_order_entry.php:599
+#: ../sales/sales_order_entry.php:616
 msgid "This sales quotation has been cancelled as requested."
 msgstr ""
 
-#: sales/sales_order_entry.php:600
+#: ../sales/sales_order_entry.php:617
 msgid "Enter a New Sales Quotation"
 msgstr ""
 
-#: sales/sales_order_entry.php:607
+#: ../sales/sales_order_entry.php:624
 msgid "Undelivered part of order has been cancelled as requested."
 msgstr ""
 
-#: sales/sales_order_entry.php:608
+#: ../sales/sales_order_entry.php:625
 msgid "Select Another Sales Order for Edition"
 msgstr ""
 
-#: sales/sales_order_entry.php:612
+#: ../sales/sales_order_entry.php:629
 msgid "This sales order has been cancelled as requested."
 msgstr ""
 
-#: sales/sales_order_entry.php:613
+#: ../sales/sales_order_entry.php:630
 msgid "Enter a New Sales Order"
 msgstr ""
 
-#: sales/sales_order_entry.php:691
+#: ../sales/sales_order_entry.php:708
 msgid "Sales Invoice Items"
 msgstr ""
 
-#: sales/sales_order_entry.php:692
+#: ../sales/sales_order_entry.php:709
 msgid "Enter Delivery Details and Confirm Invoice"
 msgstr ""
 
-#: sales/sales_order_entry.php:694
+#: ../sales/sales_order_entry.php:711
 msgid "Place Invoice"
 msgstr ""
 
-#: sales/sales_order_entry.php:697
+#: ../sales/sales_order_entry.php:714
 msgid "Delivery Note Items"
 msgstr ""
 
-#: sales/sales_order_entry.php:698
+#: ../sales/sales_order_entry.php:715
 msgid "Enter Delivery Details and Confirm Dispatch"
 msgstr ""
 
-#: sales/sales_order_entry.php:699
+#: ../sales/sales_order_entry.php:716
 msgid "Cancel Delivery"
 msgstr ""
 
-#: sales/sales_order_entry.php:700
+#: ../sales/sales_order_entry.php:717
 msgid "Place Delivery"
 msgstr ""
 
-#: sales/sales_order_entry.php:702
+#: ../sales/sales_order_entry.php:719
 msgid "Quotation Date:"
 msgstr ""
 
-#: sales/sales_order_entry.php:703
+#: ../sales/sales_order_entry.php:720
 msgid "Sales Quotation Items"
 msgstr ""
 
-#: sales/sales_order_entry.php:704
+#: ../sales/sales_order_entry.php:721
 msgid "Enter Delivery Details and Confirm Quotation"
 msgstr ""
 
-#: sales/sales_order_entry.php:705
+#: ../sales/sales_order_entry.php:722
 msgid "Cancel Quotation"
 msgstr ""
 
-#: sales/sales_order_entry.php:706
+#: ../sales/sales_order_entry.php:723
 msgid "Place Quotation"
 msgstr ""
 
-#: sales/sales_order_entry.php:707
+#: ../sales/sales_order_entry.php:724
 msgid "Commit Quotations Changes"
 msgstr ""
 
-#: sales/sales_order_entry.php:710
-msgid "Sales Order Items"
-msgstr ""
-
-#: sales/sales_order_entry.php:711
+#: ../sales/sales_order_entry.php:728
 msgid "Enter Delivery Details and Confirm Order"
 msgstr ""
 
-#: sales/sales_order_entry.php:714
+#: ../sales/sales_order_entry.php:731
 msgid "Commit Order Changes"
 msgstr ""
 
-#: sales/sales_order_entry.php:736
-msgid "You are about to void this Document.\\nDo you want to continue?"
+#: ../sales/sales_order_entry.php:753
+#: ../sales/sales_order_entry.php:759
+msgid ""
+"Cancels document entry or removes sales order when editing an old document"
 msgstr ""
 
-#: sales/sales_order_entry.php:739
-msgid ""
-"You are about to cancel undelivered part of this order.\\nDo you want to "
-"continue?"
+#: ../sales/sales_order_entry.php:754
+#: ../sales/sales_order_entry.php:763
+msgid "You are about to void this Document.\\nDo you want to continue?"
 msgstr ""
 
-#: sales/sales_order_entry.php:741
+#: ../sales/sales_order_entry.php:757
 msgid "Validate changes and update document"
 msgstr ""
 
-#: sales/sales_order_entry.php:745
+#: ../sales/sales_order_entry.php:761
 msgid ""
-"Cancels document entry or removes sales order when editing an old document"
+"You are about to cancel undelivered part of this order.\\nDo you want to "
+"continue?"
 msgstr ""
 
-#: sales/allocations/customer_allocate.php:28
+#: ../sales/allocations/customer_allocate.php:28
 msgid "Allocate Customer Payment or Credit Note"
 msgstr ""
 
-#: sales/allocations/customer_allocate.php:50
+#: ../sales/allocations/customer_allocate.php:50
 #, php-format
 msgid "Allocation of %s # %d"
 msgstr ""
 
-#: sales/allocations/customer_allocation_main.php:22
+#: ../sales/allocations/customer_allocation_main.php:22
 msgid "Customer Allocations"
 msgstr ""
 
-#: sales/allocations/customer_allocation_main.php:32
-#: sales/manage/customer_branches.php:280 sales/manage/customers.php:327
-#: sales/inquiry/customer_allocation_inquiry.php:42
-#: sales/inquiry/customer_inquiry.php:48
-#: sales/inquiry/sales_orders_view.php:243
+#: ../sales/allocations/customer_allocation_main.php:32
+#: ../sales/manage/customer_branches.php:282
+#: ../sales/manage/customers.php:328
+#: ../sales/inquiry/customer_allocation_inquiry.php:42
+#: ../sales/inquiry/customer_inquiry.php:44
+#: ../sales/inquiry/sales_orders_view.php:266
 msgid "Select a customer: "
 msgstr ""
 
-#: sales/manage/credit_status.php:16
+#: ../sales/manage/credit_status.php:16
 msgid "Credit Status"
 msgstr ""
 
-#: sales/manage/credit_status.php:30
+#: ../sales/manage/credit_status.php:30
 msgid "The credit status description cannot be empty."
 msgstr ""
 
-#: sales/manage/credit_status.php:44
+#: ../sales/manage/credit_status.php:44
 msgid "New credit status has been added"
 msgstr ""
 
-#: sales/manage/credit_status.php:52
+#: ../sales/manage/credit_status.php:52
 msgid "Selected credit status has been updated"
 msgstr ""
 
-#: sales/manage/credit_status.php:63
+#: ../sales/manage/credit_status.php:63
 msgid ""
 "Cannot delete this credit status because customer accounts have been created "
 "referring to it."
 msgstr ""
 
-#: sales/manage/credit_status.php:79
+#: ../sales/manage/credit_status.php:79
 msgid "Selected credit status has been deleted"
 msgstr ""
 
-#: sales/manage/credit_status.php:97
+#: ../sales/manage/credit_status.php:97
 msgid "Dissallow Invoices"
 msgstr ""
 
-#: sales/manage/credit_status.php:109
+#: ../sales/manage/credit_status.php:109
 msgid "Invoice OK"
 msgstr ""
 
-#: sales/manage/credit_status.php:113
+#: ../sales/manage/credit_status.php:113
 msgid "NO INVOICING"
 msgstr ""
 
-#: sales/manage/credit_status.php:147
+#: ../sales/manage/credit_status.php:147
 msgid "Dissallow invoicing ?"
 msgstr ""
 
-#: sales/manage/customer_branches.php:18
+#: ../sales/manage/customer_branches.php:18
 msgid "Customer Branches"
 msgstr ""
 
-#: sales/manage/customer_branches.php:25
+#: ../sales/manage/customer_branches.php:25
 msgid ""
 "There are no customers defined in the system. Please define a customer to "
 "add customer branches."
 msgstr ""
 
-#: sales/manage/customer_branches.php:27
+#: ../sales/manage/customer_branches.php:27
 msgid ""
 "There are no sales people defined in the system. At least one sales person "
 "is required before proceeding."
 msgstr ""
 
-#: sales/manage/customer_branches.php:29
+#: ../sales/manage/customer_branches.php:29
 msgid ""
 "There are no sales areas defined in the system. At least one sales area is "
 "required before proceeding."
 msgstr ""
 
-#: sales/manage/customer_branches.php:31
+#: ../sales/manage/customer_branches.php:31
 msgid ""
 "There are no shipping companies defined in the system. At least one shipping "
 "company is required before proceeding."
 msgstr ""
 
-#: sales/manage/customer_branches.php:63
+#: ../sales/manage/customer_branches.php:63
 msgid "The Branch name cannot be empty."
 msgstr ""
 
-#: sales/manage/customer_branches.php:70
+#: ../sales/manage/customer_branches.php:70
 msgid "The Branch short name cannot be empty."
 msgstr ""
 
-#: sales/manage/customer_branches.php:88
+#: ../sales/manage/customer_branches.php:88
 msgid "Selected customer branch has been updated"
 msgstr ""
 
-#: sales/manage/customer_branches.php:106
+#: ../sales/manage/customer_branches.php:106
 msgid "New customer branch has been added"
 msgstr ""
 
-#: sales/manage/customer_branches.php:125
+#: ../sales/manage/customer_branches.php:125
 msgid ""
 "Cannot delete this branch because customer transactions have been created to "
 "this branch."
 msgstr ""
 
-#: sales/manage/customer_branches.php:132
+#: ../sales/manage/customer_branches.php:132
 msgid ""
 "Cannot delete this branch because sales orders exist for it. Purge old sales "
 "orders first."
 msgstr ""
 
-#: sales/manage/customer_branches.php:137
+#: ../sales/manage/customer_branches.php:137
 msgid "Selected customer branch has been deleted"
 msgstr ""
 
-#: sales/manage/customer_branches.php:217
+#: ../sales/manage/customer_branches.php:218
 msgid "Main Branch"
 msgstr ""
 
-#: sales/manage/customer_branches.php:236
+#: ../sales/manage/customer_branches.php:237
 msgid "Name and Contact"
 msgstr ""
 
-#: sales/manage/customer_branches.php:237
+#: ../sales/manage/customer_branches.php:238
 msgid "Branch Name:"
 msgstr ""
 
-#: sales/manage/customer_branches.php:238
+#: ../sales/manage/customer_branches.php:239
 msgid "Branch Short Name:"
 msgstr ""
 
-#: sales/manage/customer_branches.php:241 sales/manage/customers.php:259
+#: ../sales/manage/customer_branches.php:242
+#: ../sales/manage/customers.php:260
 msgid "Sales Person:"
 msgstr ""
 
-#: sales/manage/customer_branches.php:242 sales/manage/customers.php:296
+#: ../sales/manage/customer_branches.php:243
+#: ../sales/manage/customers.php:297
 msgid "Sales Area:"
 msgstr ""
 
-#: sales/manage/customer_branches.php:243
-#: sales/manage/recurrent_invoices.php:174
+#: ../sales/manage/customer_branches.php:244
+#: ../sales/manage/recurrent_invoices.php:174
 msgid "Sales Group:"
 msgstr ""
 
-#: sales/manage/customer_branches.php:244 sales/manage/customers.php:294
+#: ../sales/manage/customer_branches.php:245
+#: ../sales/manage/customers.php:295
 msgid "Default Inventory Location:"
 msgstr ""
 
-#: sales/manage/customer_branches.php:245 sales/manage/customers.php:295
+#: ../sales/manage/customer_branches.php:246
+#: ../sales/manage/customers.php:296
 msgid "Default Shipping Company:"
 msgstr ""
 
-#: sales/manage/customer_branches.php:252
+#: ../sales/manage/customer_branches.php:253
 msgid "Accounts Receivable Account:"
 msgstr ""
 
-#: sales/manage/customer_branches.php:258
+#: ../sales/manage/customer_branches.php:260
 msgid "General contact data"
 msgstr ""
 
-#: sales/manage/customer_branches.php:268
+#: ../sales/manage/customer_branches.php:270
 msgid "Billing Address:"
 msgstr ""
 
-#: sales/manage/customer_branches.php:272
+#: ../sales/manage/customer_branches.php:274
 msgid "Disable this Branch:"
 msgstr ""
 
-#: sales/manage/customer_branches.php:295
-#: sales/inquiry/sales_deliveries_view.php:183
+#: ../sales/manage/customer_branches.php:297
+#: ../sales/inquiry/sales_deliveries_view.php:183
 msgid "Contact"
 msgstr ""
 
-#: sales/manage/customer_branches.php:297
+#: ../sales/manage/customer_branches.php:299
 msgid "Area"
 msgstr ""
 
-#: sales/manage/customer_branches.php:298
+#: ../sales/manage/customer_branches.php:300
 msgid "Phone No"
 msgstr ""
 
-#: sales/manage/customer_branches.php:299
+#: ../sales/manage/customer_branches.php:301
 msgid "Fax No"
 msgstr ""
 
-#: sales/manage/customer_branches.php:301
+#: ../sales/manage/customer_branches.php:303
 msgid "Tax Group"
 msgstr ""
 
-#: sales/manage/customer_branches.php:319
-#: sales/includes/ui/sales_order_ui.inc:305
+#: ../sales/manage/customer_branches.php:321
+#: ../sales/includes/ui/sales_order_ui.inc:306
 msgid ""
 "The selected customer does not have any branches. Please create at least one "
 "branch."
 msgstr ""
 
-#: sales/manage/customers.php:42
+#: ../sales/manage/customers.php:42
 msgid "The customer name cannot be empty."
 msgstr ""
 
-#: sales/manage/customers.php:49
+#: ../sales/manage/customers.php:49
 msgid "The customer short name cannot be empty."
 msgstr ""
 
-#: sales/manage/customers.php:56
+#: ../sales/manage/customers.php:56
 msgid "The credit limit must be numeric and not less than zero."
 msgstr ""
 
-#: sales/manage/customers.php:63
+#: ../sales/manage/customers.php:63
 msgid ""
 "The payment discount must be numeric and is expected to be less than 100% "
 "and greater than or equal to 0."
 msgstr ""
 
-#: sales/manage/customers.php:70
+#: ../sales/manage/customers.php:70
 msgid ""
 "The discount percentage must be numeric and is expected to be less than 100% "
 "and greater than or equal to 0."
 msgstr ""
 
-#: sales/manage/customers.php:98
+#: ../sales/manage/customers.php:98
 msgid "Customer has been updated."
 msgstr ""
 
-#: sales/manage/customers.php:130
+#: ../sales/manage/customers.php:130
 msgid "A new customer has been added."
 msgstr ""
 
-#: sales/manage/customers.php:133
+#: ../sales/manage/customers.php:133
 msgid ""
 "A default Branch has been automatically created, please check default Branch "
 "values by using link below."
 msgstr ""
 
-#: sales/manage/customers.php:156
+#: ../sales/manage/customers.php:156
 msgid ""
 "This customer cannot be deleted because there are transactions that refer to "
 "it."
 msgstr ""
 
-#: sales/manage/customers.php:163
+#: ../sales/manage/customers.php:163
 msgid ""
 "Cannot delete the customer record because orders have been created against "
 "it."
 msgstr ""
 
-#: sales/manage/customers.php:170
+#: ../sales/manage/customers.php:170
 msgid ""
 "Cannot delete this customer because there are branch records set up against "
 "it."
 msgstr ""
 
-#: sales/manage/customers.php:181
+#: ../sales/manage/customers.php:181
 msgid "Selected customer has been deleted."
 msgstr ""
 
-#: sales/manage/customers.php:230
+#: ../sales/manage/customers.php:230
 msgid "Name and Address"
 msgstr ""
 
-#: sales/manage/customers.php:232
+#: ../sales/manage/customers.php:232
 msgid "Customer Name:"
 msgstr ""
 
-#: sales/manage/customers.php:233
+#: ../sales/manage/customers.php:233
 msgid "Customer Short Name:"
 msgstr ""
 
-#: sales/manage/customers.php:241 sales/manage/customers.php:245
+#: ../sales/manage/customers.php:242
+#: ../sales/manage/customers.php:246
 msgid "Customer's Currency:"
 msgstr ""
 
-#: sales/manage/customers.php:248
+#: ../sales/manage/customers.php:249
 msgid "Sales Type/Price List:"
 msgstr ""
 
-#: sales/manage/customers.php:251
+#: ../sales/manage/customers.php:252
 msgid "Customer status:"
 msgstr ""
 
-#: sales/manage/customers.php:265
+#: ../sales/manage/customers.php:266
 msgid "Discount Percent:"
 msgstr ""
 
-#: sales/manage/customers.php:266
+#: ../sales/manage/customers.php:267
 msgid "Prompt Payment Discount Percent:"
 msgstr ""
 
-#: sales/manage/customers.php:270
+#: ../sales/manage/customers.php:271
 msgid "Credit Status:"
 msgstr ""
 
-#: sales/manage/customers.php:283
+#: ../sales/manage/customers.php:284
 msgid "Customer branches"
 msgstr ""
 
-#: sales/manage/customers.php:285
+#: ../sales/manage/customers.php:286
 msgid "Select or &Add"
 msgstr ""
 
-#: sales/manage/customers.php:285
+#: ../sales/manage/customers.php:286
 msgid "&Add or Edit "
 msgstr ""
 
-#: sales/manage/customers.php:304
+#: ../sales/manage/customers.php:305
 msgid "Add New Customer"
 msgstr ""
 
-#: sales/manage/customers.php:308
+#: ../sales/manage/customers.php:309
 msgid "Update Customer"
 msgstr ""
 
-#: sales/manage/customers.php:309
+#: ../sales/manage/customers.php:310
 msgid "Update customer data"
 msgstr ""
 
-#: sales/manage/customers.php:310
+#: ../sales/manage/customers.php:311
 msgid "Select this customer and return to document entry."
 msgstr ""
 
-#: sales/manage/customers.php:311
+#: ../sales/manage/customers.php:312
 msgid "Delete Customer"
 msgstr ""
 
-#: sales/manage/customers.php:312
+#: ../sales/manage/customers.php:313
 msgid "Delete customer data if have been never used"
 msgstr ""
 
-#: sales/manage/customers.php:319
+#: ../sales/manage/customers.php:320
 msgid ""
 "There are no sales types defined. Please define at least one sales type "
 "before adding a customer."
 msgstr ""
 
-#: sales/manage/customers.php:328
+#: ../sales/manage/customers.php:329
 msgid "New customer"
 msgstr ""
 
-#: sales/manage/customers.php:350
+#: ../sales/manage/customers.php:351
 msgid "Sales &Orders"
 msgstr ""
 
-#: sales/manage/recurrent_invoices.php:24
+#: ../sales/manage/recurrent_invoices.php:24
 msgid "Recurrent Invoices"
 msgstr ""
 
-#: sales/manage/recurrent_invoices.php:36
+#: ../sales/manage/recurrent_invoices.php:36
 msgid "The invoice description cannot be empty."
 msgstr ""
 
-#: sales/manage/recurrent_invoices.php:63
+#: ../sales/manage/recurrent_invoices.php:63
 msgid "Selected recurrent invoice has been updated"
 msgstr ""
 
-#: sales/manage/recurrent_invoices.php:69
+#: ../sales/manage/recurrent_invoices.php:69
 msgid "New recurrent invoice has been added"
 msgstr ""
 
-#: sales/manage/recurrent_invoices.php:86
+#: ../sales/manage/recurrent_invoices.php:86
 msgid "Selected recurrent invoice has been deleted"
 msgstr ""
 
-#: sales/manage/recurrent_invoices.php:167
+#: ../sales/manage/recurrent_invoices.php:167
 msgid "Template:"
 msgstr ""
 
-#: sales/manage/recurrent_invoices.php:176
+#: ../sales/manage/recurrent_invoices.php:176
 msgid "Days:"
 msgstr ""
 
-#: sales/manage/recurrent_invoices.php:178
+#: ../sales/manage/recurrent_invoices.php:178
 msgid "Monthly:"
 msgstr ""
 
-#: sales/manage/recurrent_invoices.php:180
+#: ../sales/manage/recurrent_invoices.php:180
 msgid "Begin:"
 msgstr ""
 
-#: sales/manage/recurrent_invoices.php:182
+#: ../sales/manage/recurrent_invoices.php:182
 msgid "End:"
 msgstr ""
 
-#: sales/manage/sales_areas.php:30
+#: ../sales/manage/sales_areas.php:30
 msgid "The area description cannot be empty."
 msgstr ""
 
-#: sales/manage/sales_areas.php:39
+#: ../sales/manage/sales_areas.php:39
 msgid "Selected sales area has been updated"
 msgstr ""
 
-#: sales/manage/sales_areas.php:44
+#: ../sales/manage/sales_areas.php:44
 msgid "New sales area has been added"
 msgstr ""
 
-#: sales/manage/sales_areas.php:62
+#: ../sales/manage/sales_areas.php:62
 msgid ""
 "Cannot delete this area because customer branches have been created using "
 "this area."
 msgstr ""
 
-#: sales/manage/sales_areas.php:68
+#: ../sales/manage/sales_areas.php:68
 msgid "Selected sales area has been deleted"
 msgstr ""
 
-#: sales/manage/sales_areas.php:88
+#: ../sales/manage/sales_areas.php:88
 msgid "Area Name"
 msgstr ""
 
-#: sales/manage/sales_areas.php:127
+#: ../sales/manage/sales_areas.php:127
 msgid "Area Name:"
 msgstr ""
 
-#: sales/manage/sales_groups.php:16
+#: ../sales/manage/sales_groups.php:16
 msgid "Sales Groups"
 msgstr ""
 
-#: sales/manage/sales_groups.php:30
+#: ../sales/manage/sales_groups.php:30
 msgid "The sales group description cannot be empty."
 msgstr ""
 
-#: sales/manage/sales_groups.php:39
+#: ../sales/manage/sales_groups.php:39
 msgid "Selected sales group has been updated"
 msgstr ""
 
-#: sales/manage/sales_groups.php:44
+#: ../sales/manage/sales_groups.php:44
 msgid "New sales group has been added"
 msgstr ""
 
-#: sales/manage/sales_groups.php:62
+#: ../sales/manage/sales_groups.php:62
 msgid ""
 "Cannot delete this group because customers have been created using this "
 "group."
 msgstr ""
 
-#: sales/manage/sales_groups.php:67
+#: ../sales/manage/sales_groups.php:67
 msgid "Selected sales group has been deleted"
 msgstr ""
 
-#: sales/manage/sales_groups.php:85 sales/manage/sales_groups.php:120
+#: ../sales/manage/sales_groups.php:85
+#: ../sales/manage/sales_groups.php:120
 msgid "ID"
 msgstr ""
 
-#: sales/manage/sales_groups.php:123
+#: ../sales/manage/sales_groups.php:123
 msgid "Group Name:"
 msgstr ""
 
-#: sales/manage/sales_people.php:16
+#: ../sales/manage/sales_people.php:16
 msgid "Sales Persons"
 msgstr ""
 
-#: sales/manage/sales_people.php:32
+#: ../sales/manage/sales_people.php:32
 msgid "The sales person name cannot be empty."
 msgstr ""
 
-#: sales/manage/sales_people.php:38
+#: ../sales/manage/sales_people.php:38
 msgid "Salesman provision cannot be less than 0 or more than 100%."
 msgstr ""
 
-#: sales/manage/sales_people.php:43
+#: ../sales/manage/sales_people.php:43
 msgid "Salesman provision breakpoint must be numeric and not less than 0."
 msgstr ""
 
-#: sales/manage/sales_people.php:62
+#: ../sales/manage/sales_people.php:62
 msgid "Selected sales person data have been updated"
 msgstr ""
 
-#: sales/manage/sales_people.php:64
+#: ../sales/manage/sales_people.php:64
 msgid "New sales person data have been added"
 msgstr ""
 
-#: sales/manage/sales_people.php:76
+#: ../sales/manage/sales_people.php:76
 msgid ""
 "Cannot delete this sales-person because branches are set up referring to "
 "this sales-person - first alter the branches concerned."
 msgstr ""
 
-#: sales/manage/sales_people.php:81
+#: ../sales/manage/sales_people.php:81
 msgid "Selected sales person data have been deleted"
 msgstr ""
 
-#: sales/manage/sales_people.php:155
+#: ../sales/manage/sales_people.php:155
 msgid "Sales person name:"
 msgstr ""
 
-#: sales/manage/sales_people.php:156
+#: ../sales/manage/sales_people.php:156
 msgid "Telephone number:"
 msgstr ""
 
-#: sales/manage/sales_people.php:157
+#: ../sales/manage/sales_people.php:157
 msgid "Fax number:"
 msgstr ""
 
-#: sales/manage/sales_people.php:160
+#: ../sales/manage/sales_people.php:160
 msgid "Break Pt.:"
 msgstr ""
 
-#: sales/manage/sales_points.php:16
+#: ../sales/manage/sales_points.php:16
 msgid "POS settings"
 msgstr ""
 
-#: sales/manage/sales_points.php:28
+#: ../sales/manage/sales_points.php:28
 msgid "The POS name cannot be empty."
 msgstr ""
 
-#: sales/manage/sales_points.php:41
+#: ../sales/manage/sales_points.php:41
 msgid "New point of sale has been added"
 msgstr ""
 
-#: sales/manage/sales_points.php:52
+#: ../sales/manage/sales_points.php:52
 msgid "Selected point of sale has been updated"
 msgstr ""
 
-#: sales/manage/sales_points.php:62
+#: ../sales/manage/sales_points.php:62
 msgid "Cannot delete this POS because it is used in users setup."
 msgstr ""
 
-#: sales/manage/sales_points.php:65
+#: ../sales/manage/sales_points.php:65
 msgid "Selected point of sale has been deleted"
 msgstr ""
 
-#: sales/manage/sales_points.php:84
+#: ../sales/manage/sales_points.php:84
 msgid "POS Name"
 msgstr ""
 
-#: sales/manage/sales_points.php:84
+#: ../sales/manage/sales_points.php:84
 msgid "Credit sale"
 msgstr ""
 
-#: sales/manage/sales_points.php:84
+#: ../sales/manage/sales_points.php:84
 msgid "Cash sale"
 msgstr ""
 
-#: sales/manage/sales_points.php:84
+#: ../sales/manage/sales_points.php:84
 msgid "Default account"
 msgstr ""
 
-#: sales/manage/sales_points.php:110
+#: ../sales/manage/sales_points.php:110
 msgid "To have cash POS first define at least one cash bank account."
 msgstr ""
 
-#: sales/manage/sales_points.php:129
+#: ../sales/manage/sales_points.php:129
 msgid "Point of Sale Name"
 msgstr ""
 
-#: sales/manage/sales_points.php:131
+#: ../sales/manage/sales_points.php:131
 msgid "Allowed credit sale terms selection:"
 msgstr ""
 
-#: sales/manage/sales_points.php:132
+#: ../sales/manage/sales_points.php:132
 msgid "Allowed cash sale terms selection:"
 msgstr ""
 
-#: sales/manage/sales_points.php:133
+#: ../sales/manage/sales_points.php:133
 msgid "Default cash account"
 msgstr ""
 
-#: sales/manage/sales_points.php:139
+#: ../sales/manage/sales_points.php:139
 msgid "POS location"
 msgstr ""
 
-#: sales/manage/sales_types.php:28
+#: ../sales/manage/sales_types.php:28
 msgid "The sales type description cannot be empty."
 msgstr ""
 
-#: sales/manage/sales_types.php:35
+#: ../sales/manage/sales_types.php:35
 msgid "Calculation factor must be valid positive number."
 msgstr ""
 
-#: sales/manage/sales_types.php:48
+#: ../sales/manage/sales_types.php:48
 msgid "New sales type has been added"
 msgstr ""
 
-#: sales/manage/sales_types.php:59
+#: ../sales/manage/sales_types.php:59
 msgid "Selected sales type has been updated"
 msgstr ""
 
-#: sales/manage/sales_types.php:71
+#: ../sales/manage/sales_types.php:71
 msgid ""
 "Cannot delete this sale type because customer transactions have been created "
 "using this sales type."
 msgstr ""
 
-#: sales/manage/sales_types.php:78
+#: ../sales/manage/sales_types.php:78
 msgid ""
 "Cannot delete this sale type because customers are currently set up to use "
 "this sales type."
 msgstr ""
 
-#: sales/manage/sales_types.php:83
+#: ../sales/manage/sales_types.php:83
 msgid "Selected sales type has been deleted"
 msgstr ""
 
-#: sales/manage/sales_types.php:103
+#: ../sales/manage/sales_types.php:103
 msgid "Type Name"
 msgstr ""
 
-#: sales/manage/sales_types.php:103
+#: ../sales/manage/sales_types.php:103
 msgid "Factor"
 msgstr ""
 
-#: sales/manage/sales_types.php:103
+#: ../sales/manage/sales_types.php:103
 msgid "Tax Incl"
 msgstr ""
 
-#: sales/manage/sales_types.php:117
+#: ../sales/manage/sales_types.php:117
 msgid "Base"
 msgstr ""
 
-#: sales/manage/sales_types.php:128
+#: ../sales/manage/sales_types.php:128
 msgid ""
 "Marked sales type is the company base pricelist for prices calculations."
 msgstr ""
 
-#: sales/manage/sales_types.php:154
+#: ../sales/manage/sales_types.php:154
 msgid "Sales Type Name"
 msgstr ""
 
-#: sales/manage/sales_types.php:155
+#: ../sales/manage/sales_types.php:155
 msgid "Calculation factor"
 msgstr ""
 
-#: sales/manage/sales_types.php:156
+#: ../sales/manage/sales_types.php:156
 msgid "Tax included"
 msgstr ""
 
-#: sales/view/view_credit.php:24
+#: ../sales/view/view_credit.php:24
 msgid "View Credit Note"
 msgstr ""
 
-#: sales/view/view_credit.php:39
+#: ../sales/view/view_credit.php:39
 #, php-format
 msgid "CREDIT NOTE #%d"
 msgstr ""
 
-#: sales/view/view_credit.php:126
+#: ../sales/view/view_credit.php:126
 msgid "There are no line items on this credit note."
 msgstr ""
 
-#: sales/view/view_dispatch.php:23
+#: ../sales/view/view_dispatch.php:23
 msgid "View Sales Dispatch"
 msgstr ""
 
-#: sales/view/view_dispatch.php:43
+#: ../sales/view/view_dispatch.php:43
 #, php-format
 msgid "DISPATCH NOTE #%d"
 msgstr ""
 
-#: sales/view/view_dispatch.php:65 sales/view/view_invoice.php:65
+#: ../sales/view/view_dispatch.php:65
+#: ../sales/view/view_invoice.php:67
 msgid "Charge Branch"
 msgstr ""
 
-#: sales/view/view_dispatch.php:91 sales/view/view_invoice.php:90
-#: sales/view/view_sales_order.php:63
+#: ../sales/view/view_dispatch.php:91
+#: ../sales/view/view_invoice.php:91
+#: ../sales/view/view_sales_order.php:63
 msgid "Customer Order Ref."
 msgstr ""
 
-#: sales/view/view_dispatch.php:96
+#: ../sales/view/view_dispatch.php:96
 msgid "Dispatch Date"
 msgstr ""
 
-#: sales/view/view_dispatch.php:151
+#: ../sales/view/view_dispatch.php:151
 msgid "There are no line items on this dispatch."
 msgstr ""
 
-#: sales/view/view_dispatch.php:162
+#: ../sales/view/view_dispatch.php:162
 msgid "TOTAL VALUE"
 msgstr ""
 
-#: sales/view/view_dispatch.php:166
+#: ../sales/view/view_dispatch.php:166
 msgid "This dispatch has been voided."
 msgstr ""
 
-#: sales/view/view_invoice.php:23
+#: ../sales/view/view_invoice.php:23
 msgid "View Sales Invoice"
 msgstr ""
 
-#: sales/view/view_invoice.php:43
+#: ../sales/view/view_invoice.php:45
+#, php-format
+msgid "FINAL INVOICE #%d"
+msgstr ""
+
+#: ../sales/view/view_invoice.php:45
+#, php-format
+msgid "PREPAYMENT INVOICE #%d"
+msgstr ""
+
+#: ../sales/view/view_invoice.php:45
 #, php-format
 msgid "SALES INVOICE #%d"
 msgstr ""
 
-#: sales/view/view_invoice.php:152
+#: ../sales/view/view_invoice.php:154
 msgid "There are no line items on this invoice."
 msgstr ""
 
-#: sales/view/view_receipt.php:24
+#: ../sales/view/view_receipt.php:24
 msgid "View Customer Payment"
 msgstr ""
 
-#: sales/view/view_receipt.php:33
+#: ../sales/view/view_receipt.php:33
 #, php-format
 msgid "Customer Payment #%d"
 msgstr ""
 
-#: sales/view/view_receipt.php:38
+#: ../sales/view/view_receipt.php:38
 msgid "From Customer"
 msgstr ""
 
-#: sales/view/view_receipt.php:40
+#: ../sales/view/view_receipt.php:40
 msgid "Date of Deposit"
 msgstr ""
 
-#: sales/view/view_receipt.php:43
+#: ../sales/view/view_receipt.php:43
 msgid "Customer Currency"
 msgstr ""
 
-#: sales/view/view_receipt.php:48
+#: ../sales/view/view_receipt.php:48
 msgid "Into Bank Account"
 msgstr ""
 
-#: sales/view/view_receipt.php:49
+#: ../sales/view/view_receipt.php:49
 msgid "Bank Amount"
 msgstr ""
 
-#: sales/view/view_receipt.php:56
+#: ../sales/view/view_receipt.php:56
 msgid "This customer payment has been voided."
 msgstr ""
 
-#: sales/view/view_sales_order.php:28
+#: ../sales/view/view_sales_order.php:28
 msgid "View Sales Quotation"
 msgstr ""
 
-#: sales/view/view_sales_order.php:29
+#: ../sales/view/view_sales_order.php:29
 #, php-format
 msgid "Sales Quotation #%d"
 msgstr ""
 
-#: sales/view/view_sales_order.php:33
+#: ../sales/view/view_sales_order.php:33
 msgid "View Sales Order"
 msgstr ""
 
-#: sales/view/view_sales_order.php:34
+#: ../sales/view/view_sales_order.php:34
 #, php-format
 msgid "Sales Order #%d"
 msgstr ""
 
-#: sales/view/view_sales_order.php:49
+#: ../sales/view/view_sales_order.php:49
 msgid "Order Information"
 msgstr ""
 
-#: sales/view/view_sales_order.php:60
+#: ../sales/view/view_sales_order.php:60
 msgid "Customer Name"
 msgstr ""
 
-#: sales/view/view_sales_order.php:64
+#: ../sales/view/view_sales_order.php:64
 msgid "Deliver To Branch"
 msgstr ""
 
-#: sales/view/view_sales_order.php:71
+#: ../sales/view/view_sales_order.php:71
 msgid "Requested Delivery"
 msgstr ""
 
-#: sales/view/view_sales_order.php:75
+#: ../sales/view/view_sales_order.php:75
 msgid "Deliver From Location"
 msgstr ""
 
-#: sales/view/view_sales_order.php:82
+#: ../sales/view/view_sales_order.php:86
+msgid "Non-Invoiced Prepayments"
+msgstr ""
+
+#: ../sales/view/view_sales_order.php:87
+msgid "All Payments Allocated"
+msgstr ""
+
+#: ../sales/view/view_sales_order.php:95
 msgid "Telephone"
 msgstr ""
 
-#: sales/view/view_sales_order.php:197
+#: ../sales/view/view_sales_order.php:215
 msgid "This Sales Order is used as a Template."
 msgstr ""
 
-#: sales/view/view_sales_order.php:202
+#: ../sales/view/view_sales_order.php:220
 msgid "Quantity Delivered"
 msgstr ""
 
-#: sales/inquiry/customer_allocation_inquiry.php:25
+#: ../sales/inquiry/customer_allocation_inquiry.php:25
 msgid "Customer Allocation Inquiry"
 msgstr ""
 
-#: sales/inquiry/customer_allocation_inquiry.php:96
+#: ../sales/inquiry/customer_allocation_inquiry.php:96
 msgid "Allocation"
 msgstr ""
 
-#: sales/inquiry/customer_allocation_inquiry.php:116
+#: ../sales/inquiry/customer_allocation_inquiry.php:116
 msgid "Payment"
 msgstr ""
 
-#: sales/inquiry/customer_inquiry.php:28
+#: ../sales/inquiry/customer_inquiry.php:26
 msgid "Customer Transactions"
 msgstr ""
 
-#: sales/inquiry/customer_inquiry.php:72
+#: ../sales/inquiry/customer_inquiry.php:68
 msgid "CUSTOMER ACCOUNT IS ON HOLD"
 msgstr ""
 
-#: sales/inquiry/customer_inquiry.php:198
+#: ../sales/inquiry/customer_inquiry.php:181
 msgid "Print Receipt"
 msgstr ""
 
-#: sales/inquiry/customer_inquiry.php:228
-#: sales/inquiry/customer_inquiry.php:241
+#: ../sales/inquiry/customer_inquiry.php:211
+#: ../sales/inquiry/customer_inquiry.php:224
 msgid "RB"
 msgstr ""
 
-#: sales/inquiry/sales_deliveries_view.php:29
+#: ../sales/inquiry/sales_deliveries_view.php:29
 msgid "Search Not Invoiced Deliveries"
 msgstr ""
 
-#: sales/inquiry/sales_deliveries_view.php:34
+#: ../sales/inquiry/sales_deliveries_view.php:34
 msgid "Search All Deliveries"
 msgstr ""
 
-#: sales/inquiry/sales_deliveries_view.php:70
+#: ../sales/inquiry/sales_deliveries_view.php:70
 msgid ""
 "For batch invoicing you should\n"
 "\t\t    select at least one delivery. All items must be dispatched to\n"
 "\t\t    the same customer branch."
 msgstr ""
 
-#: sales/inquiry/sales_deliveries_view.php:179
+#: ../sales/inquiry/sales_deliveries_view.php:179
 msgid "Delivery #"
 msgstr ""
 
-#: sales/inquiry/sales_deliveries_view.php:185
+#: ../sales/inquiry/sales_deliveries_view.php:185
 msgid "Cust Ref"
 msgstr ""
 
-#: sales/inquiry/sales_deliveries_view.php:187
+#: ../sales/inquiry/sales_deliveries_view.php:187
 msgid "Due By"
 msgstr ""
 
-#: sales/inquiry/sales_deliveries_view.php:188
+#: ../sales/inquiry/sales_deliveries_view.php:188
 msgid "Delivery Total"
 msgstr ""
 
-#: sales/inquiry/sales_deliveries_view.php:190
+#: ../sales/inquiry/sales_deliveries_view.php:190
 msgid "Batch"
 msgstr ""
 
-#: sales/inquiry/sales_deliveries_view.php:190
+#: ../sales/inquiry/sales_deliveries_view.php:190
 msgid "Batch Invoicing"
 msgstr ""
 
-#: sales/inquiry/sales_orders_view.php:40
+#: ../sales/inquiry/sales_orders_view.php:44
 msgid "Search Outstanding Sales Orders"
 msgstr ""
 
-#: sales/inquiry/sales_orders_view.php:45
+#: ../sales/inquiry/sales_orders_view.php:49
 msgid "Search Template for Invoicing"
 msgstr ""
 
-#: sales/inquiry/sales_orders_view.php:50
+#: ../sales/inquiry/sales_orders_view.php:54
 msgid "Select Template for Delivery"
 msgstr ""
 
-#: sales/inquiry/sales_orders_view.php:55
+#: ../sales/inquiry/sales_orders_view.php:59
+msgid "Invoicing Prepayment Orders"
+msgstr ""
+
+#: ../sales/inquiry/sales_orders_view.php:64
 msgid "Search All Sales Orders"
 msgstr ""
 
-#: sales/inquiry/sales_orders_view.php:61
+#: ../sales/inquiry/sales_orders_view.php:70
 msgid "Search All Sales Quotations"
 msgstr ""
 
-#: sales/inquiry/sales_orders_view.php:136
+#: ../sales/inquiry/sales_orders_view.php:148
 msgid "Dispatch"
 msgstr ""
 
-#: sales/inquiry/sales_orders_view.php:178
+#: ../sales/inquiry/sales_orders_view.php:191
 msgid "Set this order as a template for direct deliveries/invoices"
 msgstr ""
 
-#: sales/inquiry/sales_orders_view.php:245
+#: ../sales/inquiry/sales_orders_view.php:200
+msgid "Prepayment Invoice"
+msgstr ""
+
+#: ../sales/inquiry/sales_orders_view.php:200
+msgid "Final Invoice"
+msgstr ""
+
+#: ../sales/inquiry/sales_orders_view.php:268
 msgid "Show All:"
 msgstr ""
 
-#: sales/inquiry/sales_orders_view.php:262
+#: ../sales/inquiry/sales_orders_view.php:285
 msgid "Order #"
 msgstr ""
 
-#: sales/inquiry/sales_orders_view.php:266
-#: sales/inquiry/sales_orders_view.php:280
+#: ../sales/inquiry/sales_orders_view.php:289
+#: ../sales/inquiry/sales_orders_view.php:303
 msgid "Cust Order Ref"
 msgstr ""
 
-#: sales/inquiry/sales_orders_view.php:269
-#: sales/inquiry/sales_orders_view.php:283
+#: ../sales/inquiry/sales_orders_view.php:292
+#: ../sales/inquiry/sales_orders_view.php:306
 msgid "Delivery To"
 msgstr ""
 
-#: sales/inquiry/sales_orders_view.php:276
+#: ../sales/inquiry/sales_orders_view.php:299
 msgid "Quote #"
 msgstr ""
 
-#: sales/inquiry/sales_orders_view.php:281
+#: ../sales/inquiry/sales_orders_view.php:304
 msgid "Quote Date"
 msgstr ""
 
-#: sales/inquiry/sales_orders_view.php:284
+#: ../sales/inquiry/sales_orders_view.php:307
 msgid "Quote Total"
 msgstr ""
 
-#: sales/inquiry/sales_orders_view.php:311
+#: ../sales/inquiry/sales_orders_view.php:338
 msgid "Tmpl"
 msgstr ""
 
-#: sales/includes/cart_class.inc:378
+#: ../sales/includes/cart_class.inc:391
 msgid "You have to enter valid stock code or nonempty description"
 msgstr ""
 
-#: sales/includes/sales_ui.inc:50
+#: ../sales/includes/sales_ui.inc:50
 msgid ""
 "This edit session has been abandoned by opening sales document in another "
 "browser tab. You cannot edit more than one sales document at once."
 msgstr ""
 
-#: sales/includes/db/custalloc_db.inc:305
+#: ../sales/includes/db/custalloc_db.inc:351
 msgid ""
 "Unsuspected overallocation happened due to sparse credit notes exists for "
 "this invoice.\n"
@@ -13524,345 +15487,381 @@ msgid ""
 "charges."
 msgstr ""
 
-#: sales/includes/db/sales_invoice_db.inc:176
-msgid "Cash invoice"
-msgstr ""
-
-#: sales/includes/db/sales_order_db.inc:107
-#: sales/includes/db/sales_order_db.inc:279
-msgid "Stocks below Re-Order Level at "
-msgstr ""
-
-#: sales/includes/db/sales_order_db.inc:110
-#: sales/includes/db/sales_order_db.inc:284
-msgid "Below"
-msgstr ""
-
-#: sales/includes/db/sales_order_db.inc:111
-#: sales/includes/db/sales_order_db.inc:285
-msgid "Please reorder"
+#: ../sales/includes/db/old.sales_order_db.inc:139
+#: ../sales/includes/db/sales_order_db.inc:103
+#: ../sales/includes/db/sales_order_db.inc.orig:141
+msgid "Deleted."
 msgstr ""
 
-#: sales/includes/db/sales_order_db.inc:139
-msgid "Deleted."
+#: ../sales/includes/db/sales_invoice_db.inc:198
+msgid "Cash invoice"
 msgstr ""
 
-#: sales/includes/ui/sales_credit_ui.inc:94
-#: sales/includes/ui/sales_order_ui.inc:384
+#: ../sales/includes/ui/sales_credit_ui.inc:94
+#: ../sales/includes/ui/sales_order_ui.inc:385
 msgid "Customer Currency:"
 msgstr ""
 
-#: sales/includes/ui/sales_credit_ui.inc:112
-#: sales/includes/ui/sales_order_ui.inc:644
+#: ../sales/includes/ui/sales_credit_ui.inc:112
+#: ../sales/includes/ui/sales_order_ui.inc:653
 msgid "Shipping Company:"
 msgstr ""
 
-#: sales/includes/ui/sales_credit_ui.inc:114
-#: sales/includes/ui/sales_order_ui.inc:391
+#: ../sales/includes/ui/sales_credit_ui.inc:114
+#: ../sales/includes/ui/sales_order_ui.inc:392
 msgid "Customer Discount:"
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:61
+#: ../sales/includes/ui/sales_order_ui.inc:61
 msgid "This item is already on this document. You have been warned."
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:106
+#: ../sales/includes/ui/sales_order_ui.inc:106
 msgid ""
 "The selected customer and branch are not valid, or the customer does not "
 "have any branches."
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:230
+#: ../sales/includes/ui/sales_order_ui.inc:231
 msgid "Shipping Charge"
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:303
+#: ../sales/includes/ui/sales_order_ui.inc:304
 msgid "No customer found for entered text."
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:329
+#: ../sales/includes/ui/sales_order_ui.inc:330
 #, php-format
 msgid "Customer's payment terms '%s' cannot be selected on this POS"
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:378
+#: ../sales/includes/ui/sales_order_ui.inc:379
 msgid "Reference number unique for this document type"
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:418
-#: sales/includes/ui/sales_order_ui.inc:420
+#: ../sales/includes/ui/sales_order_ui.inc:419
+#: ../sales/includes/ui/sales_order_ui.inc:421
 msgid "Price List:"
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:437
+#: ../sales/includes/ui/sales_order_ui.inc:438
 msgid "Date of order receive"
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:587
+#: ../sales/includes/ui/sales_order_ui.inc:588
 msgid "Cash payment"
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:590
-#: sales/includes/ui/sales_order_ui.inc:622
+#: ../sales/includes/ui/sales_order_ui.inc:591
+#: ../sales/includes/ui/sales_order_ui.inc:623
 msgid "Deliver from Location:"
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:593
+#: ../sales/includes/ui/sales_order_ui.inc:594
 msgid "Cash account:"
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:600
+#: ../sales/includes/ui/sales_order_ui.inc:601
 msgid "Delivery Details"
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:605
+#: ../sales/includes/ui/sales_order_ui.inc:606
 msgid "Invoice Delivery Details"
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:606
+#: ../sales/includes/ui/sales_order_ui.inc:607
 msgid "Invoice before"
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:610
+#: ../sales/includes/ui/sales_order_ui.inc:611
 msgid "Quotation Delivery Details"
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:615
+#: ../sales/includes/ui/sales_order_ui.inc:616
 msgid "Order Delivery Details"
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:628
+#: ../sales/includes/ui/sales_order_ui.inc:637
 msgid "Enter requested day of delivery"
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:629
+#: ../sales/includes/ui/sales_order_ui.inc:638
 msgid "Enter Valid until Date"
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:630
+#: ../sales/includes/ui/sales_order_ui.inc:639
 msgid "Deliver To:"
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:631
+#: ../sales/includes/ui/sales_order_ui.inc:640
 msgid "Additional identifier for delivery e.g. name of receiving person"
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:634
+#: ../sales/includes/ui/sales_order_ui.inc:643
 msgid "Delivery address. Default is address of customer branch"
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:638
+#: ../sales/includes/ui/sales_order_ui.inc:647
 msgid "Contact Phone Number:"
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:639
+#: ../sales/includes/ui/sales_order_ui.inc:648
 msgid "Phone number of ordering person. Defaults to branch phone number"
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:640
+#: ../sales/includes/ui/sales_order_ui.inc:649
 msgid "Customer Reference:"
 msgstr ""
 
-#: sales/includes/ui/sales_order_ui.inc:641
+#: ../sales/includes/ui/sales_order_ui.inc:650
 msgid "Customer reference number for this order (if any)"
 msgstr ""
 
-#: taxes/item_tax_types.php:17
+#: ../taxes/item_tax_types.php:17
 msgid "Item Tax Types"
 msgstr ""
 
-#: taxes/item_tax_types.php:35
+#: ../taxes/item_tax_types.php:35
 msgid "The item tax type description cannot be empty."
 msgstr ""
 
-#: taxes/item_tax_types.php:60
+#: ../taxes/item_tax_types.php:60
 msgid "Selected item tax type has been updated"
 msgstr ""
 
-#: taxes/item_tax_types.php:65
+#: ../taxes/item_tax_types.php:65
 msgid "New item tax type has been added"
 msgstr ""
 
-#: taxes/item_tax_types.php:77
+#: ../taxes/item_tax_types.php:77
 msgid ""
 "Cannot delete this item tax type because items have been created referring "
 "to it."
 msgstr ""
 
-#: taxes/item_tax_types.php:82
+#: ../taxes/item_tax_types.php:82
 msgid ""
 "Cannot delete this item tax type because item categories have been created "
 "referring to it."
 msgstr ""
 
-#: taxes/item_tax_types.php:98
+#: ../taxes/item_tax_types.php:98
 msgid "Selected item tax type has been deleted"
 msgstr ""
 
-#: taxes/item_tax_types.php:117
+#: ../taxes/item_tax_types.php:117
 msgid "Tax exempt"
 msgstr ""
 
-#: taxes/item_tax_types.php:175
+#: ../taxes/item_tax_types.php:175
 msgid "Is Fully Tax-exempt:"
 msgstr ""
 
-#: taxes/item_tax_types.php:182
+#: ../taxes/item_tax_types.php:182
 msgid "Select which taxes this item tax type is exempt from."
 msgstr ""
 
-#: taxes/item_tax_types.php:185
+#: ../taxes/item_tax_types.php:185
 msgid "Tax Name"
 msgstr ""
 
-#: taxes/item_tax_types.php:185
+#: ../taxes/item_tax_types.php:185
 msgid "Is exempt"
 msgstr ""
 
-#: taxes/tax_groups.php:17
-msgid "Tax Groups"
+#: ../taxes/sav.tax_types.php:21
+#: ../taxes/tax_types.php:16
+msgid "Tax Types"
 msgstr ""
 
-#: taxes/tax_groups.php:27
-msgid ""
-"There are no tax types defined. Define tax types before defining tax groups."
+#: ../taxes/sav.tax_types.php:60
+#: ../taxes/tax_types.php:30
+msgid "The tax type name cannot be empty."
 msgstr ""
 
-#: taxes/tax_groups.php:40
-msgid "The tax group name cannot be empty."
+#: ../taxes/sav.tax_types.php:66
+#: ../taxes/tax_types.php:36
+msgid "The default tax rate must be numeric and not less than zero."
 msgstr ""
 
-#: taxes/tax_groups.php:61
-msgid "Selected tax group has been updated"
+#: ../taxes/sav.tax_types.php:72
+#: ../taxes/tax_types.php:42
+msgid "Selected GL Accounts cannot be used by another tax type."
 msgstr ""
 
-#: taxes/tax_groups.php:66
-msgid "New tax group has been added"
+#: ../taxes/sav.tax_types.php:86
+#: ../taxes/tax_types.php:56
+msgid "New tax type has been added"
 msgstr ""
 
-#: taxes/tax_groups.php:81
+#: ../taxes/sav.tax_types.php:97
+#: ../taxes/tax_types.php:67
+msgid "Selected tax type has been updated"
+msgstr ""
+
+#: ../taxes/sav.tax_types.php:107
+#: ../taxes/tax_types.php:77
 msgid ""
-"Cannot delete this tax group because customer branches been created "
-"referring to it."
+"Cannot delete this tax type because tax groups been created referring to it."
 msgstr ""
 
-#: taxes/tax_groups.php:87
+#: ../taxes/sav.tax_types.php:141
+#: ../taxes/tax_types.php:94
+msgid "Selected tax type has been deleted"
+msgstr ""
+
+#: ../taxes/sav.tax_types.php:164
 msgid ""
-"Cannot delete this tax group because suppliers been created referring to it."
+"Start new tax regulations span below, then select new span and edit tax "
+"rates as needed."
 msgstr ""
 
-#: taxes/tax_groups.php:104
-msgid "Selected tax group has been deleted"
+#: ../taxes/sav.tax_types.php:167
+msgid "Tax span begin:"
 msgstr ""
 
-#: taxes/tax_groups.php:124
-msgid "Shipping Tax"
+#: ../taxes/sav.tax_types.php:168
+msgid "Tax span end:"
 msgstr ""
 
-#: taxes/tax_groups.php:168
-msgid "Tax applied to Shipping:"
+#: ../taxes/sav.tax_types.php:172
+msgid "Add new span"
 msgstr ""
 
-#: taxes/tax_groups.php:172
-msgid "Select the taxes that are included in this group."
+#: ../taxes/sav.tax_types.php:182
+msgid "Tax regulations span:"
 msgstr ""
 
-#: taxes/tax_types.php:16
-msgid "Tax Types"
+#: ../taxes/sav.tax_types.php:183
+msgid "Add new tax sub-period"
 msgstr ""
 
-#: taxes/tax_types.php:30
-msgid "The tax type name cannot be empty."
+#: ../taxes/sav.tax_types.php:187
+#: ../taxes/tax_types.php:112
+msgid ""
+"To avoid problems with manual journal entry all tax types should have unique "
+"Sales/Purchasing GL accounts."
 msgstr ""
 
-#: taxes/tax_types.php:36
-msgid "The default tax rate must be numeric and not less than zero."
+#: ../taxes/sav.tax_types.php:190
+msgid "Rate (%)"
 msgstr ""
 
-#: taxes/tax_types.php:42
-msgid "Selected GL Accounts cannot be used by another tax type."
+#: ../taxes/sav.tax_types.php:190
+#: ../taxes/tax_types.php:116
+msgid "Sales GL Account"
 msgstr ""
 
-#: taxes/tax_types.php:56
-msgid "New tax type has been added"
+#: ../taxes/sav.tax_types.php:190
+#: ../taxes/tax_types.php:116
+msgid "Purchasing GL Account"
 msgstr ""
 
-#: taxes/tax_types.php:67
-msgid "Selected tax type has been updated"
+#: ../taxes/sav.tax_types.php:205
+msgid "Exempt"
 msgstr ""
 
-#: taxes/tax_types.php:77
-msgid ""
-"Cannot delete this tax type because tax groups been created referring to it."
+#: ../taxes/sav.tax_types.php:242
+#: ../taxes/tax_types.php:159
+msgid "Default Rate:"
 msgstr ""
 
-#: taxes/tax_types.php:94
-msgid "Selected tax type has been deleted"
+#: ../taxes/sav.tax_types.php:244
+#: ../taxes/tax_types.php:161
+msgid "Sales GL Account:"
+msgstr ""
+
+#: ../taxes/sav.tax_types.php:245
+#: ../taxes/tax_types.php:162
+msgid "Purchasing GL Account:"
+msgstr ""
+
+#: ../taxes/sav.tax_types.php:262
+msgid "Edit selected span"
 msgstr ""
 
-#: taxes/tax_types.php:112
+#: ../taxes/tax_groups.php:17
+msgid "Tax Groups"
+msgstr ""
+
+#: ../taxes/tax_groups.php:27
 msgid ""
-"To avoid problems with manual journal entry all tax types should have unique "
-"Sales/Purchasing GL accounts."
+"There are no tax types defined. Define tax types before defining tax groups."
 msgstr ""
 
-#: taxes/tax_types.php:115
-msgid "Default Rate (%)"
+#: ../taxes/tax_groups.php:40
+msgid "The tax group name cannot be empty."
 msgstr ""
 
-#: taxes/tax_types.php:116
-msgid "Sales GL Account"
+#: ../taxes/tax_groups.php:60
+msgid "Selected tax group has been updated"
 msgstr ""
 
-#: taxes/tax_types.php:116
-msgid "Purchasing GL Account"
+#: ../taxes/tax_groups.php:65
+msgid "New tax group has been added"
 msgstr ""
 
-#: taxes/tax_types.php:159
-msgid "Default Rate:"
+#: ../taxes/tax_groups.php:80
+msgid ""
+"Cannot delete this tax group because customer branches been created "
+"referring to it."
 msgstr ""
 
-#: taxes/tax_types.php:161
-msgid "Sales GL Account:"
+#: ../taxes/tax_groups.php:86
+msgid ""
+"Cannot delete this tax group because suppliers been created referring to it."
 msgstr ""
 
-#: taxes/tax_types.php:162
-msgid "Purchasing GL Account:"
+#: ../taxes/tax_groups.php:103
+msgid "Selected tax group has been deleted"
 msgstr ""
 
-#: themes/default/renderer.php:28
+#: ../taxes/tax_groups.php:166
+msgid "Select the taxes that are included in this group."
+msgstr ""
+
+#: ../taxes/tax_groups.php:171
+msgid "Shipping Tax"
+msgstr ""
+
+#: ../taxes/tax_types.php:115
+msgid "Default Rate (%)"
+msgstr ""
+
+#: ../themes/default/renderer.php:28
 msgid "Main Menu"
 msgstr ""
 
-#: themes/default/renderer.php:71 themes/default/renderer.php:81
+#: ../themes/default/renderer.php:71
+#: ../themes/default/renderer.php:81
 msgid "Help"
 msgstr ""
 
-#: themes/default/renderer.php:76
+#: ../themes/default/renderer.php:76
 msgid "Preferences"
 msgstr ""
 
-#: sql/alter2.1.php:18
+#: ../sql/alter2.1.php:18
 msgid "Upgrade from version 2.0 to 2.1"
 msgstr ""
 
-#: sql/alter2.1.php:35
+#: ../sql/alter2.1.php:36
 msgid "Cannot retrieve bank accounts codes"
 msgstr ""
 
-#: sql/alter2.1.php:43
+#: ../sql/alter2.1.php:44
 msgid "Cannot update bank transactions"
 msgstr ""
 
-#: sql/alter2.1.php:52
+#: ../sql/alter2.1.php:53
 msgid "Cannot select stock identificators"
 msgstr ""
 
-#: sql/alter2.1.php:63
+#: ../sql/alter2.1.php:64
 msgid "Cannot insert stock id into item_codes"
 msgstr ""
 
-#: sql/alter2.1.php:139
+#: ../sql/alter2.1.php:140
 msgid ""
 "Seems that system upgrade to version 2.1 has \n"
 "\t\t\tbeen performed for this company already.<br> If something has gone \n"
@@ -13870,24 +15869,28 @@ msgid ""
 "\t\t\tdatabase restore from last backup file first."
 msgstr ""
 
-#: sql/alter2.2.php:23
+#: ../sql/alter2.2.php:23
 msgid "Upgrade from version 2.1/2.2beta to 2.2"
 msgstr ""
 
-#: sql/alter2.2.php:84
+#: ../sql/alter2.2.php:85
 msgid "Cannot query max sales order number."
 msgstr ""
 
-#: sql/alter2.2.php:95
+#: ../sql/alter2.2.php:96
 msgid "Cannot store next sales order reference."
 msgstr ""
 
-#: sql/alter2.2.php:250
+#: ../sql/alter2.2.php:251
 msgid ""
 "Cannot upgrade extensions system: file /modules/installed_modules.php is not "
 "writeable"
 msgstr ""
 
-#: sql/alter2.3.php:20
+#: ../sql/alter2.3.php:20
 msgid "Upgrade from version 2.2 to 2.3"
 msgstr ""
+
+#: ../sql/alter2.4.php:19
+msgid "Upgrade from version 2.3 to 2.4"
+msgstr ""
diff --git a/manufacturing/includes/db/work_order_costing_db.inc b/manufacturing/includes/db/work_order_costing_db.inc
new file mode 100644 (file)
index 0000000..e6d1e12
--- /dev/null
@@ -0,0 +1,291 @@
+<?php
+/**********************************************************************
+    Copyright (C) FrontAccounting, LLC.
+       Released under the terms of the GNU General Public License, GPL, 
+       as published by the Free Software Foundation, either version 3 
+       of the License, or (at your option) any later version.
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+    See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
+***********************************************************************/
+
+function add_wo_costing($workorder_id, $cost_type, $trans_type, $trans_no, $factor=1)
+{
+       $sql = "INSERT INTO ".TB_PREF."wo_costing (workorder_id, cost_type, trans_type, trans_no, factor)
+               VALUES (".db_escape($workorder_id).","
+               .db_escape($cost_type).",".db_escape($trans_type).","
+               .db_escape($trans_no).",".db_escape($factor).")";
+
+       db_query($sql, "could not add work order costing");
+
+}
+
+function get_wo_costing($workorder_id)
+{
+       $sql="SELECT * FROM ".TB_PREF."wo_costing WHERE workorder_id=".db_escape($workorder_id);
+
+       return db_query($sql, "could not get work order costing");
+}
+
+function delete_wo_costing($trans_type, $trans_no)
+{
+       $sql="DELETE FROM ".TB_PREF."wo_costing WHERE trans_type=".db_escape($trans_type)
+               ." AND trans_no=".db_escape($trans_no);
+
+       db_query($sql, "could not delete work order costing");
+}
+//--------------------------------------------------------------------------------------
+
+function add_material_cost($stock_id, $qty, $date_, $advanced=false)
+{
+       $m_cost = 0;
+    $result = get_bom($stock_id);
+       while ($bom_item = db_fetch($result))
+       {
+               $standard_cost = get_standard_cost($bom_item['component']);
+               $m_cost += ($bom_item['quantity'] * $standard_cost);
+       }
+       $bom_cost = $m_cost;
+       
+       $sql = "SELECT material_cost, labour_cost, overhead_cost FROM ".TB_PREF."stock_master WHERE stock_id = "
+               .db_escape($stock_id);
+       $result = db_query($sql);
+       $myrow = db_fetch($result);
+       $material_cost =  $myrow['material_cost'];
+       
+       if ($advanced)
+       {
+               //reduce overhead_cost and labour_cost from price as those will remain as is
+               $m_cost = $m_cost - $myrow['labour_cost'] - $myrow['overhead_cost'];
+       }
+       
+       $qoh = get_qoh_on_date($stock_id);
+       $cost_adjust = false;
+       if ($qoh < 0)
+       {
+               if ($qoh + $qty >= 0)
+                       $cost_adjust = true;
+               $qoh = 0;
+       }               
+       if ($qoh + $qty != 0)   
+               $material_cost = ($qoh * $material_cost + $qty * $m_cost) /     ($qoh + $qty);
+       
+       if ($advanced && $cost_adjust) // new 2010-02-10
+               adjust_deliveries($stock_id, $bom_cost, $date_);        
+       
+       $sql = "UPDATE ".TB_PREF."stock_master SET material_cost=".db_escape($material_cost)."
+                   WHERE stock_id=".db_escape($stock_id);
+       db_query($sql,"The cost details for the inventory item could not be updated");
+}
+
+function add_overhead_cost($stock_id, $qty, $date_, $costs, $adj_only=false)
+{
+       if ($qty != 0)
+               $costs /= $qty;
+       $sql = "SELECT overhead_cost FROM ".TB_PREF."stock_master WHERE stock_id = "
+               .db_escape($stock_id);
+       $result = db_query($sql);
+       $myrow = db_fetch($result);
+       $overhead_cost =  $myrow['overhead_cost'];
+       $qoh = get_qoh_on_date($stock_id);
+       if ($qoh < 0)
+               $qoh = 0;
+       if ($adj_only)
+       {
+               if ($qty != 0)
+                       $costs = $qty * $costs;
+               if ($qoh>0)
+                       $overhead_cost = ($qoh * $overhead_cost + $costs) / $qoh;
+               else // Journal Entry if QOH is 0/negative 
+               {
+                       global $Refs;
+
+                       $id = get_next_trans_no(ST_JOURNAL);
+                       $ref = $Refs->get_next(ST_JOURNAL);
+                       
+                       $stock_gl_code = get_stock_gl_code($stock_id);
+                       $memo = "WO Overhead cost settlement JV for zero/negative respository of ".$stock_id;
+                       //Reverse the inventory effect if $qoh <=0
+                       add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, 
+                               $stock_gl_code["inventory_account"],
+                               $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, 
+                               -$costs);
+                       //GL Posting to inventory adjustment account
+                       add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, 
+                               $stock_gl_code["adjustment_account"],
+                               $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo,
+                               $costs);
+                               
+                       add_audit_trail(ST_JOURNAL, $id, $date_);
+                       add_comments(ST_JOURNAL, $id, $date_, $memo);
+                       $Refs->save(ST_JOURNAL, $id, $ref);     
+               }
+       }
+       else
+       {               
+               if ($qoh + $qty != 0)   
+                       $overhead_cost = ($qoh * $overhead_cost + $qty * $costs) /      ($qoh + $qty);
+       }
+       $sql = "UPDATE ".TB_PREF."stock_master SET overhead_cost=".db_escape($overhead_cost)."
+               WHERE stock_id=".db_escape($stock_id);
+       db_query($sql,"The cost details for the inventory item could not be updated");
+}
+
+function add_labour_cost($stock_id, $qty, $date_, $costs, $adj_only=false)
+{
+       if ($qty != 0)
+               $costs /= $qty;
+       $sql = "SELECT labour_cost FROM ".TB_PREF."stock_master WHERE stock_id = "
+               .db_escape($stock_id);
+       $result = db_query($sql);
+       $myrow = db_fetch($result);
+       $labour_cost =  $myrow['labour_cost'];
+       $qoh = get_qoh_on_date($stock_id);
+       if ($qoh < 0)
+               $qoh = 0;
+       if ($adj_only)
+       {
+               if ($qty != 0)
+                       $costs = $qty * $costs;
+               if ($qoh>0)
+                       $labour_cost = ($qoh * $labour_cost + $costs) / $qoh;   
+               else // Journal Entry if QOH is 0/negative 
+               {
+                       global $Refs;
+
+                       $id = get_next_trans_no(ST_JOURNAL);
+                       $ref = $Refs->get_next(ST_JOURNAL);
+                       
+                       $stock_gl_code = get_stock_gl_code($stock_id);
+                       $memo = "WO labour cost settlement JV for zero/negative respository of ".$stock_id;
+                       //Reverse the inventory effect if $qoh <=0
+                       add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, 
+                               $stock_gl_code["inventory_account"],
+                               $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, 
+                               -$costs);
+                       //GL Posting to inventory adjustment account
+                       add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, 
+                               $stock_gl_code["adjustment_account"],
+                               $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo,
+                               $costs);
+                               
+                       add_audit_trail(ST_JOURNAL, $id, $date_);
+                       add_comments(ST_JOURNAL, $id, $date_, $memo);
+                       $Refs->save(ST_JOURNAL, $id, $ref);     
+               }
+       }
+       else
+       {               
+               if ($qoh + $qty != 0)   
+                       $labour_cost = ($qoh * $labour_cost + $qty * $costs) /  ($qoh + $qty);
+       }       
+       $sql = "UPDATE ".TB_PREF."stock_master SET labour_cost=".db_escape($labour_cost)."
+               WHERE stock_id=".db_escape($stock_id);
+       db_query($sql,"The cost details for the inventory item could not be updated");
+}
+
+function add_issue_cost($stock_id, $qty, $date_, $costs, $adj_only=false)
+{
+       if ($qty != 0)
+               $costs /= $qty;
+       $sql = "SELECT material_cost FROM ".TB_PREF."stock_master WHERE stock_id = "
+               .db_escape($stock_id);
+       $result = db_query($sql);
+       $myrow = db_fetch($result);
+       $material_cost =  $myrow['material_cost'];
+       $qoh = get_qoh_on_date($stock_id);
+       if ($qoh < 0)
+               $qoh = 0;
+       if ($adj_only)
+       {
+               if ($qty != 0)
+                       $costs = $qty * $costs;
+               if ($qoh>0)
+                       $material_cost = $costs / $qoh;
+               else // Journal Entry if QOH is 0/negative
+               {
+                       global $Refs;
+
+                       $id = get_next_trans_no(ST_JOURNAL);
+                       $ref = $Refs->get_next(ST_JOURNAL);
+                       
+                       $stock_gl_code = get_stock_gl_code($stock_id);
+                       $memo = "WO Issue settlement JV for zero/negative respository of ".$stock_id;
+                       //Reverse the inventory effect if $qoh <=0
+                       add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, 
+                               $stock_gl_code["inventory_account"],
+                               $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, 
+                               -$costs);
+                       //GL Posting to inventory adjustment account
+                       add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, 
+                               $stock_gl_code["adjustment_account"],
+                               $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo,
+                               $costs);
+                               
+                       add_audit_trail(ST_JOURNAL, $id, $date_);
+                       add_comments(ST_JOURNAL, $id, $date_, $memo);
+                       $Refs->save(ST_JOURNAL, $id, $ref);     
+               }
+       }
+       else
+       {
+               if ($qoh + $qty != 0)   
+                       $material_cost = ($qty * $costs) /      ($qoh + $qty);
+       }       
+       $sql = "UPDATE ".TB_PREF."stock_master SET material_cost=material_cost+"
+               .db_escape($material_cost)
+               ." WHERE stock_id=".db_escape($stock_id);
+       db_query($sql,"The cost details for the inventory item could not be updated");
+}
+
+/*
+       Create journal entry for WO related costs.
+*/
+function add_wo_costs_journal($wo_id, $amount, $cost_type, $cr_acc, $db_acc, $date, $dim1=0, $dim2=0, $memo = null, $ref= null)
+{
+//-------- this should be done by single call to write_journal_entries() using items_cart()
+//
+       global $Refs, $wo_cost_types;
+
+       begin_transaction();
+
+    $journal_id = get_next_trans_no(ST_JOURNAL);
+    if (!$ref) $ref = $Refs->get_next(ST_JOURNAL);
+
+       add_gl_trans_std_cost(ST_JOURNAL, $journal_id, $date, $cr_acc,
+               0, 0, $wo_cost_types[$cost_type], -$amount);
+       $is_bank_to = is_bank_account($cr_acc);
+       if ($is_bank_to)
+       {
+               add_bank_trans(ST_JOURNAL, $journal_id, $is_bank_to, "",
+                       $date, -$amount, PT_WORKORDER, $wo_id, get_company_currency(),
+                       "Cannot insert a destination bank transaction");
+       }
+
+       add_gl_trans_std_cost(ST_JOURNAL, $journal_id, $date, $db_acc,
+               $dim1, $dim2,  $wo_cost_types[$cost_type], $amount);
+
+       $Refs->save(ST_JOURNAL, $journal_id, $ref);
+
+       add_wo_costing($wo_id, $cost_type, ST_JOURNAL, $journal_id);
+
+       add_comments(ST_JOURNAL, $journal_id, $date, $memo);
+       add_audit_trail(ST_JOURNAL, $journal_id, $date);
+
+       commit_transaction();
+}
+
+function void_wo_costing($wo_id)
+{
+       $res = get_wo_costing($wo_id);
+
+       while($row = db_fetch($res))
+       {
+               // void any related gl trans
+               void_gl_trans($row['trans_type'], $row['trans_no'], true);
+       }
+
+       $sql = "DELETE FROM ".TB_PREF."wo_costing WHERE workorder_id=".db_escape($wo_id);
+       db_query($sql, "could not delete work order costing");
+}
index ca2f4a86883b5d213f556cc460a5c738b3b41275..8b7f7f7db36c82d2ef12b505807a5f3b295743b9 100644 (file)
@@ -70,13 +70,13 @@ function add_work_order_issue($woid, $ref, $to_work_order, $items, $location, $w
                $issue_cost = $standard_cost * $item->quantity;
                $issue = get_stock_gl_code($item->stock_id);
         $stockitem = get_item($item->stock_id);
-               
+
                //Chaitanya : Compatibility for Service Items
                if (!is_service($issue["mb_flag"]))
                        $ivaccount = $issue["inventory_account"];
                else
                        $ivaccount = $issue["cogs_account"];            
-               
+
         $total_cost += add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $ivaccount, 0, 0,
                 $date_.": "._("Issue of")." ".$stockitem["description"], -$issue_cost);                        
                $issue_total += $issue_cost;
@@ -166,7 +166,7 @@ function void_work_order_issue($type_no)
 {
        begin_transaction();
        hook_db_prevoid(ST_MANUISSUE, $type_no);
-       
+
        //Chaitanya : Skip processing already voided entry i.e. explicitly voided
        $void_entry = get_voided_entry(ST_MANUISSUE, $type_no);
        if ($void_entry)
@@ -186,7 +186,7 @@ function void_work_order_issue($type_no)
        $manf_stock_id = $issue["stock_id"];
        $date_ = sql2date($issue["issue_date"]);
        $woid = $issue["workorder_id"];
-               
+
        $result = get_stock_moves(ST_MANUISSUE, $type_no);
        $total_cost = 0;
        $issue_total = 0;
@@ -195,18 +195,18 @@ function void_work_order_issue($type_no)
                $issue_cost = $myrow["qty"]*$myrow["standard_cost"];
                $issue = get_stock_gl_code($myrow["stock_id"]);
         $stockitem = get_item($myrow["stock_id"]);
-               
+
                //Chaitanya : Compatibility for Service Items
                if (!is_service($issue["mb_flag"]))
                        $ivaccount = $issue["inventory_account"];
                else
-                       $ivaccount = $issue["cogs_account"];            
-               
+                       $ivaccount = $issue["cogs_account"];
+
                if ($issue_cost != 0)
                {
                        $total_cost += add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $ivaccount, 0, 0,
                                $date_.": "._("Reversed the issue of")." ".$stockitem["description"],
-                               -$issue_cost);                  
+                               -$issue_cost);
                        $issue_total += $issue_cost;
                }
        }
@@ -219,10 +219,10 @@ function void_work_order_issue($type_no)
                add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $issue["inventory_account"],
                        0, 0, $date_.": "._("Reversed the issue to")." ".$stockitem["description"], 
                        -$total_cost);  
-       
+
        //Chaitanya : Shifted below void all related stock moves
        void_stock_move(ST_MANUISSUE, $type_no);
-       
+
        commit_transaction();
 }
 
index 38af2add9b98efd04427682b1d22abdcb67aa694..dcac240cb831ba4020f5b989cac60b7672c86a85 100644 (file)
@@ -44,11 +44,10 @@ function work_order_produce($woid, $ref, $quantity, $date_, $memo_, $close_wo)
        db_query($sql,"A work order manufacture could not be added");
 
        $id = db_insert_id();
-       
+
        // -------------------------------------------------------------------------
 
        work_order_quick_costs($woid, $details["stock_id"], $quantity, $date_, $id);
-       
        // -------------------------------------------------------------------------
 
        // Chaitanya: stamp BOM cost to finished item
@@ -58,7 +57,7 @@ function work_order_produce($woid, $ref, $quantity, $date_, $memo_, $close_wo)
        {
                $standard_cost = get_standard_cost($bom_item['component']);
                $m_cost += ($bom_item['quantity'] * $standard_cost);
-       }       
+       }
 
        // insert a +ve stock move for the item being manufactured
        // negative means "unproduce" or unassemble
@@ -118,7 +117,7 @@ function void_work_order_produce($type_no)
 {
        begin_transaction();
        hook_db_prevoid(ST_MANURECEIVE, $type_no);
-       
+
        //Chaitanya : Skip processing already voided entry i.e. explicitly voided
        $void_entry = get_voided_entry(ST_MANURECEIVE, $type_no);
        if ($void_entry)
@@ -145,25 +144,24 @@ function void_work_order_produce($type_no)
                $issue_cost = $myrow["qty"]*$myrow["standard_cost"];
                $issue = get_stock_gl_code($myrow["stock_id"]);
         $stockitem = get_item($myrow["stock_id"]);
-               
+
                //Chaitanya : Compatibility for Service Items
                if (!is_service($issue["mb_flag"]))
                        $ivaccount = $issue["inventory_account"];
                else
-                       $ivaccount = $issue["cogs_account"];            
-               
+                       $ivaccount = $issue["cogs_account"];
+
                if ($issue_cost != 0)
                {
                        add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $ivaccount, 0, 0,
                                $date_.": "._("Reversed the production ")." ".$stockitem["description"],
                                -$issue_cost);
                }
-       }       
-                       
+       }
        // clear the production record
        $sql = "UPDATE ".TB_PREF."wo_manufacture SET quantity=0 WHERE id=".db_escape($type_no);
-       db_query($sql, "Cannot void a wo production");                  
-       
+       db_query($sql, "Cannot void a wo production");
+
        //Chaitanya : Shifted below
        // void all related stock moves
        void_stock_move(ST_MANURECEIVE, $type_no);
index a79c2574dab6e626556bc66d3ffb9a610fb71d3c..c9a352e1f9b93408dd460a25527c4d66f1cc25e3 100644 (file)
@@ -9,210 +9,6 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
 ***********************************************************************/
-//--------------------------------------------------------------------------------------
-
-function add_material_cost($stock_id, $qty, $date_, $advanced=false)
-{
-       $m_cost = 0;
-    $result = get_bom($stock_id);
-       while ($bom_item = db_fetch($result))
-       {
-               $standard_cost = get_standard_cost($bom_item['component']);
-               $m_cost += ($bom_item['quantity'] * $standard_cost);
-       }
-       $bom_cost = $m_cost;
-       
-       $sql = "SELECT material_cost, labour_cost, overhead_cost FROM ".TB_PREF."stock_master WHERE stock_id = "
-               .db_escape($stock_id);
-       $result = db_query($sql);
-       $myrow = db_fetch($result);
-       $material_cost =  $myrow['material_cost'];
-       
-       if ($advanced)
-       {
-               //reduce overhead_cost and labour_cost from price as those will remain as is
-               $m_cost = $m_cost - $myrow['labour_cost'] - $myrow['overhead_cost'];
-       }
-       
-       $qoh = get_qoh_on_date($stock_id);
-       $cost_adjust = false;
-       if ($qoh < 0)
-       {
-               if ($qoh + $qty >= 0)
-                       $cost_adjust = true;
-               $qoh = 0;
-       }               
-       if ($qoh + $qty != 0)   
-               $material_cost = ($qoh * $material_cost + $qty * $m_cost) /     ($qoh + $qty);
-       
-       if ($advanced && $cost_adjust) // new 2010-02-10
-               adjust_deliveries($stock_id, $bom_cost, $date_);        
-       
-       $sql = "UPDATE ".TB_PREF."stock_master SET material_cost=".db_escape($material_cost)."
-                   WHERE stock_id=".db_escape($stock_id);
-       db_query($sql,"The cost details for the inventory item could not be updated");
-}
-
-function add_overhead_cost($stock_id, $qty, $date_, $costs, $adj_only=false)
-{
-       if ($qty != 0)
-               $costs /= $qty;
-       $sql = "SELECT overhead_cost FROM ".TB_PREF."stock_master WHERE stock_id = "
-               .db_escape($stock_id);
-       $result = db_query($sql);
-       $myrow = db_fetch($result);
-       $overhead_cost =  $myrow['overhead_cost'];
-       $qoh = get_qoh_on_date($stock_id);
-       if ($qoh < 0)
-               $qoh = 0;
-       if ($adj_only)
-       {
-               if ($qty != 0)
-                       $costs = $qty * $costs;
-               if ($qoh>0)
-                       $overhead_cost = ($qoh * $overhead_cost + $costs) / $qoh;
-               else // Journal Entry if QOH is 0/negative 
-               {
-                       global $Refs;
-
-                       $id = get_next_trans_no(ST_JOURNAL);
-                       $ref = $Refs->get_next(ST_JOURNAL);
-                       
-                       $stock_gl_code = get_stock_gl_code($stock_id);
-                       $memo = "WO Overhead cost settlement JV for zero/negative respository of ".$stock_id;
-                       //Reverse the inventory effect if $qoh <=0
-                       add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, 
-                               $stock_gl_code["inventory_account"],
-                               $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, 
-                               -$costs);
-                       //GL Posting to inventory adjustment account
-                       add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, 
-                               $stock_gl_code["adjustment_account"],
-                               $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo,
-                               $costs);
-                               
-                       add_audit_trail(ST_JOURNAL, $id, $date_);
-                       add_comments(ST_JOURNAL, $id, $date_, $memo);
-                       $Refs->save(ST_JOURNAL, $id, $ref);     
-               }
-       }
-       else
-       {               
-               if ($qoh + $qty != 0)   
-                       $overhead_cost = ($qoh * $overhead_cost + $qty * $costs) /      ($qoh + $qty);
-       }
-       $sql = "UPDATE ".TB_PREF."stock_master SET overhead_cost=".db_escape($overhead_cost)."
-               WHERE stock_id=".db_escape($stock_id);
-       db_query($sql,"The cost details for the inventory item could not be updated");
-}
-
-function add_labour_cost($stock_id, $qty, $date_, $costs, $adj_only=false)
-{
-       if ($qty != 0)
-               $costs /= $qty;
-       $sql = "SELECT labour_cost FROM ".TB_PREF."stock_master WHERE stock_id = "
-               .db_escape($stock_id);
-       $result = db_query($sql);
-       $myrow = db_fetch($result);
-       $labour_cost =  $myrow['labour_cost'];
-       $qoh = get_qoh_on_date($stock_id);
-       if ($qoh < 0)
-               $qoh = 0;
-       if ($adj_only)
-       {
-               if ($qty != 0)
-                       $costs = $qty * $costs;
-               if ($qoh>0)
-                       $labour_cost = ($qoh * $labour_cost + $costs) / $qoh;   
-               else // Journal Entry if QOH is 0/negative 
-               {
-                       global $Refs;
-
-                       $id = get_next_trans_no(ST_JOURNAL);
-                       $ref = $Refs->get_next(ST_JOURNAL);
-                       
-                       $stock_gl_code = get_stock_gl_code($stock_id);
-                       $memo = "WO labour cost settlement JV for zero/negative respository of ".$stock_id;
-                       //Reverse the inventory effect if $qoh <=0
-                       add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, 
-                               $stock_gl_code["inventory_account"],
-                               $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, 
-                               -$costs);
-                       //GL Posting to inventory adjustment account
-                       add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, 
-                               $stock_gl_code["adjustment_account"],
-                               $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo,
-                               $costs);
-                               
-                       add_audit_trail(ST_JOURNAL, $id, $date_);
-                       add_comments(ST_JOURNAL, $id, $date_, $memo);
-                       $Refs->save(ST_JOURNAL, $id, $ref);     
-               }
-       }
-       else
-       {               
-               if ($qoh + $qty != 0)   
-                       $labour_cost = ($qoh * $labour_cost + $qty * $costs) /  ($qoh + $qty);
-       }       
-       $sql = "UPDATE ".TB_PREF."stock_master SET labour_cost=".db_escape($labour_cost)."
-               WHERE stock_id=".db_escape($stock_id);
-       db_query($sql,"The cost details for the inventory item could not be updated");
-}
-
-function add_issue_cost($stock_id, $qty, $date_, $costs, $adj_only=false)
-{
-       if ($qty != 0)
-               $costs /= $qty;
-       $sql = "SELECT material_cost FROM ".TB_PREF."stock_master WHERE stock_id = "
-               .db_escape($stock_id);
-       $result = db_query($sql);
-       $myrow = db_fetch($result);
-       $material_cost =  $myrow['material_cost'];
-       $qoh = get_qoh_on_date($stock_id);
-       if ($qoh < 0)
-               $qoh = 0;
-       if ($adj_only)
-       {
-               if ($qty != 0)
-                       $costs = $qty * $costs;
-               if ($qoh>0)
-                       $material_cost = $costs / $qoh;
-               else // Journal Entry if QOH is 0/negative
-               {
-                       global $Refs;
-
-                       $id = get_next_trans_no(ST_JOURNAL);
-                       $ref = $Refs->get_next(ST_JOURNAL);
-                       
-                       $stock_gl_code = get_stock_gl_code($stock_id);
-                       $memo = "WO Issue settlement JV for zero/negative respository of ".$stock_id;
-                       //Reverse the inventory effect if $qoh <=0
-                       add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, 
-                               $stock_gl_code["inventory_account"],
-                               $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo, 
-                               -$costs);
-                       //GL Posting to inventory adjustment account
-                       add_gl_trans_std_cost(ST_JOURNAL, $id, $date_, 
-                               $stock_gl_code["adjustment_account"],
-                               $stock_gl_code['dimension_id'], $stock_gl_code['dimension2_id'], $memo,
-                               $costs);
-                               
-                       add_audit_trail(ST_JOURNAL, $id, $date_);
-                       add_comments(ST_JOURNAL, $id, $date_, $memo);
-                       $Refs->save(ST_JOURNAL, $id, $ref);     
-               }
-       }
-       else
-       {
-               if ($qoh + $qty != 0)   
-                       $material_cost = ($qty * $costs) /      ($qoh + $qty);
-       }       
-       $sql = "UPDATE ".TB_PREF."stock_master SET material_cost=material_cost+"
-               .db_escape($material_cost)
-               ." WHERE stock_id=".db_escape($stock_id);
-       db_query($sql,"The cost details for the inventory item could not be updated");
-}
-
 function add_work_order($wo_ref, $loc_code, $units_reqd, $stock_id,
        $type, $date_, $required_by, $memo_, $costs, $cr_acc, $labour, $cr_lab_acc)
 {
@@ -228,6 +24,8 @@ function add_work_order($wo_ref, $loc_code, $units_reqd, $stock_id,
        $args->woid = 0;
        hook_db_prewrite($args, ST_WORKORDER);
 
+       add_material_cost($stock_id, $units_reqd, $date_);
+
        $date = date2sql($date_);
        $required = date2sql($required_by);
 
@@ -263,6 +61,9 @@ function update_work_order($woid, $loc_code, $units_reqd, $stock_id,
                'date_', 'required_by', 'memo_'), $args);
        hook_db_prewrite($args, ST_WORKORDER);
 
+       add_material_cost($_POST['old_stk_id'], -$_POST['old_qty'], $date_);
+       add_material_cost($stock_id, $units_reqd, $date_);
+
        $date = date2sql($date_);
        $required = date2sql($required_by);
 
@@ -286,6 +87,8 @@ function delete_work_order($woid)
        begin_transaction();
        hook_db_prevoid(ST_WORKORDER, $woid);
 
+       add_material_cost($_POST['stock_id'], -$_POST['quantity'], $_POST['date_']);
+
        // delete the work order requirements
        delete_wo_requirements($woid);
 
@@ -370,7 +173,7 @@ function release_work_order($woid, $releaseDate, $memo_)
        create_wo_requirements($woid, $stock_id);
 
        add_comments(ST_WORKORDER, $woid, $releaseDate, $memo_);
-       add_audit_trail(ST_WORKORDER, $woid, $releaseDate,_("Released."));
+       add_audit_trail(ST_WORKORDER, $woid, sql2date($myrow['date_']), _("Released."));
 
        commit_transaction();
 }
@@ -414,6 +217,16 @@ function void_work_order($woid)
        $work_order = get_work_order($woid);
        if (!($work_order["type"] == WO_ADVANCED))
        {
+               $date = sql2date($work_order['date_']);
+               $qty = $work_order['units_reqd'];
+               add_material_cost($work_order['stock_id'], -$qty, $date); // remove avg. cost for qty
+               $cost = get_gl_wo_cost($woid, WO_LABOUR); // get the labour cost and reduce avg cost
+               if ($cost != 0)
+                       add_labour_cost($work_order['stock_id'], -$qty, $date, $cost);
+               $cost = get_gl_wo_cost($woid, WO_OVERHEAD); // get the overhead cost and reduce avg cost
+               if ($cost != 0)
+                       add_overhead_cost($work_order['stock_id'], -$qty, $date, $cost);
+
                $sql = "UPDATE ".TB_PREF."workorders SET closed=1,units_reqd=0,units_issued=0 WHERE id = "
                        .db_escape($woid);
                db_query($sql, "The work order couldn't be voided");
@@ -421,8 +234,7 @@ function void_work_order($woid)
                // void all related stock moves
                void_stock_move(ST_WORKORDER, $woid);
 
-               // void any related bank/gl trans
-               void_bank_trans(ST_WORKORDER, $woid, true);
+               void_wo_costing($woid);
 
                // clear the requirements units received
                void_wo_requirements($woid);
@@ -431,20 +243,17 @@ function void_work_order($woid)
        {
                // void everything inside the work order : issues, productions, payments
                $date = sql2date($work_order['date_']);
-               
+               add_material_cost($work_order['stock_id'], -$work_order['units_reqd'], $date); // remove avg. cost for qty
                $result = get_work_order_productions($woid); // check the produced quantity
                $qty = 0;
                while ($row = db_fetch($result))
                {
-                       void_work_order_produce($row['id']);
-                       
-                       //Post voided entry if not prevoided explicitly
-                       $void_entry = get_voided_entry(ST_MANURECEIVE, $row['id']);
-                       if ($void_entry)
-                               continue;
-                       $memo_ = _("Voiding Work Order Trans # ").$woid;
-                       add_audit_trail(ST_MANURECEIVE, $row['id'], today(), _("Voided.")."\n".$memo_);
-                       add_voided_entry(ST_MANURECEIVE, $row['id'], today(), $memo_);
+                       $qty += $row['quantity'];
+                       // clear the production record
+                       $sql = "UPDATE ".TB_PREF."wo_manufacture SET quantity=0 WHERE id=".$$row['id'];
+                       db_query($sql, "Cannot void a wo production");
+
+                       void_stock_move(ST_MANURECEIVE, $row['id']); // and void the stock moves; 
                }
 
                $result = get_work_order_issues($woid);
@@ -452,16 +261,20 @@ function void_work_order($woid)
                $issue_no = 0;
                while ($row = db_fetch($result))
                {
-                       void_work_order_issue($row['issue_no']);
-                       
-                       //Post voided entry if not prevoided explicitly
-                       $void_entry = get_voided_entry(ST_MANUISSUE, $row['issue_no']);
-                       if ($void_entry)
-                               continue;
-                       $memo_ = _("Voiding Work Order Trans # ").$woid;
-                       add_audit_trail(ST_MANUISSUE, $row['issue_no'], today(), _("Voided.")."\n".$memo_);
-                       add_voided_entry(ST_MANUISSUE, $row['issue_no'], today(), $memo_);                              
-               }
+                       $std_cost = get_standard_cost($row['stock_id']);
+                       $icost = $std_cost * $row['qty_issued'];
+                       $cost += $icost;
+                       if ($issue_no == 0)
+                               $issue_no = $row['issue_no'];
+                       // void the actual issue items and their quantities
+                       $sql = "UPDATE ".TB_PREF."wo_issue_items SET qty_issued = 0 WHERE issue_id="
+                               .db_escape($row['id']);
+                       db_query($sql,"A work order issue item could not be voided");
+               }       
+               if ($issue_no != 0)
+                       void_stock_move(ST_MANUISSUE, $issue_no); // and void the stock moves 
+               if ($cost != 0)
+                       add_issue_cost($work_order['stock_id'], -$qty, $date, $cost);
 
                //Adust avg labour cost
                $cost = get_gl_wo_cost($woid, WO_LABOUR); 
@@ -471,7 +284,7 @@ function void_work_order($woid)
                //Adust avg overhead cost
                $cost = get_gl_wo_cost($woid, WO_OVERHEAD); 
                if ($cost != 0)
-                       add_overhead_cost($work_order['stock_id'], 1, $date, -$cost, true);
+                       add_overhead_cost($work_order['stock_id'], -$qty, $date, $cost);
                
                $sql = "UPDATE ".TB_PREF."workorders SET closed=1,units_reqd=0,units_issued=0 WHERE id = "
                        .db_escape($woid);
@@ -480,8 +293,7 @@ function void_work_order($woid)
                // void all related stock moves
                void_stock_move(ST_WORKORDER, $woid);
 
-               // void any related bank/gl trans
-               void_bank_trans(ST_WORKORDER, $woid, true);
+               void_wo_costing($wo);
 
                // clear the requirements units received
                void_wo_requirements($woid);
index 43e0d5bb1f7098409f0458583673f0d93f86352f..2d1bd933d048d2f719006b7858d17f85a97f0b0a 100644 (file)
@@ -66,7 +66,6 @@ function add_work_order_quick($wo_ref, $loc_code, $units_reqd, $stock_id, $type,
         db_query($sql, "The work order requirements could not be added");
 
                // insert a -ve stock move for each item
-               // Chaitanya: Updated to record price and cost as std_cost for work order issued item
                $UnitCost = get_standard_cost($bom_item["component"]);
                add_stock_move(ST_WORKORDER, $bom_item["component"], $woid,
                        $bom_item["loc_code"], $date_, $wo_ref, -$item_quantity, $UnitCost, 0, 1, $UnitCost);
@@ -82,13 +81,12 @@ function add_work_order_quick($wo_ref, $loc_code, $units_reqd, $stock_id, $type,
                        $cost_adjust = true;
        }
 
-       // -------------------------------------------------------------------------
-       
+
        //Negative Stock Handling First; Prior to add_stock_move
        if ($cost_adjust)
                adjust_deliveries($stock_id, get_standard_cost($stock_id), $date_);
-               
-       // -------------------------------------------------------------------------    
+
+       // -------------------------------------------------------------------------
 
        // insert a +ve stock move for the item being manufactured
        add_stock_move(ST_WORKORDER, $stock_id, $woid,  $loc_code, $date_,
@@ -97,8 +95,8 @@ function add_work_order_quick($wo_ref, $loc_code, $units_reqd, $stock_id, $type,
        // -------------------------------------------------------------------------
 
        work_order_quick_costs($woid, $stock_id, $units_reqd, $date_, 0, $costs, $cr_acc, $labour, $cr_lab_acc);
-               
-       //--------------------------------------------------------------------------
+
+       // -------------------------------------------------------------------------
 
        add_comments(ST_WORKORDER, $woid, $date_, $memo_);
 
@@ -120,10 +118,9 @@ function work_order_quick_costs($woid, $stock_id, $units_reqd, $date_, $advanced
 
        // credit all the components
        $total_cost = 0;
-       //Chaitanya : capture the exact i.e. non-rounded cost to avoid rounding error amplification
-       $total_material_cost = 0;
        while ($bom_item = db_fetch($result))
        {
+
                $bom_accounts = get_stock_gl_code($bom_item["component"]);
 
                $bom_cost = $bom_item["ComponentCost"] * $units_reqd;
@@ -134,26 +131,16 @@ function work_order_quick_costs($woid, $stock_id, $units_reqd, $date_, $advanced
                        $memo = $date_.": ".$memo; 
                        update_wo_requirement_issued($woid, $bom_item['component'], $bom_item["quantity"] * $units_reqd);                       
                        // insert a -ve stock move for each item
-                       // Chaitanya: Updated to record price and cost as std_cost for work order issued item
-                       $UnitCost = get_standard_cost($bom_item["component"]);                  
                        add_stock_move(ST_MANURECEIVE, $bom_item["component"], $advanced,
-                               $bom_item["loc_code"], $date_, "", -$bom_item["quantity"] * $units_reqd, $UnitCost, 0, 1, $UnitCost);
+                               $bom_item["loc_code"], $date_, "", -$bom_item["quantity"] * $units_reqd, 0);
                }
-               
-               //Chaitanya : Compatibility for Service Items
-               if (!is_service($bom_accounts["mb_flag"]))
-                       $ivaccount = $bom_accounts["inventory_account"];
-               else
-                       $ivaccount = $bom_accounts["cogs_account"];
-               $total_cost += add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $ivaccount, 0, 0,
+               $total_cost += add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $bom_accounts["inventory_account"], 0, 0,
                        $memo, -$bom_cost);
-               $total_material_cost += $bom_cost;
+
        }
+       $item_accounts = get_stock_gl_code($stock_id);
        if ($advanced)
        {
-               //Chaitanya: Material cost added at time of production as per BOM at the time and in adjustment mode.
-               add_material_cost($stock_id, $units_reqd, $date_, true);        
-       
                $wo = get_work_order($woid);
                // also take the additional issues
                // moved to work_order_issues_db.inc
@@ -173,47 +160,24 @@ function work_order_quick_costs($woid, $stock_id, $units_reqd, $date_, $advanced
                if ($issue_total != 0)
                        add_issue_cost($stock_id, $units_reqd, $date_, $issue_total);
                */      
-               
-               // Logic moved to work_order_costs.php
-               /*
                $lcost = get_gl_wo_cost($woid, WO_LABOUR);
                add_labour_cost($stock_id, $units_reqd, $date_, $lcost * $units_reqd / $wo['units_reqd']);
                $ocost = get_gl_wo_cost($woid, WO_OVERHEAD);
-               add_overhead_cost($stock_id, $units_reqd, $date_, $ocost * $units_reqd / $wo['units_reqd']); */
-       }
-       // credit additional costs
-       $item_accounts = get_stock_gl_code($stock_id);
-       if ($costs != 0.0)
-       {
-               add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $cr_acc,
-                       0, 0, $wo_cost_types[WO_OVERHEAD], -$costs, PT_WORKORDER, WO_OVERHEAD);
-               $is_bank_to = is_bank_account($cr_acc);
-       if ($is_bank_to)
-       {
-               add_bank_trans(ST_WORKORDER, $woid, $is_bank_to, "",
-                       $date_, -$costs, PT_WORKORDER, WO_OVERHEAD, get_company_currency(),
-                       "Cannot insert a destination bank transaction");
-       }
-                       
-               add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $item_accounts["assembly_account"],
-                       $item_accounts["dimension_id"], $item_accounts["dimension2_id"], $wo_cost_types[WO_OVERHEAD], $costs, 
-                       PT_WORKORDER, WO_OVERHEAD);
-       }
-       if ($labour != 0.0)
-       {
-               add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $cr_lab_acc,
-                       0, 0, $wo_cost_types[WO_LABOUR], -$labour, PT_WORKORDER, WO_LABOUR);
-               $is_bank_to = is_bank_account($cr_lab_acc);
-       if ($is_bank_to)
-       {
-               add_bank_trans(ST_WORKORDER, $woid, $is_bank_to, "",
-                       $date_, -$labour, PT_WORKORDER, WO_LABOUR, get_company_currency(),
-                       "Cannot insert a destination bank transaction");
-       }
-                       
-               add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $item_accounts["assembly_account"],
-                       $item_accounts["dimension_id"], $item_accounts["dimension2_id"], $wo_cost_types[WO_LABOUR], $labour, 
-                       PT_WORKORDER, WO_LABOUR);
+               add_overhead_cost($stock_id, $units_reqd, $date_, $ocost * $units_reqd / $wo['units_reqd']);
+
+       } else { // only for quick
+               // credit additional costs
+
+               if ($costs != 0.0)
+               {
+                       add_wo_costs_journal($woid, $costs, WO_OVERHEAD, $cr_acc, $item_accounts["assembly_account"],
+                               $date_, $item_accounts["dimension_id"], $item_accounts["dimension2_id"]);
+               }
+               if ($labour != 0.0) // only for quick
+               {
+                       add_wo_costs_journal($woid, $labour, WO_LABOUR, $cr_lab_acc, $item_accounts["assembly_account"],
+                               $date_, $item_accounts["dimension_id"], $item_accounts["dimension2_id"]);
+               }
        }
        // debit total components $total_cost
        $stockitem = get_item($stock_id);
@@ -221,11 +185,7 @@ function work_order_quick_costs($woid, $stock_id, $units_reqd, $date_, $advanced
        if ($advanced)
                $memo = $date_.": ".$memo;
     add_gl_trans_std_cost(ST_WORKORDER, $woid, $date_, $item_accounts["inventory_account"],
-        0, 0, $memo, -$total_cost);    
-               
-       //Chaitanya : Update cost of the manufactured item in stock moves table
-       $UnitWOCost = ($total_material_cost + $costs + $labour)/$units_reqd;
-       update_stock_move(ST_WORKORDER, $woid, $stock_id, $UnitWOCost);         
+        0, 0, $memo, -$total_cost);
 }
 
 //--------------------------------------------------------------------------------------
index 3a599161cb1005bef8fd85e2a996f2c021c9a749..2c880aef09216080dce47a9f9a5de06d49541207 100644 (file)
@@ -11,6 +11,7 @@
 ***********************************************************************/
 include_once($path_to_root . "/manufacturing/includes/db/work_centres_db.inc");
 include_once($path_to_root . "/manufacturing/includes/db/work_orders_db.inc");
+include_once($path_to_root . "/manufacturing/includes/db/work_order_costing_db.inc");
 include_once($path_to_root . "/manufacturing/includes/db/work_orders_quick_db.inc");
 include_once($path_to_root . "/manufacturing/includes/db/work_order_issues_db.inc");
 include_once($path_to_root . "/manufacturing/includes/db/work_order_produce_items_db.inc");
index f2cde17f2ee9e09d8e622e0c8221e015d7a6cda0..7e63f77a76ec1342e42e1e2bc2d9de424c8949fb 100644 (file)
@@ -244,8 +244,8 @@ function display_wo_payments($woid)
 
                        alt_table_row_color($k);
 
-               label_cell(get_gl_view_str(ST_WORKORDER, $myrow["type_no"], $myrow["type_no"]));
-               label_cell($wo_cost_types[$myrow['person_id']]);
+               label_cell(get_gl_view_str( $myrow["type"], $myrow["type_no"], $myrow["type_no"]));
+               label_cell($wo_cost_types[$myrow['cost_type']]);
                $date = sql2date($myrow["tran_date"]);
                label_cell($date);
                        amount_cell(-($myrow['amount']));
diff --git a/manufacturing/view/wo_costs_view.php b/manufacturing/view/wo_costs_view.php
new file mode 100644 (file)
index 0000000..12ed5fe
--- /dev/null
@@ -0,0 +1,73 @@
+<?php
+/**********************************************************************
+    Copyright (C) FrontAccounting, LLC.
+       Released under the terms of the GNU General Public License, GPL, 
+       as published by the Free Software Foundation, either version 3 
+       of the License, or (at your option) any later version.
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+    See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
+***********************************************************************/
+$page_security = 'SA_MANUFTRANSVIEW';
+$path_to_root = "../..";
+
+include_once($path_to_root . "/includes/session.inc");
+
+$js = "";
+if ($use_popup_windows)
+       $js .= get_js_open_window(900, 500);
+page(_($help_context = "View Work Order Costs"), true, false, "", $js);
+
+include_once($path_to_root . "/includes/date_functions.inc");
+include_once($path_to_root . "/includes/manufacturing.inc");
+include_once($path_to_root . "/includes/data_checks.inc");
+
+include_once($path_to_root . "/manufacturing/includes/manufacturing_db.inc");
+include_once($path_to_root . "/manufacturing/includes/manufacturing_ui.inc");
+
+//-------------------------------------------------------------------------------------------------
+
+if ($_GET['trans_no'] != "")
+{
+       $wo_id = $_GET['trans_no'];
+}
+
+//-------------------------------------------------------------------------------------------------
+
+function display_wo_costs($prod_id)
+{
+       global $wo_cost_types;
+
+    $costs = get_gl_wo_cost_trans($prod_id);
+
+       br(1);
+    start_table(TABLESTYLE);
+    $th = array(_("Date"), _("Type"), _("Amount"), _("Memo"), '');
+    table_header($th);
+       while($myrow = db_fetch($costs)) {
+               start_row();
+               label_cell(sql2date($myrow["tran_date"]));
+               label_cell($wo_cost_types[$myrow["cost_type"]]);
+               amount_cell(-$myrow['amount']);
+               label_cell($myrow['memo_']);
+               label_cell(get_trans_view_str($myrow['trans_type'],$myrow["trans_no"]));
+               end_row();
+       }
+       end_table(1);
+}
+
+//-------------------------------------------------------------------------------------------------
+
+display_heading(sprintf(_("Production Costs for Work Order # %d"), $wo_id));
+
+display_wo_costs($wo_id);
+
+//-------------------------------------------------------------------------------------------------
+
+br(2);
+
+end_page(true, false, false, ST_WORKORDER, $wo_id);
+
+?>
+
index acf67f73e197ef7e0621795772b40b17426a1893..c9c7e6271133e40a0ab0cc16a986ed8133d7667a 100644 (file)
@@ -101,7 +101,7 @@ function can_process()
        }
        elseif (!is_date_in_fiscalyear($_POST['date_']))
        {
-               display_error(_("The entered date is not in fiscal year."));
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                set_focus('date_');
                return false;
        }
index e7e0fb07700dbe18a9f45fc70448590f7c0a2204..4054fcbdc1cf6889cf8251e6e23ec922264a5db2 100644 (file)
@@ -44,8 +44,6 @@ if (isset($_GET['AddedID']))
 
     display_note(get_trans_view_str($stype, $id, _("View this Work Order")));
 
-       display_note(get_gl_view_str($stype, $id, _("View the GL Journal Entries for this Work Order")), 1);
-
        hyperlink_params("work_order_costs.php", _("Enter another additional cost."), "trans_no=$id");
  
        hyperlink_no_params("search_work_orders.php", _("Select another &Work Order to Process"));
@@ -67,16 +65,15 @@ if (strlen($wo_details[0]) == 0)
 
 //--------------------------------------------------------------------------------------------------
 
-function can_process()
+function can_process($wo_details)
 {
-       global $wo_details;
 
        if (!check_num('costs', 0))
        {
                display_error(_("The amount entered is not a valid number or less then zero."));
                set_focus('costs');
                return false;
-       }       
+       }
 
        if (!is_date($_POST['date_']))
        {
@@ -86,7 +83,7 @@ function can_process()
        }
        elseif (!is_date_in_fiscalyear($_POST['date_']))
        {
-               display_error(_("The entered date is not in fiscal year."));
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                set_focus('date_');
                return false;
        }
@@ -102,32 +99,14 @@ function can_process()
 
 //--------------------------------------------------------------------------------------------------
 
-if (isset($_POST['process']) && can_process() == true)
+if (isset($_POST['process']) && can_process($wo_details) == true)
 {
        $date = $_POST['date_'];
-       begin_transaction();
-       add_gl_trans_std_cost(ST_WORKORDER, $_POST['selected_id'], $_POST['date_'], $_POST['cr_acc'],
-               0, 0, $date.": ".$wo_cost_types[$_POST['PaymentType']], -input_num('costs'), PT_WORKORDER, $_POST['PaymentType']);
-       $is_bank_to = is_bank_account($_POST['cr_acc']);
-       if ($is_bank_to)
-       {
-               add_bank_trans(ST_WORKORDER, $_POST['selected_id'], $is_bank_to, "",
-                       $_POST['date_'], -input_num('costs'), PT_WORKORDER, $_POST['PaymentType'], get_company_currency(),
-                       "Cannot insert a destination bank transaction");
-       }
+       $memo = $_POST['memo'];
+       $ref  = $_POST['ref'];
 
-       add_gl_trans_std_cost(ST_WORKORDER, $_POST['selected_id'], $_POST['date_'], $_POST['db_acc'],
-               $_POST['dim1'], $_POST['dim2'], $date.": ".$wo_cost_types[$_POST['PaymentType']], input_num('costs'), PT_WORKORDER, 
-                       $_POST['PaymentType']);
-                       
-       //Chaitanya : Apply the costs to manfuctured stock item as adjustement
-       $wo = get_work_order($_POST['selected_id']);
-       if ($_POST['PaymentType'] == 0)
-               add_labour_cost($wo['stock_id'], 0, $_POST['date_'], input_num('costs'), true);
-       else
-               add_overhead_cost($wo['stock_id'], 0, $_POST['date_'], input_num('costs'), true);
-                       
-       commit_transaction();   
+       add_wo_costs_journal($_POST['selected_id'], input_num('costs'), $_POST['PaymentType'], 
+               $_POST['cr_acc'], $_POST['db_acc'], $date, $_POST['dim1'], $_POST['dim2'], $memo, $ref);
 
        meta_forward($_SERVER['PHP_SELF'], "AddedID=".$_POST['selected_id']);
 }
@@ -138,6 +117,9 @@ display_wo_details($_POST['selected_id']);
 
 //-------------------------------------------------------------------------------------
 
+if (!isset($_POST['ref']))
+       $_POST['ref'] = $Refs->get_next(ST_JOURNAL);
+
 start_form();
 
 hidden('selected_id', $_POST['selected_id']);
@@ -147,9 +129,11 @@ start_table(TABLESTYLE2);
 
 br();
 
-yesno_list_row(_("Type:"), 'PaymentType', null,        $wo_cost_types[WO_OVERHEAD], $wo_cost_types[WO_LABOUR]);
 
 date_row(_("Date:"), 'date_');
+ref_row(_("Reference:"), 'ref', '');
+
+yesno_list_row(_("Type:"), 'PaymentType', null,        $wo_cost_types[WO_OVERHEAD], $wo_cost_types[WO_LABOUR]);
 
 $item_accounts = get_stock_gl_code($wo_details['stock_id']);
 $_POST['db_acc'] = $item_accounts['assembly_account'];
@@ -159,7 +143,7 @@ $_POST['cr_acc'] = $r[0];
 amount_row(_("Additional Costs:"), 'costs');
 gl_all_accounts_list_row(_("Debit Account"), 'db_acc', null);
 gl_all_accounts_list_row(_("Credit Account"), 'cr_acc', null);
-
+textarea_row(_("Memo:"), 'memo', null, 40, 5);
 end_table(1);
 hidden('dim1', $item_accounts["dimension_id"]);
 hidden('dim2', $item_accounts["dimension2_id"]);
index f5e90d10c55ed299bd5920610911a3912880b072..aa8361ec346f56b3680872782dd2d7e0ea3a83f9 100644 (file)
@@ -157,7 +157,7 @@ function can_process()
        }
        elseif (!is_date_in_fiscalyear($_POST['date_']))
        {
-               display_error(_("The entered date is not in fiscal year."));
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                set_focus('date_');
                return false;
        }
@@ -236,7 +236,7 @@ function can_process()
                }
                //elseif (!is_date_in_fiscalyear($_POST['RequDate']))
                //{
-               //      display_error(_("The entered date is not in fiscal year."));
+               //  display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                //      return false;
                //}
        if (isset($selected_id))
index 071bf3c5856f0b1c865aa3685bec1ff3ca66bcf4..b5d6e4cc1f0058d6d264f1780b6039a1154fbcaf 100644 (file)
@@ -11,6 +11,7 @@
 ***********************************************************************/
 $page_security = 'SA_MANUFISSUE';
 $path_to_root = "..";
+
 include_once($path_to_root . "/includes/ui/items_cart.inc");
 
 include_once($path_to_root . "/includes/session.inc");
@@ -26,6 +27,7 @@ if ($use_popup_windows)
        $js .= get_js_open_window(800, 500);
 if ($use_date_picker)
        $js .= get_js_date_picker();
+
 page(_($help_context = "Issue Items to Work Order"), false, false, "", $js);
 
 //-----------------------------------------------------------------------------------------------
@@ -67,7 +69,6 @@ function handle_new_order()
 }
 
 //-----------------------------------------------------------------------------------------------
-
 function can_process()
 {
        global $Refs;
@@ -80,7 +81,7 @@ function can_process()
        } 
        elseif (!is_date_in_fiscalyear($_POST['date_'])) 
        {
-               display_error(_("The entered date is not in fiscal year."));
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                set_focus('date_');
                return false;
        }
@@ -101,8 +102,9 @@ function can_process()
        $failed_item = $_SESSION['issue_items']->check_qoh($_POST['Location'], $_POST['date_'], !$_POST['IssueType']);
        if ($failed_item != -1) 
        {
+               $item = $_SESSION['issue_items']->line_items[$failed_item];
        display_error( _("The issue cannot be processed because an entered item would cause a negative inventory balance :") .
-               " " . $failed_item->stock_id . " - " .  $failed_item->item_description);
+               " " . $item->stock_id . " - " .  $item->item_description);
                return false;
        }
 
index a12494067783efe391fafe93f3ba8ec5fdfbf02f..2ebbb227858f6cf65ab0e95c9bbd62d3bcc30cd8 100644 (file)
@@ -57,11 +57,12 @@ function edit_allocations_for_transaction($type, $trans_no)
 
        display_heading2(_("Total:"). " <b>" . price_format(-$cart->bank_amount).' '.$cart->currency."</b>");
 
-       if ($cart->currency != $cart->person_curr)
+       if (floatcmp($cart->bank_amount, $cart->amount))
        {
-           $total = _("Total in clearing currency:") . " <b>" . price_format(-$cart->amount)."</b>"
-               . sprintf(" %s (%s %s/%s)", $cart->person_curr, exrate_format($cart->bank_amount/$cart->amount), $cart->currency, $cart->person_curr);
-       display_heading2($total);
+           $total = _("Amount ot be settled:") . " <b>" . price_format(-$cart->amount).' '.$cart->person_curr."</b>";
+               if ($cart->currency != $cart->person_curr)
+               $total .= sprintf(" (%s %s/%s)",  exrate_format($cart->bank_amount/$cart->amount), $cart->currency, $cart->person_curr);
+               display_heading2($total);
        }
     echo "<br>";
 
index 4d85cc9fc8f9c8cd710c7e58d64f9884aabe02b5..82173fd2fcfa56eb9d130f703404dce48a7ef37d 100644 (file)
@@ -33,7 +33,7 @@ function update_average_material_cost($supplier, $stock_id, $price, $qty, $date,
        }       
        else
                $price_in_home_currency = $price;
-       
+
        $price_in_home_currency_ = $price_in_home_currency;
 
        //Handle if inventory will become negative
@@ -53,12 +53,13 @@ function update_average_material_cost($supplier, $stock_id, $price, $qty, $date,
                //reduce overhead_cost and labour_cost from price as those will remain as is
                $price_in_home_currency = $price_in_home_currency - $myrow['labour_cost'] - $myrow['overhead_cost'];
        }
-       
+
        if ($adj_only)
                $exclude = ST_CUSTDELIVERY;
        else
                $exclude = 0;
        $cost_adjust = false;
+
        $qoh = get_qoh_on_date($stock_id);
 
        if ($adj_only)
@@ -100,7 +101,7 @@ function add_grn(&$po)
 
        add_new_exchange_rate(get_supplier_currency($po->supplier_id), $date_, $po->ex_rate);
 
-       $grn = add_grn_batch($po->order_no, $po->supplier_id, $po->reference, $po->Location, $date_);
+       $grn = add_grn_batch($po->order_no, $po->supplier_id, $po->reference, $po->Location, $date_, $po->ex_rate);
 
     $clearing_act = get_company_pref('grn_clearing_act');
        if ($clearing_act) {    // otherwise GRN clearing account is not used
@@ -122,7 +123,7 @@ function add_grn(&$po)
                                                $order_line->receive_qty * $order_line->taxfree_charge_price($po), $po->supplier_id, '', 0, $order_line->stock_id);
                                update_average_material_cost($po->supplier_id, $order_line->stock_id, $order_line->price,
                                        $order_line->receive_qty, $date_);
-                       }               
+                       }
                        //----------------------------------------------------------------------------------------------------------------
                        if ($order_line->qty_received == 0)
                        {
@@ -167,13 +168,13 @@ function add_grn(&$po)
 
 //----------------------------------------------------------------------------------------
 
-function add_grn_batch($po_number, $supplier_id, $reference, $location, $date_)
+function add_grn_batch($po_number, $supplier_id, $reference, $location, $date_, $rate)
 {
        $date = date2sql($date_);
 
-       $sql = "INSERT INTO ".TB_PREF."grn_batch (purch_order_no, delivery_date, supplier_id, reference, loc_code)
+       $sql = "INSERT INTO ".TB_PREF."grn_batch (purch_order_no, delivery_date, supplier_id, reference, loc_code, rate)
                        VALUES (".db_escape($po_number).", ".db_escape($date).", "
-                       .db_escape($supplier_id).", ".db_escape($reference).", ".db_escape($location).")";
+                       .db_escape($supplier_id).", ".db_escape($reference).", ".db_escape($location).", ".db_escape($rate).")";
 
        db_query($sql, "A grn batch record could not be inserted.");
 
@@ -257,41 +258,50 @@ function set_grn_item_credited(&$entered_grn, $supplier, $transno, $date)
 function get_grn_items($grn_batch_id=0, $supplier_id="", $outstanding_only=false,
        $is_invoiced_only=false, $invoice_no=0, $begin="", $end="")
 {
-    $sql = "SELECT ".TB_PREF."grn_batch.*, ".TB_PREF."grn_items.*, "
-       .TB_PREF."purch_order_details.unit_price,"
-       .TB_PREF."purch_order_details.act_price,"
-       .TB_PREF."purch_order_details.quantity_ordered,"
-               .TB_PREF."purch_order_details.std_cost_unit, units
-       FROM ".TB_PREF."grn_batch, ".TB_PREF."grn_items, "
-       .TB_PREF."purch_order_details, ".TB_PREF."stock_master";
-    if ($invoice_no != 0)
-       $sql .= ", ".TB_PREF."supp_invoice_items";
-    $sql .= " WHERE ".TB_PREF."grn_items.grn_batch_id=".TB_PREF."grn_batch.id
-               AND ".TB_PREF."grn_items.po_detail_item=".TB_PREF."purch_order_details.po_detail_item";
-       if ($invoice_no != 0)
-               $sql .= " AND ".TB_PREF."supp_invoice_items.supp_trans_type=".ST_SUPPINVOICE." AND 
-                       ".TB_PREF."supp_invoice_items.supp_trans_no=$invoice_no AND
-                       ".TB_PREF."grn_items.id=".TB_PREF."supp_invoice_items.grn_item_id";
-       $sql .= " AND ".TB_PREF."stock_master.stock_id=".TB_PREF."grn_items.item_code ";
+    $sql = "SELECT grn.*, grn_item.*,
+               grn_item.quantity_inv".($invoice_no ? "-invoice_item.quantity" : '')."  quantity_inv,
+       po_item.unit_price,
+       po_item.act_price,
+       po_item.quantity_ordered,
+       po_item.std_cost_unit, units
+       FROM    ".TB_PREF."grn_batch grn, "
+                       .TB_PREF."purch_order_details po_item, "
+                       .TB_PREF."stock_master stock_item,"
+                               .TB_PREF."grn_items grn_item ";
+    if ($invoice_no != 0) {
+       $sql .= " LEFT JOIN ".TB_PREF."supp_invoice_items invoice_item ON ";
+
+               $inv_cond = "invoice_item.supp_trans_type=".ST_SUPPINVOICE." AND invoice_item.supp_trans_no ";
+               if (is_array($invoice_no))
+                       $inv_cond .= " IN (".implode(',' , $invoice_no) . ")";
+               else
+                       $inv_cond .= " = $invoice_no";
+               $sql .= "($inv_cond) AND grn_item.id=invoice_item.grn_item_id";
+       }
+    $sql .= " WHERE grn_item.grn_batch_id=grn.id
+               AND grn_item.po_detail_item=po_item.po_detail_item";
+
+       if ($outstanding_only)
+       $sql .= " AND (".($invoice_no ? "$inv_cond OR ":'')."grn_item.qty_recd - grn_item.quantity_inv > 0)";
+
+       $sql .= " AND stock_item.stock_id=grn_item.item_code ";
 
        if ($begin != "")
-               $sql .= " AND ".TB_PREF."grn_batch.delivery_date>='".date2sql($begin)."'";
+               $sql .= " AND grn.delivery_date>='".date2sql($begin)."'";
        if ($end != "")
-               $sql .= " AND ".TB_PREF."grn_batch.delivery_date<='".date2sql($end)."'";
+               $sql .= " AND grn.delivery_date<='".date2sql($end)."'";
        if ($grn_batch_id != 0)
-               $sql .= " AND ".TB_PREF."grn_batch.id=".db_escape($grn_batch_id)
-                       ." AND ".TB_PREF."grn_items.grn_batch_id=".db_escape($grn_batch_id);
+               $sql .= " AND grn.id=".db_escape($grn_batch_id)
+                       ." AND grn_item.grn_batch_id=".db_escape($grn_batch_id);
 
        if ($is_invoiced_only)
-               $sql .= " AND ".TB_PREF."grn_items.quantity_inv > 0";
-
-       if ($outstanding_only)
-       $sql .= " AND ".TB_PREF."grn_items.qty_recd - ".TB_PREF."grn_items.quantity_inv > 0";
+               $sql .= " AND grn_item.quantity_inv > 0";
 
        if ($supplier_id != "")
-               $sql .= " AND ".TB_PREF."grn_batch.supplier_id =".db_escape($supplier_id);
+               $sql .= " AND grn.supplier_id =".db_escape($supplier_id);
 
-       $sql .= " ORDER BY ".TB_PREF."grn_batch.delivery_date, ".TB_PREF."grn_batch.id, ".TB_PREF."grn_items.id";
+       $sql .= " ORDER BY grn.delivery_date, grn.id, grn_item.id";
 
        return db_query($sql, "Could not retreive GRNS");
 }
@@ -358,6 +368,7 @@ function read_grn($grn_batch, &$order)
 
        $row = db_fetch($result);
        $po_number = $row["purch_order_no"];
+       $order->ex_rate = $row["rate"];
 
        $result = read_po_header($po_number, $order);
 
index 6218052b3d4eb194fca41ea42bffc8e4c751ef97..8193f0ddb573c6fd15a852225c7e4fbc4035dc36 100644 (file)
@@ -16,12 +16,14 @@ include_once($path_to_root . "/purchasing/includes/db/invoice_items_db.inc");
 function read_supplier_details_to_trans(&$supp_trans, $supplier_id)
 {
        $sql = "SELECT supp.supp_name, terms.terms, terms.days_before_due,
-               terms.day_in_following_month, supp.tax_included,
+               terms.day_in_following_month, supp.tax_included, supp.tax_algorithm,
                supp.tax_group_id, tax_group.name AS tax_group_name,
-               supp.credit_limit - Sum(IFNULL(ov_amount + ov_gst + ov_discount,0)) as cur_credit
-               FROM ".TB_PREF."suppliers supp 
-                       LEFT JOIN ".TB_PREF."supp_trans trans ON supp.supplier_id = trans.supplier_id, "
-                       .TB_PREF."payment_terms terms, ".TB_PREF."tax_groups tax_group
+               supp.credit_limit - Sum(IFNULL(IF(trans.type=".ST_SUPPCREDIT.", -1, 1) 
+                       * (ov_amount + ov_gst + ov_discount),0)) as cur_credit
+               FROM ".TB_PREF."suppliers supp LEFT JOIN "
+                       .TB_PREF."supp_trans trans ON supp.supplier_id = trans.supplier_id, "
+                       .TB_PREF."payment_terms terms, "
+                       .TB_PREF."tax_groups tax_group
                WHERE supp.tax_group_id = tax_group.id
                AND supp.payment_terms=terms.terms_indicator
                AND supp.supplier_id = ".db_escape($supplier_id)." GROUP BY supp.supp_name";
@@ -30,8 +32,19 @@ function read_supplier_details_to_trans(&$supp_trans, $supplier_id)
 
        $myrow = db_fetch($result);
 
+    if ($supp_trans->tran_date == "")
+    {
+               $supp_trans->tran_date = Today();
+
+               if (!is_date_in_fiscalyear($supp_trans->tran_date))
+                       $supp_trans->tran_date = end_fiscalyear();
+       }
+       if ($supp_trans->supplier_id != $supplier_id)
+           get_duedate_from_terms($supp_trans);
+
     $supp_trans->supplier_id = $supplier_id;
     $supp_trans->tax_included = $myrow['tax_included'];
+    $supp_trans->tax_algorithm = $supp_trans->stored_algorithm = $myrow['tax_algorithm'];
     $supp_trans->supplier_name = $myrow['supp_name'];
        $supp_trans->terms = array( 
                'description' => $myrow['terms'],
@@ -43,20 +56,13 @@ function read_supplier_details_to_trans(&$supp_trans, $supplier_id)
        $supp_trans->tax_description = $myrow['tax_group_name'];
        $supp_trans->tax_group_id = $myrow['tax_group_id'];
 
-    if ($supp_trans->tran_date == "")
-    {
-               $supp_trans->tran_date = Today();
-               if (!is_date_in_fiscalyear($supp_trans->tran_date))
-                       $supp_trans->tran_date = end_fiscalyear();
-       }
-    //if ($supp_trans->due_date=="") {
-    // get_duedate_from_terms($supp_trans);
-    //}
-    get_duedate_from_terms($supp_trans);
 }
 
-//--------------------------------------------------------------------------------------------------
-
+//-------------------------------------------------------------------------------------------------
+//     Updates invoiced quantity in PO and GRN line, and act_price in PO
+//  Returns:
+// if chg_price is set:         previous act_price, delivery date and unit_price from PO
+//
 function update_supp_received_items_for_invoice($id, $po_detail_item, $qty_invoiced, $chg_price=null)
 {
        if ($chg_price != null)
@@ -113,14 +119,24 @@ function get_diff_in_home_currency($supplier, $old_date, $date, $amount1, $amoun
 }
 //----------------------------------------------------------------------------------------
 
-function add_supp_invoice($supp_trans, $invoice_no=0) // do not receive as ref because we change locally
+function add_supp_invoice(&$supp_trans) // do not receive as ref because we change locally
 {
        global $Refs;
 
+       //$company_currency = get_company_currency();
+       $trans_no = $supp_trans->trans_no;
+       $trans_type = $supp_trans->trans_type;
+       /*Start an sql transaction */
        begin_transaction();
-       hook_db_prewrite($supp_trans, $supp_trans->trans_type);
+       hook_db_prewrite($supp_trans, $trans_type);
        $tax_total = 0;
     $taxes = $supp_trans->get_taxes($supp_trans->tax_group_id);
+       if ($trans_no) {
+               $allocs = get_payments_for($trans_no, $trans_type); // save allocations
+               void_transaction($trans_type, $trans_no, Today(), _("Document reentered."));
+               $Refs->restore_last($trans_type, $trans_no);
+       } else
+               $allocs = get_po_prepayments($supp_trans);
 
        $supplier = get_supplier($supp_trans->supplier_id);
 
@@ -142,8 +158,6 @@ function add_supp_invoice($supp_trans, $invoice_no=0) // do not receive as ref b
                        $item_added_tax += isset($taxitem['Override']) ? $taxitem['Override'] : round2($taxitem['Value'], user_price_dec());
        }
 
-       $trans_type = $supp_trans->trans_type;
-
        if ($trans_type == ST_SUPPCREDIT)
        {
                // let's negate everything because it's a credit note
@@ -159,7 +173,11 @@ function add_supp_invoice($supp_trans, $invoice_no=0) // do not receive as ref b
     /*First insert the invoice into the supp_trans table*/
        $invoice_id = write_supp_trans($trans_type, 0, $supp_trans->supplier_id, $date_, $supp_trans->due_date,
                $supp_trans->reference, $supp_trans->supp_reference,
-               $invoice_items_total, $item_added_tax, $supp_trans->ov_discount, "", 0, $supp_trans->tax_included);
+               $invoice_items_total, $item_added_tax, $supp_trans->ov_discount, "", 0, $supp_trans->tax_included,
+               $supp_trans->tax_algorithm);
+
+
+       $supp_trans->trans_no = $invoice_id;
 
        $total = 0;
 
@@ -182,12 +200,15 @@ function add_supp_invoice($supp_trans, $invoice_no=0) // do not receive as ref b
                                $taxitem['tax_type_id'], $taxitem['rate'], $supp_trans->tax_included, $taxitem['Value'],
                                $taxitem['Net'], $ex_rate, $date_, $supp_trans->supp_reference);
 
-                       if ($trans_type == ST_SUPPCREDIT)
-                               $taxitem['Value'] = -$taxitem['Value'];
-                       $total += add_gl_trans_supplier($trans_type, $invoice_id, $date_,
-                               $taxitem['purchasing_gl_code'], 0, 0, $taxitem['Value'],
-                               $supp_trans->supplier_id,
-                               "A general ledger transaction for the tax amount could not be added");
+                       if (isset($taxitem['purchasing_gl_code']))
+                       {
+                               if ($trans_type == ST_SUPPCREDIT)
+                                       $taxitem['Value'] = -$taxitem['Value'];
+                               $total += add_gl_trans_supplier($trans_type, $invoice_id, $date_,
+                                       $taxitem['purchasing_gl_code'], 0, 0, $taxitem['Value'],
+                                       $supp_trans->supplier_id,
+                                       "A general ledger transaction for the tax amount could not be added");
+                       }
                }
     }
     if ($trans_type == ST_SUPPCREDIT)
@@ -199,6 +220,8 @@ function add_supp_invoice($supp_trans, $invoice_no=0) // do not receive as ref b
                $supp_trans->supplier_id,
                "The general ledger transaction for the control total could not be added");
 
+       $to_allocate = ($invoice_items_total + $item_added_tax + $supp_trans->ov_discount);
+
     foreach ($supp_trans->gl_codes as $entered_gl_code)
     {
            /*GL Items are straight forward - just do the debit postings to the GL accounts specified -
@@ -283,7 +306,7 @@ function add_supp_invoice($supp_trans, $invoice_no=0) // do not receive as ref b
                                $currency = get_supplier_currency($supp_trans->supplier_id);
 
                                $total += add_gl_trans_supplier($trans_type, $invoice_id, $date_, $iv_act,
-                                       $dim, $dim2, $old_value, $supp_trans->supplier_id, "", $ex_rate);
+                                       $dim, $dim2, $entered_grn->this_quantity_inv * $old_price, $supp_trans->supplier_id, "", $ex_rate);
                                $diff = get_diff_in_home_currency($supp_trans->supplier_id, $old_date, $date_, $old_value, 
                                        $taxfree_line);
 
@@ -339,9 +362,9 @@ function add_supp_invoice($supp_trans, $invoice_no=0) // do not receive as ref b
 
        $Refs->save($trans_type, $invoice_id, $supp_trans->reference);
 
-       if ($invoice_no != 0)
+       if ($supp_trans->src_docs)
        {
-               $invoice_alloc_balance = get_supp_trans_allocation_balance(ST_SUPPINVOICE, $invoice_no);
+               $invoice_alloc_balance = get_supp_trans_allocation_balance(ST_SUPPINVOICE, $supp_trans->src_docs);
                if ($invoice_alloc_balance > 0) 
                {       //the invoice is not already fully allocated 
 
@@ -358,11 +381,17 @@ function add_supp_invoice($supp_trans, $invoice_no=0) // do not receive as ref b
                                update_supp_trans_allocation(ST_SUPPINVOICE, $invoice_no);
                                update_supp_trans_allocation(ST_SUPPCREDIT, $invoice_id);
 
-                               exchange_variation(ST_SUPPCREDIT, $invoice_id, ST_SUPPINVOICE, $invoice_no, $date_,
+                               exchange_variation(ST_SUPPCREDIT, $invoice_id, ST_SUPPINVOICE, $supp_trans->src_docs, $date_,
                                        $allocate_amount, PT_SUPPLIER);
                        }
                }
        }
+
+//_vd($allocs);
+       reallocate_payments($invoice_id, ST_SUPPINVOICE, $date_, $to_allocate, $allocs);
+//_vd(get_payments_for($sales_order, ST_PURCHORDER));
+//_vd(get_payments_for($invoice_id, ST_SUPPINVOICE));
+//exit;
        $supp_trans->trans_no = $invoice_id;
        hook_db_postwrite($supp_trans, $supp_trans->trans_type);
     commit_transaction();
@@ -415,9 +444,11 @@ function get_tax_overrides($trans_type, $trans_no)
 
 function read_supp_invoice($trans_no, $trans_type, &$supp_trans)
 {
-       $sql = "SELECT ".TB_PREF."supp_trans.*, supp_name FROM ".TB_PREF."supp_trans,".TB_PREF."suppliers
+       $sql = "SELECT ".TB_PREF."supp_trans.*, supp_name 
+               FROM ".TB_PREF."supp_trans,".TB_PREF."suppliers
                WHERE trans_no = ".db_escape($trans_no)." AND type = ".db_escape($trans_type)."
                AND ".TB_PREF."suppliers.supplier_id=".TB_PREF."supp_trans.supplier_id";
+
        $result = db_query($sql, "Cannot retreive a supplier transaction");
 
        if (db_num_rows($result) == 1)
@@ -435,6 +466,7 @@ function read_supp_invoice($trans_no, $trans_type, &$supp_trans)
                $supp_trans->ov_discount = $trans_row["ov_discount"];
                $supp_trans->ov_gst = $trans_row["ov_gst"];
                $supp_trans->tax_included = $trans_row["tax_included"];
+               $supp_trans->stored_algorithm = $supp_trans->tax_algorithm = $trans_row["tax_algorithm"];
 
                $id = $trans_row["trans_no"];
 
@@ -449,7 +481,10 @@ function read_supp_invoice($trans_no, $trans_type, &$supp_trans)
                if ($details_row["gl_code"] == 0)
                {
                        $supp_trans->add_grn_to_trans($details_row["grn_item_id"], $details_row["po_detail_item_id"], $details_row["stock_id"],
-                                       $details_row["description"], 0, 0, $details_row["quantity"], 0, $details_row["FullUnitPrice"],
+                                       $details_row["description"], 
+                                       $details_row['qty_recd'],
+                                       $details_row['quantity_inv']-$details_row["quantity"],
+                                       $details_row["quantity"], 0, $details_row["FullUnitPrice"],
                                        0, 0);
                }
                else
@@ -519,9 +554,8 @@ function void_supp_invoice($type, $type_no)
                                $batch = get_grn_batch_from_item($details_row["grn_item_id"]);  
                                $grn = get_grn_batch($batch);
                        if ($type == ST_SUPPCREDIT) // credit note 2009-06-14 Joe Hunt Must restore the po and grn
-                       {       
+                       {       // We must get the corresponding invoice item to check for price chg.
                                        $match = get_matching_invoice_item($details_row["stock_id"], $details_row["po_detail_item_id"]);
-                                       
                                        //Chaitanya : Skipped costing block & handle in void_stock_move
                                        // We must get the corresponding invoice item to check for price chg.
                                        /*if ($match !== false)
@@ -530,7 +564,7 @@ function void_supp_invoice($type, $type_no)
                                        else            
                                                $mat_cost = update_average_material_cost($grn["supplier_id"], $details_row["stock_id"],  
                                                        $details_row["FullUnitPrice"], -$details_row["quantity"], $old_date, $old[1] !== $trans['tran_date']);*/
-                                                       
+
                                        $sql = "UPDATE ".TB_PREF."purch_order_details
                                        SET quantity_ordered = quantity_ordered + ".-$details_row["quantity"].", ";
                                if ($match !== false)
@@ -621,17 +655,17 @@ function is_reference_already_there($supplier_id, $supp_reference, $trans_no=0)
 
 function remove_not_invoice_item($id)
 {
-    begin_transaction();
+       begin_transaction();
 
     $myrow = get_grn_item_detail($id);
 
     $grn = get_grn_batch($myrow['grn_batch_id']);
-    
+
     $supp = get_supplier($grn["supplier_id"]);
 
-    $sql = "UPDATE ".TB_PREF."purch_order_details
-        SET quantity_received = qty_invoiced, quantity_ordered = qty_invoiced WHERE po_detail_item = ".$myrow["po_detail_item"];
-    db_query($sql, "The quantity invoiced of the purchase order line could not be updated");
+       $sql = "UPDATE ".TB_PREF."purch_order_details
+               SET quantity_received = qty_invoiced, quantity_ordered = qty_invoiced WHERE po_detail_item = ".$myrow["po_detail_item"];
+       db_query($sql, "The quantity invoiced of the purchase order line could not be updated");
 
     $sql = "UPDATE ".TB_PREF."grn_items
         SET qty_recd = quantity_inv WHERE id = ".$myrow["id"];
@@ -664,4 +698,23 @@ function remove_not_invoice_item($id)
 
     commit_transaction();
 }
-?>
+
+function find_src_invoices($cart)
+{
+       $invoices = $po_ids = array();
+       foreach($cart->grn_items as $item)
+               $po_ids[] = "'$item->po_detail_item'";  // credit item lines
+
+       if (count($po_ids)) {
+               $sql = "SELECT DISTINCT trans.trans_no, trans.reference, trans.supp_reference
+                       FROM ".TB_PREF."supp_invoice_items items
+                       LEFT JOIN ".TB_PREF."supp_trans trans ON trans.trans_no=items.supp_trans_no AND trans.`type`=items.supp_trans_type
+                       WHERE items.po_detail_item_id IN (" . implode(',', $po_ids). ")"." AND items.supp_trans_type=20";
+               $result = db_query($sql, "cannot find source invoice details");
+               while ($rec = db_fetch($result))
+               {
+                       $invoices[$rec['trans_no']] = $rec['supp_reference']; // array($rec['reference'], $rec['supp_reference']);
+               }
+       }
+       return $invoices;
+}
index efcdcb4bd323b1af4a737c2cbd2225ed10b176c2..e851f5734d76b4581a30674eafb269412d7915a9 100644 (file)
@@ -44,9 +44,11 @@ function add_supp_invoice_gl_item($supp_trans_type, $supp_trans_no, $gl_code, $a
 
 function get_supp_invoice_items($supp_trans_type, $supp_trans_no)
 {
-       $sql = "SELECT *, unit_price AS FullUnitPrice FROM ".TB_PREF."supp_invoice_items
+       $sql = "SELECT *, unit_price AS FullUnitPrice FROM "
+               .TB_PREF."supp_invoice_items inv LEFT JOIN ".TB_PREF."grn_items grn ON grn.id =inv.grn_item_id
                WHERE supp_trans_type = ".db_escape($supp_trans_type)."
-               AND supp_trans_no = ".db_escape($supp_trans_no)." ORDER BY id";
+               AND supp_trans_no = ".db_escape($supp_trans_no)
+               ." ORDER BY inv.id";
        return db_query($sql, "Cannot retreive supplier transaction detail records");
 }
 
index ea541dcf47b087c64675bec5d70396ae8d1241fe..22a853d140ef49afaa13cfa9778540f4687be111 100644 (file)
@@ -32,7 +32,7 @@ function add_po(&$po_obj)
 
      /*Insert to purchase order header record */
      $sql = "INSERT INTO ".TB_PREF."purch_orders (supplier_id, Comments, ord_date, reference, 
-       requisition_no, into_stock_location, delivery_address, total, tax_included) VALUES(";
+       requisition_no, into_stock_location, delivery_address, total, tax_included, prep_amount) VALUES(";
      $sql .= db_escape($po_obj->supplier_id) . "," .
          db_escape($po_obj->Comments) . ",'" .
          date2sql($po_obj->orig_order_date) . "', " .
@@ -41,7 +41,8 @@ function add_po(&$po_obj)
          db_escape($po_obj->Location) . ", " .
          db_escape($po_obj->delivery_address) . ", " .
          db_escape($po_obj->get_trans_total()). ", " .
-         db_escape($po_obj->tax_included) . ")";
+         db_escape($po_obj->tax_included). ", " .
+         db_escape($po_obj->prep_amount). ")";
 
        db_query($sql, "The purchase order header record could not be inserted");
 
@@ -86,6 +87,7 @@ function update_po(&$po_obj)
                ord_date='" . date2sql($po_obj->orig_order_date) . "',
                delivery_address=" . db_escape($po_obj->delivery_address).",
                total=". db_escape($po_obj->get_trans_total()).",
+               prep_amount=". db_escape($po_obj->prep_amount).",
                tax_included=". db_escape($po_obj->tax_included);
     $sql .= " WHERE order_no = " . $po_obj->order_no;
        db_query($sql, "The purchase order could not be updated");
@@ -107,10 +109,15 @@ function update_po(&$po_obj)
                        .db_escape($po_line->price) . ", "
                        .db_escape($po_line->quantity) . ", "
                        .db_escape($po_line->qty_received) . ")";
-               
                db_query($sql, "One of the purchase order detail records could not be updated");
     }
 
+//_vd($po_obj->prepayments);
+       reallocate_payments($po_obj->order_no, ST_PURCHORDER, $po_obj->orig_order_date, $po_obj->get_trans_total(), $po_obj->prepayments);
+//_vd($p = get_payments_for($po_obj->order_no, ST_PURCHORDER));
+//_vd(get_supp_trans($p[0]['trans_no_from'], $p[0]['trans_type_from']));
+//exit;
+
        // add_comments(ST_PURCHORDER, $po_obj->order_no, $po_obj->orig_order_date, $po_obj->Comments);
 
        add_audit_trail($po_obj->trans_type, $po_obj->order_no, Today(), _("Updated."));
@@ -124,8 +131,9 @@ function update_po(&$po_obj)
 
 function read_po_header($order_no, &$order)
 {
-       $sql = "SELECT ".TB_PREF."purch_orders.*, ".TB_PREF."suppliers.supp_name, ".TB_PREF."suppliers.tax_group_id,
-               ".TB_PREF."suppliers.curr_code, ".TB_PREF."locations.location_name
+       $sql = "SELECT ".TB_PREF."purch_orders.*, "
+               .TB_PREF."suppliers.*, "
+               .TB_PREF."locations.location_name 
                FROM ".TB_PREF."purch_orders, ".TB_PREF."suppliers, ".TB_PREF."locations
                WHERE ".TB_PREF."purch_orders.supplier_id = ".TB_PREF."suppliers.supplier_id
                AND ".TB_PREF."locations.loc_code = into_stock_location
@@ -140,9 +148,9 @@ function read_po_header($order_no, &$order)
 
        $order->trans_type = ST_PURCHORDER;
        $order->order_no = $order_no;
-       
+
        $order->set_supplier($myrow["supplier_id"], $myrow["supp_name"], $myrow["curr_code"],
-               $myrow['tax_group_id'], $myrow["tax_included"]);
+               $myrow['tax_group_id'], $myrow["tax_included"], @$myrow["tax_algorithm"]);
 
                $order->credit = get_current_supp_credit($order->supplier_id);
 
@@ -152,6 +160,9 @@ function read_po_header($order_no, &$order)
        $order->supp_ref = $myrow["requisition_no"];
        $order->reference = $myrow["reference"];
        $order->delivery_address = $myrow["delivery_address"];
+       $order->alloc = $myrow["alloc"];
+       $order->prep_amount = $myrow["prep_amount"];
+       $order->prepayments = get_payments_for($order_no, ST_PURCHORDER);
 
        return true;
        }
@@ -350,4 +361,5 @@ function get_sql_for_po_search()
        $sql .= " GROUP BY porder.order_no";
        return $sql;
 }
+
 ?>
\ No newline at end of file
index ca7ad7db502926d213de46e0877f4399c9cd4a2f..a90a305890181c490d4c7f11575b9193b9d14939 100644 (file)
@@ -82,95 +82,6 @@ function write_supp_payment($trans_no, $supplier_id, $bank_account,
        return $payment_id;
 }
 
-//------------------------------------------------------------------------------------------------
-/*
-       This is legacy code, leaved here to provide compatibility for 2.3 extension modules.
-       Will be removed in 2.4 due to design issues.
-*/
-function add_supp_payment($supplier_id, $date_, $bank_account,
-       $amount, $discount, $ref, $memo_, $rate=0, $charge=0)
-{
-       global $Refs;
-
-       begin_transaction();
-       $args = func_get_args(); while (count($args) < 9) $args[] = 0;
-       $args = (object)array_combine(array('supplier_id', 'date_', 'bank_account', 
-               'amount', 'discount', 'ref', 'memo_', 'rate', 'charge'), $args);
-       $args->trans_no = 0;
-       hook_db_prewrite( $args, ST_SUPPAYMENT);
-
-       $supplier_currency = get_supplier_currency($supplier_id);
-    $bank_account_currency = get_bank_account_currency($bank_account);
-       $bank_gl_account = get_bank_gl_account($bank_account);
-
-       if ($rate == 0)
-       {
-               $supp_amount = exchange_from_to($amount, $bank_account_currency, $supplier_currency, $date_);
-               $supp_discount = exchange_from_to($discount, $bank_account_currency, $supplier_currency, $date_);
-               $supp_charge = exchange_from_to($charge, $bank_account_currency, $supplier_currency, $date_);
-       }
-       else
-       {
-               $supp_amount = round($amount / $rate, user_price_dec());
-               $supp_discount = round($discount / $rate, user_price_dec());
-               $supp_charge = round($charge / $rate, user_price_dec());
-       }
-       
-
-       // it's a supplier payment
-       $trans_type = ST_SUPPAYMENT;
-
-       /* Create a supp_trans entry for the supplier payment */
-       $payment_id = write_supp_trans($trans_type, 0, $supplier_id, $date_, $date_,
-               $ref, "", -$supp_amount, 0, -$supp_discount, "", $rate);
-
-       // Now debit creditors account with payment + discount
-
-       $total = 0;
-    $supplier_accounts = get_supplier_accounts($supplier_id);
-       $total += add_gl_trans_supplier($trans_type, $payment_id, $date_, $supplier_accounts["payable_account"], 0, 0,
-               $supp_amount + $supp_discount, $supplier_id, "", $rate);
-
-       // Now credit discount received account with discounts
-       if ($supp_discount != 0)
-       {
-               $total += add_gl_trans_supplier($trans_type, $payment_id, $date_, $supplier_accounts["payment_discount_account"], 0, 0,
-                       -$supp_discount, $supplier_id, "", $rate);
-       }
-
-       if ($supp_charge != 0)
-       {
-               $charge_act = get_company_pref('bank_charge_act');
-               $total += add_gl_trans_supplier($trans_type, $payment_id, $date_, $charge_act, 0, 0,
-                       $supp_charge, $supplier_id, "", $rate);
-       }
-
-       if ($supp_amount != 0)
-       {
-               $total += add_gl_trans_supplier($trans_type, $payment_id, $date_, $bank_gl_account, 0, 0,
-                       -($supp_amount + $supp_charge), $supplier_id, "", $rate);
-       }
-
-       /*Post a balance post if $total != 0 */
-       add_gl_balance($trans_type, $payment_id, $date_, -$total, PT_SUPPLIER, $supplier_id);   
-
-   /*now enter the bank_trans entry */
-       add_bank_trans($trans_type, $payment_id, $bank_account, $ref,
-               $date_, -($amount + $charge), PT_SUPPLIER,
-               $supplier_id, $bank_account_currency,
-               "Could not add the supplier payment bank transaction");
-
-       add_comments($trans_type, $payment_id, $date_, $memo_);
-
-       $Refs->save($trans_type, $payment_id, $ref);
-
-       $args->trans_no = $payment_id;
-       hook_db_postwrite($args, ST_SUPPAYMENT);
-       commit_transaction();
-
-       return $payment_id;
-}
-
 //------------------------------------------------------------------------------------------------
 
 function void_supp_payment($type, $type_no)
index 7a67cba433b58ccacf15e3eb4f69cd0702ef111a..081e8580e62c2359a10ba69cc745998940a6ddd5 100644 (file)
@@ -14,7 +14,7 @@
 //     FIXME - this should be revised for transaction update case.
 //
 function write_supp_trans($type, $trans_no, $supplier_id, $date_, $due_date, $reference, $supp_reference,
-       $amount, $amount_tax, $discount, $err_msg="", $rate=0, $included=0)
+       $amount, $amount_tax, $discount, $err_msg="", $rate=0, $included=0, $tax_algorithm = null)
 {
        $new = $trans_no==0;
        $date = date2sql($date_);
@@ -33,11 +33,12 @@ function write_supp_trans($type, $trans_no, $supplier_id, $date_, $due_date, $re
 
 
        $sql = "INSERT INTO ".TB_PREF."supp_trans (trans_no, type, supplier_id, tran_date, due_date,
-               reference, supp_reference, ov_amount, ov_gst, rate, ov_discount, tax_included) ";
+               reference, supp_reference, ov_amount, ov_gst, rate, ov_discount, tax_included, tax_algorithm) ";
        $sql .= "VALUES (".db_escape($trans_no).", ".db_escape($type)
        .", ".db_escape($supplier_id).", '$date', '$due_date',
                ".db_escape($reference).", ".db_escape($supp_reference).", ".db_escape($amount)
-               .", ".db_escape($amount_tax).", ".db_escape($rate).", ".db_escape($discount).", ".db_escape($included).")";
+               .", ".db_escape($amount_tax).", ".db_escape($rate).", ".db_escape($discount).", ".db_escape($included).
+               ", ".db_escape($tax_algorithm, true).")";
 
        if ($err_msg == "")
                $err_msg = "Cannot insert a supplier transaction record";
@@ -213,7 +214,7 @@ function get_sql_for_supplier_inquiry($filter, $after_date, $to_date, $supplier_
                        $sql = $sql2;
        } 
        elseif (!isset($filter) || $filter == ALL_TEXT || $filter == '6') {
-               $sql = "SELECT * FROM (($sql) UNION ($sql2)) as tr";
+               $sql = "SELECT * FROM (($sql) UNION ($sql2)) as tr WHERE 1";
        }
 
        if (isset($filter) && $filter != ALL_TEXT)
index 59ce2ba14785a4114c6209ace59aeddd2e18d59a..dc7119db05f739722c2efd5b76c46ad1abe79175 100644 (file)
 //----------------------------------------------------------------------------------------
 
 function add_supp_allocation($amount, $trans_type_from, $trans_no_from,
-       $trans_type_to, $trans_no_to, $date_=null)
+       $trans_type_to, $trans_no_to, $date_)
 {
-       if (!$date_)
-               $date = Today();
-
        $date = date2sql($date_);
        $sql = "INSERT INTO ".TB_PREF."supp_allocations (
                amt, date_alloc,
@@ -80,41 +77,31 @@ function void_supp_allocations($type, $type_no, $date="")
 
 function clear_supp_alloctions($type, $type_no, $date="")
 {
-       // clear any allocations for this transaction
-       $sql = "SELECT * FROM ".TB_PREF."supp_allocations
-               WHERE (trans_type_from=".db_escape($type)." AND trans_no_from=".db_escape($type_no).")
-               OR (trans_type_to=".db_escape($type)." AND trans_no_to=".db_escape($type_no).")";
-       $result = db_query($sql, "could not void supp transactions for type=$type and trans_no=$type_no");
-
-       while ($row = db_fetch($result))
-       {
-               $sql = "UPDATE ".TB_PREF."supp_trans SET alloc=alloc - " . $row['amt'] . "
-                       WHERE (type= " . $row['trans_type_from'] . " AND trans_no=" . $row['trans_no_from'] . ")
-                       OR (type=" . $row['trans_type_to'] . " AND trans_no=" . $row['trans_no_to'] . ")";
+       $sql = "UPDATE  ".TB_PREF."supp_allocations ca
+                               LEFT JOIN ".TB_PREF."supp_trans paym ON ca.trans_type_from=paym.type AND ca.trans_no_from=paym.trans_no
+                               LEFT JOIN ".TB_PREF."supp_trans st ON ca.trans_type_to=st.type AND ca.trans_no_to=st.trans_no
+                               LEFT JOIN ".TB_PREF."purch_orders po ON ca.trans_type_to=".ST_PURCHORDER." AND ca.trans_no_to=po.order_no
+                       SET paym.alloc=paym.alloc - ca.amt,
+                               st.alloc=st.alloc -  ca.amt,
+                               po.alloc=po.alloc -  ca.amt
+                       WHERE  (ca.trans_type_from=".db_escape($type)." AND ca.trans_no_from=".db_escape($type_no).")
+                               OR (ca.trans_type_to=".db_escape($type)." AND ca.trans_no_to=".db_escape($type_no).")";
                db_query($sql, "could not clear allocation");
 
-               // 2008-09-20 Joe Hunt
-               if ($date != "")
-                       exchange_variation($type, $type_no, $row['trans_type_to'], $row['trans_no_to'], $date,
-                               $row['amt'], PT_SUPPLIER, true);
-               // 2014-01-16 Joe Hunt. Fix for voiding allocated currency supp_invoices.               
-               elseif ($type == ST_SUPPINVOICE && $row['trans_type_to'] == $type && $row['trans_no_to'] == $type_no)           
-                       exchange_variation($row['trans_type_from'], $row['trans_no_from'], $row['trans_type_to'], $row['trans_no_to'], 
-                               sql2date($row['date_alloc']), $row['amt'], PT_SUPPLIER, true);
-               //////////////////////
-       }
-
-
        // remove any allocations for this transaction
        $sql = "DELETE FROM ".TB_PREF."supp_allocations
-               WHERE (trans_type_from=".db_escape($type)." AND trans_no_from=".db_escape($type_no).")
-               OR (trans_type_to=".db_escape($type)." AND trans_no_to=".db_escape($type_no).")";
+                       WHERE  (trans_type_from=".db_escape($type)." AND trans_no_from=".db_escape($type_no).")
+                               OR (trans_type_to=".db_escape($type)." AND trans_no_to=".db_escape($type_no).")";
 
        db_query($sql, "could not void supp transactions for type=$type and trans_no=$type_no");
+// is this necessary?
+//     if ($date != "")
+//             exchange_variation($type, $type_no, $row['trans_type_to'], $row['trans_no_to'], $date,
+//                     $row['amt'], PT_SUPPLIER, true);
 }
+//-------------------------------------------------------------------------------------------------------------
 
-//----------------------------------------------------------------------------------------
-function get_alloc_supp_sql($extra_fields=null, $extra_conditions=null, $extra_tables=null)
+function get_allocatable_from_supp_sql($supplier_id=null, $settled)
 {
        $sql = "SELECT
                trans.type,
@@ -127,91 +114,144 @@ function get_alloc_supp_sql($extra_fields=null, $extra_conditions=null, $extra_t
                trans.alloc,
                trans.due_date,
                trans.supplier_id,
-               supplier.address";
-
-       if ($extra_fields)
-               $sql .= ", $extra_fields ";
+               supplier.address,
+               round(abs(ov_amount+ov_gst+ov_discount)-alloc,6) <= 0 AS settled
+        FROM "
+               .TB_PREF."supp_trans as trans, "
+               .TB_PREF."suppliers as supplier"
+       ." WHERE trans.supplier_id=supplier.supplier_id
+               AND type IN(".ST_SUPPAYMENT.",".ST_SUPPCREDIT.",".ST_BANKPAYMENT.") AND (trans.ov_amount < 0)";
 
-       $sql .= " FROM ".TB_PREF."supp_trans as trans, ".TB_PREF."suppliers as supplier";
-       if ($extra_tables)
-               $sql .= " ,$extra_tables ";
+       if (!$settled)
+               $sql .= " AND (round(abs(ov_amount+ov_gst+ov_discount)-alloc,6) > 0)";
 
-       $sql .= " WHERE trans.supplier_id=supplier.supplier_id";
+       if ($supplier_id != null)
+               $sql .= " AND supplier.supplier_id = ".db_escape($supplier_id);
 
-       if ($extra_conditions)
-               $sql .= " AND $extra_conditions";
-       
        return $sql;
 }
 
-
-//-------------------------------------------------------------------------------------------------------------
-
-function get_allocatable_from_supp_sql($supplier_id, $settled)
+function get_allocatable_purch_orders($supplier_id = null, $trans_no=null, $type=null)
 {
-       $settled_sql = "";
-       if (!$settled)
+       $sql = "SELECT
+               ".ST_PURCHORDER." as type,
+               porder.order_no as trans_no,
+               porder.reference,
+               porder.ord_date,
+               supplier.supp_name AS DebtorName, 
+               supplier.curr_code,
+               total as Total,
+               porder.alloc,
+               porder.ord_date as due_date,
+               supplier.address,
+               amt,
+               requisition_no as supp_ref
+               FROM ".TB_PREF."purch_orders as porder
+                       LEFT JOIN ".TB_PREF."suppliers as supplier ON porder.supplier_id = supplier.supplier_id
+                       LEFT JOIN ".TB_PREF."supp_allocations as alloc ON porder.order_no = alloc.trans_no_to AND alloc.trans_type_to=".ST_PURCHORDER."
+                       LEFT JOIN ".TB_PREF."grn_batch as grn ON porder.order_no = grn.purch_order_no
+               WHERE total>0";
+
+       if ($trans_no != null and $type != null)
        {
-               $settled_sql = "AND round(ABS(ov_amount+ov_gst+ov_discount)-alloc,6) > 0";
+               $sql .= " AND alloc.trans_no_from=".db_escape($trans_no)."
+                                 AND alloc.trans_type_from=".db_escape($type);
        }
+       else
+       {
+               $sql .= " AND round(prep_amount) > 0 AND ISNULL(grn.purch_order_no)"; // only sales orders with prepayment level set and no yet received
+       }
+       if ($supplier_id)
+               $sql .= " AND porder.supplier_id=".db_escape($supplier_id);
 
-       $supp_sql = "";
-       if ($supplier_id != null)
-               $supp_sql = " AND trans.supplier_id = ".db_escape($supplier_id);
-
-       $sql = get_alloc_supp_sql("round(ABS(ov_amount+ov_gst+ov_discount)-alloc,6) <= 0 AS settled",
-               "(type=".ST_SUPPAYMENT." OR type=".ST_SUPPCREDIT." OR type=".ST_BANKPAYMENT.") AND (ov_amount < 0) " . $settled_sql . $supp_sql);
+       $sql .= " GROUP BY porder.order_no, grn.purch_order_no";
 
        return $sql;
 }
-
-
 //-------------------------------------------------------------------------------------------------------------
 
-function get_allocatable_to_supp_transactions($supplier_id, $trans_no=null, $type=null)
+function get_allocatable_to_supp_transactions($supplier_id=null, $trans_no=null, $type=null)
 {
-       if ($trans_no != null && $type!= null)
+       $sql = "SELECT
+               trans.type,
+               trans.trans_no,
+               IF(trans.supp_reference='',trans.reference,trans.supp_reference) as reference,
+               trans.tran_date,
+               supplier.supp_name, 
+               supplier.curr_code, 
+               ov_amount+ov_gst+ov_discount AS Total,
+               trans.alloc,
+               trans.due_date,
+               trans.supplier_id,
+               amt,
+               supp_reference
+
+        FROM ".TB_PREF."supp_trans as trans
+                       LEFT JOIN ".TB_PREF."supp_allocations as alloc ON trans.trans_no = alloc.trans_no_to AND trans.type = alloc.trans_type_to,"
+                       .TB_PREF."suppliers as supplier
+        WHERE
+                trans.supplier_id=supplier.supplier_id";
+       if ($supplier_id)
+               $sql .= " AND supplier.supplier_id=".db_escape($supplier_id);
+
+       if ($trans_no != null and $type != null)
        {
-               $sql = get_alloc_supp_sql("amt, supp_reference", "trans.trans_no = alloc.trans_no_to
-                       AND trans.type = alloc.trans_type_to
-                       AND alloc.trans_no_from=".db_escape($trans_no)."
-                       AND alloc.trans_type_from=".db_escape($type)."
-                       AND trans.supplier_id=".db_escape($supplier_id),
-                       TB_PREF."supp_allocations as alloc");
+               $sql .= " AND alloc.trans_no_from=".db_escape($trans_no)."
+                                 AND alloc.trans_type_from=".db_escape($type);
        }
        else
        {
-               $sql = get_alloc_supp_sql(null, "round(ABS(ov_amount+ov_gst+ov_discount)-alloc,6) > 0
-                       AND trans.type NOT IN (".implode(',',array(ST_SUPPAYMENT, ST_BANKPAYMENT, ST_SUPPCREDIT)).")
-                       AND trans.supplier_id=".db_escape($supplier_id));
+               $sql .= " AND round(ov_amount+ov_gst+ov_discount-alloc,6) > 0
+                       AND trans.type NOT IN (".implode(',',array(ST_SUPPAYMENT, ST_BANKPAYMENT)).")";
+               $sql .= " GROUP BY type, trans_no";
        }
 
+       $orders = get_allocatable_purch_orders($supplier_id, $trans_no, $type);
+       $sql = "($sql ORDER BY trans_no) \nUNION \n($orders)";
+//_vd($sql);
        return db_query($sql." ORDER BY due_date", "Cannot retreive alloc to transactions");
 }
-
 //-------------------------------------------------------------------------------------------------------------
 
 function get_allocatable_from_supp_transactions($supplier_id, $trans_no=null, $type=null)
 {
-       if ($trans_no != null && $type!= null)
+       $sql = "SELECT
+               trans.type,
+               trans.trans_no,
+               IF(trans.supp_reference='',trans.reference,trans.supp_reference) as reference,
+               trans.tran_date,
+               supplier.supp_name, 
+               supplier.curr_code, 
+               ov_amount+ov_gst+ov_discount AS Total,
+               trans.alloc,
+               trans.due_date,
+               trans.supplier_id,
+               supplier.address,
+               amt,
+               supp_reference
+        FROM  ".TB_PREF."supp_trans as trans,"
+                       .TB_PREF."suppliers as supplier,"
+                       .TB_PREF."supp_allocations as alloc
+        WHERE trans.supplier_id=supplier.supplier_id
+                       AND trans.trans_no = alloc.trans_no_from
+                       AND trans.type = alloc.trans_type_from";
+
+       if ($trans_no != null and $type != null)
        {
-               $sql = get_alloc_supp_sql("amt, supp_reference", "trans.trans_no = alloc.trans_no_from
-                       AND trans.type = alloc.trans_type_from
-                       AND alloc.trans_no_to=".db_escape($trans_no)."
-                       AND alloc.trans_type_to=".db_escape($type)."
-                       AND trans.supplier_id=".db_escape($supplier_id),
-                       TB_PREF."supp_allocations as alloc");
+               $sql .= " AND alloc.trans_no_to=".db_escape($trans_no)."
+                                 AND alloc.trans_type_to=".db_escape($type);
        }
        else
        {
-               $sql = get_alloc_supp_sql(null, "round(ABS(ov_amount+ov_gst+ov_discount)-alloc,6) > 0
-                       AND trans.type != ".ST_SUPPAYMENT."
-                       AND trans.supplier_id=".db_escape($supplier_id));
+               $sql .= " AND round(ABS(ov_amount+ov_gst+ov_discount)-alloc,6) > 0
+                       AND trans.type NOT IN (".implode(',',array(ST_SUPPAYMENT,ST_BANKPAYMENT)).")";
+               $sql .= " GROUP BY type, trans_no";
        }
 
        return db_query($sql." ORDER BY due_date", "Cannot retreive alloc to transactions");
 }
 
+
 function get_sql_for_supplier_allocation_inquiry()
 {
        $date_after = date2sql($_POST['TransAfterDate']);
index dd9e49c906fa3cbb4689ba5e95e2387d368555e3..61cf2bdce8a8194ab8e4bdda72024cbffa38679d 100644 (file)
 function add_supplier($supp_name, $supp_ref, $address, $supp_address, $gst_no,
        $website, $supp_account_no, $bank_account, $credit_limit, $dimension_id, $dimension2_id, 
        $curr_code, $payment_terms, $payable_account, $purchase_account, $payment_discount_account, 
-       $notes, $tax_group_id, $tax_included)
+       $notes, $tax_group_id, $tax_included, $tax_algorithm)
 {
        $sql = "INSERT INTO ".TB_PREF."suppliers (supp_name, supp_ref, address, supp_address, gst_no, website,
                supp_account_no, bank_account, credit_limit, dimension_id, dimension2_id, curr_code,
                payment_terms, payable_account, purchase_account, payment_discount_account, notes, 
-               tax_group_id, tax_included)
-               VALUES (".db_escape($supp_name). ", "
+               tax_group_id, tax_included, tax_algorithm)
+               VALUES (".db_escape($_POST['supp_name']). ", "
                .db_escape($supp_ref). ", "
                .db_escape($address) . ", "
                .db_escape($supp_address) . ", "
@@ -27,7 +27,7 @@ function add_supplier($supp_name, $supp_ref, $address, $supp_address, $gst_no,
                .db_escape($website). ", "
                .db_escape($supp_account_no). ", "
                .db_escape($bank_account). ", "
-               .db_escape($credit_limit). ", "
+               .$credit_limit. ", "
                .db_escape($dimension_id). ", "
                .db_escape($dimension2_id). ", "
                .db_escape($curr_code). ", "
@@ -37,7 +37,8 @@ function add_supplier($supp_name, $supp_ref, $address, $supp_address, $gst_no,
                .db_escape($payment_discount_account). ", "
                .db_escape($notes). ", "
                .db_escape($tax_group_id). ", "
-               .db_escape($tax_included). ")";
+               .db_escape($tax_included). ", "
+               .db_escape($tax_algorithm). ")";
 
        db_query($sql,"The supplier could not be added");
 }
@@ -45,7 +46,7 @@ function add_supplier($supp_name, $supp_ref, $address, $supp_address, $gst_no,
 function update_supplier($supplier_id, $supp_name, $supp_ref, $address, $supp_address, $gst_no, 
        $website, $supp_account_no, $bank_account, $credit_limit, $dimension_id, $dimension2_id, 
        $curr_code, $payment_terms, $payable_account, $purchase_account, $payment_discount_account, 
-       $notes, $tax_group_id, $tax_included)
+       $notes, $tax_group_id, $tax_included, $tax_algorithm)
 {
        $sql = "UPDATE ".TB_PREF."suppliers SET supp_name=".db_escape($supp_name) . ",
                supp_ref=".db_escape($supp_ref) . ",
@@ -65,7 +66,8 @@ function update_supplier($supplier_id, $supp_name, $supp_ref, $address, $supp_ad
                payment_discount_account=".db_escape($payment_discount_account) . ",
                notes=".db_escape($notes) . ",
                tax_group_id=".db_escape($tax_group_id). ",
-               tax_included=".db_escape($tax_included)
+               tax_included=".db_escape($tax_included).",
+               tax_algorithm=".db_escape($tax_algorithm)
                ." WHERE supplier_id = ".db_escape($supplier_id);
 
        db_query($sql,"The supplier could not be updated");
@@ -120,7 +122,6 @@ function get_supplier_details($supplier_id, $to=null, $all=true)
                          ".TB_PREF."payment_terms.terms,
                          ".TB_PREF."payment_terms.days_before_due,
                          ".TB_PREF."payment_terms.day_in_following_month";
-
     $result = db_query($sql,"The customer details could not be retrieved");
     $supp = db_fetch($result);
 
@@ -179,4 +180,10 @@ function is_new_supplier($id)
 
        return !key_in_foreign_table($id, $tables, 'supplier_id');
 }
-?>
\ No newline at end of file
+
+function update_supp_tax_algorithm($supplier_id, $tax_algorithm)
+{
+       $sql = "UPDATE ".TB_PREF."suppliers SET tax_algorithm=".db_escape($tax_algorithm)
+               . " WHERE supplier_id=".db_escape($supplier_id);
+       return db_query($sql, "cannot update supplier's tax calculation algorithm");
+}
index f9f75aacc027574db79d361e770ba2f2c3201d5c..8fc50b41e6c461870e7d525946f8e9c10a0eadec 100644 (file)
@@ -32,12 +32,19 @@ class purch_order
        var $tax_group_id;
        var $tax_group_array = null; // saves db queries
        var $tax_included; // type of prices
+       var $tax_algorithm;
+       var $stored_algorithm; // copy to find the change after invoice in processed
        var $terms;
        var $ex_rate;
+       var $cash_account;
 
        var $reference;
        var $tax_overrides = array();           // array of taxes manually inserted during sales invoice entry (direct invoice)
        
+       var $prep_amount = 0; // prepayment required
+       var $alloc; // sum of payments allocated
+       var $prepayments = array();
+
        function purch_order()
        {
                /*Constructor function initialises a new purchase order object */
@@ -45,13 +52,14 @@ class purch_order
                $this->lines_on_order = $this->order_no = $this->supplier_id = 0;
        }
        
-       function set_supplier($supplier_id, $supplier_name, $curr_code, $tax_group_id, $tax_included)
+       function set_supplier($supplier_id, $supplier_name, $curr_code, $tax_group_id, $tax_included, $tax_algorithm)
        {
                $this->supplier_id = $supplier_id;
                $this->supplier_name = $supplier_name;
                $this->curr_code = $curr_code;
                $this->tax_group_id = $tax_group_id;
                $this->tax_included = $tax_included;
+               $this->stored_algorithm = $this->tax_algorithm = $tax_algorithm;
                $this->tax_group_array = get_tax_group_items_as_array($tax_group_id);
        }
        
@@ -143,7 +151,7 @@ class purch_order
                        $prices[] = round($ln_itm->price * ($receival ? $ln_itm->receive_qty : $ln_itm->quantity),  user_price_dec());
                }
                $taxes = get_tax_for_items($items, $prices, $shipping_cost,
-                 $this->tax_group_id, $this->tax_included,  $this->tax_group_array);
+                 $this->tax_group_id, $this->tax_included,  $this->tax_group_array, $this->tax_algorithm);
 
        // Adjustment for swiss franken, we always have 5 rappen = 1/20 franken
            if ($this->curr_code == 'CHF') {
@@ -175,7 +183,7 @@ class purch_order
 
                if (!$this->tax_included ) {
                        $taxes = get_tax_for_items($items, $prices, 0, $this->tax_group_id,
-                       $this->tax_included,  $this->tax_group_array);
+                       $this->tax_included,  $this->tax_group_array, $this->tax_algorithm);
 
                        foreach($taxes as $tax)
                                $total += round($tax['Value'], $dec);
index 51b456a216ec01346ce42f059894b6c4e15c1941..2a2c2399399bae73c1549bd4bed7303f8f2bcd8b 100644 (file)
@@ -16,6 +16,7 @@ include_once($path_to_root . "/includes/banking.inc");
 include_once($path_to_root . "/includes/date_functions.inc");
 
 include_once($path_to_root . "/includes/db/inventory_db.inc");
+include_once($path_to_root . "/includes/db/allocations_db.inc");
 
 include_once($path_to_root . "/purchasing/includes/db/supp_trans_db.inc");
 include_once($path_to_root . "/purchasing/includes/db/po_db.inc");
@@ -114,4 +115,113 @@ function add_or_update_purchase_data($supplier_id, $stock_id, $price, $descripti
        return true;
 }
 
-?>
\ No newline at end of file
+function get_po_prepayments($supp_trans)
+{
+       // collect purchase order line ids
+       $allocations = array();
+       $line_ids = array();
+       foreach($supp_trans->grn_items as $item)
+               $line_ids[] = $item->po_detail_item;
+
+       if (!count($line_ids))
+               return $allocations;
+
+       $sql = "SELECT DISTINCT allocs.*
+               FROM ".TB_PREF."supp_allocations allocs 
+                       LEFT JOIN ".TB_PREF."purch_order_details line ON line.order_no=allocs.trans_no_to AND trans_type_to=".ST_PURCHORDER."
+               WHERE line.po_detail_item IN(".implode(',', array_values($line_ids)).")";
+//_vd($sql);
+       $result = db_query($sql, "Cannot retrieve po prepayments");
+
+       while($dat = db_fetch($result))
+       {
+               $allocations[] = $dat;
+       }
+
+       return $allocations;
+}
+
+//---------------------------------------------------------------------------------------------------
+//
+//     Add Purchase Order, GRN or Purchase Invoice with parent auto documents (if any)
+//
+function add_direct_supp_trans($cart)
+{
+       global $Refs, $type_shortcuts;
+
+       if ($cart->trans_type != ST_PURCHORDER) {
+               // for direct grn/invoice set same dates for lines as for whole document
+               foreach ($cart->line_items as $line_no =>$line)
+                       $cart->line_items[$line_no]->req_del_date = $cart->orig_order_date;
+       }
+
+       $ref = $cart->reference;
+       if ($cart->trans_type != ST_PURCHORDER) {
+               $cart->reference = 'auto';
+               begin_transaction();    // all db changes as single transaction for direct document
+       }
+       $order_no = add_po($cart);
+       $cart->order_no = $order_no;
+
+       if ($cart->trans_type == ST_PURCHORDER)
+               return $order_no;
+
+       //Direct GRN
+       if ($cart->trans_type == ST_SUPPRECEIVE)
+               $cart->reference = $ref;
+       if ($cart->trans_type != ST_SUPPINVOICE)
+               $cart->Comments = $cart->reference; //grn does not hold supp_ref
+       foreach($cart->line_items as $key => $line)
+               $cart->line_items[$key]->receive_qty = $line->quantity;
+       $grn_no = add_grn($cart);
+       if ($cart->trans_type == ST_SUPPRECEIVE) {
+               commit_transaction(); // save PO+GRN
+               return $grn_no;
+       }
+       //      Direct Purchase Invoice
+       $inv = new supp_trans(ST_SUPPINVOICE);
+       $inv->Comments = $cart->Comments;
+       $inv->supplier_id = $cart->supplier_id;
+       $inv->tran_date = $cart->orig_order_date;
+       $inv->due_date = $cart->due_date;
+       $inv->reference = $ref;
+       $inv->supp_reference = $cart->supp_ref;
+       $inv->tax_included = $cart->tax_included;
+       $inv->tax_algorithm = $cart->tax_algorithm;
+       $inv->stored_algorithm = $cart->stored_algorithm;
+       $supp = get_supplier($cart->supplier_id);
+       $inv->tax_group_id = $supp['tax_group_id'];
+       $inv->ov_amount = $inv->ov_gst = $inv->ov_discount = 0;
+       $total = 0;
+               foreach($cart->line_items as $key => $line) {
+               $inv->add_grn_to_trans($line->grn_item_id, $line->po_detail_rec, $line->stock_id,
+                       $line->item_description, $line->receive_qty, 0, $line->receive_qty,
+                       $line->price, $line->price, true, get_standard_cost($line->stock_id), '');
+               $total += round2(($line->receive_qty * $line->price), user_price_dec());
+       }
+       $inv->tax_overrides = $cart->tax_overrides;
+       if (!$inv->tax_included) {
+               $taxes = $inv->get_taxes($inv->tax_group_id, 0, false, $inv->tax_algorithm);
+               foreach( $taxes as $taxitem) {
+                       $total += isset($taxitem['Override']) ? $taxitem['Override'] : $taxitem['Value'];
+               }
+       }
+       $inv->ex_rate = $cart->ex_rate;
+
+       $inv_no = add_supp_invoice($inv);
+
+       // presume supplier data need correction
+       if ($inv->stored_algorithm != $inv->tax_algorithm)
+               update_supp_tax_algorithm($inv->supplier_id, $inv->tax_algorithm);
+
+       if ($cart->cash_account) {
+               $pmt_no = write_supp_payment(0, $inv->supplier_id, $cart->cash_account, $inv->tran_date, $Refs->get_next(ST_SUPPAYMENT), 
+                       $total, 0, _('Payment for:').$inv->supp_reference .' ('.$type_shortcuts[ST_SUPPINVOICE].$inv_no.')');
+               add_supp_allocation($total, ST_SUPPAYMENT, $pmt_no, ST_SUPPINVOICE, $inv_no, $inv->tran_date);
+               update_supp_trans_allocation(ST_SUPPINVOICE, $inv_no);
+               update_supp_trans_allocation(ST_SUPPAYMENT, $pmt_no);
+       }
+       commit_transaction(); // save PO+GRN+PI(+SP)
+       return $inv_no;
+}
+
index 8014fe0a4a1a889f127c9df525d5e8797692de44..3fcfb7d2cbcb7d0b4bfc47b7a8fbbae058b1536c 100644 (file)
@@ -9,6 +9,7 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
 ***********************************************************************/
+include_once($path_to_root . "/purchasing/includes/supp_trans_class.inc");
 include_once($path_to_root . "/includes/date_functions.inc");
 
 include_once($path_to_root . "/includes/ui.inc");
index c36fa8163a901813939a40702b16aad18929b6a9..a185895c7f8cf41f69c7f674629a6e23a7bf813e 100644 (file)
@@ -29,10 +29,12 @@ class supp_trans
        var $tax_included;
        
        var $trans_type;        // invoice or credit
+       var $trans_no;
 
        var $Comments;
        var $tran_date;
        var $due_date;
+       var $src_docs = array();                // source invoice for this credit note (if any)
 
        var $supp_reference;
        var $reference;
@@ -41,14 +43,32 @@ class supp_trans
        var $ov_gst;
        var $gl_codes_counter=0;
        var $credit = 0;
+       var $tax_algorithm;
+       var $stored_algorithm;
+       var $currency;
        var $tax_overrides = array();           // array of taxes manually inserted during sales invoice entry
 
-       function supp_trans($trans_type)
+       function supp_trans($trans_type, $trans_no=0)
        {
                $this->trans_type = $trans_type;
                /*Constructor function initialises a new Supplier Transaction object */
-               $this->grn_items = array();
-               $this->gl_codes = array();
+               $this->read($trans_type, $trans_no);
+       }
+
+       function read($trans_type, $trans_no)
+       {
+               $this->trans_type = $trans_type;
+               $this->trans_no = $trans_no;
+               $this->grn_items = array();
+               $this->gl_codes = array();
+               if ($trans_no) {
+                       read_supp_invoice($trans_no, $trans_type, $this);
+                       if ($trans_type == ST_SUPPCREDIT)
+                       {
+                               $this->src_docs = find_src_invoices($trans_no);
+                       }
+                       read_supplier_details_to_trans($this, $this->supplier_id);
+               }
        }
 
        function add_grn_to_trans($grn_item_id, $po_detail_item, $item_code, $item_description, 
@@ -58,6 +78,9 @@ class supp_trans
                $this->grn_items[$grn_item_id] = new grn_item($grn_item_id, $po_detail_item, 
                        $item_code, $item_description, $qty_recd, $prev_quantity_inv, $this_quantity_inv, 
                        $order_price, $chg_price, $std_cost_unit, $gl_code, $this->tax_included);
+
+               $this->src_docs = find_src_invoices($this);
+
                unset($this->tax_overrides); // cancel tax overrides after cart change
                return 1;
        }
@@ -119,7 +142,7 @@ class supp_trans
         if ($tax_group_id == null)
                $tax_group_id = $this->tax_group_id;
         $taxes = get_tax_for_items($items, $prices, $shipping_cost, $tax_group_id, 
-               $this->tax_included);
+               $this->tax_included, null, $this->tax_algorithm);
 
                if (isset($this->tax_overrides))
                        foreach($this->tax_overrides as $id => $value) // add values entered manually
@@ -168,7 +191,9 @@ class supp_trans
                }
                return $total;
     }
-
+       //
+       //      Returns transaction total 
+       //
        function get_items_total()
        {
                $total = 0;
index ff9c84680d428b9ffdd25f1281022cec57d87265..983e507c9e8d5273ee9bdd2701ceb5c8ea5d8a4f 100644 (file)
@@ -19,6 +19,8 @@ function copy_from_trans(&$supp_trans)
        $_POST['supp_reference'] = $supp_trans->supp_reference;
        $_POST['reference'] = $supp_trans->reference;
        $_POST['supplier_id'] = $supp_trans->supplier_id;
+       $_POST['tax_algorithm'] = $supp_trans->tax_algorithm;
+
        $_POST['_ex_rate'] = $supp_trans->ex_rate;
        if (isset($supp_trans->tax_overrides))
            foreach($supp_trans->tax_overrides as $id => $value)
@@ -34,6 +36,9 @@ function copy_to_trans(&$supp_trans)
        $supp_trans->due_date = $_POST['due_date'];
        $supp_trans->supp_reference = $_POST['supp_reference'];
        $supp_trans->reference = $_POST['reference'];
+       if (isset($_POST['tax_algorithm']))
+           $supp_trans->tax_algorithm = $_POST['tax_algorithm'];
+
        $supp_trans->ex_rate = input_num('_ex_rate', null);
 
        $supp_trans->ov_amount = $supp_trans->ov_discount = 0; /* for starters */
@@ -78,19 +83,28 @@ function invoice_header(&$supp_trans)
 
        table_section(1);
 
-       if (isset($_POST['invoice_no']))
+       if ($supp_trans->trans_type == ST_SUPPCREDIT && $supp_trans->src_docs)
        {
-               $trans = get_supp_trans($_POST['invoice_no'], ST_SUPPINVOICE);
-               $_POST['supplier_id'] = $trans['supplier_id'];
-               $supp = $trans['supplier_name'] . " - " . $trans['curr_code'];
+//             $trans = get_supp_trans($_POST['invoice_no'], ST_SUPPINVOICE);
+//             $trans = get_supp_trans($supp_trans->supplier_id, ST_SUPPINVOICE);
+//             $_POST['supplier_id'] = $trans['supplier_id'];
+//             $supp = $trans['supplier_name'] . " - " . $trans['SupplierCurrCode'];
+
+               $_POST['supplier_id'] = $supp_trans->supplier_id;
+               $supp = $supp_trans->supplier_name." - ".$supp_trans->currency;
                label_row(_("Supplier:"), $supp.hidden('supplier_id', $_POST['supplier_id'], false));
-       }       
+       }
        else
        {
        if (!isset($_POST['supplier_id']) && (get_global_supplier() != ALL_TEXT))
                $_POST['supplier_id'] = get_global_supplier();
 
-               supplier_list_row(_("Supplier:"), 'supplier_id', $_POST['supplier_id'], false, true);
+               if (!$supp_trans->trans_no)
+                       supplier_list_row(_("Supplier:"), 'supplier_id', $_POST['supplier_id'], false, true);
+               else
+                       label_row(_("Supplier:"), $supp_trans->supplier_name
+                       .($supp_trans->currency ? ' - '.$supp_trans->currency  : '')
+                       .hidden('supplier_id', $_POST['supplier_id'], false));
        }
        if ($supp_trans->supplier_id != $_POST['supplier_id'])
        {
@@ -104,12 +118,11 @@ function invoice_header(&$supp_trans)
 
        ref_row(_("Reference:"), 'reference', '', $Refs->get_next($supp_trans->trans_type));
 
-       if (isset($_POST['invoice_no']))
+       if ($supp_trans->trans_type == ST_SUPPCREDIT)
        {
-               label_row(_("Supplier's Ref.:"), $_POST['invoice_no'].hidden('invoice_no', $_POST['invoice_no'], false).hidden('supp_reference', $_POST['invoice_no'], false));
-       }       
-       else
-               text_row(_("Supplier's Ref.:"), 'supp_reference', $_POST['supp_reference'], 20, 60);
+               label_row(_("Source Invoices:"), implode(',' , $supp_trans->src_docs),'','','src_docs');
+       }
+               text_row(_("Supplier's Ref.:"), 'supp_reference', $_POST['supp_reference'], 20, 60);
 
        table_section(2, "33%");
 
@@ -150,10 +163,13 @@ function invoice_header(&$supp_trans)
 
 function invoice_totals(&$supp_trans)
 {
+       global $Ajax;
+
        copy_to_trans($supp_trans);
 
        $dim = get_company_pref('use_dimension');
        $colspan = ($dim == 2 ? 7 : ($dim == 1 ? 6 : 5));
+       div_start('tax_table');
        start_table(TABLESTYLE, "width=95%");
        label_row(_("Sub-total:"), price_format( $supp_trans->ov_amount), "colspan=$colspan align=right", "align=right");
 
@@ -171,8 +187,14 @@ function invoice_totals(&$supp_trans)
 
     end_table(1);
     start_table(TABLESTYLE2);
+    tax_algorithm_list_row(_("Tax algorithm:"), 'tax_algorithm', null, true);
+       if (list_updated('tax_algorithm')) {
+               $supp_trans->tax_algorithm = $_POST['tax_algorithm'];
+           $Ajax->activate('tax_table');
+       }
     textarea_row(_("Memo:"), "Comments", null, 50, 3);
     end_table(1);
+       div_end();
 }
 
 //--------------------------------------------------------------------------------------------------
@@ -332,15 +354,14 @@ function display_gl_items(&$supp_trans, $mode=0)
 
 function display_grn_items_for_selection(&$supp_trans, $k)
 {
-
-       if ($supp_trans->trans_type == ST_SUPPINVOICE)
-               $result = get_grn_items(0, $supp_trans->supplier_id, true);
+       if ($supp_trans->trans_type == ST_SUPPINVOICE)  // outstanding grns and eventually for selected invoice
+               $result = get_grn_items(0, $supp_trans->supplier_id, true, false, $supp_trans->trans_no);
        else
-       {
+       { // only invoiced
                if (isset($_POST['receive_begin']) && isset($_POST['receive_end']))
                        $result = get_grn_items(0, $supp_trans->supplier_id, false, true, 0, $_POST['receive_begin'], $_POST['receive_end']);
-               else if (isset($_POST['invoice_no']))
-                       $result = get_grn_items(0, $supp_trans->supplier_id, false, true, $_POST['invoice_no']);
+               else if ($supp_trans->src_docs)
+                       $result = get_grn_items(0, $supp_trans->supplier_id, false, true, array_keys($supp_trans->src_docs));
                else    
                        $result = get_grn_items(0, $supp_trans->supplier_id, false, true);
        }
@@ -362,21 +383,22 @@ function display_grn_items_for_selection(&$supp_trans, $k)
                        $grn_already_on_invoice = true;
                }
        }
+
        if ($grn_already_on_invoice == false)
        {
 
                        alt_table_row_color($k);
 
                        $n = $myrow["id"];
-               label_cell(get_trans_view_str(25, $myrow["grn_batch_id"]).
-               hidden('qty_recd'.$n, $myrow["qty_recd"], false).
-               hidden('item_code'.$n, $myrow["item_code"], false).
-               hidden('item_description'.$n, $myrow["description"], false).
-               hidden('prev_quantity_inv'.$n, $myrow['quantity_inv'], false).
-               hidden('order_price'.$n, $myrow['unit_price'], false).
-               hidden('std_cost_unit'.$n, $myrow['std_cost_unit'], false).
-               hidden('po_detail_item'.$n, $myrow['po_detail_item'], false).
-               hidden('location'.$n, $myrow["loc_code"], false));
+               label_cell(get_trans_view_str(ST_SUPPRECEIVE, $myrow["grn_batch_id"]));
+               label_cell($myrow["id"].
+               hidden('qty_recd'.$n, $myrow["qty_recd"], false).
+               hidden('item_code'.$n, $myrow["item_code"], false).
+               hidden('item_description'.$n, $myrow["description"], false).
+               hidden('prev_quantity_inv'.$n, $myrow['quantity_inv'], false).
+               hidden('order_price'.$n, $myrow['unit_price'], false).
+               hidden('std_cost_unit'.$n, $myrow['std_cost_unit'], false).
+               hidden('po_detail_item'.$n, $myrow['po_detail_item'], false));
                label_cell(get_trans_view_str(ST_PURCHORDER, $myrow["purch_order_no"]));
             label_cell($myrow["item_code"]);
             label_cell($myrow["description"]);
@@ -387,10 +409,10 @@ function display_grn_items_for_selection(&$supp_trans, $k)
             if ($supp_trans->trans_type == ST_SUPPINVOICE)
                qty_cells(null, 'this_quantity_inv'.$n, number_format2($myrow["qty_recd"] - $myrow["quantity_inv"], $dec), 
                        null, null, $dec);
-            else               
+            else
                qty_cells(null, 'This_QuantityCredited'.$n, number_format2(max($myrow["quantity_inv"], 0), $dec), 
                        null, null, $dec);
-            $dec2 = 0;                 
+            $dec2 = 0;
             if ($supp_trans->trans_type == ST_SUPPINVOICE)
             {
                amount_cells(null, 'ChgPrice'.$n, price_decimal_format($myrow["unit_price"], $dec2), null, null, $dec2);
@@ -408,7 +430,7 @@ function display_grn_items_for_selection(&$supp_trans, $k)
                if (($supp_trans->trans_type == ST_SUPPINVOICE) && $_SESSION["wa_current_user"]->can_access('SA_GRNDELETE')) {  // Added 2008-10-18 by Joe Hunt. Special access rights needed.
                        submit_cells('void_item_id'.$n, _("Remove"), '', _("WARNING! Be careful with removal. The operation is executed immediately and cannot be undone !!!"), true);
                                submit_js_confirm('void_item_id'.$n,
-                                       _('You are about to remove all yet non-invoiced items from selected delivery line. This operation also irreversibly changes related order line. Do you want to continue ?'));
+                                       sprintf(_('You are about to remove all yet non-invoiced items from delivery line #%d. This operation also irreversibly changes related order line. Do you want to continue ?'), $n));
                        }
                        end_row();
        }
@@ -452,28 +474,29 @@ function display_grn_items(&$supp_trans, $mode=0)
                        $heading = _("Received Items Charged on this Invoice");
                else
                        $heading = _("Received Items Credited on this Note");
-       }               
+       }
 
        display_heading($heading);
 
        if ($mode == 1)
        {
-               if ($supp_trans->trans_type == ST_SUPPCREDIT && !isset($_POST['invoice_no']))
+               if ($supp_trans->trans_type == ST_SUPPCREDIT)
                {
                        echo "</td>";
-                       date_cells(_("Received between"), 'receive_begin', "", null, -30, 0, 0, "valign=middle");
+                       date_cells(_("Received between"), 'receive_begin', "", null, 
+                               -$_SESSION["wa_current_user"]->prefs->transaction_days(), 0, 0, "valign=middle");
                        date_cells(_("and"), 'receive_end', '', null, 1, 0, 0, "valign=middle");
                        submit_cells('RefreshInquiry', _("Search"),'',_('Refresh Inquiry'), true);
                        echo "<td>";
-               }       
-                       
+               }
+
                if ($heading2 != "")
                {
                        display_note($heading2, 0, 0, "class='overduefg'");
-               }       
+               }
                echo "</td><td width=10% align='right'>";
                submit('InvGRNAll', _("Add All Items"), true, false,true);
-       }       
+       }
 
        end_outer_table(0, false);
 
@@ -481,7 +504,7 @@ function display_grn_items(&$supp_trans, $mode=0)
        start_table(TABLESTYLE, "width=95%");
        if ($mode == 1)
        {
-       $th = array(_("Delivery"), _("P.O."), _("Item"), _("Description"),
+       $th = array(_("Delivery"), _("Sequence #"), _("P.O."), _("Item"), _("Description"),
                _("Received On"), _("Quantity Received"), _("Quantity Invoiced"),
                _("Qty Yet To Invoice"), $supp_trans->tax_included ? _("Price after Tax") : _("Price before Tax"), 
                _("Total"), "");
@@ -509,12 +532,13 @@ function display_grn_items(&$supp_trans, $mode=0)
                alt_table_row_color($k);
 
                        $grn_batch = get_grn_batch_from_item($entered_grn->id);
-               label_cell(get_trans_view_str(ST_SUPPRECEIVE,$grn_batch));
+               label_cell(get_trans_view_str(ST_SUPPRECEIVE, $grn_batch));
                if ($mode == 1)
                {
-                               $row = get_grn_batch($grn_batch);
-                               label_cell($row['purch_order_no']); // PO
-                       }
+                               label_cell($entered_grn->id);
+                               $row = get_grn_batch($grn_batch);
+                               label_cell(get_trans_view_str(ST_PURCHORDER, $row["purch_order_no"])); // PO
+                       }       
                        label_cell($entered_grn->item_code);
                        label_cell($entered_grn->item_description);
             $dec = get_qty_dec($entered_grn->item_code);
index 728d2e7ce190b57f404e72b9f8984e4cdcf174f9..ba60460976fd8ad4037f84e2f1939df18c1db7e4 100644 (file)
@@ -19,14 +19,17 @@ function copy_from_cart()
 
        $_POST['supplier_id'] = $cart->supplier_id;
        $_POST['OrderDate'] = $cart->orig_order_date;
-       if ($cart->trans_type==ST_SUPPINVOICE)
+       if ($cart->trans_type == ST_SUPPINVOICE)
                $_POST['due_date'] = $cart->due_date;
     $_POST['supp_ref'] = $cart->supp_ref;
     $_POST['ref'] = $cart->reference;
        $_POST['Comments'] = $cart->Comments;
     $_POST['StkLocation'] = $cart->Location;
     $_POST['delivery_address'] = $cart->delivery_address;
+    $_POST['tax_algorithm'] = $cart->tax_algorithm;
+       $_POST['prep_amount'] = price_format($cart->prep_amount);
        $_POST['_ex_rate'] = $cart->ex_rate;
+       $_POST['cash_account'] = $cart->cash_account;
     foreach($cart->tax_overrides as $id => $value)
            $_POST['mantax'][$id] = price_format($value);
 }
@@ -37,13 +40,19 @@ function copy_to_cart()
 
        $cart->supplier_id = $_POST['supplier_id'];     
        $cart->orig_order_date = $_POST['OrderDate'];
-       if ($cart->trans_type==ST_SUPPINVOICE)
+       if ($cart->trans_type == ST_SUPPINVOICE)
+       {
                $cart->due_date = $_POST['due_date'];
+               $cart->cash_account = get_post('cash_account');
+       }
        $cart->reference = $_POST['ref'];
        $cart->supp_ref = $_POST['supp_ref'];
        $cart->Comments = $_POST['Comments'];   
        $cart->Location = $_POST['StkLocation'];
        $cart->delivery_address = $_POST['delivery_address'];
+       if (isset($_POST['tax_algorithm']))
+           $cart->tax_algorithm = $_POST['tax_algorithm'];
+       $cart->prep_amount = input_num('prep_amount', 0);
        $cart->ex_rate = input_num('_ex_rate', null);
 
     if (isset($_POST['mantax'])) {
@@ -55,8 +64,9 @@ function copy_to_cart()
 
 function get_supplier_details_to_order(&$order, $supplier_id)
 {
-       $sql = "SELECT curr_code, supp_name, tax_group_id, supp.tax_included,
-                       supp.credit_limit - Sum(IFNULL(ov_amount + ov_gst + ov_discount,0)) as cur_credit,
+       $sql = "SELECT curr_code, supp_name, tax_group_id, supp.tax_included, supp.tax_algorithm,
+                       supp.credit_limit - Sum(IFNULL(IF(trans.type=".ST_SUPPCREDIT.", -1, 1) 
+                               * (ov_amount + ov_gst + ov_discount),0)) as cur_credit,
                                terms.terms, terms.days_before_due, terms.day_in_following_month
                FROM ".TB_PREF."suppliers supp
                         LEFT JOIN ".TB_PREF."supp_trans trans ON supp.supplier_id = trans.supplier_id
@@ -79,7 +89,7 @@ function get_supplier_details_to_order(&$order, $supplier_id)
        $_POST['curr_code'] = $myrow["curr_code"];
 
        $order->set_supplier($supplier_id, $myrow["supp_name"], $myrow["curr_code"], 
-               $myrow["tax_group_id"], $myrow["tax_included"]);
+               $myrow["tax_group_id"], $myrow["tax_included"], $myrow["tax_algorithm"]);
 }
 
 //---------------------------------------------------------------------------------------------------
@@ -137,6 +147,7 @@ function display_po_header(&$order)
                get_supplier_details_to_order($order, $_POST['supplier_id']); 
            get_duedate_from_terms($order);
                $_POST['due_date'] = $order->due_date;
+               $_POST['tax_algorithm'] = $order->tax_algorithm;
 
                // supplier default price update
                foreach ($order->line_items as $line_no=>$item) {
@@ -148,6 +159,7 @@ function display_po_header(&$order)
                }
            $Ajax->activate('items_table');
            $Ajax->activate('due_date');
+           $Ajax->activate('tax_algorithm');
        }
        set_global_supplier($_POST['supplier_id']);
 
@@ -345,6 +357,14 @@ function display_po_summary(&$po, $is_self=false, $editable=false)
        label_row(_("Delivery Address"), $po->delivery_address, "class='tableheader2'",
                "colspan=9");
 
+       if (!$editable && ($po->prep_amount > 0))
+       {
+               start_row();
+               label_cells(_("Required Pre-Payment"), price_format($po->prep_amount), "class='tableheader2'");
+               label_cells(_("Pre-Payments Allocated"), price_format($po->alloc), "class='tableheader2'");
+               end_row();
+       }
+
     if ($po->Comments != "")
        label_row(_("Order Comments"), $po->Comments, "class='tableheader2'",
                "colspan=9");
@@ -412,7 +432,7 @@ function po_item_controls(&$order, &$rowcounter, $line_no=-1)
                //$_POST['price'] = price_format(get_purchase_price ($order->supplier_id, $_POST['stock_id']));
                $_POST['price'] = price_decimal_format(get_purchase_price ($order->supplier_id, $_POST['stock_id']), $dec2);
                if ($order->trans_type == ST_PURCHORDER)
-                       $_POST['req_del_date'] = add_days(Today(), $SysPrefs->default_delivery_required_by());
+                       $_POST['req_del_date'] = add_days(Today(), $SysPrefs->default_receival_required_by());
                $qty_rcvd = '';
        }
 
@@ -454,6 +474,29 @@ function po_item_controls(&$order, &$rowcounter, $line_no=-1)
 
 //---------------------------------------------------------------------------------------------------
 
+function display_po_footer(&$trans)
+{
+       global $Ajax;
+
+start_table(TABLESTYLE2);
+
+if (list_updated('tax_algorithm')) {
+       $trans->tax_algorithm = $_POST['tax_algorithm'];
+    $Ajax->activate('items_table');
+}
+
+if ($trans->trans_type == ST_SUPPINVOICE) {
+       tax_algorithm_list_row(_("Tax algorithm:"), 'tax_algorithm', null, true);
+       cash_accounts_list_row(_("Payment:"), 'cash_account', null, false, _('Delayed'));
+} elseif ($trans->trans_type == ST_PURCHORDER)
+       amount_row(_("Pre-Payment Required:"), 'prep_amount');
+
+textarea_row(_("Memo:"), 'Comments', null, 70, 4);
+
+end_table();
+}
+//---------------------------------------------------------------------------------------------------
+
 
 
 ?>
\ No newline at end of file
index 220b1e1a325d62e2c36d2452ee939ca1dd268f34..2cd7223a59635e7bdc654441127a9f83544a469f 100644 (file)
@@ -61,7 +61,7 @@ start_table(TABLESTYLE_NOBORDER);
 start_row();
 ref_cells(_("#:"), 'order_number', '',null, '', true);
 
-date_cells(_("from:"), 'OrdersAfterDate', '', null, -30);
+date_cells(_("from:"), 'OrdersAfterDate', '', null, -$_SESSION["wa_current_user"]->prefs->transaction_days());
 date_cells(_("to:"), 'OrdersToDate');
 
 locations_list_cells(_("Location:"), 'StockLocation', null, true);
index 9925ac6399a393387a286074b120a8e11c0e1492..986a706f3c60d0fe09d5e87820b053f0e8bac00a 100644 (file)
@@ -16,15 +16,13 @@ include_once($path_to_root . "/includes/session.inc");
 
 include_once($path_to_root . "/purchasing/includes/purchasing_ui.inc");
 include_once($path_to_root . "/reporting/includes/reporting.inc");
-if (!@$_GET['popup'])
-{
-       $js = "";
-       if ($use_popup_windows)
-               $js .= get_js_open_window(900, 500);
-       if ($use_date_picker)
-               $js .= get_js_date_picker();
-       page(_($help_context = "Search Purchase Orders"), false, false, "", $js);
-}
+$js = "";
+if ($use_popup_windows)
+       $js .= get_js_open_window(900, 500);
+if ($use_date_picker)
+       $js .= get_js_date_picker();
+page(_($help_context = "Search Purchase Orders"), false, false, "", $js);
+
 if (isset($_GET['order_number']))
 {
        $order_number = $_GET['order_number'];
@@ -55,14 +53,13 @@ if (get_post('SearchOrders'))
 }
 //---------------------------------------------------------------------------------------------
 
-if (!@$_GET['popup'])
-       start_form();
+start_form();
 
 start_table(TABLESTYLE_NOBORDER);
 start_row();
 ref_cells(_("#:"), 'order_number', '',null, '', true);
 
-date_cells(_("from:"), 'OrdersAfterDate', '', null, -30);
+date_cells(_("from:"), 'OrdersAfterDate', '', null, -$_SESSION["wa_current_user"]->prefs->transaction_days());
 date_cells(_("to:"), 'OrdersToDate');
 
 locations_list_cells(_("into location:"), 'StockLocation', null, true);
@@ -101,7 +98,9 @@ function trans_view($trans)
 
 function edit_link($row) 
 {
-       if (@$_GET['popup'])
+       global $page_nested;
+
+       if ($page_nested)
                return '';
        return pager_link( _("Edit"),
                "/purchasing/po_entry_items.php?" . SID 
@@ -141,9 +140,6 @@ $table->width = "80%";
 
 display_db_pager($table);
 
-if (!@$_GET['popup'])
-{
-       end_form();
-       end_page();
-}      
+end_form();
+end_page();
 ?>
index 98b630833725db76db536ffd6e543971087fb34c..fc19aee869944fd81786071865674ae743cd0317 100644 (file)
@@ -47,7 +47,7 @@ start_row();
 
 supplier_list_cells(_("Select a supplier: "), 'supplier_id', $_POST['supplier_id'], true);
 
-date_cells(_("From:"), 'TransAfterDate', '', null, -30);
+date_cells(_("From:"), 'TransAfterDate', '', null, -$_SESSION["wa_current_user"]->prefs->transaction_days());
 date_cells(_("To:"), 'TransToDate', '', null, 1);
 
 supp_allocations_list_cell("filterType", null);
index 1e106d0edebbf31be72210045d1c2a62c1c5e486..94ab527597ffec00951249db3dc8488b7c4773bc 100644 (file)
@@ -17,15 +17,13 @@ include_once($path_to_root . "/includes/session.inc");
 include_once($path_to_root . "/purchasing/includes/purchasing_ui.inc");
 include_once($path_to_root . "/reporting/includes/reporting.inc");
 
-if (!@$_GET['popup'])
-{
-       $js = "";
-       if ($use_popup_windows)
-               $js .= get_js_open_window(900, 500);
-       if ($use_date_picker)
-               $js .= get_js_date_picker();
-       page(_($help_context = "Supplier Inquiry"), isset($_GET['supplier_id']), false, "", $js);
-}
+$js = "";
+if ($use_popup_windows)
+       $js .= get_js_open_window(900, 500);
+if ($use_date_picker)
+       $js .= get_js_date_picker();
+page(_($help_context = "Supplier Inquiry"), isset($_GET['supplier_id']), false, "", $js);
+
 if (isset($_GET['supplier_id'])){
        $_POST['supplier_id'] = $_GET['supplier_id'];
 }
@@ -38,8 +36,7 @@ if (isset($_GET['ToDate'])){
 
 //------------------------------------------------------------------------------------------------
 
-if (!@$_GET['popup'])
-       start_form();
+start_form();
 
 if (!isset($_POST['supplier_id']))
        $_POST['supplier_id'] = get_global_supplier();
@@ -47,10 +44,10 @@ if (!isset($_POST['supplier_id']))
 start_table(TABLESTYLE_NOBORDER);
 start_row();
 
-if (!@$_GET['popup'])
-       supplier_list_cells(_("Select a supplier:"), 'supplier_id', null, true, false, false, !@$_GET['popup']);
+if (!$page_nested)
+       supplier_list_cells(_("Select a supplier:"), 'supplier_id', null, true, false, false, true);
 
-date_cells(_("From:"), 'TransAfterDate', '', null, -30);
+date_cells(_("From:"), 'TransAfterDate', '', null, -$_SESSION["wa_current_user"]->prefs->transaction_days());
 date_cells(_("To:"), 'TransToDate');
 
 supp_transactions_list_cell("filterType", null, true);
@@ -109,6 +106,7 @@ function systype_name($dummy, $type)
        global $systypes_array;
        return $systypes_array[$type];
 }
+div_end();
 
 function trans_view($trans)
 {
@@ -127,7 +125,9 @@ function gl_view($row)
 
 function credit_link($row)
 {
-       if (@$_GET['popup'])
+       global $page_nested;
+
+       if ($page_nested)
                return '';
        return $row['type'] == ST_SUPPINVOICE && $row["TotalAmount"] - $row["Allocated"] > 0 ?
                pager_link(_("Credit This"),
@@ -160,6 +160,11 @@ function check_overdue($row)
        return $row['OverDue'] == 1
                && (abs($row["TotalAmount"]) - $row["Allocated"] != 0);
 }
+
+function edit_link($row)
+{
+       return edit_trans_link($row['type'], $row['trans_no']);
+}
 //------------------------------------------------------------------------------------------------
 
 $sql = get_sql_for_supplier_inquiry($_POST['filterType'], $_POST['TransAfterDate'], $_POST['TransToDate'], $_POST['supplier_id']);
@@ -177,7 +182,8 @@ $cols = array(
                        _("Credit") => array('align'=>'right', 'insert'=>true,'fun'=>'fmt_credit'), 
                        array('insert'=>true, 'fun'=>'gl_view'),
                        array('insert'=>true, 'fun'=>'credit_link'),
-                       array('insert'=>true, 'fun'=>'prt_link')
+                       array('insert'=>true, 'fun'=>'prt_link'),
+                       array('insert'=>true, 'fun'=>'edit_link')
                        );
 
 if ($_POST['supplier_id'] != ALL_TEXT)
@@ -185,8 +191,6 @@ if ($_POST['supplier_id'] != ALL_TEXT)
        $cols[_("Supplier")] = 'skip';
        $cols[_("Currency")] = 'skip';
 }
-//------------------------------------------------------------------------------------------------
-
 
 /*show a table of the transactions returned by the sql */
 $table =& new_db_pager('trans_tbl', $sql, $cols);
@@ -196,9 +200,7 @@ $table->width = "85%";
 
 display_db_pager($table);
 
-if (!@$_GET['popup'])
-{
-       end_form();
-       end_page(@$_GET['popup'], false, false);
-}
+end_form();
+end_page();
+
 ?>
index e5da178a8ac6d52b3c6084650215e96df5f64dc3..a8c6571abda80a3c494c08db604bbeb16102779b 100644 (file)
@@ -61,6 +61,7 @@ function supplier_settings(&$supplier_id)
                $_POST['credit_limit']  = price_format($myrow["credit_limit"]);
                $_POST['tax_group_id'] = $myrow["tax_group_id"];
                $_POST['tax_included'] = $myrow["tax_included"];
+               $_POST['tax_algorithm'] = $myrow["tax_algorithm"];
                $_POST['payable_account']  = $myrow["payable_account"];
                $_POST['purchase_account']  = $myrow["purchase_account"];
                $_POST['payment_discount_account'] = $myrow["payment_discount_account"];
@@ -74,6 +75,7 @@ function supplier_settings(&$supplier_id)
                $_POST['dimension_id'] = 0;
                $_POST['dimension2_id'] = 0;
                $_POST['tax_included'] = 0;
+               $_POST['tax_algorithm'] = 1;
                $_POST['sales_type'] = -1;
                $_POST['gst_no'] = $_POST['bank_account'] = '';
                $_POST['payment_terms']  = '';
@@ -112,7 +114,7 @@ function supplier_settings(&$supplier_id)
        payment_terms_list_row(_("Payment Terms:"), 'payment_terms', null);
        //
        // tax_included option from supplier record is used directly in update_average_cost() function,
-       // therefore we can't edit the option after any transaction waas done for the supplier.
+       // therefore we can't edit the option after any transaction was done for the supplier.
        //
        if (is_new_supplier($supplier_id))
                check_row(_("Prices contain tax included:"), 'tax_included');
@@ -120,6 +122,10 @@ function supplier_settings(&$supplier_id)
                hidden('tax_included');
                label_row(_("Prices contain tax included:"), $_POST['tax_included'] ? _('Yes') : _('No'));
        }
+       tax_algorithm_list_row(_("Tax Calculation Algorithm:"), 'tax_algorithm', null);
+
+       if (!$supplier_id) table_section(2);
+
        table_section_title(_("Accounts"));
        gl_all_accounts_list_row(_("Accounts Payable Account:"), 'payable_account', $_POST['payable_account']);
        gl_all_accounts_list_row(_("Purchase Account:"), 'purchase_account', $_POST['purchase_account'],
@@ -127,11 +133,14 @@ function supplier_settings(&$supplier_id)
        gl_all_accounts_list_row(_("Purchase Discount Account:"), 'payment_discount_account', $_POST['payment_discount_account']);
        if (!$supplier_id) {
                table_section_title(_("Contact Data"));
+               text_row(_("Contact Person:"), 'contact', null, 42, 40);
                text_row(_("Phone Number:"), 'phone', null, 32, 30);
                text_row(_("Secondary Phone Number:"), 'phone2', null, 32, 30);
+               table_section_title(_("Contact Data"));
+               text_row(_("Fax Number:"), 'fax', null, 32, 30);
+               email_row(_("E-mail:"), 'email', null, 35, 55);
+               languages_list_row(_("Document Language:"), 'rep_lang', null, _('System default'));
        }
-
-       table_section(2);
        $dim = get_company_pref('use_dimension');
        if ($dim >= 1)
        {
@@ -144,6 +153,7 @@ function supplier_settings(&$supplier_id)
                hidden('dimension_id', 0);
        if ($dim < 2)
                hidden('dimension2_id', 0);
+       table_section(2);
 
 
        table_section_title(_("Addresses"));
@@ -154,13 +164,6 @@ function supplier_settings(&$supplier_id)
        textarea_row(_("General Notes:"), 'notes', null, 35, 5);
        if ($supplier_id)
                record_status_list_row(_("Supplier status:"), 'inactive');
-       else {
-               table_section_title(_("Contact Data"));
-               text_row(_("Contact Person:"), 'contact', null, 42, 40);
-               text_row(_("Fax Number:"), 'fax', null, 32, 30);
-               email_row(_("E-mail:"), 'email', null, 35, 55);
-               languages_list_row(_("Document Language:"), 'rep_lang', null, _('System default'));
-       }
        end_outer_table(1);
 
        div_start('controls');
@@ -215,7 +218,7 @@ if (isset($_POST['submit']))
                                $_POST['website'], $_POST['supp_account_no'], $_POST['bank_account'], 
                                input_num('credit_limit', 0), $_POST['dimension_id'], $_POST['dimension2_id'], $_POST['curr_code'],
                                $_POST['payment_terms'], $_POST['payable_account'], $_POST['purchase_account'], $_POST['payment_discount_account'],
-                               $_POST['notes'], $_POST['tax_group_id'], get_post('tax_included', 0));
+                               $_POST['notes'], $_POST['tax_group_id'], get_post('tax_included', 0), get_post('tax_algorithm'));
                        update_record_status($_POST['supplier_id'], $_POST['inactive'],
                                'suppliers', 'supplier_id');
 
@@ -228,7 +231,7 @@ if (isset($_POST['submit']))
                                $_POST['gst_no'], $_POST['website'], $_POST['supp_account_no'], $_POST['bank_account'], 
                                input_num('credit_limit',0), $_POST['dimension_id'], $_POST['dimension2_id'],
                                $_POST['curr_code'], $_POST['payment_terms'], $_POST['payable_account'], $_POST['purchase_account'],
-                               $_POST['payment_discount_account'], $_POST['notes'], $_POST['tax_group_id'], check_value('tax_included'));
+                               $_POST['payment_discount_account'], $_POST['notes'], $_POST['tax_group_id'], check_value('tax_included'), get_post('tax_algorithm'));
 
                        $supplier_id = $_POST['supplier_id'] = db_insert_id();
 
index ec03796d2635246b934282691ca37f8e68e36824..dd2cc3bcabd7feb880d31b1b1141c7061a73bfc5 100644 (file)
@@ -60,6 +60,9 @@ if (isset($_GET['ModifyOrderNumber']) && is_numeric($_GET['ModifyOrderNumber']))
 
 page($_SESSION['page_title'], false, false, "", $js);
 
+if (isset($_GET['ModifyOrderNumber']))
+       check_is_editable(ST_PURCHORDER, $_GET['ModifyOrderNumber']);
+
 //---------------------------------------------------------------------------------------------------
 
 check_db_has_suppliers(_("There are no suppliers defined in the system."));
@@ -130,9 +133,6 @@ if (isset($_GET['AddedID']))
 
        display_note(get_gl_view_str($trans_type, $trans_no, _("View the GL Journal Entries for this Invoice")), 1);
 
-       hyperlink_params("$path_to_root/purchasing/supplier_payment.php", _("Entry supplier &payment for this invoice"),
-               "PInvoice=".$trans_no);
-
        hyperlink_params("$path_to_root/admin/attachments.php", _("Add an Attachment"), 
                "filterType=$trans_type&trans_no=$trans_no");
 
@@ -330,17 +330,16 @@ function can_commit()
                set_focus('supplier_id');
                return false;
        } 
-       
+
        if (!is_date($_POST['OrderDate'])) 
        {
                display_error(_("The entered order date is invalid."));
                set_focus('OrderDate');
                return false;
        } 
-       
-       if ($_SESSION['PO']->trans_type != ST_PURCHORDER && !is_date_in_fiscalyear($_POST['OrderDate'])) 
-       {
-               display_error(_("The entered date is not in fiscal year"));
+       if (($_SESSION['PO']->trans_type == ST_SUPPRECEIVE || $_SESSION['PO']->trans_type == ST_SUPPINVOICE) 
+               && !is_date_in_fiscalyear($_POST['OrderDate'])) {
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                set_focus('OrderDate');
                return false;
        }
@@ -351,7 +350,7 @@ function can_commit()
                set_focus('due_date');
                return false;
        } 
-       
+
        if (!$_SESSION['PO']->order_no) 
        {
        if (!$Refs->is_valid(get_post('ref'))) 
@@ -360,7 +359,7 @@ function can_commit()
                        set_focus('ref');
                return false;
        } 
-       
+
        if (!is_new_reference(get_post('ref'), $_SESSION['PO']->trans_type)) 
        {
                display_error(_("The entered reference is already in use."));
@@ -368,7 +367,7 @@ function can_commit()
                return false;
        }
        }
-       
+
        if ($_SESSION['PO']->trans_type == ST_SUPPINVOICE && !$Refs->is_valid(get_post('supp_ref'))) 
        {
                display_error(_("You must enter a supplier's invoice reference."));
@@ -401,12 +400,16 @@ function can_commit()
        display_error (_("The order cannot be placed because there are no lines entered on this order."));
        return false;
        }
-               
+       if (floatcmp(input_num('prep_amount'), $_SESSION['PO']->get_trans_total()) > 0)
+       {
+               display_error(_("Required prepayment is greater than total invoice value."));
+               set_focus('prep_amount');
+               return false;
+       }
+
        return true;
 }
 
-//---------------------------------------------------------------------------------------------------
-
 function handle_commit_order()
 {
        $cart = &$_SESSION['PO'];
@@ -414,77 +417,19 @@ function handle_commit_order()
        if (can_commit()) {
 
                copy_to_cart();
-               if ($cart->trans_type != ST_PURCHORDER) {
-                       // for direct grn/invoice set same dates for lines as for whole document
-                       foreach ($cart->line_items as $line_no =>$line)
-                               $cart->line_items[$line_no]->req_del_date = $cart->orig_order_date;
-               }
+               new_doc_date($cart->orig_order_date);
                if ($cart->order_no == 0) { // new po/grn/invoice
-                       /*its a new order to be inserted */
-                       $ref = $cart->reference;
-                       if ($cart->trans_type != ST_PURCHORDER) {
-                               $cart->reference = 'auto';
-                               begin_transaction();    // all db changes as single transaction for direct document
-                       }
-                       $order_no = add_po($cart);
-                       new_doc_date($cart->orig_order_date); 
-               $cart->order_no = $order_no;
-
-                       if ($cart->trans_type == ST_PURCHORDER) {
+                       $trans_no = add_direct_supp_trans($cart);
+                       if ($trans_no) {
                                unset($_SESSION['PO']);
-                       meta_forward($_SERVER['PHP_SELF'], "AddedID=$order_no");
-               }
-                       //Direct GRN
-                       if ($cart->trans_type == ST_SUPPRECEIVE)
-                               $cart->reference = $ref;
-                       if ($cart->trans_type != ST_SUPPINVOICE)        
-                               $cart->Comments = $cart->reference; //grn does not hold supp_ref
-                       foreach($cart->line_items as $key => $line)
-                               $cart->line_items[$key]->receive_qty = $line->quantity;
-                       $grn_no = add_grn($cart);
-                       if ($cart->trans_type == ST_SUPPRECEIVE) {
-                               commit_transaction(); // save PO+GRN
-                               unset($_SESSION['PO']);
-                       meta_forward($_SERVER['PHP_SELF'], "AddedGRN=$grn_no");
-                       }
-//                     Direct Purchase Invoice
-                       $inv = new supp_trans(ST_SUPPINVOICE);
-                       $inv->Comments = $cart->Comments;
-                       $inv->supplier_id = $cart->supplier_id;
-                       $inv->tran_date = $cart->orig_order_date;
-                       $inv->due_date = $cart->due_date;
-                       $inv->reference = $ref;
-                       $inv->supp_reference = $cart->supp_ref;
-                       $inv->tax_included = $cart->tax_included;
-                       $supp = get_supplier($cart->supplier_id);
-                       $inv->tax_group_id = $supp['tax_group_id'];
-
-                       $inv->ov_amount = $inv->ov_gst = $inv->ov_discount = 0;
-
-                       $total = 0;
-                       foreach($cart->line_items as $key => $line) {
-                               $inv->add_grn_to_trans($line->grn_item_id, $line->po_detail_rec, $line->stock_id,
-                                       $line->item_description, $line->receive_qty, 0, $line->receive_qty,
-                                       $line->price, $line->price, true, get_standard_cost($line->stock_id), '');
-                               $inv->ov_amount += round2(($line->receive_qty * $line->price), user_price_dec());
+                               if ($cart->trans_type == ST_PURCHORDER)
+                                       meta_forward($_SERVER['PHP_SELF'], "AddedID=$trans_no");
+                               elseif ($cart->trans_type == ST_SUPPRECEIVE)
+                                       meta_forward($_SERVER['PHP_SELF'], "AddedGRN=$trans_no");
+                               else
+                                       meta_forward($_SERVER['PHP_SELF'], "AddedPI=$trans_no");
                        }
-                       $inv->tax_overrides = $cart->tax_overrides;
-                       if (!$inv->tax_included) {
-                               $taxes = $inv->get_taxes($inv->tax_group_id, 0, false);
-                               foreach( $taxes as $taxitem) {
-                                       $total += isset($taxitem['Override']) ? $taxitem['Override'] : $taxitem['Value'];
-                               }
-                       }
-                       $inv->ex_rate = $cart->ex_rate;
-
-                       $inv_no = add_supp_invoice($inv);
-                       commit_transaction(); // save PO+GRN+PI
-                       // FIXME payment for cash terms. (Needs cash account selection)
-                       unset($_SESSION['PO']);
-                       meta_forward($_SERVER['PHP_SELF'], "AddedPI=$inv_no");
-               }
-               else { // order modification
-
+               } else { // order modification
                        $order_no = update_po($cart);
                        unset($_SESSION['PO']);
                meta_forward($_SERVER['PHP_SELF'], "AddedID=$order_no&Updated=1");      
@@ -526,6 +471,17 @@ echo "<br>";
 display_po_items($_SESSION['PO']);
 
 start_table(TABLESTYLE2);
+
+if (list_updated('tax_algorithm')) {
+       $_SESSION['PO']->tax_algorithm = $_POST['tax_algorithm'];
+    $Ajax->activate('items_table');
+}
+
+if ($_SESSION['PO']->trans_type == ST_SUPPINVOICE) {
+       tax_algorithm_list_row(_("Tax algorithm:"), 'tax_algorithm', null, true);
+       cash_accounts_list_row(_("Payment:"), 'cash_account', null, false, _('Delayed'));
+}
+
 textarea_row(_("Memo:"), 'Comments', null, 70, 4);
 
 end_table(1);
index f80130e6402cea4caaf3a7b8eab51a09aefe6bfe..d2697de9c389ea45e3ece41a09f79c49139cc5a7 100644 (file)
@@ -175,10 +175,8 @@ function can_process()
                set_focus('DefaultReceivedDate');
                return false;
        }
-
-       if (!is_date_in_fiscalyear($_POST['DefaultReceivedDate'])) 
-       {
-               display_error(_("The entered date is not in fiscal year"));
+       if (!is_date_in_fiscalyear($_POST['DefaultReceivedDate'])) {
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                set_focus('DefaultReceivedDate');
                return false;
        }
index 57e8696eda925d5ef974100877afc3213f0a7632..a89acc7f8f33feff48720b5155aedbab09cb090b 100644 (file)
@@ -25,12 +25,46 @@ if ($use_popup_windows)
        $js .= get_js_open_window(900, 500);
 if ($use_date_picker)
        $js .= get_js_date_picker();
-page(_($help_context = "Supplier Credit Note"), false, false, "", $js);
 
 //----------------------------------------------------------------------------------------
 
 check_db_has_suppliers(_("There are no suppliers defined in the system."));
 
+if (isset($_GET['ModifyCredit']))
+       check_is_editable(ST_SUPPINVOICE, $_GET['ModifyCredit']);
+
+//---------------------------------------------------------------------------------------------------
+
+if (isset($_GET['New']))
+{
+       if (isset( $_SESSION['supp_trans']))
+       {
+               unset ($_SESSION['supp_trans']->grn_items);
+               unset ($_SESSION['supp_trans']->gl_codes);
+               unset ($_SESSION['supp_trans']);
+       }
+
+       if (isset($_GET['invoice_no']))
+       {
+               $_SESSION['supp_trans'] = new supp_trans(ST_SUPPINVOICE, $_GET['invoice_no']);
+               $_SESSION['supp_trans']->src_doc = $_GET['invoice_no'];
+
+
+               $_SESSION['supp_trans']->trans_type = ST_SUPPCREDIT;
+               $_SESSION['supp_trans']->trans_no = 0;
+               $_SESSION['supp_trans']->supp_reference = '';
+               //              $_SESSION['supp_trans']->supp_reference = $_POST['invoice_no'] = $_GET['invoice_no'];
+               $help_context = "Supplier Credit Note";
+               $_SESSION['page_title'] = _("Supplier Credit Note");
+
+       } else {
+               $help_context = "Supplier Credit Note";
+               $_SESSION['page_title'] = _("Supplier Credit Note");
+               $_SESSION['supp_trans'] = new supp_trans(ST_SUPPCREDIT);
+       }
+}
+page($_SESSION['page_title'], false, false, "", $js);
+
 //---------------------------------------------------------------------------------------------------------------
 
 if (isset($_GET['AddedID'])) 
@@ -47,26 +81,8 @@ if (isset($_GET['AddedID']))
 
     hyperlink_params($_SERVER['PHP_SELF'], _("Enter Another Credit Note"), "New=1");
        hyperlink_params("$path_to_root/admin/attachments.php", _("Add an Attachment"), "filterType=$trans_type&trans_no=$invoice_no");
-       
-       display_footer_exit();
-}
-
-//---------------------------------------------------------------------------------------------------
-
-if (isset($_GET['New']))
-{
-       if (isset( $_SESSION['supp_trans']))
-       {
-               unset ($_SESSION['supp_trans']->grn_items);
-               unset ($_SESSION['supp_trans']->gl_codes);
-               unset ($_SESSION['supp_trans']);
-       }
 
-       $_SESSION['supp_trans'] = new supp_trans(ST_SUPPCREDIT);
-       if (isset($_GET['invoice_no']))
-       {
-               $_SESSION['supp_trans']->supp_reference = $_POST['invoice_no'] = $_GET['invoice_no'];
-       }
+       display_footer_exit();
 }
 
 function clear_fields()
@@ -100,7 +116,7 @@ if (isset($_POST['ClearFields']))
        clear_fields();
 }
 
-if (isset($_POST['AddGLCodeToTrans'])){
+if (isset($_POST['AddGLCodeToTrans'])) {
 
        $Ajax->activate('gl_items');
        $input_error = false;
@@ -146,7 +162,7 @@ if (isset($_POST['AddGLCodeToTrans'])){
 function check_data()
 {
        global $total_grn_value, $total_gl_value, $Refs, $SysPrefs;
-       
+
        if (!$_SESSION['supp_trans']->is_valid_trans_to_post())
        {
                display_error(_("The credit note cannot be processed because the there are no items or values on the invoice.  Credit notes are expected to have a charge."));
@@ -161,7 +177,7 @@ function check_data()
                return false;
        }
 
-       if (!is_new_reference($_SESSION['supp_trans']->reference, ST_SUPPCREDIT)) 
+       if (!is_new_reference($_SESSION['supp_trans']->reference, ST_SUPPCREDIT, $_SESSION['supp_trans']->trans_no))
        {
                display_error(_("The entered reference is already in use."));
                set_focus('reference');
@@ -183,7 +199,7 @@ function check_data()
        } 
        elseif (!is_date_in_fiscalyear($_SESSION['supp_trans']->tran_date)) 
        {
-               display_error(_("The entered date is not in fiscal year."));
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                set_focus('tran_date');
                return false;
        }
index c4b91de93164aca359a267a50f7c5bd6f376c1ac..ffb5e79bd9003e15a4737951aaba813d9c8a1664 100644 (file)
@@ -25,12 +25,35 @@ if ($use_popup_windows)
        $js .= get_js_open_window(900, 500);
 if ($use_date_picker)
        $js .= get_js_date_picker();
-page(_($help_context = "Enter Supplier Invoice"), false, false, "", $js);
-
 //----------------------------------------------------------------------------------------
 
 check_db_has_suppliers(_("There are no suppliers defined in the system."));
 
+//--------------------------------------------------------------------------------------------------
+
+if (isset($_GET['New']))
+{
+       if (isset( $_SESSION['supp_trans']))
+       {
+               unset ($_SESSION['supp_trans']->grn_items);
+               unset ($_SESSION['supp_trans']->gl_codes);
+               unset ($_SESSION['supp_trans']);
+       }
+       $help_context = "Enter Supplier Invoice";
+       $_SESSION['page_title'] = _("Enter Supplier Invoice");
+
+       $_SESSION['supp_trans'] = new supp_trans(ST_SUPPINVOICE);
+} else if(isset($_GET['ModifyInvoice'])) {
+       $help_context = 'Modifying Purchase Invoice';
+       $_SESSION['page_title'] = sprintf( _("Modifying Purchase Invoice # %d"), $_GET['ModifyInvoice']);
+       $_SESSION['supp_trans'] = new supp_trans(ST_SUPPINVOICE, $_GET['ModifyInvoice']);
+}
+
+page($_SESSION['page_title'], false, false, "", $js);
+
+if (isset($_GET['ModifyInvoice']))
+       check_is_editable(ST_SUPPINVOICE, $_GET['ModifyInvoice']);
+
 //---------------------------------------------------------------------------------------------------------------
 
 if (isset($_GET['AddedID'])) 
@@ -67,6 +90,8 @@ if (isset($_GET['New']))
        }
 
        $_SESSION['supp_trans'] = new supp_trans(ST_SUPPINVOICE);
+} else if(isset($_GET['ModifyInvoice'])) {
+       $_SESSION['supp_trans'] = new supp_trans(ST_SUPPINVOICE, $_GET['ModifyInvoice']);
 }
 
 //--------------------------------------------------------------------------------------------------
@@ -160,7 +185,7 @@ function check_data()
                return false;
        }
 
-       if (!is_new_reference($_SESSION['supp_trans']->reference, ST_SUPPINVOICE)) 
+       if (!is_new_reference($_SESSION['supp_trans']->reference, ST_SUPPINVOICE, $_SESSION['supp_trans']->trans_no))
        {
                display_error(_("The entered reference is already in use."));
                set_focus('reference');
@@ -182,7 +207,7 @@ function check_data()
        } 
        elseif (!is_date_in_fiscalyear($_SESSION['supp_trans']->tran_date)) 
        {
-               display_error(_("The entered date is not in fiscal year."));
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                set_focus('trans_date');
                return false;
        }
@@ -193,7 +218,7 @@ function check_data()
                return false;
        }
 
-       if (is_reference_already_there($_SESSION['supp_trans']->supplier_id, $_POST['supp_reference']))
+       if (is_reference_already_there($_SESSION['supp_trans']->supplier_id, $_POST['supp_reference'], $_SESSION['supp_trans']->trans_no))
        {       /*Transaction reference already entered */
                display_error(_("This invoice number has already been entered. It cannot be entered again.") . " (" . $_POST['supp_reference'] . ")");
                return false;
@@ -210,8 +235,12 @@ function handle_commit_invoice()
 
        if (!check_data())
                return;
+       $inv = $_SESSION['supp_trans'];
+       $invoice_no = add_supp_invoice($inv);
 
-       $invoice_no = add_supp_invoice($_SESSION['supp_trans']);
+       // presume supplier data need correction
+       if ($inv->stored_algorithm != $inv->tax_algorithm)
+               update_supp_tax_algorithm($inv->supplier_id, $inv->tax_algorithm);
 
     $_SESSION['supp_trans']->clear_items();
     unset($_SESSION['supp_trans']);
@@ -230,6 +259,7 @@ function check_item_data($n)
 {
        global $check_price_charged_vs_order_price,
                $check_qty_charged_vs_del_qty, $SysPrefs;
+
        if (!check_num('this_quantity_inv'.$n, 0) || input_num('this_quantity_inv'.$n)==0)
        {
                display_error( _("The quantity to invoice must be numeric and greater than zero."));
@@ -279,10 +309,19 @@ function commit_item_data($n)
 {
        if (check_item_data($n))
        {
+       if (input_num('this_quantity_inv'.$n) >= ($_POST['qty_recd'.$n] - $_POST['prev_quantity_inv'.$n]))
+       {
+               $complete = true;
+       }
+       else
+       {
+               $complete = false;
+       }
+
                $_SESSION['supp_trans']->add_grn_to_trans($n, $_POST['po_detail_item'.$n],
                        $_POST['item_code'.$n], $_POST['item_description'.$n], $_POST['qty_recd'.$n],
                        $_POST['prev_quantity_inv'.$n], input_num('this_quantity_inv'.$n),
-                       $_POST['order_price'.$n], input_num('ChgPrice'.$n),
+                       $_POST['order_price'.$n], input_num('ChgPrice'.$n), $complete,
                        $_POST['std_cost_unit'.$n], "");
                reset_tax_input();
        }
index b4e6c87864d7ee66a19765bd971386255c541e8d..75ab908a8d257422213fb24368718e0265450b50 100644 (file)
@@ -144,7 +144,7 @@ function check_inputs()
        }
 
        if (isset($_POST['charge']) && input_num('charge') > 0) {
-               $charge_acct = get_company_pref('bank_charge_act');
+               $charge_acct = get_bank_charge_account($_POST['bank_account']);
                if (get_gl_account($charge_acct) == false) {
                        display_error(_("The Bank Charge Account has not been set in System and General GL Setup."));
                        set_focus('charge');
index ef54291f26ff4839e8654a151ff89f26baba8e23..193bfa471c8a89bfe7dbcf9be47d7673d6cc0b4a 100644 (file)
@@ -154,6 +154,8 @@ if (db_num_rows($invoice_result) > 0)
 echo "</td></tr>";
 
 end_table(1); // outer table
+//_vd($purchase_order);
+display_allocations_to(PT_SUPPLIER, $purchase_order->supplier_id, ST_PURCHORDER, $purchase_order->order_no, $total + $tax_total);
 
 //----------------------------------------------------------------------------------------------------
 
index 025e6581ef0631b454e268e92def09729802873d..ad7030aaaadf47bdba28d5f7f00853c08c7d67b8 100644 (file)
@@ -13,6 +13,7 @@ $page_security = 'SA_SUPPTRANSVIEW';
 $path_to_root = "../..";
 
 include_once($path_to_root . "/purchasing/includes/purchasing_db.inc");
+include_once($path_to_root . "/includes/ui/items_cart.inc");
 include_once($path_to_root . "/includes/session.inc");
 
 include_once($path_to_root . "/purchasing/includes/purchasing_ui.inc");
@@ -69,7 +70,7 @@ display_supp_trans_tax_details($tax_items, 1);
 
 $display_total = number_format2($supp_trans->ov_amount + $supp_trans->ov_gst,user_price_dec());
 
-label_row(_("TOTAL INVOICE"), $display_total, "colspan=1 align=right", "nowrap align=right");
+label_row(_("TOTAL INVOICE").' ('.$supplier_curr_code.')', $display_total, "colspan=1 align=right", "nowrap align=right");
 
 end_table(1);
 
index 300cd40194987856fee4080535f9f81ba44f86ff..9bc222d3eaa82ef13e0d5f65e58d0bdc9458af39 100644 (file)
@@ -181,7 +181,7 @@ class Cpdf extends FPDI {
                 {
                     default :        $fontname = "freesans13";     break;
                 }
-            }                  
+            }
             // else use built-in adobe fonts helvetica.
                }
                $this->SetFont($fontname, $style);
index bf45b1ce355fbd67ce487cf61f366d5d72217bba..06bb7b1f7b24816dbc6adbd70475164d3790ada9 100644 (file)
        // for links use 'text' => 'url'
        $Footer[0] = _("All amounts stated in") . " - " . @$this->formData['curr_code'];
 
+       if (!in_array($this->formData['doctype'], array(ST_STATEMENT, ST_WORKORDER)))
+       {
+               $id = $this->formData['payment_terms'];
+               $sql = "SELECT terms, days_before_due FROM ".TB_PREF."payment_terms WHERE terms_indicator=".db_escape($id);
+               $result = db_query($sql,"could not get paymentterms");
+               $row = db_fetch($result);
+               $Payment_Terms = _("Payment Terms") . ': ' . $row["terms"];
+               if ($this->formData['doctype'] == ST_SALESINVOICE && $this->formData['prepaid'])
+                       $this->formData['prepaid'] = ($row['days_before_due'] >= 0) ? 'final' : 'partial';
+       }
+
+
        switch ($this->formData['doctype'])
        {
                case ST_SALESQUOTE:
@@ -50,7 +62,7 @@
                        break;
 
                case ST_SALESORDER:
-                       $this->title = ($print_as_quote==1 ? _("QUOTE") : _("SALES ORDER"));
+                       $this->title = ($print_as_quote==1 ? _("QUOTE") : ($this->formData['prepaid'] ? _("PREPAYMENT ORDER") : _("SALES ORDER")));
                        $this->formData['document_name'] =_("Order No.");
                        $this->formData['document_date'] = $this->formData['ord_date'];
                        $this->formData['document_number'] = $print_invoice_no == 0 && isset($this->formData['reference'])
                        break;
 
                case ST_SALESINVOICE:
-                       $this->title = _("INVOICE");
+                       $this->title = $this->formData['prepaid']=='partial' ? _("PREPAYMENT INVOICE")
+                               : ($this->formData['prepaid']=='final' ? _("FINAL INVOICE")  : _("INVOICE"));
                        $this->formData['document_name'] =_("Invoice No.");
                        $this->formData['domicile'] = $this->company['domicile'];
                        $Footer[0] = _("Please quote Invoice no. when paying. All amounts stated in"). " - " . $this->formData['curr_code'];
                                _("Customer's Reference") => $this->formData["customer_ref"],
                                _("Sales Person") => get_salesman_name($this->formData['salesman']),
                                _("Your VAT no.") => $this->formData['tax_id'],
-                               _("Delivery Note No.") => implode(',', $deliveries),
-                               _("Due Date") => sql2date($this->formData['due_date']),
                        );
+                       if ($this->formData['prepaid']=='partial')
+                       {
+                               $aux_info[_("Date of Payment")] = sql2date(get_oldest_payment_date($this->formData['trans_no']));
+                               $aux_info[_("Our Order No")]  = $this->formData['order_'];
+                       } else {
+                               if ($this->formData['prepaid'] =='final')
+                                       $aux_info[_("Invoice Date")] = sql2date($this->formData['tran_date']);
+                               else
+                                       $aux_info[_("Date of Sale")] = sql2date(get_oldest_delivery_date($this->formData['trans_no']));
+                               $aux_info[_("Due Date")]  = sql2date($this->formData['due_date']);
+                       }
                        break;
 
                case ST_SUPPAYMENT:
                $this->formData['document_number'] = $print_invoice_no == 0 && isset($this->formData['reference'])
                        ? $this->formData['reference'] : @$this->formData['trans_no'];
 
-       if (!isset($Payment_Terms))
-       {
-               $id = $this->formData['payment_terms'];
-               $sql = "SELECT terms FROM ".TB_PREF."payment_terms WHERE terms_indicator=".db_escape($id);
-               $result = db_query($sql,"could not get paymentterms");
-               $row = db_fetch($result);
-               $Payment_Terms = _("Payment Terms") . ': ' . $row["terms"];
-       }
-
        // footer generic content
        if (@$this->formData['bank_name'])
                $Footer[] = _("Bank"). ": ".$this->formData['bank_name']. ", " . _("Bank Account") . ": " . $this->formData['bank_account_number'];
        }
 
        $this->formData['recipient_name'] = $Addr1['name'];
-?>
index 55c9f9634e377c371a8934133698bf6566be5557..887284b9bba3516c06cd373718efb72431930a52 100644 (file)
@@ -386,7 +386,7 @@ class FrontReport extends Cpdf
                        'DebtorName', 'supp_account_no', 'wo_ref', 'debtor_ref','type', 'trans_no', 
                        'StockItemName', 'tax_id', 'order_', 'delivery_date', 'units_issued',
                        'due_date', 'required_by', 'payment_terms', 'curr_code',
-                       'ov_freight', 'ov_gst', 'ov_amount', 'requisition_no', 'contact'),
+                       'ov_freight', 'ov_gst', 'ov_amount', 'prepaid', 'requisition_no', 'contact'),
                'branch' => array('br_address', 'br_name', 'salesman', 'disable_branch'),
                'sales_order' => array('deliver_to', 'delivery_address', 'customer_ref'),
                'bankaccount' => array('bank_name', 'bank_account_number', 'payment_service')
index 6acc7d32355e6a6b7623509776cd16a15bd09c53..4f2e6665bf11bb1b818415de58a9357dff445b27 100644 (file)
@@ -106,7 +106,7 @@ function print_document_link($doc_no, $link_text, $link=true, $type_no,
                        break;
                case ST_WORKORDER :
                        $rep = 409;
-                       // from, to, email, comments orientation
+                       // from, to, email, comments, orientation
                        $ar = array(
                                'PARAM_0' => $doc_no, 
                                'PARAM_1' => $doc_no, 
index beea87bcae78a995e0d93ec27de278231c2318b2..acbf3624c3ceaaf615956b2ad09df7f214a8c834 100644 (file)
@@ -140,7 +140,7 @@ function print_aged_customer_analysis()
     $rep = new FrontReport(_('Aged Customer Analysis'), "AgedCustomerAnalysis", user_pagesize(), 9, $orientation);
     if ($orientation == 'L')
        recalculate_cols($cols);
+
     $rep->Font();
     $rep->Info($params, $cols, $headers, $aligns);
     $rep->NewPage();
index b0f6be77e307e57d020eb8dc298c2dcca50f8d18..2fea78e67e550fcfc27b1364764764d6ec7c69a5 100644 (file)
@@ -25,6 +25,23 @@ include_once($path_to_root . "/includes/data_checks.inc");
 include_once($path_to_root . "/sales/includes/sales_db.inc");
 
 //----------------------------------------------------------------------------------------------------
+function get_invoice_range($from, $to)
+{
+       global $print_invoice_no;
+
+       $ref = ($print_invoice_no == 1 ? "trans_no" : "reference");
+
+       $sql = "SELECT trans.trans_no, trans.reference
+               FROM ".TB_PREF."debtor_trans trans 
+                       LEFT JOIN ".TB_PREF."voided voided ON trans.type=voided.type AND trans.trans_no=voided.id
+               WHERE trans.type=".ST_SALESINVOICE
+                       ." AND ISNULL(voided.id)"
+                       ." AND trans.reference>=".db_escape(get_reference(ST_SALESINVOICE, $from))
+                       ." AND trans.reference<=".db_escape(get_reference(ST_SALESINVOICE, $to))
+               ." ORDER BY trans.tran_date, trans.$ref";
+
+       return db_query($sql, "Cant retrieve invoice range");
+}
 
 print_invoices();
 
@@ -34,6 +51,8 @@ function print_invoices()
 {
        global $path_to_root, $alternative_tax_include_on_docs, $suppress_tax_rates, $no_zero_lines_amount;
        
+       $show_this_payment = true; // include payments invoiced here in summary
+
        include_once($path_to_root . "/reporting/includes/pdf_report.inc");
 
        $from = $_POST['PARAM_0'];
@@ -55,10 +74,11 @@ function print_invoices()
        $from = min($fno[0], $tno[0]);
        $to = max($fno[0], $tno[0]);
 
+       //-------------code-Descr-Qty--uom--tax--prc--Disc-Tot--//
        $cols = array(4, 60, 225, 300, 325, 385, 450, 515);
 
        // $headers in doctext.inc
-       $aligns = array('left', 'left', 'right', 'left', 'right', 'right', 'right');
+       $aligns = array('left', 'left', 'right', 'center', 'right', 'right', 'right');
 
        $params = array('comments' => $comments);
 
@@ -68,12 +88,14 @@ function print_invoices()
                $rep = new FrontReport(_('INVOICE'), "InvoiceBulk", user_pagesize(), 9, $orientation);
        if ($orientation == 'L')
                recalculate_cols($cols);
-       for ($i = $from; $i <= $to; $i++)
+
+       $range = get_invoice_range($from, $to);
+       while($row = db_fetch($range))
        {
-                       if (!exists_customer_trans(ST_SALESINVOICE, $i))
+                       if (!exists_customer_trans(ST_SALESINVOICE, $row['trans_no']))
                                continue;
                        $sign = 1;
-                       $myrow = get_customer_trans($i, ST_SALESINVOICE);
+                       $myrow = get_customer_trans($row['trans_no'], ST_SALESINVOICE);
 
                        if($customer && $myrow['debtor_no'] != $customer) {
                                continue;
@@ -98,7 +120,27 @@ function print_invoices()
                        $baccount['payment_service'] = $pay_service;
                        $rep->SetCommonData($myrow, $branch, $sales_order, $baccount, ST_SALESINVOICE, $contacts);
                        $rep->NewPage();
-                       $result = get_customer_trans_details(ST_SALESINVOICE, $i);
+                       // calculate summary start row for later use
+                       $summary_start_row = $rep->bottomMargin + (15 * $rep->lineHeight);
+
+                       if ($rep->formData['prepaid'])
+                       {
+                               $result = get_sales_order_invoices($myrow['order_']);
+                               $prepayments = array();
+                               while($inv = db_fetch($result))
+                               {
+                                       $prepayments[] = $inv;
+                                       if ($inv['trans_no'] == $row['trans_no'])
+                                       break;
+                               }
+
+                               if (count($prepayments) > ($show_this_payment ? 0 : 1))
+                                       $summary_start_row += (count($prepayments)) * $rep->lineHeight;
+                               else
+                                       unset($prepayments);
+                       }
+
+                       $result = get_customer_trans_details(ST_SALESINVOICE, $row['trans_no']);
                        $SubTotal = 0;
                        while ($myrow2=db_fetch($result))
                        {
@@ -115,26 +157,27 @@ function print_invoices()
                                        $DisplayDiscount ="";
                        else
                                        $DisplayDiscount = number_format2($myrow2["discount_percent"]*100,user_percent_dec()) . "%";
-                               $rep->TextCol(0, 1,     $myrow2['stock_id'], -2);
+                               $c=0;
+                               $rep->TextCol($c++, $c, $myrow2['stock_id'], -2);
                                $oldrow = $rep->row;
-                               $rep->TextColLines(1, 2, $myrow2['StockDescription'], -2);
+                               $rep->TextColLines($c++, $c, $myrow2['StockDescription'], -2);
                                $newrow = $rep->row;
                                $rep->row = $oldrow;
                                if ($Net != 0.0 || !is_service($myrow2['mb_flag']) || !isset($no_zero_lines_amount) || $no_zero_lines_amount == 0)
                                {
-                                       $rep->TextCol(2, 3,     $DisplayQty, -2);
-                                       $rep->TextCol(3, 4,     $myrow2['units'], -2);
-                                       $rep->TextCol(4, 5,     $DisplayPrice, -2);
-                                       $rep->TextCol(5, 6,     $DisplayDiscount, -2);
-                                       $rep->TextCol(6, 7,     $DisplayNet, -2);
-                               }       
+                                       $rep->TextCol($c++, $c, $DisplayQty, -2);
+                                       $rep->TextCol($c++, $c, $myrow2['units'], -2);
+                                       $rep->TextCol($c++, $c, $DisplayPrice, -2);
+                                       $rep->TextCol($c++, $c, $DisplayDiscount, -2);
+                                       $rep->TextCol($c++, $c, $DisplayNet, -2);
+                               }
                                $rep->row = $newrow;
                                //$rep->NewLine(1);
-                               if ($rep->row < $rep->bottomMargin + (15 * $rep->lineHeight))
+                               if ($rep->row < $summary_start_row)
                                        $rep->NewPage();
                        }
 
-                       $memo = get_comments_string(ST_SALESINVOICE, $i);
+                       $memo = get_comments_string(ST_SALESINVOICE, $row['trans_no']);
                        if ($memo != "")
                        {
                                $rep->NewLine();
@@ -144,8 +187,46 @@ function print_invoices()
                        $DisplaySubTot = number_format2($SubTotal,$dec);
                        $DisplayFreight = number_format2($sign*$myrow["ov_freight"],$dec);
 
-               $rep->row = $rep->bottomMargin + (15 * $rep->lineHeight);
+                       // set to start of summary line:
+               $rep->row = $summary_start_row;
+                       if (isset($prepayments))
+                       {
+                               // Partial invoices table
+                               //$rep->NewLine();
+                               $rep->TextCol(0, 3,_("Prepayments invoiced to this order up to day:"));
+                               $rep->TextCol(0, 3,     str_pad('', 150, '_'));
+                               $rep->cols[2] -= 20;
+                               $rep->aligns[2] = 'right';
+                               $rep->NewLine(); $c = 0; $tot_pym=0;
+                               $rep->TextCol(0, 3,     str_pad('', 150, '_'));
+                               $rep->TextCol($c++, $c, _("Date"));
+                               $rep->TextCol($c++, $c, _("Invoice reference"));
+                               $rep->TextCol($c++, $c, _("Amount"));
+
+                               foreach ($prepayments as $invoice)
+                               {
+                                       if ($show_this_payment || ($invoice['reference'] != $myrow['reference']))
+                                       {
+                                               $rep->NewLine();
+                                               $c = 0; $tot_pym += $invoice['prep_amount'];
+                                               $rep->TextCol($c++, $c, sql2date($invoice['tran_date']));
+                                               $rep->TextCol($c++, $c, $invoice['reference']);
+                                               $rep->TextCol($c++, $c, number_format2($invoice['prep_amount'], $dec));
+                                       }
+                                       if ($invoice['reference']==$myrow['reference']) break;
+                               }
+                               $rep->TextCol(0, 3,     str_pad('', 150, '_'));
+                               $rep->NewLine();
+                               $rep->TextCol(1, 2,     _("Total payments:"));
+                               $rep->TextCol(2, 3,     number_format2($tot_pym, $dec));
+                       }
+
+
                        $doctype = ST_SALESINVOICE;
+               $rep->row = $summary_start_row;
+                       $rep->cols[2] += 20;
+                       $rep->cols[3] += 20;
+                       $rep->aligns[3] = 'left';
 
                        $rep->TextCol(3, 6, _("Sub-total"), -2);
                        $rep->TextCol(6, 7,     $DisplaySubTot, -2);
@@ -153,20 +234,20 @@ function print_invoices()
                        $rep->TextCol(3, 6, _("Shipping"), -2);
                        $rep->TextCol(6, 7,     $DisplayFreight, -2);
                        $rep->NewLine();
-                       $tax_items = get_trans_tax_details(ST_SALESINVOICE, $i);
+                       $tax_items = get_trans_tax_details(ST_SALESINVOICE, $row['trans_no']);
                        $first = true;
                while ($tax_item = db_fetch($tax_items))
                {
                        if ($tax_item['amount'] == 0)
                                continue;
                        $DisplayTax = number_format2($sign*$tax_item['amount'], $dec);
-                       
+
                        if (isset($suppress_tax_rates) && $suppress_tax_rates == 1)
                                $tax_type_name = $tax_item['tax_type_name'];
                        else
                                $tax_type_name = $tax_item['tax_type_name']." (".$tax_item['rate']."%) ";
 
-                       if ($tax_item['included_in_price'])
+                       if ($myrow['tax_included'])
                        {
                                if (isset($alternative_tax_include_on_docs) && $alternative_tax_include_on_docs == 1)
                                {
@@ -195,9 +276,18 @@ function print_invoices()
                        $DisplayTotal = number_format2($sign*($myrow["ov_freight"] + $myrow["ov_gst"] +
                                $myrow["ov_amount"]+$myrow["ov_freight_tax"]),$dec);
                        $rep->Font('bold');
-                       $rep->TextCol(3, 6, _("TOTAL INVOICE"), - 2);
+                       if (!$myrow['prepaid']) $rep->Font('bold');
+                               $rep->TextCol(3, 6, $rep->formData['prepaid'] ? _("TOTAL ORDER VAT INCL.") : _("TOTAL INVOICE"), - 2);
                        $rep->TextCol(6, 7, $DisplayTotal, -2);
-                       $words = price_in_words($myrow['Total'], ST_SALESINVOICE);
+                       if ($rep->formData['prepaid'])
+                       {
+                               $rep->NewLine();
+                               $rep->Font('bold');
+                               $rep->TextCol(3, 6, $rep->formData['prepaid']=='final' ? _("THIS INVOICE") : _("TOTAL INVOICE"), - 2);
+                               $rep->TextCol(6, 7, number_format2($myrow['prep_amount'], $dec), -2);
+                       }
+                       $words = price_in_words($rep->formData['prepaid'] ? $myrow['prep_amount'] : $myrow['Total']
+                               , array( 'type' => ST_SALESINVOICE, 'currency' => $myrow['curr_code']));
                        if ($words != "")
                        {
                                $rep->NewLine(1);
index b438e641c2d31153bc90755e53c3578a7b11a905..1a122c0435df2359fbdaf62297d78d7ba5388a70 100644 (file)
@@ -83,9 +83,9 @@ function print_statements()
 
        if ($email == 0)
                $rep = new FrontReport(_('STATEMENT'), "StatementBulk", user_pagesize(), 9, $orientation);
-   if ($orientation == 'L')
+    if ($orientation == 'L')
        recalculate_cols($cols);
+
        $sql = "SELECT debtor_no, name AS DebtorName, address, tax_id, curr_code, curdate() AS tran_date FROM ".TB_PREF."debtors_master";
        if ($customer != ALL_TEXT)
                $sql .= " WHERE debtor_no = ".db_escape($customer);
index 3251efcf5cc2bbc068b432eae3dc2e97e9680b0a..1f7270c4840e1c1885d3b013430ee38fea7dede7 100644 (file)
@@ -61,6 +61,7 @@ function print_sales_orders()
 
        if ($email == 0)
        {
+
                if ($print_as_quote == 0)
                        $rep = new FrontReport(_("SALES ORDER"), "SalesOrderBulk", user_pagesize(), 9, $orientation);
                else
@@ -76,6 +77,11 @@ function print_sales_orders()
                $params['bankaccount'] = $baccount['id'];
                $branch = get_branch($myrow["branch_code"]);
                if ($email == 1)
+                       $rep = new FrontReport("", "", user_pagesize(), 9, $orientation);
+               $rep->SetHeaderType('Header2');
+               $rep->currency = $cur;
+               $rep->Font();
+               if ($print_as_quote == 1)
                {
                        $rep = new FrontReport("", "", user_pagesize(), 9, $orientation);
                        if ($print_as_quote == 1)
@@ -129,7 +135,7 @@ function print_sales_orders()
                                $rep->TextCol(4, 5,     $DisplayPrice, -2);
                                $rep->TextCol(5, 6,     $DisplayDiscount, -2);
                                $rep->TextCol(6, 7,     $DisplayNet, -2);
-                       }       
+                       }
                        $rep->row = $newrow;
                        //$rep->NewLine(1);
                        if ($rep->row < $rep->bottomMargin + (15 * $rep->lineHeight))
index bfc1e4e6ccc4850b23b92172c42a62e046a93c2f..f016948f2ce14248f6d244ce68f305a7d7e2aa28 100644 (file)
@@ -109,7 +109,7 @@ function print_deliveries()
                        {
                                if ($myrow2["quantity"] == 0)
                                        continue;
-                                       
+
                                $Net = round2(((1 - $myrow2["discount_percent"]) * $myrow2["unit_price"] * $myrow2["quantity"]),
                                   user_price_dec());
                                $SubTotal += $Net;
@@ -126,7 +126,7 @@ function print_deliveries()
                                $newrow = $rep->row;
                                $rep->row = $oldrow;
                                if ($Net != 0.0  || !is_service($myrow2['mb_flag']) || !isset($no_zero_lines_amount) || $no_zero_lines_amount == 0)
-                               {                       
+                               {
                                        $rep->TextCol(2, 3,     $DisplayQty, -2);
                                        $rep->TextCol(3, 4,     $myrow2['units'], -2);
                                        if ($packing_slip == 0)
@@ -135,7 +135,7 @@ function print_deliveries()
                                                $rep->TextCol(5, 6,     $DisplayDiscount, -2);
                                                $rep->TextCol(6, 7,     $DisplayNet, -2);
                                        }
-                               }       
+                               }
                                $rep->row = $newrow;
                                //$rep->NewLine(1);
                                if ($rep->row < $rep->bottomMargin + (15 * $rep->lineHeight))
@@ -174,8 +174,8 @@ function print_deliveries()
                                                $tax_type_name = $tax_item['tax_type_name'];
                                        else
                                                $tax_type_name = $tax_item['tax_type_name']." (".$tax_item['rate']."%) ";
-                                       if ($tax_item['included_in_price'])
+
+                                       if ($myrow['tax_included'])
                                {
                                                if (isset($alternative_tax_include_on_docs) && $alternative_tax_include_on_docs == 1)
                                        {
index 49036917db934d915f88835d7a04836e87e09d0e..a9fa659f2f3cd78e434ecb57deeb9fe924be186a 100644 (file)
@@ -114,7 +114,7 @@ function print_sales_quotations()
                                $rep->TextCol(4, 5,     $DisplayPrice, -2);
                                $rep->TextCol(5, 6,     $DisplayDiscount, -2);
                                $rep->TextCol(6, 7,     $DisplayNet, -2);
-                       }       
+                       }
                        $rep->row = $newrow;
                        //$rep->NewLine(1);
                        if ($rep->row < $rep->bottomMargin + (15 * $rep->lineHeight))
index 45851689473a163daf57bebcd9c4216fa080ea35..062d136538e693a2f173bfb4a786eb28c087eab2 100644 (file)
@@ -49,18 +49,6 @@ function get_receipt($type, $trans_no)
     return db_fetch($result);
 }
 
-function get_allocations_for_receipt($debtor_id, $type, $trans_no)
-{
-       $sql = get_alloc_trans_sql("amt, trans.reference, trans.alloc", "trans.trans_no = alloc.trans_no_to
-               AND trans.type = alloc.trans_type_to
-               AND alloc.trans_no_from=$trans_no
-               AND alloc.trans_type_from=$type
-               AND trans.debtor_no=".db_escape($debtor_id),
-               TB_PREF."cust_allocations as alloc");
-       $sql .= " ORDER BY trans_no";
-       return db_query($sql, "Cannot retreive alloc to transactions");
-}
-
 function print_receipts()
 {
        global $path_to_root, $systypes_array;
@@ -110,7 +98,7 @@ function print_receipts()
                {
                        $myrow = get_receipt($j, $i);
                        if (!$myrow)
-                               continue;                       
+                               continue;
                        $res = get_bank_trans($j, $i);
                        $baccount = db_fetch($res);
                        $params['bankaccount'] = $baccount['bank_act'];
@@ -118,14 +106,14 @@ function print_receipts()
                        $contacts = get_branch_contacts($myrow['branch_code'], 'invoice', $myrow['debtor_no']);
                        $rep->SetCommonData($myrow, null, $myrow, $baccount, ST_CUSTPAYMENT, $contacts);
                        $rep->NewPage();
-                       $result = get_allocations_for_receipt($myrow['debtor_no'], $myrow['type'], $myrow['trans_no']);
+                       $result = get_allocatable_to_cust_transactions($myrow['debtor_no'], $myrow['trans_no'], $myrow['type']);
 
                        $doctype = ST_CUSTPAYMENT;
 
                        $total_allocated = 0;
                        $rep->TextCol(0, 4,     _("As advance / full / part / payment towards:"), -2);
                        $rep->NewLine(2);
-                       
+
                        while ($myrow2=db_fetch($result))
                        {
                                $rep->TextCol(0, 1,     $systypes_array[$myrow2['type']], -2);
@@ -172,7 +160,7 @@ function print_receipts()
                        {
                                $rep->NewLine(1);
                                $rep->TextCol(0, 7, $myrow['curr_code'] . ": " . $words, - 2);
-                       }       
+                       }
                        $rep->Font();
                        $rep->NewLine();
                        $rep->TextCol(6, 7, _("Received / Sign"), - 2);
@@ -187,7 +175,7 @@ function print_receipts()
                        $rep->TextCol(4, 5, _("Branch"), - 2);
                        $rep->TextCol(5, 6, "__________________", - 2);
                        $rep->TextCol(6, 7, "__________________");
-               }       
+               }
        }
        $rep->End();
 }
index f38fd4c19e3805b655ea8b28f093758d3323a430..2e8e1dc5484509dbc28aaa39803e19fc7230ada5 100644 (file)
@@ -160,7 +160,7 @@ function print_credits()
                        else
                                $tax_type_name = $tax_item['tax_type_name']." (".$tax_item['rate']."%) ";
 
-                       if ($tax_item['included_in_price'])
+                       if ($myrow['tax_included'])
                        {
                                if (isset($alternative_tax_include_on_docs) && $alternative_tax_include_on_docs == 1)
                                {
index 7ba8b0d7733ad3d5dcc53d1d3d36789af5ba74b6..7efc74c5184392c905a7b1b59c583d28fe702d5a 100644 (file)
@@ -38,7 +38,7 @@ function get_invoices($supplier_id, $to, $all=true)
        // Revomed allocated from sql
        if ($all)
        $value = "(".TB_PREF."supp_trans.ov_amount + ".TB_PREF."supp_trans.ov_gst + ".TB_PREF."supp_trans.ov_discount)";
-    else       
+    else
        $value = "IF (".TB_PREF."supp_trans.type=".ST_SUPPINVOICE." OR ".TB_PREF."supp_trans.type=".ST_BANKDEPOSIT.", 
        (".TB_PREF."supp_trans.ov_amount + ".TB_PREF."supp_trans.ov_gst + ".TB_PREF."supp_trans.ov_discount - ".TB_PREF."supp_trans.alloc),
        (".TB_PREF."supp_trans.ov_amount + ".TB_PREF."supp_trans.ov_gst + ".TB_PREF."supp_trans.ov_discount + ".TB_PREF."supp_trans.alloc))";
index c1632dfd1f1745f869ddff7d90c467af7055bbd8..e5188bc6e812a28d9cd714259855a0534a82bc15 100644 (file)
@@ -34,7 +34,7 @@ print_po();
 function get_po($order_no)
 {
        $sql = "SELECT ".TB_PREF."purch_orders.*, ".TB_PREF."suppliers.supp_name,  "
-               .TB_PREF."suppliers.supp_account_no,".TB_PREF."suppliers.tax_included,".TB_PREF."suppliers.gst_no AS tax_id,
+               .TB_PREF."suppliers.supp_account_no,".TB_PREF."suppliers.tax_included,".TB_PREF."suppliers.tax_algorithm,".TB_PREF."suppliers.gst_no AS tax_id,
                ".TB_PREF."suppliers.curr_code, ".TB_PREF."suppliers.payment_terms, ".TB_PREF."locations.location_name,
                ".TB_PREF."suppliers.address, ".TB_PREF."suppliers.contact, ".TB_PREF."suppliers.tax_group_id
                FROM ".TB_PREF."purch_orders, ".TB_PREF."suppliers, ".TB_PREF."locations
@@ -164,7 +164,7 @@ function print_po()
                $rep->NewLine();
 
                $tax_items = get_tax_for_items($items, $prices, 0,
-                 $myrow['tax_group_id'], $myrow['tax_included'],  null);
+                 $myrow['tax_group_id'], $myrow['tax_included'],  null, $myrow['tax_algorithm']);
                $first = true;
                foreach($tax_items as $tax_item)
                {
@@ -172,7 +172,10 @@ function print_po()
                                continue;
                        $DisplayTax = number_format2($tax_item['Value'], $dec);
 
-                       $tax_type_name = $tax_item['tax_type_name'];
+                       if (isset($suppress_tax_rates) && $suppress_tax_rates == 1)
+                               $tax_type_name = $tax_item['tax_type_name'];
+                       else
+                               $tax_type_name = $tax_item['tax_type_name']." (".$tax_item['rate']."%) ";
 
                        if ($myrow['tax_included'])
                        {
index 2500067060bca211619a124473c9fca024d0ce77..a519fc97659e8a17269604ce1a2f21442b20be54 100644 (file)
@@ -48,18 +48,6 @@ function get_remittance($type, $trans_no)
     return db_fetch($result);
 }
 
-function get_allocations_for_remittance($supplier_id, $type, $trans_no)
-{
-       $sql = get_alloc_supp_sql("amt, supp_reference, trans.alloc", "trans.trans_no = alloc.trans_no_to
-               AND trans.type = alloc.trans_type_to
-               AND alloc.trans_no_from=".db_escape($trans_no)."
-               AND alloc.trans_type_from=".db_escape($type)."
-               AND trans.supplier_id=".db_escape($supplier_id),
-               TB_PREF."supp_allocations as alloc");
-       $sql .= " ORDER BY trans_no";
-       return db_query($sql, "Cannot retreive alloc to transactions");
-}
-
 function print_remittances()
 {
        global $path_to_root, $systypes_array;
@@ -107,7 +95,7 @@ function print_remittances()
                {
                        $myrow = get_remittance($j, $i);
                        if (!$myrow)
-                               continue;                       
+                               continue;
                        $res = get_bank_trans($j, $i);
                        $baccount = db_fetch($res);
                        $params['bankaccount'] = $baccount['bank_act'];
@@ -126,14 +114,14 @@ function print_remittances()
                        $contacts = get_supplier_contacts($myrow['supplier_id'], 'invoice');
                        $rep->SetCommonData($myrow, null, $myrow, $baccount, ST_SUPPAYMENT, $contacts);
                        $rep->NewPage();
-                       $result = get_allocations_for_remittance($myrow['supplier_id'], $myrow['type'], $myrow['trans_no']);
+                       $result = get_allocatable_to_supp_transactions($myrow['supplier_id'], $myrow['trans_no'], $myrow['type']);
 
                        $doctype = ST_SUPPAYMENT;
 
                        $total_allocated = 0;
                        $rep->TextCol(0, 4,     _("As advance / full / part / payment towards:"), -2);
                        $rep->NewLine(2);
-                       
+
                        while ($myrow2=db_fetch($result))
                        {
                                $rep->TextCol(0, 1,     $systypes_array[$myrow2['type']], -2);
@@ -182,14 +170,14 @@ function print_remittances()
                        {
                                $rep->NewLine(2);
                                $rep->TextCol(1, 7, $myrow['curr_code'] . ": " . $words, - 2);
-                       }       
+                       }
                        $rep->Font();
                        if ($email == 1)
                        {
                                $myrow['DebtorName'] = $myrow['supp_name'];
                                $rep->End($email);
                        }
-               }       
+               }
        }
        if ($email == 0)
                $rep->End();
index 9febce1c819bb600fc0aa7956a26bdd14708fea3..63c6fc2eb5aa2872ef3021adeb16e2456d27c6c4 100644 (file)
@@ -201,5 +201,3 @@ function print_inventory_sales()
        $rep->NewLine();
     $rep->End();
 }
-
-?>
\ No newline at end of file
index 8ce820d8faf9d3d9ea0ecd1dc1d9d9931f98cda8..2c75640b85f40ce2f69517a8fb7cb5f6cb629f38 100644 (file)
@@ -33,7 +33,7 @@ function getTransactions($from, $to)
 {
        $from = date2sql($from);
        $to = date2sql($to);
-       
+
        $sql = "SELECT ".TB_PREF."grn_batch.id batch_no,
                        ".TB_PREF."grn_batch.supplier_id, 
             ".TB_PREF."purch_order_details.*,
@@ -53,7 +53,7 @@ function getTransactions($from, $to)
         AND ".TB_PREF."grn_batch.delivery_date>='$from'
         AND ".TB_PREF."grn_batch.delivery_date<='$to'
         ORDER BY ".TB_PREF."stock_master.stock_id, ".TB_PREF."grn_batch.delivery_date";        
-       
+
     return db_query($sql,"No transactions were returned");
 
 }
@@ -139,7 +139,7 @@ function print_grn_valuation()
                $rep->TextCol(2, 3, $trans['order_no']);
                $qdec = get_qty_dec($trans['item_code']);
                $rep->TextCol(3, 4, $trans['batch_no']);
-               
+
                if ($trans['quantity_inv'])
                {
                        $suppinv = getSuppInvDetails($trans['grn_item_id']);
index 20f9dae488d9a076cad80e8498a3853254d310a6..7db6a4ef2b7255408371f20be0a49d56aeb28981 100644 (file)
@@ -38,7 +38,6 @@ function print_workorders()
        $comments = $_POST['PARAM_3'];
        $orientation = $_POST['PARAM_4'];
 
-
        if (!$from || !$to) return;
 
        $orientation = ($orientation ? 'L' : 'P');
index 56a53c353ae2c9047aa0d0e2bf8ee6cba809a5b2..db85e6686015a1f1be3c82e2bb891d88bf1842a9 100644 (file)
@@ -125,7 +125,7 @@ function print_bank_transactions()
                                $rep->TextCol(1, 2,     $myrow['trans_no']);
                                $rep->TextCol(2, 3,     $myrow['ref']);
                                $rep->DateCol(3, 4,     $myrow["trans_date"], true);
-                               $rep->TextCol(4, 5,     payment_person_name($myrow["person_type_id"],$myrow["person_id"], false));
+                               $rep->TextCol(4, 5,     get_counterparty_name($myrow["type"], $myrow["trans_no"], false));
                                if ($myrow['amount'] > 0.0)
                                {
                                        $rep->AmountCol(5, 6, abs($myrow['amount']), $dec);
diff --git a/reporting/rep602.php b/reporting/rep602.php
new file mode 100644 (file)
index 0000000..284bfda
--- /dev/null
@@ -0,0 +1,220 @@
+<?php
+/**********************************************************************
+    Copyright (C) FrontAccounting, LLC.
+       Released under the terms of the GNU General Public License, GPL, 
+       as published by the Free Software Foundation, either version 3 
+       of the License, or (at your option) any later version.
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+    See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
+***********************************************************************/
+$page_security = 'SA_BANKREP';
+// ----------------------------------------------------------------
+// $ Revision: 2.3.3-1
+// Creator:    Chaitanya-India <3chaitanya@gmail.com>
+// date_:      2005-05-19
+// Title:      Bank Statements w/Reconcile
+// Desc:       Bank Statement w/ Reconcile like the normal Bank Statement but with reconcile columns
+// ----------------------------------------------------------------
+$path_to_root="..";
+
+include_once($path_to_root . "/includes/session.inc");
+include_once($path_to_root . "/includes/date_functions.inc");
+include_once($path_to_root . "/includes/data_checks.inc");
+include_once($path_to_root . "/gl/includes/gl_db.inc");
+
+//----------------------------------------------------------------------------------------------------
+
+print_bank_transactions_reconcile();
+
+//----------------------------------------------------------------------------------------------------
+
+function get_bank_balance_to($to, $account)
+{
+       $to = date2sql($to);
+       $sql = "SELECT SUM(amount) FROM ".TB_PREF."bank_trans WHERE bank_act='$account'
+       AND trans_date < '$to'";
+       $result = db_query($sql, "The starting balance on hand could not be calculated");
+       $row = db_fetch_row($result);
+       return $row[0];
+}
+
+function get_bank_transactions($from, $to, $account)
+{
+       $from = date2sql($from);
+       $to = date2sql($to);
+       $sql = "SELECT ".TB_PREF."bank_trans.*, ".TB_PREF."comments.memo_
+                       FROM ".TB_PREF."bank_trans LEFT JOIN ".TB_PREF."comments ON 
+                       (".TB_PREF."bank_trans.type = ".TB_PREF."comments.type
+                       AND ".TB_PREF."bank_trans.trans_no = ".TB_PREF."comments.id)
+               WHERE ".TB_PREF."bank_trans.bank_act = '$account'
+               AND trans_date >= '$from'
+               AND trans_date <= '$to'
+               ORDER BY trans_date,".TB_PREF."bank_trans.id";
+
+       return db_query($sql,"The transactions for '$account' could not be retrieved");
+}
+
+function print_bank_transactions_reconcile()
+{
+       global $path_to_root, $systypes_array;
+
+       $acc = $_POST['PARAM_0'];
+       $from = $_POST['PARAM_1'];
+       $to = $_POST['PARAM_2'];
+       $comments = $_POST['PARAM_3'];
+       $destination = $_POST['PARAM_4'];
+       if ($destination)
+               include_once($path_to_root . "/reporting/includes/excel_report.inc");
+       else
+               include_once($path_to_root . "/reporting/includes/pdf_report.inc");
+
+       $rep = new FrontReport(_('Bank Statement w/Reconcile'), "BankStatementReconcile", user_pagesize(), 9, "L");
+       $dec = user_price_dec();
+
+       $cols = array(0, 90, 110, 170, 225, 450, 500, 550, 600, 660, 700);
+
+       $aligns = array('left', 'left', 'left', 'left', 'left', 'right', 'right', 'right', 'center', 'left');
+
+       $headers = array(_('Type'),     _('#'), _('Reference'), _('Date'), _('Person/Item'),
+               _('Debit'),     _('Credit'), _('Balance'), _('Reco Date'), _('Narration'));
+
+       $account = get_bank_account($acc);
+       $act = $account['bank_account_name']." - ".$account['bank_curr_code']." - ".$account['bank_account_number'];
+       $params =   array(      0 => $comments,
+           1 => array('text' => _('Period'), 'from' => $from, 'to' => $to),
+           2 => array('text' => _('Bank Account'),'from' => $act,'to' => ''));
+
+       $rep->Font();
+       $rep->Info($params, $cols, $headers, $aligns);
+       $rep->NewPage();
+
+
+       $prev_balance = get_bank_balance_to($from, $account["id"]);
+
+       $trans = get_bank_transactions($from, $to, $account['id']);
+
+       $rows = db_num_rows($trans);
+       if ($prev_balance != 0.0 || $rows != 0)
+       {
+               $rep->Font('bold');
+               $rep->TextCol(0, 3,     $act);
+               $rep->TextCol(3, 5, _('Opening Balance'));
+               if ($prev_balance > 0.0)
+                       $rep->AmountCol(5, 6, abs($prev_balance), $dec);
+               else
+                       $rep->AmountCol(6, 7, abs($prev_balance), $dec);
+               $rep->Font();
+               $total = $prev_balance;
+               $rep->NewLine(2);
+               // Keep a running total as we loop through
+               // the transactions.
+               $total_debit = $total_credit = 0;                       
+               if ($rows > 0)
+               {
+                       
+                       while ($myrow=db_fetch($trans))
+                       {
+                               $total += $myrow['amount'];
+
+                               $rep->TextCol(0, 1, $systypes_array[$myrow["type"]]);
+                               $rep->TextCol(1, 2,     $myrow['trans_no']);
+                               $rep->TextCol(2, 3,     $myrow['ref']);
+                               $rep->DateCol(3, 4,     $myrow["trans_date"], true);
+                               $rep->TextCol(4, 5,     payment_person_name($myrow["person_type_id"],$myrow["person_id"], false));
+                               if ($myrow['amount'] > 0.0)
+                               {
+                                       $rep->AmountCol(5, 6, abs($myrow['amount']), $dec);
+                                       $total_debit += abs($myrow['amount']);
+                               }
+                               else
+                               {
+                                       $rep->AmountCol(6, 7, abs($myrow['amount']), $dec);
+                                       $total_credit += abs($myrow['amount']);
+                               }
+                               $rep->AmountCol(7, 8, $total, $dec);
+                               if ($myrow["reconciled"] && $myrow["reconciled"] != '0000-00-00')
+                                       $rep->DateCol(8, 9,     $myrow["reconciled"], true);
+                               $rep->TextCol(9, 10, $myrow['memo_']);
+                               $rep->NewLine();
+                               if ($rep->row < $rep->bottomMargin + $rep->lineHeight)
+                               {
+                                       $rep->Line($rep->row - 2);
+                                       $rep->NewPage();
+                               }
+                       }
+                       $rep->NewLine();
+               }
+               
+               // Print totals for the debit and credit columns.
+               $rep->TextCol(3, 5, _("Total Debit / Credit"));
+               $rep->AmountCol(5, 6, $total_debit, $dec);
+               $rep->AmountCol(6, 7, $total_credit, $dec);
+               $rep->NewLine(2);
+
+               $rep->Font('bold');
+               $rep->TextCol(3, 5,     _("Ending Balance"));
+               if ($total > 0.0)
+                       $rep->AmountCol(5, 6, abs($total), $dec);
+               else
+                       $rep->AmountCol(6, 7, abs($total), $dec);
+               $rep->Font();
+               $rep->NewLine(2);       
+               
+               // Print the difference between starting and ending balances.
+               $net_change = ($total - $prev_balance); 
+               $rep->TextCol(3, 5, _("Net Change"));
+               if ($total > 0.0)
+                       $rep->AmountCol(5, 6, $net_change, $dec, 0, 0, 0, 0, null, 1, True);
+               else
+                       $rep->AmountCol(6, 7, $net_change, $dec, 0, 0, 0, 0, null, 1, True);
+               $rep->Font();
+               $rep->NewLine(2);       
+               
+               // Calculate Bank Balance as per reco
+               $date = date2sql($to);
+               $sql = "SELECT SUM(IF(reconciled<='$date' AND reconciled !='0000-00-00', amount, 0)) as reconciled,
+                                SUM(amount) as books_total
+                       FROM ".TB_PREF."bank_trans trans
+                       WHERE bank_act=".db_escape($account['id'])."
+                       AND trans_date <= '$date'";     
+                       
+               //      ." AND trans.reconciled IS NOT NULL";
+               //display_notification($sql);
+               $t_result = db_query($sql,"Cannot retrieve reconciliation data");
+
+               if ($t_row = db_fetch($t_result)) {
+                       $books_total = $t_row['books_total'];
+                       $reconciled = $t_row['reconciled'];
+               }                       
+               $difference = $books_total - $reconciled;               
+               
+               // Bank Balance (by Reco)
+               $rep->Font('bold');
+               $rep->TextCol(3, 5,     _("Bank Balance"));
+               if ($reconciled > 0.0)
+                       $rep->AmountCol(5, 6, abs($reconciled), $dec);
+               else
+                       $rep->AmountCol(6, 7, abs($reconciled), $dec);
+               $rep->Font();
+               $rep->NewLine(2);       
+
+               // Reco Difference
+               $rep->Font('bold');
+               $rep->TextCol(3, 5,     _("Difference"));
+               if ($difference > 0.0)
+                       $rep->AmountCol(5, 6, abs($difference), $dec);
+               else
+                       $rep->AmountCol(6, 7, abs($difference), $dec);
+               $rep->Font();
+               $rep->NewLine(2);       
+                       
+               $rep->Line($rep->row - $rep->lineHeight + 4);
+               $rep->NewLine(2, 1);                    
+                       
+       }
+       $rep->End();
+}
+
+?>
\ No newline at end of file
index d03942ffadbbf9b01c45c0b363da760c1375f941..5c7c829e0c5231f8815745bdcd87a9d2e49c826d 100644 (file)
@@ -28,7 +28,7 @@ include_once($path_to_root . "/gl/includes/gl_db.inc");
 function display_type ($type, $typename, &$dec, &$rep, $showbalance, $level)
 {
        $printtitle = 0; //Flag for printing type name  
-       
+
        //Get Accounts directly under this group/type
        $result = get_gl_accounts(null, null, $type);   
        while ($account=db_fetch($result))
@@ -40,7 +40,7 @@ function display_type ($type, $typename, &$dec, &$rep, $showbalance, $level)
                        for ($sp=1; $sp<=$level; $sp++)
                        {
                                $prefix .= '         ';
-                       }               
+                       }
                        $printtitle = 1;
                        $rep->row -= 4;
                        $rep->TextCol(0, 1, $type);
@@ -63,7 +63,7 @@ function display_type ($type, $typename, &$dec, &$rep, $showbalance, $level)
                        $rep->AmountCol(3, 4, $balance, $dec);
                $rep->NewLine();
        }
-               
+
        //Get Account groups/types under this group/type
        $result = get_account_types(false, false, $type);
        while ($accounttype=db_fetch($result))
index d32c787e55ad52d456317447c583c356d820f479..fdc1224a5796318d7f4e28ee2973ae9ea9d5d530 100644 (file)
@@ -99,7 +99,7 @@ function print_list_of_journal_entries()
             $rep->TextCol(0, 1, $TransName . " # " . $myrow['type_no']);
             $rep->TextCol(1, 2, get_reference($myrow['type'], $myrow['type_no']));
             $rep->DateCol(2, 3, $myrow['tran_date'], true);
-            $coms =  payment_person_name($myrow["person_type_id"],$myrow["person_id"]);
+            $coms =  get_subaccount_name($myrow["account"], $myrow["person_id"]);
             $memo = get_comments_string($myrow['type'], $myrow['type_no']);
             if ($memo != '')
             {
index 8ab1ef162b343f10e1bbdcf1374109efac39db09..b32c20d39759ce3c31932256c56b7011c563814f 100644 (file)
@@ -226,7 +226,7 @@ function print_trial_balance()
        $rep->Font();
        $rep->Info($params, $cols, $headers, $aligns, $cols2, $headers2, $aligns2);
        $rep->NewPage();
-       
+
        $classresult = get_account_classes(false);
        while ($class = db_fetch($classresult))
        {
@@ -274,7 +274,7 @@ function print_trial_balance()
        else
                $rep->AmountCol(7, 8, abs($tbal), $dec);
        $rep->NewLine();
-               
+
        $rep->Line($rep->row + 10);
        if (($pbal = round2($pbal, $dec)) != 0.0 && $dimension == 0 && $dimension2 == 0)
        {
index 1e781f25079dadb42f29b9480191e5a6c3cac87f..1ffa5f089fe129e9514e6c553df8280ef4c8d1a9 100644 (file)
@@ -74,7 +74,7 @@ function getTaxInfo($id)
 function print_tax_report()
 {
        global $path_to_root, $trans_dir, $Hooks, $systypes_array;
-       
+
        $from = $_POST['PARAM_0'];
        $to = $_POST['PARAM_1'];
        $summaryOnly = $_POST['PARAM_2'];
@@ -131,7 +131,7 @@ function print_tax_report()
                        $trans['net_amount'] *= -1;
                        $trans['amount'] *= -1;
                }
-               
+
                if (!$summaryOnly)
                {
                        $rep->TextCol(0, 1, $systypes_array[$trans['trans_type']]);
@@ -145,7 +145,7 @@ function print_tax_report()
                        $rep->AmountCol(5, 6, $trans['net_amount'], $dec);
                        $rep->AmountCol(6, 7, $trans['rate'], $dec);
                        $rep->AmountCol(7, 8, $trans['amount'], $dec);
-                       
+
                        $rep->TextCol(9, 10, $trans['taxname']);
 
                        $rep->NewLine();
index 82adeecb322de3fb209f949f70a0b1d14254cded..9a1c5d14dd91afb3d96f95e6f8c3ec276f8ebbf5 100644 (file)
@@ -195,7 +195,7 @@ $reports->addReport(RC_SUPPLIER, 209, _('Print Purchase &Orders'),
                        _('Email Suppliers') => 'YES_NO',
                        _('Comments') => 'TEXTBOX',
                        _('Orientation') => 'ORIENTATION'));
-$reports->addReport(RC_SUPPLIER, 210, _('Print Remittances'),
+$reports->addReport(RC_SUPPLIER, 210, _('Print Remi&ttances'),
        array(  _('From') => 'REMITTANCE',
                        _('To') => 'REMITTANCE',
                        _('Currency Filter') => 'CURRENCY',
@@ -205,7 +205,7 @@ $reports->addReport(RC_SUPPLIER, 210, _('Print Remittances'),
 
 $reports->addReportClass(_('Inventory'), RC_INVENTORY);
 $reports->addReport(RC_INVENTORY,  301, _('Inventory &Valuation Report'),
-       array(  _('End Date') => 'DATE',        
+       array(  _('End Date') => 'DATE',
                        _('Inventory Category') => 'CATEGORIES',
                        _('Location') => 'LOCATIONS',
                        _('Summary Only') => 'YES_NO',
@@ -314,6 +314,12 @@ $reports->addReportClass(_('Banking'), RC_BANKING);
                        _('Comments') => 'TEXTBOX',
                        _('Orientation') => 'ORIENTATION',
                        _('Destination') => 'DESTINATION'));
+       $reports->addReport(RC_BANKING,  602, _('Bank Statement w/ &Reconcile'),
+       array(  _('Bank Accounts') => 'BANK_ACCOUNTS',
+                       _('Start Date') => 'DATEBEGINM',
+                       _('End Date') => 'DATEENDM',
+                       _('Comments') => 'TEXTBOX',
+                       _('Destination') => 'DESTINATION'));
 
 $reports->addReportClass(_('General Ledger'), RC_GL);
 $reports->addReport(RC_GL, 701, _('Chart of &Accounts'),
index cf0005fe04e7d9e5c0f5ea122c4a94bfa06bc8c9..f269ca4b1a5f674bc70eb916825df83c21f9edb5 100644 (file)
@@ -54,11 +54,12 @@ function edit_allocations_for_transaction($type, $trans_no)
     display_heading2(_("Date:") . " <b>" . $cart->date_ . "</b>");
        display_heading2(_("Total:"). " <b>" . price_format($cart->bank_amount).' '.$cart->currency."</b>");
 
-       if ($cart->currency != $cart->person_curr)
+       if (floatcmp($cart->bank_amount, $cart->amount))
        {
-           $total = _("Total in clearing currency:") . " <b>" . price_format($cart->amount)."</b>"
-               . sprintf(" %s (%s %s/%s)", $cart->person_curr, exrate_format($cart->bank_amount/$cart->amount), $cart->currency, $cart->person_curr);
-       display_heading2($total);
+           $total = _("Amount ot be settled:") . " <b>" . price_format($cart->amount).' '.$cart->person_curr."</b>";
+               if ($cart->currency != $cart->person_curr)
+               $total .= sprintf(" (%s %s/%s)",  exrate_format($cart->bank_amount/$cart->amount), $cart->currency, $cart->person_curr);
+               display_heading2($total);
        }
 
     echo "<br>";
index 0db31150c409ca2d00228c16bafc1e53ae3d8a95..56e39bb07e2814283bc06c99167db4efbf0cfd30 100644 (file)
@@ -118,7 +118,7 @@ if ($id != -1)
                }
        }
        else
-               display_error(_("The entered date is not in fiscal year."));
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
 }
 
 $result = get_recurrent_invoices();
index 70148e81a6574fc99ae54fa30ac53d3158e8abe5..b3ccc70857d2b6d2c0813caf2902aa95f034af19 100644 (file)
@@ -154,7 +154,7 @@ function can_process()
                set_focus('OrderDate');
                $input_error = 1;
        } elseif (!is_date_in_fiscalyear($_POST['OrderDate'])) {
-               display_error(_("The entered date is not in fiscal year."));
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                set_focus('OrderDate');
                $input_error = 1;
        }
index 59e454efd163aa41095d743672bc49afc0fd0688..fcc934bd224d945c98e222a78b82e164072d6599 100644 (file)
@@ -92,7 +92,7 @@ function can_process()
                set_focus('CreditDate');
                return false;
        } elseif (!is_date_in_fiscalyear($_POST['CreditDate'])) {
-               display_error(_("The entered date is not in fiscal year."));
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                set_focus('CreditDate');
                return false;
        }
index 114f3d4a9ccf0331f207d1c8561ae9bcb0cf06d9..41e3726b48a1a3f86b327f12fb31467ca426aa2d 100644 (file)
@@ -58,7 +58,8 @@ if (isset($_GET['AddedID'])) {
 
        display_note(get_gl_view_str(13, $dispatch_no, _("View the GL Journal Entries for this Dispatch")),1);
 
-       hyperlink_params("$path_to_root/sales/customer_invoice.php", _("Invoice This Delivery"), "DeliveryNumber=$dispatch_no");
+       if (!isset($_GET['prepaid']))
+               hyperlink_params("$path_to_root/sales/customer_invoice.php", _("Invoice This Delivery"), "DeliveryNumber=$dispatch_no");
 
        hyperlink_params("$path_to_root/sales/inquiry/sales_orders_view.php", _("Select Another Order For Dispatch"), "OutstandingOnly=1");
 
@@ -77,7 +78,8 @@ if (isset($_GET['AddedID'])) {
        display_note(print_document_link($delivery_no, _("P&rint as Packing Slip"), true, ST_CUSTDELIVERY, false, "printlink", "", 0, 1));
        display_note(print_document_link($delivery_no, _("E&mail as Packing Slip"), true, ST_CUSTDELIVERY, false, "printlink", "", 1, 1), 1);
 
-       hyperlink_params($path_to_root . "/sales/customer_invoice.php", _("Confirm Delivery and Invoice"), "DeliveryNumber=$delivery_no");
+       if (!isset($_GET['prepaid']))
+               hyperlink_params($path_to_root . "/sales/customer_invoice.php", _("Confirm Delivery and Invoice"), "DeliveryNumber=$delivery_no");
 
        hyperlink_params($path_to_root . "/sales/inquiry/sales_deliveries_view.php", _("Select A Different Delivery"), "OutstandingOnly=1");
 
@@ -88,13 +90,22 @@ if (isset($_GET['AddedID'])) {
 if (isset($_GET['OrderNumber']) && $_GET['OrderNumber'] > 0) {
 
        $ord = new Cart(ST_SALESORDER, $_GET['OrderNumber'], true);
+       if ($ord->is_prepaid())
+               check_deferred_income_act(_("You have to set Deferred Income Account in GL Setup to entry prepayment invoices."));
 
        if ($ord->count_items() == 0) {
                hyperlink_params($path_to_root . "/sales/inquiry/sales_orders_view.php",
                        _("Select a different sales order to delivery"), "OutstandingOnly=1");
-               die ("<br><b>" . _("This order has no items. There is nothing to delivery.") . "</b>");
+               echo "<br><center><b>" . _("This order has no items. There is nothing to delivery.") .
+                       "</center></b>";
+               display_footer_exit();
+       } else if (!$ord->is_released()) {
+               hyperlink_params($path_to_root . "/sales/inquiry/sales_orders_view.php",_("Select a different sales order to delivery"),
+                       "OutstandingOnly=1");
+               echo "<br><center><b>"._("This prepayment order is not yet ready for delivery due to insufficient amount received.")
+                       ."</center></b>";
+               display_footer_exit();
        }
-
        // Adjust Shipping Charge based upon previous deliveries TAM
        adjust_shipping_charge($ord, $_GET['OrderNumber']);
  
@@ -103,10 +114,11 @@ if (isset($_GET['OrderNumber']) && $_GET['OrderNumber'] > 0) {
 
 } elseif (isset($_GET['ModifyDelivery']) && $_GET['ModifyDelivery'] > 0) {
 
-       $_SESSION['Items'] = new Cart(ST_CUSTDELIVERY, $_GET['ModifyDelivery']);
+       check_is_editable(ST_CUSTDELIVERY, $_GET['ModifyDelivery']);
+       $_SESSION['Items'] = new Cart(ST_CUSTDELIVERY,$_GET['ModifyDelivery']);
 
-       if ($_SESSION['Items']->count_items() == 0) {
-               hyperlink_params($path_to_root . "/sales/inquiry/customer_inquiry.php",
+       if (!$_SESSION['Items']->prepaid && $_SESSION['Items']->count_items() == 0) {
+               hyperlink_params($path_to_root . "/sales/inquiry/sales_orders_view.php",
                        _("Select a different delivery"), "OutstandingOnly=1");
                echo "<br><center><b>" . _("This delivery has all items invoiced. There is nothing to modify.") .
                        "</center></b>";
@@ -150,7 +162,7 @@ function check_data()
        }
 
        if (!is_date_in_fiscalyear($_POST['DispatchDate'])) {
-               display_error(_("The entered date of delivery is not in fiscal year."));
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                set_focus('DispatchDate');
                return false;
        }
@@ -276,7 +288,7 @@ function check_qoh()
                 if (!$newdelivery)
                 {
                     $delivered = get_already_delivered($itm->stock_id, $_POST['Location'], key($dn->trans_no));
-                    
+
                     $qoh_abs = $qoh_abs - $delivered;
                     $qoh_by_date = $qoh_by_date - $delivered;
                 }
@@ -314,13 +326,15 @@ if (isset($_POST['process_delivery']) && check_data() && check_qoh()) {
        }
        else
        {
+               $is_prepaid = $dn->is_prepaid() ? "&prepaid=Yes" : '';
+
                processing_end();
                if ($newdelivery) {
-                       meta_forward($_SERVER['PHP_SELF'], "AddedID=$delivery_no");
+                       meta_forward($_SERVER['PHP_SELF'], "AddedID=$delivery_no$is_prepaid");
                } else {
-                       meta_forward($_SERVER['PHP_SELF'], "UpdatedID=$delivery_no");
+                       meta_forward($_SERVER['PHP_SELF'], "UpdatedID=$delivery_no$is_prepaid");
                }
-       }       
+       }
 }
 
 if (isset($_POST['Update']) || isset($_POST['_Location_update']) || isset($_POST['qty'])) {
index ea4898790220e87230b9257d5de5d362a34a1027..6e4b77bd4075f1425e5da5376b4de350bf282be9 100644 (file)
@@ -24,6 +24,7 @@ include_once($path_to_root . "/sales/includes/sales_db.inc");
 include_once($path_to_root . "/sales/includes/sales_ui.inc");
 include_once($path_to_root . "/reporting/includes/reporting.inc");
 include_once($path_to_root . "/taxes/tax_calc.inc");
+include_once($path_to_root . "/admin/db/shipping_db.inc");
 
 $js = "";
 if ($use_popup_windows) {
@@ -40,11 +41,13 @@ if (isset($_GET['ModifyInvoice'])) {
        $_SESSION['page_title'] = _($help_context = "Issue an Invoice for Delivery Note");
 } elseif (isset($_GET['BatchInvoice'])) {
        $_SESSION['page_title'] = _($help_context = "Issue Batch Invoice for Delivery Notes");
+} elseif (isset($_GET['AllocationNumber']) || isset($_GET['InvoicePrepayments'])) {
+       $_SESSION['page_title'] = _($help_context = "Prepayment or Final Invoice Entry");
 }
-
 page($_SESSION['page_title'], false, false, "", $js);
 
 //-----------------------------------------------------------------------------
+
 check_edit_conflicts();
 
 if (isset($_GET['AddedID'])) {
@@ -136,12 +139,15 @@ if ( (isset($_GET['DeliveryNumber']) && ($_GET['DeliveryNumber'] > 0) )
 
 } elseif (isset($_GET['ModifyInvoice']) && $_GET['ModifyInvoice'] > 0) {
 
+       check_is_editable(ST_SALESINVOICE, $_GET['ModifyInvoice']);
+/*
        if ( get_sales_parent_numbers(ST_SALESINVOICE, $_GET['ModifyInvoice']) == 0) { // 1.xx compatibility hack
                echo"<center><br><b>" . _("There are no delivery notes for this invoice.<br>
                Most likely this invoice was created in Front Accounting version prior to 2.0
                and therefore can not be modified.") . "</b></center>";
                display_footer_exit();
        }
+*/
        processing_start();
        $_SESSION['Items'] = new Cart(ST_SALESINVOICE, $_GET['ModifyInvoice']);
 
@@ -150,7 +156,46 @@ if ( (isset($_GET['DeliveryNumber']) && ($_GET['DeliveryNumber'] > 0) )
                display_footer_exit();
        }
        copy_from_cart();
-} elseif (!processing_active()) {
+} elseif (isset($_GET['AllocationNumber']) || isset($_GET['InvoicePrepayments'])) {
+
+               check_deferred_income_act(_("You have to set Deferred Income Account in GL Setup to entry prepayment invoices."));
+
+               if (isset($_GET['AllocationNumber']))
+               {
+                       $payments = array(get_cust_allocation($_GET['AllocationNumber']));
+
+                       if (!$payments || ($payments[0]['trans_type_to'] != ST_SALESORDER))
+                       {
+                               display_error(_("Please select correct Sales Order Prepayment to be invoiced and try again."));
+                               display_footer_exit();
+                       }
+                       $order_no = $payments[0]['trans_no_to'];
+               }
+               else {
+                       $order_no = $_GET['InvoicePrepayments'];
+                       $payments =  get_payments_for($_GET['InvoicePrepayments'], ST_SALESORDER);
+               }
+               processing_start();
+
+               $_SESSION['Items'] = new Cart(ST_SALESORDER, $order_no, ST_SALESINVOICE);
+               $_SESSION['Items']->order_no = $order_no;
+               $_SESSION['Items']->src_docs = array($order_no);
+               $_SESSION['Items']->trans_no = 0;
+               $_SESSION['Items']->trans_type = ST_SALESINVOICE;
+               $_SESSION['Items']->prepayments = $payments;
+               // prepayment invoice has all line quantities as stated on order.
+//             foreach($_SESSION['Items']->line_items as &$line)
+//             {
+//                     $line->src_id = $line_id;
+//                     $line->qty_dispatched = $line->quantity;
+//             }
+//             unset($line);
+               $_SESSION['Items']->update_payments();
+
+//             $_SESSION['Items']->alloc = $this_amount;
+               copy_from_cart();
+}
+ elseif (!processing_active()) {
        /* This page can only be called with a delivery for invoicing or invoice no for edit */
        display_error(_("This page can only be opened after delivery selection. Please select delivery to invoicing first."));
 
@@ -158,9 +203,10 @@ if ( (isset($_GET['DeliveryNumber']) && ($_GET['DeliveryNumber'] > 0) )
 
        end_page();
        exit;
-} elseif (!isset($_POST['process_invoice']) && !check_quantities()) {
+} elseif (!isset($_POST['process_invoice']) && (!$_SESSION['Items']->is_prepaid() && !check_quantities())) {
        display_error(_("Selected quantity cannot be less than quantity credited nor more than quantity not invoiced yet."));
 }
+
 if (isset($_POST['Update'])) {
        $Ajax->activate('Items');
 }
@@ -168,11 +214,6 @@ if (isset($_POST['_InvoiceDate_changed'])) {
        $_POST['due_date'] = get_invoice_duedate($_SESSION['Items']->payment, $_POST['InvoiceDate']);
        $Ajax->activate('due_date');
 }
-if (list_updated('payment')) {
-       $_SESSION['Items']->payment = get_post('payment');
-       $_POST['due_date'] = get_invoice_duedate($_SESSION['Items']->payment, $_POST['InvoiceDate']);
-       $Ajax->activate('due_date');
-}
 
 //-----------------------------------------------------------------------------
 function check_quantities()
@@ -228,34 +269,42 @@ function set_delivery_shipping_sum($delivery_notes)
 function copy_to_cart()
 {
        $cart = &$_SESSION['Items'];
-       $cart->ship_via = $_POST['ship_via'];
-       $cart->freight_cost = input_num('ChargeFreightCost');
-       $cart->document_date =  $_POST['InvoiceDate'];
+       $cart->due_date = $cart->document_date =  $_POST['InvoiceDate'];
+       $cart->Comments = $_POST['Comments'];
        $cart->due_date =  $_POST['due_date'];
-       if ($cart->pos['cash_sale'] || $cart->pos['credit_sale']) {
+       if (($cart->pos['cash_sale'] || $cart->pos['credit_sale']) && isset($_POST['payment'])) {
                $cart->payment = $_POST['payment'];
                $cart->payment_terms = get_payment_terms($_POST['payment']);
        }
-       $cart->Comments = $_POST['Comments'];
        if ($_SESSION['Items']->trans_no == 0)
                $cart->reference = $_POST['ref'];
+       if (!$cart->is_prepaid())
+       {
+               $cart->ship_via = $_POST['ship_via'];
+               $cart->freight_cost = input_num('ChargeFreightCost');
+       }
+
+       $cart->update_payments();
+
        $cart->dimension_id =  $_POST['dimension_id'];
        $cart->dimension2_id =  $_POST['dimension2_id'];
-
 }
 //-----------------------------------------------------------------------------
 
 function copy_from_cart()
 {
        $cart = &$_SESSION['Items'];
-       $_POST['ship_via'] = $cart->ship_via;
-       $_POST['ChargeFreightCost'] = price_format($cart->freight_cost);
+       $_POST['Comments']= $cart->Comments;
        $_POST['InvoiceDate']= $cart->document_date;
-       $_POST['due_date'] = $cart->due_date;
-       $_POST['Comments']= $cart->Comments;
+       $_POST['ref'] = $cart->reference;
        $_POST['cart_id'] = $cart->cart_id;
-       $_POST['ref'] = $cart->reference;
-       $_POST['payment'] = $cart->payment;
+       $_POST['due_date'] = $cart->due_date;
+       $_POST['payment'] = $cart->payment;
+       if (!$_SESSION['Items']->is_prepaid())
+       {
+               $_POST['ship_via'] = $cart->ship_via;
+               $_POST['ChargeFreightCost'] = price_format($cart->freight_cost);
+       }
        $_POST['dimension_id'] = $cart->dimension_id;
        $_POST['dimension2_id'] = $cart->dimension2_id;
 }
@@ -266,6 +315,8 @@ function check_data()
 {
        global $Refs;
 
+       $prepaid = $_SESSION['Items']->is_prepaid();
+
        if (!isset($_POST['InvoiceDate']) || !is_date($_POST['InvoiceDate'])) {
                display_error(_("The entered invoice date is invalid."));
                set_focus('InvoiceDate');
@@ -273,12 +324,13 @@ function check_data()
        }
 
        if (!is_date_in_fiscalyear($_POST['InvoiceDate'])) {
-               display_error(_("The entered invoice date is not in fiscal year."));
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                set_focus('InvoiceDate');
                return false;
        }
 
-       if (!isset($_POST['due_date']) || !is_date($_POST['due_date'])) {
+
+       if (!$prepaid &&(!isset($_POST['due_date']) || !is_date($_POST['due_date'])))   {
                display_error(_("The entered invoice due date is invalid."));
                set_focus('due_date');
                return false;
@@ -292,24 +344,32 @@ function check_data()
                }
        }
 
-       if ($_POST['ChargeFreightCost'] == "") {
-               $_POST['ChargeFreightCost'] = price_format(0);
-       }
+       if(!$prepaid) 
+       {
+               if ($_POST['ChargeFreightCost'] == "") {
+                       $_POST['ChargeFreightCost'] = price_format(0);
+               }
 
-       if (!check_num('ChargeFreightCost', 0)) {
-               display_error(_("The entered shipping value is not numeric."));
-               set_focus('ChargeFreightCost');
-               return false;
-       }
+               if (!check_num('ChargeFreightCost', 0)) {
+                       display_error(_("The entered shipping value is not numeric."));
+                       set_focus('ChargeFreightCost');
+                       return false;
+               }
 
-       if ($_SESSION['Items']->has_items_dispatch() == 0 && input_num('ChargeFreightCost') == 0) {
-               display_error(_("There are no item quantities on this invoice."));
-               return false;
-       }
+               if ($_SESSION['Items']->has_items_dispatch() == 0 && input_num('ChargeFreightCost') == 0) {
+                       display_error(_("There are no item quantities on this invoice."));
+                       return false;
+               }
 
-       if (!check_quantities()) {
-               display_error(_("Selected quantity cannot be less than quantity credited nor more than quantity not invoiced yet."));
-               return false;
+               if (!check_quantities()) {
+                       display_error(_("Selected quantity cannot be less than quantity credited nor more than quantity not invoiced yet."));
+                       return false;
+               }
+       } else {
+               if (($_SESSION['Items']->payment_terms['days_before_due'] < 0) && !count($_SESSION['Items']->prepayments)) {
+                       display_error(_("There is no non-invoiced payments for this order. If you want to issue final invoice, select delayed or cash payment terms."));
+                       return false;
+               }
        }
 
        return true;
@@ -341,15 +401,20 @@ if (isset($_POST['process_invoice']) && check_data()) {
 }
 
 if(list_updated('payment')) {
-       $order = &$_SESSION['Items'];
+       $order = &$_SESSION['Items']; 
+       copy_to_cart();
        $order->payment = get_post('payment');
        $order->payment_terms = get_payment_terms($order->payment);
-       $order->due_date = get_invoice_duedate($order->payment, $order->document_date);
+       $_POST['due_date'] = $order->due_date = get_invoice_duedate($order->payment, $order->document_date);
+       $_POST['Comments'] = '';
+       $Ajax->activate('due_date');
+       $Ajax->activate('options');
        if ($order->payment_terms['cash_sale']) {
                $_POST['Location'] = $order->Location = $order->pos['pos_location'];
                $order->location_name = $order->pos['location_name'];
        }
 }
+
 // find delivery spans for batch invoice display
 $dspans = array();
 $lastdn = ''; $spanlen=1;
@@ -374,6 +439,7 @@ $dspans[] = $spanlen;
 //-----------------------------------------------------------------------------
 
 $is_batch_invoice = count($_SESSION['Items']->src_docs) > 1;
+$prepaid = $_SESSION['Items']->is_prepaid();
 
 $is_edition = $_SESSION['Items']->trans_type == ST_SALESINVOICE && $_SESSION['Items']->trans_no != 0;
 start_form();
@@ -388,7 +454,7 @@ if ($dim > 0)
        $colspan = 3;
 label_cells(_("Customer"), $_SESSION['Items']->customer_name, "class='tableheader2'");
 label_cells(_("Branch"), get_branch_name($_SESSION['Items']->Branch), "class='tableheader2'");
-if ($_SESSION['Items']->pos['credit_sale'] || $_SESSION['Items']->pos['cash_sale']) {
+if (($_SESSION['Items']->pos['credit_sale'] || $_SESSION['Items']->pos['cash_sale'])) {
        $paymcat = !$_SESSION['Items']->pos['cash_sale'] ? PM_CREDIT :
                (!$_SESSION['Items']->pos['credit_sale'] ? PM_CASH : PM_ANY);
        label_cells(_("Payment terms:"), sale_payment_list('payment', $paymcat),
@@ -429,7 +495,12 @@ if (!isset($_POST['ship_via'])) {
        $_POST['ship_via'] = $_SESSION['Items']->ship_via;
 }
 label_cell(_("Shipping Company"), "class='tableheader2'");
-shippers_list_cells(null, 'ship_via', $_POST['ship_via']);
+if ($prepaid)
+{
+       $shipper = get_shipper($_SESSION['Items']->ship_via);
+       label_cells(null, $shipper['shipper_name']);
+} else
+       shippers_list_cells(null, 'ship_via', $_POST['ship_via']);
 
 if (!isset($_POST['InvoiceDate']) || !is_date($_POST['InvoiceDate'])) {
        $_POST['InvoiceDate'] = new_doc_date();
@@ -471,13 +542,16 @@ if ($row['dissallow_invoices'] == 1)
        exit();
 }      
 
-display_heading(_("Invoice Items"));
+display_heading($prepaid ? _("Sales Order Items") : _("Invoice Items"));
 
 div_start('Items');
 start_table(TABLESTYLE, "width=80%");
-$th = array(_("Item Code"), _("Item Description"), _("Delivered"), _("Units"), _("Invoiced"),
-       _("This Invoice"), _("Price"), _("Tax Type"), _("Discount"), _("Total"));
-
+if ($prepaid)
+       $th = array(_("Item Code"), _("Item Description"), _("Units"), _("Quantity"),
+               _("Price"), _("Tax Type"), _("Discount"), _("Total"));
+else
+       $th = array(_("Item Code"), _("Item Description"), _("Delivered"), _("Units"), _("Invoiced"),
+               _("This Invoice"), _("Price"), _("Tax Type"), _("Discount"), _("Total"));
 if ($is_batch_invoice) {
     $th[] = _("DN");
     $th[] = "";
@@ -495,19 +569,24 @@ $show_qoh = true;
 $dn_line_cnt = 0;
 
 foreach ($_SESSION['Items']->line_items as $line=>$ln_itm) {
-       if ($ln_itm->quantity == $ln_itm->qty_done) {
+       if (!$prepaid && ($ln_itm->quantity == $ln_itm->qty_done)) {
                continue; // this line was fully invoiced
        }
        alt_table_row_color($k);
        view_stock_status_cell($ln_itm->stock_id);
 
-       text_cells(null, 'Line'.$line.'Desc', $ln_itm->item_description, 30, 50);
+       if ($prepaid)
+               label_cell($ln_itm->item_description);
+       else
+               text_cells(null, 'Line'.$line.'Desc', $ln_itm->item_description, 30, 50);
        $dec = get_qty_dec($ln_itm->stock_id);
-       qty_cell($ln_itm->quantity, false, $dec);
+       if (!$prepaid)
+               qty_cell($ln_itm->quantity, false, $dec);
        label_cell($ln_itm->units);
-       qty_cell($ln_itm->qty_done, false, $dec);
+       if (!$prepaid)
+               qty_cell($ln_itm->qty_done, false, $dec);
 
-       if ($is_batch_invoice) {
+       if ($is_batch_invoice || $prepaid) {
                // for batch invoices we can only remove whole deliveries
                echo '<td nowrap align=right>';
                hidden('Line' . $line, $ln_itm->qty_dispatched );
@@ -558,10 +637,13 @@ $accumulate_shipping = get_company_pref('accumulate_shipping');
 if ($is_batch_invoice && $accumulate_shipping)
        set_delivery_shipping_sum(array_keys($_SESSION['Items']->src_docs));
 
-$colspan = 9;
+$colspan = $prepaid ? 7:9;
 start_row();
 label_cell(_("Shipping Cost"), "colspan=$colspan align=right");
-small_amount_cells(null, 'ChargeFreightCost', null);
+if ($prepaid)
+       label_cell($_POST['ChargeFreightCost'], 'align=right');
+else
+       small_amount_cells(null, 'ChargeFreightCost', null);
 if ($is_batch_invoice) {
 label_cell('', 'colspan=2');
 }
@@ -574,7 +656,7 @@ $display_sub_total = price_format($inv_items_total + input_num('ChargeFreightCos
 label_row(_("Sub-total"), $display_sub_total, "colspan=$colspan align=right","align=right", $is_batch_invoice ? 2 : 0);
 
 $taxes = $_SESSION['Items']->get_taxes(input_num('ChargeFreightCost'));
-$tax_total = display_edit_tax_items($taxes, $colspan, $_SESSION['Items']->tax_included, $is_batch_invoice ? 2:0);
+$tax_total = display_edit_tax_items($taxes, $colspan, $_SESSION['Items']->tax_included, $is_batch_invoice ? 2 : 0);
 
 $display_total = price_format(($inv_items_total + input_num('ChargeFreightCost') + $tax_total));
 
@@ -582,12 +664,32 @@ label_row(_("Invoice Total"), $display_total, "colspan=$colspan align=right","al
 
 end_table(1);
 div_end();
-
+div_start('options');
 start_table(TABLESTYLE2);
-textarea_row(_("Memo"), 'Comments', null, 50, 4);
+if ($prepaid)
+{
 
-end_table(1);
+       label_row(_("Sales order:"), get_trans_view_str(ST_SALESORDER, $_SESSION['Items']->order_no, get_reference(ST_SALESORDER, $_SESSION['Items']->order_no)));
 
+       $list = array(); $allocs = 0;
+       if (count($_SESSION['Items']->prepayments))
+       {
+               foreach($_SESSION['Items']->prepayments as $pmt)
+               {
+                       $list[] = get_trans_view_str($pmt['trans_type_from'], $pmt['trans_no_from'], get_reference($pmt['trans_type_from'], $pmt['trans_no_from']));
+                       $allocs += $pmt['amt'];
+               }
+       }
+
+       label_row(_("Payments received:"), implode(',', $list));
+       label_row(_("Invoiced here:"), price_format($_SESSION['Items']->prep_amount), 'class=label');
+       label_row(_("Left to be invoiced:"), price_format($_SESSION['Items']->get_trans_total()-max($_SESSION['Items']->prep_amount, $allocs)), 'class=label');
+}
+
+textarea_row(_("Memo:"), 'Comments', null, 50, 4);
+
+end_table(1);
+div_end();
 submit_center_first('Update', _("Update"),
   _('Refresh document page'), true);
 submit_center_last('process_invoice', _("Process Invoice"),
index bf15289a690f68d6c739666555a6c1b26de30192..3b44bc67e8613ee7bb906ae6eed66ff6da497777 100644 (file)
@@ -153,7 +153,7 @@ function can_process()
                set_focus('DateBanked');
                return false;
        } elseif (!is_date_in_fiscalyear($_POST['DateBanked'])) {
-               display_error(_("The entered date is not in fiscal year."));
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                set_focus('DateBanked');
                return false;
        }
@@ -190,7 +190,7 @@ function can_process()
                return false;
        }
        if (isset($_POST['charge']) && input_num('charge') > 0) {
-               $charge_acct = get_company_pref('bank_charge_act');
+               $charge_acct = get_bank_charge_account($_POST['bank_account']);
                if (get_gl_account($charge_acct) == false) {
                        display_error(_("The Bank Charge Account has not been set in System and General GL Setup."));
                        set_focus('charge');
@@ -247,9 +247,6 @@ if (isset($_POST['_customer_id_button'])) {
 //     unset($_POST['branch_id']);
        $Ajax->activate('BranchID');
 }
-//if (isset($_POST['_DateBanked_changed'])) {
-//  $Ajax->activate('_ex_rate');
-//}
 
 //----------------------------------------------------------------------------------------------
 
@@ -316,7 +313,7 @@ if (isset($_GET['trans_no']) && $_GET['trans_no'] > 0 )
                $_SESSION['alloc'] = new allocation(ST_CUSTPAYMENT,$_POST['trans_no']);
        else
        {
-               $_SESSION['alloc'] = new allocation(ST_CUSTPAYMENT,0);
+               $_SESSION['alloc'] = new allocation(ST_CUSTPAYMENT, $_POST['trans_no']);
                $Ajax->activate('alloc_tbl');
        }
 }
@@ -341,6 +338,12 @@ start_form();
                hidden('customer_id', $_POST['customer_id']);
        }
 
+       if (list_updated('customer_id') || ($new && list_updated('bank_account'))) {
+               $_SESSION['alloc']->read();
+               $_POST['memo_'] = $_POST['amount'] = $_POST['discount'] = '';
+               $Ajax->activate('alloc_tbl');
+       }
+
        if (db_customer_has_branches($_POST['customer_id'])) {
                customer_branches_list_row(_("Branch:"), $_POST['customer_id'], 'BranchID', null, false, true, true);
        } else {
index 64a237f320aa824db88f3377e653e6615cbc7132..60491f564b3202acbc4ba095236198337462d906 100644 (file)
@@ -64,22 +64,31 @@ class cart
        var $tax_group_array = null; // saves db queries
        var $price_factor;       // ditto for price calculations
 
-       var     $pos;                   // user assigned POS (contains cash accont number/name)
+       var     $pos;                   // user assigned POS
+       var $cash_account;
+       var $account_name;
        var $cash_discount;     // not used as of FA 2.1
        var $dimension_id;
        var $dimension2_id;
        var $payment;
        var $payment_terms; // cached payment terms
        var $credit;
+       // prepayment mode:
+       var $prepaid;           // true for documents issued in prepayment mode
+       var $prep_amount;       // prepayment required for SO, invoiced amount for prepaiament invoice
+       var $sum_paid;          // sum of all allocated prepayments both to order and related invoices
+       var $alloc;             // sum of payments allocated to this document
+       var $prepayments = array(); // allocation records for this document
        var $ex_rate;
 
        //-------------------------------------------------------------------------
        //
        //  $trans_no==0 => open new/direct document
-       //  $trans_no!=0 && $prep_child==false => update with parent constarints for reedition
-       //  $trans_no!=0 && $prep_child==true => prepare for child doc entry
+       //  $trans_no!=0 && $prepare_child==false => update with parent constarints for reedition
+       //  $trans_no!=0 && $prepare_child==true => prepare for child doc entry
+       //      $prepare_child is set to ST_SALESINVOICE for prepayment invoices
        //
-       function Cart($type, $trans_no=0, $prep_child=false) {
+       function Cart($type, $trans_no=0, $prepare_child=false) {
                /*Constructor function initialises a new shopping cart */
                $this->line_items = array();
                $this->sales_type = "";
@@ -90,7 +99,7 @@ class cart
                $this->dimension_id = 0;
                $this->dimension2_id = 0;
                $this->pos = get_sales_point(user_pos());
-               $this->read($type, $trans_no, $prep_child);
+               $this->read($type, $trans_no, $prepare_child);
                $this->cart_id = uniqid('');
        }
 
@@ -118,11 +127,12 @@ class cart
        //
        //      Prepare cart to new child document entry, just after initial parent doc read.
        //
-       function prepare_child()
+       function prepare_child($type)
        {
                global $Refs;
 
-               $type = get_child_type($this->trans_type);
+               if ($type === true)
+                       $type = get_child_type($this->trans_type);
 
                $this->trans_type = $type;
                $this->reference = $Refs->get_next($this->trans_type);
@@ -134,7 +144,8 @@ class cart
                for($line_no = 0; $line_no < count($this->line_items); $line_no++) {
                        $line = &$this->line_items[$line_no];
                        $line->src_id = $line->id; // save src line ids for update
-                       $line->qty_dispatched = $type == ST_CUSTCREDIT ? '0' : $line->quantity - $line->qty_done;
+                       $line->qty_dispatched = $type == ST_CUSTCREDIT ? '0' : 
+                                (($this->prepaid && $type == ST_SALESINVOICE) ? $line->quantity : $line->quantity - $line->qty_done);
                        $line->qty_old = 0;
                }
                unset($line);
@@ -188,7 +199,7 @@ class cart
        //-------------------------------------------------------------------------
        // Reading document into cart
        //
-       function read($type, $trans_no=0, $prep_child=false) {
+       function read($type, $trans_no=0, $prepare_child=false) {
 
                global $SysPrefs, $Refs;
 
@@ -198,7 +209,8 @@ class cart
                        if ($type == ST_SALESORDER || $type == ST_SALESQUOTE) { // sales order || sales quotation
                                read_sales_order($trans_no[0], $this, $type);
                        } else {        // other type of sales transaction
-                                       read_sales_trans($type, $trans_no, $this); 
+                                       read_sales_trans($type, $trans_no, $this);
+                                       $this->prepayments = get_payments_for($trans_no[0], $type);
                                        if ($this->order_no) { // free hand credit notes have no order_no
                                                $sodata = get_sales_order_header($this->order_no, ST_SALESORDER);
                                                $this->cust_ref = $sodata["customer_ref"];
@@ -207,13 +219,13 @@ class cart
                                                $this->delivery_to = $sodata["deliver_to"];
                                                $this->delivery_address = $sodata["delivery_address"];
                                        // child transaction reedition - update with parent info unless it is freehand
-                                       if (!$prep_child) // this is read for view/reedition
+                                       if (!$this->is_prepaid() && !$prepare_child) // this is read for view/reedition
                                                $this->set_parent_constraints($sodata, $trans_no[0]);
                                        }
                        }
                        // convert document into child and prepare qtys for entry
-                       if ($prep_child)
-                               $this->prepare_child();
+                       if ($prepare_child)
+                               $this->prepare_child($prepare_child);
 
                } else { // new document
                                $this->trans_type = $type;
@@ -263,14 +275,15 @@ class cart
        // Writing new/modified sales document to database.
        // Makes parent documents for direct delivery/invoice by recurent call.
        // $policy - 0 or 1:  writeoff/return for IV, back order/cancel for DN
-       function write($policy=0) { 
+       function write($policy=0) {
+
                begin_transaction(); // prevents partial database changes in case of direct delivery/invoice
                if ($this->reference != 'auto' && $this->trans_no == 0 && !is_new_reference($this->reference, $this->trans_type))
                {
                        commit_transaction();
                        return -1;
-               }       
-               if (count($this->src_docs) == 0 && ($this->trans_type == ST_SALESINVOICE || $this->trans_type == ST_CUSTDELIVERY)) {
+               }
+               if (count($this->src_docs) == 0 && ($this->trans_type == ST_SALESINVOICE || $this->trans_type == ST_CUSTDELIVERY) && !$this->is_prepaid()) {
                        // this is direct document - first add parent
                        $ref = $this->reference;
                        $date = $this->document_date;
@@ -513,7 +526,7 @@ class cart
        function get_shipping_tax()
        {
 
-               $tax_items = get_shipping_tax_as_array();
+               $tax_items = get_shipping_tax_as_array($this->tax_group_id);
                $tax_rate = 0;
                if ($tax_items != null) {
                        foreach ($tax_items as $item_tax) {
@@ -544,6 +557,52 @@ class cart
 
                return $total;
        }
+
+       /*
+               Returns true for documents issued in prepayment cycle.
+       */
+       function is_prepaid()
+       {
+               return $this->prepaid; //floatcmp($this->prep_amount, 0) > 0;
+       }
+       /*
+               Order is ready for delivery in prepament mode.
+       */
+       function is_released()
+       {
+               return floatcmp($this->sum_paid, $this->prep_amount) >= 0;
+       }
+
+       /*
+               Check whether order has been already invoiced/send or not.
+       */
+       function is_started()
+       {
+               if ($this->trans_no==0)
+                       return false;
+               $order_no = array_keys($this->trans_no);
+
+               return  is_sales_order_started(reset($order_no));
+       }
+
+       /*
+               Check payment terms and prepayments selected for this invoice,
+               and updates     partial/final invoice value respectively.
+       */
+       function update_payments()
+       {
+               $remainder = prepaid_invoice_remainder($this->order_no);
+
+               // recalculate prepaid part from payments
+               if ($this->payment_terms['days_before_due'] < 0)
+               {       // this is partial invoice for selected prepayments made.
+                       $paid = 0;
+                       foreach($this->prepayments as $payment)
+                               $paid += $payment['amt'];
+                       $this->prep_amount = min($remainder, $paid);
+               } else  // this is final invoice
+                       $this->prep_amount = $remainder;
+       }
 } /* end of class defintion */
 
 class line_details
index c02b74c2d8ad81747cbbd572c69a099555774e3b..09b1fbe4f28af171c013cd574c5bbc028b5bdf9c 100644 (file)
 function add_branch($customer_id, $br_name, $br_ref, $br_address, $salesman, $area, 
        $tax_group_id, $sales_account, $sales_discount_account, $receivables_account, 
        $payment_discount_account, $default_location, $br_post_address, $disable_trans, $group_no,
-       $default_ship_via, $notes)
+       $default_ship_via, $notes, $bank_account)
 {
        $sql = "INSERT INTO ".TB_PREF."cust_branch (debtor_no, br_name, branch_ref, br_address,
                salesman, area, tax_group_id, sales_account, receivables_account, payment_discount_account, 
                sales_discount_account, default_location,
-               br_post_address, disable_trans, group_no, default_ship_via, notes)
+               br_post_address, disable_trans, group_no, default_ship_via, notes, bank_account)
                VALUES (".db_escape($customer_id). ",".db_escape($br_name) . ", "
                        .db_escape($br_ref) . ", "
                        .db_escape($br_address) . ", ".db_escape($salesman) . ", "
@@ -32,14 +32,15 @@ function add_branch($customer_id, $br_name, $br_ref, $br_address, $salesman, $ar
                        .db_escape($disable_trans) . ", "
                        .db_escape($group_no) . ", "
                        .db_escape($default_ship_via). ", "
-                       .db_escape($notes).")";
+                       .db_escape($notes). ", "
+                       .db_escape($bank_account, true).")";
        db_query($sql,"The branch record could not be added");
 }
 
 function update_branch($customer_id, $branch_code, $br_name, $br_ref, $br_address,
        $salesman, $area, $tax_group_id, $sales_account, $sales_discount_account, $receivables_account, 
        $payment_discount_account, $default_location, $br_post_address, $disable_trans, $group_no,
-       $default_ship_via, $notes)
+       $default_ship_via, $notes, $bank_account)
 {
        $sql = "UPDATE ".TB_PREF."cust_branch SET br_name = " . db_escape($br_name) . ",
                branch_ref = " . db_escape($br_ref) . ",
@@ -56,7 +57,8 @@ function update_branch($customer_id, $branch_code, $br_name, $br_ref, $br_addres
                disable_trans=".db_escape($disable_trans) . ",
                group_no=".db_escape($group_no) . ", 
                default_ship_via=".db_escape($default_ship_via) . ",
-               notes=".db_escape($notes) . "
+               notes=".db_escape($notes) . ",
+               bank_account=".db_escape($bank_account, true)."
                WHERE branch_code =".db_escape($branch_code) . "
                AND debtor_no=".db_escape($customer_id);
        db_query($sql,"The branch record could not be updated");
index efb6b25f97fa0139177d3e57309fd140de6474a1..36697ced6f553f4a549b8860089aad5470df2184 100644 (file)
@@ -43,7 +43,7 @@ function get_customer_trans_version($type, $trans_no) {
        $sql .= implode(' OR ', $trans_no) . ')';
 
        $res = db_query($sql, 'document version retreival');
-       
+
        $vers = array();
        while($mysql=db_fetch($res)) {
                $vers[$mysql['trans_no']] = $mysql['version'];
@@ -56,7 +56,7 @@ function get_customer_trans_version($type, $trans_no) {
 function write_customer_trans($trans_type, $trans_no, $debtor_no, $BranchNo,
        $date_, $reference, $Total, $discount=0, $Tax=0, $Freight=0, $FreightTax=0,
        $sales_type=0, $order_no=0, $ship_via=0, $due_date="",
-       $AllocAmt=0, $rate=0, $dimension_id=0, $dimension2_id=0, $payment_terms=null)
+       $AllocAmt=0, $rate=0, $dimension_id=0, $dimension2_id=0, $payment_terms=null, $tax_included=0, $prep_amount=0)
 {
        $new = $trans_no==0;
        $curr = get_customer_currency($debtor_no);
@@ -85,7 +85,7 @@ function write_customer_trans($trans_type, $trans_no, $debtor_no, $BranchNo,
                order_, ov_amount, ov_discount,
                ov_gst, ov_freight, ov_freight_tax,
                rate, ship_via, alloc,
-               dimension_id, dimension2_id, payment_terms
+               dimension_id, dimension2_id, payment_terms, tax_included, prep_amount
                ) VALUES (".db_escape($trans_no).", ".db_escape($trans_type).",
                ".db_escape($debtor_no).", ".db_escape($BranchNo).",
                '$SQLDate', '$SQLDueDate', ".db_escape($reference).",
@@ -93,7 +93,8 @@ function write_customer_trans($trans_type, $trans_no, $debtor_no, $BranchNo,
                ".db_escape($Freight).",
                $FreightTax, $rate, ".db_escape($ship_via).", $AllocAmt,
                ".db_escape($dimension_id).", ".db_escape($dimension2_id).", "
-               .db_escape($payment_terms, true).")";
+               .db_escape($payment_terms, true).", "
+               .db_escape($tax_included).", ".db_escape($prep_amount).")";
        } else {        // may be optional argument should stay unchanged ?
        $sql = "UPDATE ".TB_PREF."debtor_trans SET
                debtor_no=".db_escape($debtor_no)." , branch_code=".db_escape($BranchNo).",
@@ -103,7 +104,9 @@ function write_customer_trans($trans_type, $trans_no, $debtor_no, $BranchNo,
                ov_freight=".db_escape($Freight).", ov_freight_tax=$FreightTax, rate=$rate,
                ship_via=".db_escape($ship_via).", alloc=$AllocAmt,
                dimension_id=".db_escape($dimension_id).", dimension2_id=".db_escape($dimension2_id).",
-               payment_terms=".db_escape($payment_terms, true)."
+               payment_terms=".db_escape($payment_terms, true).",
+               tax_included=".db_escape($tax_included).",
+               prep_amount =".db_escape($prep_amount)."
                WHERE trans_no=".db_escape($trans_no)." AND type=".db_escape($trans_type);
        }
        db_query($sql, "The debtor transaction record could not be inserted");
@@ -122,7 +125,8 @@ function get_customer_trans($trans_id, $trans_type)
                ."ov_amount+ov_gst+ov_freight+ov_freight_tax+ov_discount AS Total,"
                ."cust.name AS DebtorName, cust.address, "
                ."cust.curr_code, "
-               ."cust.tax_id, "
+               ."cust.tax_id,
+               trans.prep_amount>0 as prepaid,"
                ."com.memo_";
 
        if ($trans_type == ST_CUSTPAYMENT || $trans_type == ST_BANKDEPOSIT) {
@@ -248,7 +252,7 @@ function void_customer_trans($type, $type_no)
 {
        // clear all values and mark as void
        $sql = "UPDATE ".TB_PREF."debtor_trans SET ov_amount=0, ov_discount=0, ov_gst=0, ov_freight=0,
-               ov_freight_tax=0, alloc=0, version=version+1 WHERE type=".db_escape($type)." AND trans_no=".db_escape($type_no);
+               ov_freight_tax=0, alloc=0, prep_amount=0, version=version+1 WHERE type=".db_escape($type)." AND trans_no=".db_escape($type_no);
 
        db_query($sql, "could not void debtor transactions for type=$type and trans_no=$type_no");
 }
@@ -374,7 +378,7 @@ function get_sql_for_sales_deliveries_view($selected_customer, $selected_stock_i
                        trans.due_date,
                        (ov_amount+ov_gst+ov_freight+ov_freight_tax) AS DeliveryValue,
                        debtor.curr_code,
-                       Sum(line.quantity-line.qty_done) AS Outstanding,
+                       Sum(line.quantity-line.qty_done) AND sorder.prep_amount=0 AS Outstanding,
                        Sum(line.qty_done) AS Done
                FROM "
                 .TB_PREF."sales_orders as sorder, "
index a3abb44bdb93119746ec8c87d82cfcf55049b30f..477002a000c242e61bc778558f119d2be5d9291f 100644 (file)
@@ -48,6 +48,12 @@ function update_debtor_trans_allocation($trans_type, $trans_no)
        db_query($sql, "The debtor transaction record could not be modified for the allocation against it");
 }
 
+function get_cust_allocation($trans_id)
+{
+       $sql = "SELECT * FROM ".TB_PREF."cust_allocations WHERE id = ".db_escape($trans_id);
+       return db_fetch(db_query($sql), "Cannot retrieve customer allocation $trans_id");
+}
+
 //-------------------------------------------------------------------------------------------------------------
 
 function void_cust_allocations($type, $type_no, $date="")
@@ -59,40 +65,31 @@ function void_cust_allocations($type, $type_no, $date="")
 
 function clear_cust_alloctions($type, $type_no, $date="")
 {
-       // clear any allocations for this transaction
-       $sql = "SELECT * FROM ".TB_PREF."cust_allocations
-               WHERE (trans_type_from=".db_escape($type)." AND trans_no_from=".db_escape($type_no).")
-               OR (trans_type_to=".db_escape($type)." AND trans_no_to=".db_escape($type_no).")";
-       $result = db_query($sql, "could not void debtor transactions for type=$type and trans_no=$type_no");
-
-       while ($row = db_fetch($result))
-       {
-               $sql = "UPDATE ".TB_PREF."debtor_trans SET alloc=alloc - " . $row['amt'] . "
-                       WHERE (type= " . $row['trans_type_from'] . " AND trans_no=" . $row['trans_no_from'] . ")
-                       OR (type=" . $row['trans_type_to'] . " AND trans_no=" . $row['trans_no_to'] . ")";
+       $sql = "UPDATE  ".TB_PREF."cust_allocations ca
+                               LEFT JOIN ".TB_PREF."debtor_trans paym ON ca.trans_type_from=paym.type AND ca.trans_no_from=paym.trans_no
+                               LEFT JOIN ".TB_PREF."debtor_trans dt ON ca.trans_type_to=dt.type AND ca.trans_no_to=dt.trans_no
+                               LEFT JOIN ".TB_PREF."sales_orders so ON ca.trans_type_to=so.trans_type AND ca.trans_no_to=so.order_no
+                       SET paym.alloc=paym.alloc - ca.amt,
+                               dt.alloc=dt.alloc -  ca.amt,
+                               so.alloc=so.alloc -  ca.amt
+                       WHERE  (ca.trans_type_from=".db_escape($type)." AND ca.trans_no_from=".db_escape($type_no).")
+                               OR (ca.trans_type_to=".db_escape($type)." AND ca.trans_no_to=".db_escape($type_no).")";
                db_query($sql, "could not clear allocation");
-               // 2008-09-20 Joe Hunt
-               if ($date != "")
-                       exchange_variation($type, $type_no, $row['trans_type_to'], $row['trans_no_to'], $date,
-                               $row['amt'], PT_CUSTOMER, true);
-               // 2014-01-16 Joe Hunt. Fix for voiding allocated currency sales_invoices.              
-               elseif ($type == ST_SALESINVOICE && $row['trans_type_to'] == $type && $row['trans_no_to'] == $type_no)          
-                       exchange_variation($row['trans_type_from'], $row['trans_no_from'], $row['trans_type_to'], $row['trans_no_to'], 
-                               sql2date($row['date_alloc']), $row['amt'], PT_CUSTOMER, true);
-               //////////////////////
-       }
-
 
        // remove any allocations for this transaction
        $sql = "DELETE FROM ".TB_PREF."cust_allocations
-               WHERE (trans_type_from=".db_escape($type)." AND trans_no_from=".db_escape($type_no).")
-               OR (trans_type_to=".db_escape($type)." AND trans_no_to=".db_escape($type_no).")";
+                       WHERE  (trans_type_from=".db_escape($type)." AND trans_no_from=".db_escape($type_no).")
+                               OR (trans_type_to=".db_escape($type)." AND trans_no_to=".db_escape($type_no).")";
 
        db_query($sql, "could not void debtor transactions for type=$type and trans_no=$type_no");
+// is this necessary?
+//     if ($date != "")
+//             exchange_variation($type, $type_no, $row['trans_type_to'], $row['trans_no_to'], $date,
+//                     $row['amt'], PT_CUSTOMER, true);
 }
-//----------------------------------------------------------------------------------------
+//-------------------------------------------------------------------------------------------------------------
 
-function get_alloc_trans_sql($extra_fields=null, $extra_conditions=null, $extra_tables=null)
+function get_allocatable_from_cust_sql($customer_id=null, $settled)
 {
        $sql = "SELECT
                trans.type,
@@ -100,99 +97,150 @@ function get_alloc_trans_sql($extra_fields=null, $extra_conditions=null, $extra_
                trans.reference,
                trans.tran_date,
                debtor.name AS DebtorName, 
-               debtor.curr_code, 
+               debtor.curr_code,
                ov_amount+ov_gst+ov_freight+ov_freight_tax+ov_discount AS Total,
                trans.alloc,
                trans.due_date,
                debtor.address,
                trans.version,
-               trans.debtor_no ";
-
-       if ($extra_fields)
-               $sql .= ", $extra_fields ";
-
-       $sql .= " FROM ".TB_PREF."debtor_trans as trans, "
-                               .TB_PREF."debtors_master as debtor";
-       if ($extra_tables)
-               $sql .= ",$extra_tables ";
+               round(abs(ov_amount+ov_gst+ov_freight+ov_freight_tax+ov_discount-alloc),6) <= 0 AS settled,
+               trans.debtor_no
+        FROM "
+               .TB_PREF."debtor_trans as trans, "
+               .TB_PREF."debtors_master as debtor"
+       ." WHERE trans.debtor_no=debtor.debtor_no
+               AND (((type=".ST_CUSTPAYMENT." OR type=".ST_BANKDEPOSIT.") AND (trans.ov_amount > 0))"
+               ." OR (type=".ST_CUSTCREDIT." AND (ov_amount+ov_gst+ov_freight+ov_freight_tax+ov_discount)>0))";
 
-       $sql .= " WHERE trans.debtor_no=debtor.debtor_no";
+       if (!$settled)
+               $sql .= " AND (round(abs(ov_amount+ov_gst+ov_freight+ov_freight_tax-ov_discount-alloc),6) > 0)";
 
-       if ($extra_conditions)
-               $sql .= " AND $extra_conditions ";
+       if ($customer_id != null)
+               $sql .= " AND trans.debtor_no = ".db_escape($customer_id);
 
        return $sql;
 }
 
-
-//-------------------------------------------------------------------------------------------------------------
-
-function get_allocatable_from_cust_sql($customer_id, $settled)
+function get_allocatable_sales_orders($customer_id = null, $trans_no=null, $type=null)
 {
-       $settled_sql = "";
-       if (!$settled)
+       $sql = "SELECT
+               sorder.trans_type as type,
+               sorder.order_no as trans_no,
+               sorder.reference,
+               sorder.ord_date,
+               debtor.name AS DebtorName, 
+               debtor.curr_code,
+               total-IFNULL(invoiced.amount,0) as Total,
+               sorder.alloc,
+               sorder.delivery_date as due_date,
+               debtor.address,
+               sorder.version,
+               amt
+               FROM ".TB_PREF."sales_orders as sorder
+                       LEFT JOIN ".TB_PREF."debtors_master as debtor ON sorder.debtor_no = debtor.debtor_no
+                       LEFT JOIN ".TB_PREF."cust_allocations as alloc ON sorder.order_no = alloc.trans_no_to AND sorder.trans_type = alloc.trans_type_to
+                       LEFT JOIN (SELECT order_, sum(prep_amount) amount FROM ".TB_PREF."debtor_trans dt
+                       WHERE prep_amount>0 AND dt.type=".ST_SALESINVOICE." GROUP BY order_) as invoiced ON sorder.order_no = invoiced.order_
+               WHERE sorder.trans_type=".ST_SALESORDER;
+
+       if ($trans_no != null and $type != null)
        {
-               $settled_sql = " AND (round(ov_amount+ov_gst+ov_freight+ov_freight_tax-ov_discount-alloc,6) > 0)";
+               $sql .= " AND alloc.trans_no_from=".db_escape($trans_no)."
+                                 AND alloc.trans_type_from=".db_escape($type);
        }
-       $cust_sql = "";
-       if ($customer_id != null)
-               $cust_sql = " AND trans.debtor_no = ".db_escape($customer_id);
+       else
+       {
+               $sql .= " AND round(sorder.prep_amount)>0 and Total>0"; // only sales orders with prepayment level set and no yet fully invoiced
+       }
+       if ($customer_id)
+               $sql .= " AND sorder.debtor_no=".db_escape($customer_id);
 
-       $sql = get_alloc_trans_sql("round(ov_amount+ov_gst+ov_freight+ov_freight_tax+ov_discount-alloc,6) <= 0 AS settled",
-               "(type=".ST_CUSTPAYMENT." OR type=".ST_CUSTCREDIT." OR type=".ST_BANKDEPOSIT.") AND (trans.ov_amount > 0) " . $settled_sql . $cust_sql);
+       $sql .= " GROUP BY sorder.order_no";
 
        return $sql;
 }
-
 //-------------------------------------------------------------------------------------------------------------
 
-function get_allocatable_to_cust_transactions($customer_id, $trans_no=null, $type=null)
+function get_allocatable_to_cust_transactions($customer_id = null, $trans_no=null, $type=null)
 {
+       $sql = "SELECT
+               trans.type,
+               trans.trans_no,
+               trans.reference,
+               trans.tran_date,
+               debtor.name AS DebtorName, 
+               debtor.curr_code,
+               ov_amount+ov_gst+ov_freight+ov_freight_tax+ov_discount AS Total,
+               trans.alloc,
+               trans.due_date,
+               debtor.address,
+               trans.version,
+               amt
+        FROM ".TB_PREF."debtor_trans as trans
+                       LEFT JOIN ".TB_PREF."cust_allocations as alloc ON trans.trans_no = alloc.trans_no_to AND trans.type = alloc.trans_type_to,"
+                       .TB_PREF."debtors_master as debtor
+        WHERE
+                trans.debtor_no=debtor.debtor_no";
+       if ($customer_id)
+               $sql .= " AND trans.debtor_no=".db_escape($customer_id);
+
        if ($trans_no != null and $type != null)
        {
-               $sql = get_alloc_trans_sql("amt", "trans.trans_no = alloc.trans_no_to
-                       AND trans.type = alloc.trans_type_to
-                       AND alloc.trans_no_from=".db_escape($trans_no)."
-                       AND alloc.trans_type_from=".db_escape($type)."
-                       AND trans.debtor_no=".db_escape($customer_id),
-                       "".TB_PREF."cust_allocations as alloc");
+               $sql .= " AND alloc.trans_no_from=".db_escape($trans_no)."
+                                 AND alloc.trans_type_from=".db_escape($type);
        }
        else
        {
-               $sql = get_alloc_trans_sql(null, "round(ov_amount+ov_gst+ov_freight+ov_freight_tax+ov_discount-alloc,6) > 0
-                       AND trans.type <> " . ST_CUSTPAYMENT . "
-                       AND trans.type <> " . ST_BANKDEPOSIT . "
-                       AND trans.type <> " . ST_CUSTCREDIT . "
-                       AND trans.type <> " . ST_CUSTDELIVERY . "
-                       AND trans.debtor_no=".db_escape($customer_id));
+               $sql .= " AND round(IF(prep_amount, prep_amount, ov_amount+ov_gst+ov_freight+ov_freight_tax+ov_discount)-alloc,6) > 0
+                       AND trans.type NOT IN (".implode(',',array(ST_CUSTPAYMENT,ST_BANKDEPOSIT,ST_CUSTCREDIT,ST_CUSTDELIVERY)).")";
+               $sql .= " GROUP BY type, trans_no";
        }
+       $orders = get_allocatable_sales_orders($customer_id, $trans_no, $type);
+       $sql = "($sql ORDER BY trans_no) \nUNION \n($orders)";
 
-       return db_query($sql." ORDER BY trans_no", "Cannot retreive alloc to transactions");
+       return db_query($sql, "Cannot retreive alloc to transactions");
 }
 
 //-------------------------------------------------------------------------------------------------------------
 
 function get_allocatable_from_cust_transactions($customer_id, $trans_no=null, $type=null)
 {
+
+       $sql = "SELECT
+               trans.type,
+               trans.trans_no,
+               trans.reference,
+               trans.tran_date,
+               debtor.name AS DebtorName, 
+               debtor.curr_code,
+               ov_amount+ov_gst+ov_freight+ov_freight_tax+ov_discount AS Total,
+               trans.alloc,
+               trans.due_date,
+               debtor.address,
+               trans.version,
+               amt
+        FROM  ".TB_PREF."debtor_trans as trans,"
+                       .TB_PREF."debtors_master as debtor,"
+                       .TB_PREF."cust_allocations as alloc
+        WHERE trans.debtor_no=debtor.debtor_no
+                       AND trans.trans_no = alloc.trans_no_from
+                       AND trans.type = alloc.trans_type_from";
+
        if ($trans_no != null and $type != null)
        {
-               $sql = get_alloc_trans_sql("amt", "trans.trans_no = alloc.trans_no_from
-                       AND trans.type = alloc.trans_type_from
-                       AND alloc.trans_no_to=".db_escape($trans_no)."
-                       AND alloc.trans_type_to=".db_escape($type)."
-                       AND trans.debtor_no=".db_escape($customer_id),
-                       "".TB_PREF."cust_allocations as alloc");
+               $sql .= " AND alloc.trans_no_to=".db_escape($trans_no)."
+                                 AND alloc.trans_type_to=".db_escape($type);
        }
        else
        {
-               $sql = get_alloc_trans_sql(null, "round(ov_amount+ov_gst+ov_freight+ov_freight_tax+ov_discount-alloc,6) > 0
-                       AND trans.type <> " . ST_CUSTPAYMENT . "
-                       AND trans.type <> " . ST_BANKDEPOSIT . "
-                       AND trans.type <> " . ST_CUSTCREDIT . "
-                       AND trans.type <> " . ST_CUSTDELIVERY . "
-                       AND trans.debtor_no=".db_escape($customer_id));
+               $sql .= " AND round(ov_amount+ov_gst+ov_freight+ov_freight_tax+ov_discount-alloc,6) > 0
+                       AND trans.type NOT IN (".implode(',',array(ST_CUSTPAYMENT,ST_BANKDEPOSIT,ST_CUSTCREDIT,ST_CUSTDELIVERY)).")";
+               $sql .= " GROUP BY type, trans_no";
        }
 
+       if($customer_id)
+               $sql .= " AND trans.debtor_no=".db_escape($customer_id);
+
        return db_query($sql." ORDER BY trans_no", "Cannot retreive alloc to transactions");
 }
 
@@ -210,12 +258,12 @@ function get_sql_for_customer_allocation_inquiry($from, $to, $customer, $filterT
                trans.due_date,
                debtor.name,
                debtor.curr_code,
+               debtor.debtor_no,
        (trans.ov_amount + trans.ov_gst + trans.ov_freight 
                        + trans.ov_freight_tax + trans.ov_discount)     AS TotalAmount,
                trans.alloc AS Allocated,
                ((trans.type = ".ST_SALESINVOICE.")
-                       AND trans.due_date < '" . date2sql(Today()) . "') AS OverDue,
-               trans.debtor_no
+                       AND trans.due_date < '" . date2sql(Today()) . "') AS OverDue
        FROM "
                        .TB_PREF."debtor_trans as trans, "
                        .TB_PREF."debtors_master as debtor
@@ -260,9 +308,9 @@ function get_sql_for_customer_allocation_inquiry($from, $to, $customer, $filterT
 
        if (!$settled)
        {
-               $sql .= " AND (round(abs(trans.ov_amount + trans.ov_gst + "
+               $sql .= " AND (round(IF(trans.prep_amount,trans.prep_amount, abs(trans.ov_amount + trans.ov_gst + "
                ."trans.ov_freight + trans.ov_freight_tax + "
-               ."trans.ov_discount) - trans.alloc,6) != 0) ";
+               ."trans.ov_discount)) - trans.alloc,6) != 0) ";
        }
 
        return $sql;
@@ -304,9 +352,9 @@ function credit_sales_invoice_allocate($invoice_no, $credit_no, $amount, $date)
  Check all credit notes allocated to this invoice for summarized freight charges."));
                return false;
        }
-       add_cust_allocation($amount, ST_CUSTCREDIT, $credit_no, ST_SALESINVOICE, $invoice_no);
        update_debtor_trans_allocation(ST_SALESINVOICE, $invoice_no);
        update_debtor_trans_allocation(ST_CUSTCREDIT, $credit_no);
+       add_cust_allocation($amount, ST_CUSTCREDIT, $credit_no, ST_SALESINVOICE, $invoice_no);
 
        exchange_variation(ST_CUSTCREDIT, $credit_no, ST_SALESINVOICE, $invoice_no, $date,
                $amount, PT_CUSTOMER);
index 36db9e1a93b453196facf1964841f61629ce7195..3b936a33e9388125b2b8033e79c4958a9566d529 100644 (file)
@@ -24,7 +24,6 @@ function add_customer($CustName, $cust_ref, $address, $tax_id, $curr_code,
                " . db_escape($credit_status) . ", ".db_escape($payment_terms) . ", " . $discount . ", 
                " . $pymt_discount . ", " . $credit_limit 
                 .", ".db_escape($sales_type).", ".db_escape($notes) . ")";
-
        db_query($sql,"The customer could not be added");
 }
 
index 81ea49ce6ba625f96639eeff9d388ad9612ecc2c..4aa4d4e1ff6f5f89efe5468e2852948955d93664 100644 (file)
@@ -90,7 +90,7 @@ function write_customer_payment($trans_no, $customer_id, $branch_id, $bank_accou
 
        if ($charge != 0)       {
                /* Now Debit bank charge account with charges */
-               $charge_act = get_company_pref('bank_charge_act');
+               $charge_act = get_bank_charge_account($bank_account);
                $total += add_gl_trans(ST_CUSTPAYMENT, $payment_no, $date_,     $charge_act, 0, 0, '', 
                        $charge, $bank['bank_curr_code'], PT_CUSTOMER,  $customer_id);
        }
index e7b97e55d789648f2c763bbc48aa54f3eb292397..0330efce8a9c7b39d6959369d232ff4afbc7d93a 100644 (file)
@@ -81,7 +81,7 @@ function write_credit_note(&$credit_note, $write_off_acc)
                $credit_note->freight_cost, $freight_added_tax,
                $credit_note->sales_type, $credit_note->order_no, $credit_note->ship_via,
                null, $alloc, 0, $credit_note->dimension_id, $credit_note->dimension2_id,
-               $credit_note->payment); 
+               $credit_note->payment, $credit_note->tax_included); 
                // 2008-06-14 extra $alloc, 2008-11-12 dimension_id Joe Hunt
 
        if ($trans_no==0) {
@@ -178,7 +178,6 @@ function write_credit_note(&$credit_note, $write_off_acc)
 // Insert a stock movement coming back in to show the credit note and
 //     a reversing stock movement to show the write off
 //
-
 function add_credit_movements_item(&$credit_note, &$credit_line,
        $credit_type, $price, $credited_invoice=0)
 {
index 90ef315e83b4b0330950f66c39ce0afc7847365f..b7b8320b25cfcc213f9bbbb2cc82a15743757565 100644 (file)
@@ -49,7 +49,7 @@ function write_sales_delivery(&$delivery,$bo_policy)
                $delivery->tax_included ? 0 : $freight_tax,
                $delivery->sales_type, $delivery->order_no,
                $delivery->ship_via, $delivery->due_date, 0, 0, $delivery->dimension_id, 
-               $delivery->dimension2_id, $delivery->payment);
+               $delivery->dimension2_id, $delivery->payment, $delivery->tax_included, $delivery->prep_amount);
 
        if ($trans_no == 0) {
                $delivery->trans_no = array($delivery_no=>0);
@@ -60,6 +60,12 @@ function write_sales_delivery(&$delivery,$bo_policy)
                delete_comments(ST_CUSTDELIVERY, $delivery_no);
        }
 
+       // for prepaid delivery repost income from deffered account
+       if ($delivery->is_prepaid())
+       {
+               $branch_data = get_branch_accounts($delivery->Branch);
+               $total = 0;
+       }
        foreach ($delivery->line_items as $line_no => $delivery_line) {
 
                $line_price = $delivery_line->line_price();
@@ -91,19 +97,26 @@ function write_sales_delivery(&$delivery,$bo_policy)
                                -$delivery_line->qty_dispatched, $delivery_line->standard_cost,1,
                                $line_price, $delivery_line->discount_percent);
 
-
                        $stock_gl_code = get_stock_gl_code($delivery_line->stock_id);
 
+                       // 2008-08-01. If there is a Customer Dimension, then override with this,
+                       // else take the Item Dimension (if any)
+                       $dim = ($delivery->dimension_id != $customer['dimension_id'] ? $delivery->dimension_id : 
+                               ($customer['dimension_id'] != 0 ? $customer["dimension_id"] : $stock_gl_code["dimension_id"]));
+                       $dim2 = ($delivery->dimension2_id != $customer['dimension2_id'] ? $delivery->dimension2_id : 
+                               ($customer['dimension2_id'] != 0 ? $customer["dimension2_id"] : $stock_gl_code["dimension2_id"]));
+                       if ($delivery->is_prepaid())
+                       {
+                               $sales_account = ($branch_data['sales_account'] != "" ? $branch_data['sales_account'] : $stock_gl_code['sales_account']);
+
+                               $total += add_gl_trans_customer(ST_CUSTDELIVERY, $delivery_no, $delivery->document_date, $sales_account, $dim, $dim2,
+                                       -$line_taxfree_price*$delivery_line->qty_dispatched, // FIXME - calculation order should be exactly like in invoice to minimalize roundings
+                                       $delivery->customer_id, "The sales price GL posting could not be inserted");
+                       }
                        /* insert gl_trans to credit stock and debit cost of sales at standard cost*/
                        if (is_inventory_item($delivery_line->stock_id) && $delivery_line->standard_cost != 0) {
 
                                /*first the cost of sales entry*/
-                               // 2008-08-01. If there is a Customer Dimension, then override with this,
-                               // else take the Item Dimension (if any)
-                               $dim = ($delivery->dimension_id != $customer['dimension_id'] ? $delivery->dimension_id : 
-                                       ($customer['dimension_id'] != 0 ? $customer["dimension_id"] : $stock_gl_code["dimension_id"]));
-                               $dim2 = ($delivery->dimension2_id != $customer['dimension2_id'] ? $delivery->dimension2_id : 
-                                       ($customer['dimension2_id'] != 0 ? $customer["dimension2_id"] : $stock_gl_code["dimension2_id"]));
 
                                add_gl_trans_std_cost(ST_CUSTDELIVERY, $delivery_no,
                                        $delivery->document_date, $stock_gl_code["cogs_account"], $dim, $dim2, "",
@@ -124,6 +137,13 @@ function write_sales_delivery(&$delivery,$bo_policy)
                } /*quantity dispatched is more than 0 */
        } /*end of order_line loop */
 
+       if ($delivery->is_prepaid())
+       {
+               $deferred_act = get_company_pref('deferred_income_act');
+               add_gl_trans_customer(ST_CUSTDELIVERY, $delivery_no, $delivery->document_date, $deferred_act, 0, 0,
+                       -$total, $delivery->customer_id, "The deferred income GL posting could not be inserted");
+       }
+
        if ($bo_policy == 0) {
                // if cancelling any remaining quantities
                close_sales_order($delivery->order_no);
@@ -144,7 +164,8 @@ function write_sales_delivery(&$delivery,$bo_policy)
        if ($trans_no == 0) {
                        $Refs->save(ST_CUSTDELIVERY, $delivery_no, $delivery->reference);
        }
-
+//_vd(get_gl(ST_CUSTDELIVERY, $delivery_no));
+//exit;
        hook_db_postwrite($delivery, ST_CUSTDELIVERY);
        commit_transaction();
 
index cd80b2cf939830a4d441f1cbb3711ddabf89d62d..d37463c49c7d34f99bcbea12259f85fbcf4eaac2 100644 (file)
@@ -38,13 +38,14 @@ function write_sales_invoice(&$invoice)
        $items_total = $invoice->get_items_total_dispatch();
        $freight_tax = $invoice->get_shipping_tax();
 
-       update_customer_trans_version(get_parent_type(ST_SALESINVOICE), $invoice->src_docs);
+       if (!$invoice->is_prepaid())
+               update_customer_trans_version(get_parent_type(ST_SALESINVOICE), $invoice->src_docs);
 
        $ov_gst = 0;
        $taxes = $invoice->get_taxes(); // all taxes with freight_tax
-
+       $dec = user_price_dec();
        foreach ($taxes as $taxitem) {
-               $taxitem['Value'] =  round2($taxitem['Value'], user_price_dec());
+               $taxitem['Value'] =  round2($taxitem['Value'], $dec);
                $ov_gst +=  $taxitem['Value'];
        }
 
@@ -61,24 +62,40 @@ function write_sales_invoice(&$invoice)
        if (is_array($sales_order))
                        $sales_order = $sales_order[0]; // assume all crucial SO data are same for every delivery
 
-       if ($trans_no != 0) {
-         delete_comments(ST_SALESINVOICE, $trans_no);
-         void_gl_trans(ST_SALESINVOICE, $trans_no, true);
-         void_cust_allocations(ST_SALESINVOICE, $trans_no); // ?
-         void_trans_tax_details(ST_SALESINVOICE, $trans_no);
-    } 
-    $invoice_no = write_customer_trans(ST_SALESINVOICE, $trans_no, $invoice->customer_id,
-       $invoice->Branch, $date_, $invoice->reference, $items_total, 0,
-       $items_added_tax, $invoice->freight_cost, $freight_added_tax,
-       $invoice->sales_type, $sales_order, $invoice->ship_via, 
-       $invoice->due_date, 0, 0, $invoice->dimension_id, 
-       $invoice->dimension2_id, $invoice->payment); 
-       // 2008-06-14 extra $alloc, 2008-11-12 added dimension_id Joe Hunt
+       if ($trans_no) {
+               $allocs = get_payments_for($trans_no, ST_SALESINVOICE);
+               delete_comments(ST_SALESINVOICE, $trans_no);
+               void_gl_trans(ST_SALESINVOICE, $trans_no, true);
+               void_trans_tax_details(ST_SALESINVOICE, $trans_no);
+       } else
+               $allocs = get_payments_for($invoice->order_no, ST_SALESORDER);
+
+       if ($invoice->is_prepaid()) // selected prepayment is already in cart
+       {
+               $allocs = $invoice->prepayments;
+               // values posted are reduced by prepaid_factor
+               $prepaid_factor = $invoice->prep_amount/$invoice->get_trans_total();
+       } else {
+               $prepaid_factor = 1;
+       }
+
+        // write_customer_trans have to be called after optional void_cust_allocations above
+       $invoice_no = write_customer_trans(ST_SALESINVOICE, $trans_no, $invoice->customer_id,
+               $invoice->Branch, $date_, $invoice->reference, $items_total, 0,
+               $items_added_tax, $invoice->freight_cost, $freight_added_tax,
+               $invoice->sales_type, $sales_order, $invoice->ship_via, 
+               $invoice->due_date, 0, 0, $invoice->dimension_id, 
+               $invoice->dimension2_id, $invoice->payment, $invoice->tax_included, $invoice->prep_amount); 
+               // 2008-06-14 extra $alloc, 2008-11-12 added dimension_id Joe Hunt
 
        if ($trans_no == 0) {
                $invoice->trans_no = array($invoice_no=>0);
        }
+
        $total = 0;
+       // for prepayments use deferred income account if set
+       $sales_account = $invoice->is_prepaid() ? get_company_pref('deferred_income_act') : 0;
+
        foreach ($invoice->line_items as $line_no => $invoice_line) {
                $qty = $invoice_line->qty_dispatched;
                $line_taxfree_price = get_tax_free_price_for_item($invoice_line->stock_id,
@@ -97,8 +114,12 @@ function write_sales_invoice(&$invoice)
 
                // Update delivery items for the quantity invoiced
                if ($invoice_line->qty_old != $invoice_line->qty_dispatched)
-                       update_parent_line(ST_SALESINVOICE, $invoice_line->src_id, ($invoice_line->qty_dispatched-$invoice_line->qty_old));
-
+               {
+                       if ($invoice->is_prepaid())
+                               update_prepaid_so_line($invoice_line->src_id, $invoice_line->qty_dispatched-$invoice_line->qty_old);
+                       else
+                               update_parent_line(ST_SALESINVOICE, $invoice_line->src_id, ($invoice_line->qty_dispatched-$invoice_line->qty_old));
+               }
                if ($invoice_line->qty_dispatched != 0) {
                        $stock_gl_code = get_stock_gl_code($invoice_line->stock_id);
 
@@ -107,7 +128,8 @@ function write_sales_invoice(&$invoice)
 
                                // 2008-06-14. If there is a Branch Sales Account, then override with this,
                                // else take the Item Sales Account
-                               $sales_account = ($branch_data['sales_account'] != "" ? $branch_data['sales_account'] : $stock_gl_code['sales_account']);
+                               if (!$invoice->is_prepaid())
+                                       $sales_account = ($branch_data['sales_account'] != "" ? $branch_data['sales_account'] : $stock_gl_code['sales_account']);
                                // 2008-08-01. If there is a Customer Dimension, then override with this,
                                // else take the Item Dimension (if any)
                                $dim = ($invoice->dimension_id != $customer['dimension_id'] ? $invoice->dimension_id : 
@@ -115,14 +137,14 @@ function write_sales_invoice(&$invoice)
                                $dim2 = ($invoice->dimension2_id != $customer['dimension2_id'] ? $invoice->dimension2_id : 
                                        ($customer['dimension2_id'] != 0 ? $customer["dimension2_id"] : $stock_gl_code["dimension2_id"]));
                                $total += add_gl_trans_customer(ST_SALESINVOICE, $invoice_no, $date_, $sales_account, $dim, $dim2,
-                                       -$line_taxfree_price ,
+                                       -$line_taxfree_price*$prepaid_factor,
                                        $invoice->customer_id, "The sales price GL posting could not be inserted");
 
                                if ($invoice_line->discount_percent != 0) {
 
                                        $total += add_gl_trans_customer(ST_SALESINVOICE, $invoice_no, $date_,
                                                $branch_data["sales_discount_account"], $dim, $dim2,
-                                               ($line_taxfree_price * $invoice_line->discount_percent),
+                                               ($line_taxfree_price * $invoice_line->discount_percent)*$prepaid_factor,
                                                $invoice->customer_id, "The sales discount GL posting could not be inserted");
                                } /*end of if discount !=0 */
                        }
@@ -131,34 +153,34 @@ function write_sales_invoice(&$invoice)
 
        if (($items_total + $charge_shipping) != 0) {
                $total += add_gl_trans_customer(ST_SALESINVOICE, $invoice_no, $date_, $branch_data["receivables_account"], 0, 0,
-                       ($items_total + $charge_shipping + $items_added_tax + $freight_added_tax),
+                       ($items_total + $charge_shipping + $items_added_tax + $freight_added_tax)*$prepaid_factor,
                        $invoice->customer_id, "The total debtor GL posting could not be inserted");
        }
+       $to_allocate = ($items_total + $charge_shipping + $items_added_tax + $freight_added_tax);
 
        if ($charge_shipping != 0) {
                $total += add_gl_trans_customer(ST_SALESINVOICE, $invoice_no, $date_, $company_data["freight_act"], 0, 0,
-                       -$invoice->get_tax_free_shipping(), $invoice->customer_id,
+                       -$invoice->get_tax_free_shipping()*$prepaid_factor, $invoice->customer_id,
                        "The freight GL posting could not be inserted");
        }
        // post all taxes
        foreach ($taxes as $taxitem) {
-
                if ($taxitem['Net'] != 0) {
                        $ex_rate = get_exchange_rate_from_home_currency(get_customer_currency($invoice->customer_id), $date_);
                        add_trans_tax_details(ST_SALESINVOICE, $invoice_no, $taxitem['tax_type_id'],
                                $taxitem['rate'], $invoice->tax_included, $taxitem['Value'],
-                                $taxitem['Net'], $ex_rate, $date_, $invoice->reference);
-
-                       $total += add_gl_trans_customer(ST_SALESINVOICE, $invoice_no, $date_, $taxitem['sales_gl_code'], 0, 0,
-                               (-$taxitem['Value']), $invoice->customer_id,
-                               "A tax GL posting could not be inserted");
+                                $taxitem['Net'], $ex_rate, $date_, $invoice->reference, $date_, $prepaid_factor*$taxitem['Value']);
+                       if (isset($taxitem['sales_gl_code']))
+                               $total += add_gl_trans_customer(ST_SALESINVOICE, $invoice_no, $date_, $taxitem['sales_gl_code'], 0, 0,
+                                       (-$taxitem['Value'])*$prepaid_factor, $invoice->customer_id,
+                                       "A tax GL posting could not be inserted");
                }
        }
 
        /*Post a balance post if $total != 0 */
        add_gl_balance(ST_SALESINVOICE, $invoice_no, $date_, -$total, PT_CUSTOMER, $invoice->customer_id);      
 
-       add_comments(10, $invoice_no, $date_, $invoice->Comments);
+       add_comments(ST_SALESINVOICE, $invoice_no, $date_, $invoice->Comments);
 
        if ($trans_no == 0) {
                $Refs->save(ST_SALESINVOICE, $invoice_no, $invoice->reference);
@@ -176,11 +198,22 @@ function write_sales_invoice(&$invoice)
                                _('Cash invoice').' '.$invoice_no);
                        add_cust_allocation($amount, ST_CUSTPAYMENT, $pmtno, ST_SALESINVOICE, $invoice_no);
 
-                       update_debtor_trans_allocation(ST_SALESINVOICE, $invoice_no, $amount);
-                       update_debtor_trans_allocation(ST_CUSTPAYMENT, $pmtno, $amount);
+                       update_debtor_trans_allocation(ST_SALESINVOICE, $invoice_no);
+                       update_debtor_trans_allocation(ST_CUSTPAYMENT, $pmtno);
                }
        }
+//_vd($allocs);
+       reallocate_payments($invoice_no, ST_SALESINVOICE, $date_, $to_allocate, $allocs);
+//_vd(get_payments_for($sales_order, ST_SALESORDER));
+//_vd(get_payments_for($invoice_no, ST_SALESINVOICE));
+//_vd(get_gl(ST_SALESINVOICE, $invoice_no));
+//_vd(get_customer_trans($invoice_no, ST_SALESINVOICE));
+//_vd(get_sales_order_header($sales_order, ST_SALESORDER));
        hook_db_postwrite($invoice, ST_SALESINVOICE);
+//$result = get_trans_tax_details(ST_SALESINVOICE, $invoice_no);
+//while($row=db_fetch($result))
+//     _vd($row);
+//exit;
        commit_transaction();
 
        return $invoice_no;
@@ -197,22 +230,33 @@ function void_sales_invoice($type, $type_no)
        void_gl_trans($type, $type_no, true);
 
        // reverse all the changes in parent document(s)
-
-       $parents = get_sales_parent_numbers($type, $type_no);
-
-       if ($parents !== 0) {
-               if ($type == ST_SALESINVOICE && count($parents) == 1 && get_reference(ST_CUSTDELIVERY, $parents[0]) == "auto")
+       $factor = get_cust_prepayment_invoice_factor($type_no);
+       if ($factor != 0)
+       {
+               $lines = get_customer_trans_details($type, $type_no);
+               while($line = db_fetch($lines))
                {
-                       void_sales_delivery(ST_CUSTDELIVERY, $parents[0], false);
-                       $date_ = Today();
-                       add_audit_trail(ST_CUSTDELIVERY, $parents[0], $date_, _("Voided."));
-                       add_voided_entry(ST_CUSTDELIVERY, $parents[0], $date_, "");
+                       update_prepaid_so_line($line['src_id'], -$factor*$line['quantity']);
                }
-               else
-               {
-                       $srcdetails = get_sales_parent_lines($type, $type_no);
-                       while ($row = db_fetch($srcdetails)) {
-                               update_parent_line($type, $row['id'], -$row['quantity']);
+       }
+       else
+       {
+               $deliveries = get_sales_parent_numbers($type, $type_no);
+
+               if ($deliveries !== 0) {
+                       if ($type == ST_SALESINVOICE && count($deliveries) == 1 && get_reference(ST_CUSTDELIVERY, $deliveries[0]) == "auto")
+                       {
+                               void_sales_delivery(ST_CUSTDELIVERY, $deliveries[0], false);
+                               $date_ = Today();
+                               add_audit_trail(ST_CUSTDELIVERY, $deliveries[0], $date_, _("Voided."));
+                               add_voided_entry(ST_CUSTDELIVERY, $deliveries[0], $date_, "");
+                       }
+                       else
+                       {
+                               $srcdetails = get_sales_parent_lines($type, $type_no);
+                               while ($row = db_fetch($srcdetails)) {
+                                       update_parent_line($type, $row['id'], -$row['quantity']);
+                               }
                        }
                }
        }
@@ -232,4 +276,65 @@ function void_sales_invoice($type, $type_no)
        commit_transaction();
 }
 
-?>
\ No newline at end of file
+function get_cust_prepayment_invoice_factor($trans_no)
+{
+       $sql = "SELECT IF(dt.prep_amount>0, dt.prep_amount/so.total ,0) 
+               FROM ".TB_PREF."debtor_trans dt
+               LEFT JOIN ".TB_PREF."sales_orders so ON so.trans_type=".ST_SALESORDER." AND so.order_no=dt.order_
+                WHERE dt.type=".ST_SALESINVOICE." AND trans_no=".db_escape($trans_no);
+       $row = db_fetch(db_query($sql, 'cannot retrieve prepaid invoice factor'));
+       return $row[0];
+}
+
+function prepaid_invoice_remainder($order)
+{
+       $sql = "SELECT so.total - IFNULL(SUM(inv.prep_amount),0) FROM "
+               .TB_PREF."sales_orders so,
+               ".TB_PREF."debtor_trans inv
+               LEFT JOIN ".TB_PREF."payment_terms pt ON inv.payment_terms=pt.terms_indicator
+               WHERE  so.order_no=".db_escape($order)
+                       ." AND so.trans_type=".ST_SALESORDER
+                       ." AND inv.type=".ST_SALESINVOICE
+                       ." AND inv.order_=so.order_no"
+                       ." AND pt.days_before_due<0";
+
+       $result = db_fetch(db_query($sql, "cannot find final invoice value"));
+       return $result[0];
+}
+
+/*
+       Find oldest delivery date for sales invoice
+*/
+function get_oldest_delivery_date($invoice_no)
+{
+       $sql = "SELECT MIN(trans.tran_date)
+                       FROM
+                               ".TB_PREF."debtor_trans_details del
+                       LEFT JOIN ".TB_PREF."debtor_trans_details inv
+                               ON inv.src_id=del.id
+                       LEFT JOIN ".TB_PREF."debtor_trans trans 
+                               ON trans.type=".ST_CUSTDELIVERY." AND trans.trans_no = del.debtor_trans_no
+                       WHERE
+                               inv.debtor_trans_type=".ST_SALESINVOICE
+                               ." AND inv.debtor_trans_no=".db_escape($invoice_no);
+       $res = db_query($sql, 'cannot find oldest delivery date');
+       $date = db_fetch($res);
+       return $date[0];
+}
+
+/*
+       Find oldest payment date for sales invoice
+*/
+function get_oldest_payment_date($invoice_no)
+{
+       $sql = "SELECT MIN(payment.tran_date)
+                       FROM
+                       ".TB_PREF."cust_allocations alloc,
+                       ".TB_PREF."debtor_trans payment
+                       WHERE
+                               alloc.trans_type_to=".ST_SALESINVOICE." AND alloc.trans_no_to=".db_escape($invoice_no)
+                       ." AND alloc.trans_type_from=payment.type AND alloc.trans_no_from=payment.trans_no";
+       $res = db_query($sql, 'cannot find oldest delivery date');
+       $date = db_fetch($res);
+       return $date[0];
+}
index 5ead6dd49e4e1d1578d7c6ea74217582d9ef1aec..86ba5aa39a2e2bfbdb8b2caa4ad37ba86176c324 100644 (file)
@@ -22,7 +22,7 @@ function add_sales_order(&$order)
        $total = $order->get_trans_total();
        $sql = "INSERT INTO ".TB_PREF."sales_orders (order_no, type, debtor_no, trans_type, branch_code, customer_ref, reference, comments, ord_date,
                order_type, ship_via, deliver_to, delivery_address, contact_phone,
-               freight_cost, from_stk_loc, delivery_date, payment_terms, total)
+               freight_cost, from_stk_loc, delivery_date, payment_terms, total, prep_amount)
                VALUES (" .db_escape($order_no) . "," .db_escape($order_type) . "," . db_escape($order->customer_id) .
                 ", " .db_escape($order->trans_type) . "," .db_escape($order->Branch) . ", ".
                        db_escape($order->cust_ref) .",". 
@@ -38,7 +38,8 @@ function add_sales_order(&$order)
                        db_escape($order->Location) .", " .
                        db_escape($del_date) . "," .
                        db_escape($order->payment) . "," .
-                       db_escape($total). ")";
+                       db_escape($total) . "," .
+                       db_escape($order->prep_amount).")";
 
        db_query($sql, "order Cannot be Added");
 
@@ -69,6 +70,7 @@ function add_sales_order(&$order)
                if ($order->trans_type == ST_SALESORDER && $line->src_id)
                        update_parent_line(ST_SALESORDER, $line->src_id, $line->qty_dispatched); // clear all the quote despite all or the part was ordered
        } /* inserted line items into sales order details */
+
        add_audit_trail($order->trans_type, $order_no, $order->document_date);
        $Refs->save($order->trans_type, $order_no, $order->reference);
 
@@ -129,6 +131,9 @@ function update_sales_order($order)
        begin_transaction();
        hook_db_prewrite($order, $order->trans_type);
 
+       if ($order->trans_type == ST_SALESORDER)
+               $allocs = get_payments_for($order_no, ST_SALESORDER);
+
        $sql = "UPDATE ".TB_PREF."sales_orders SET type =".db_escape($order->so_type)." ,
                debtor_no = " . db_escape($order->customer_id) . ",
                branch_code = " . db_escape($order->Branch) . ",
@@ -146,7 +151,8 @@ function update_sales_order($order)
                delivery_date = " .db_escape($del_date). ",
                version = ".($version+1).",
                payment_terms = " .db_escape($order->payment). ",
-               total = ". db_escape($total) ."
+               total = ". db_escape($total). ",
+               prep_amount = ". db_escape($order->prep_amount) ."
         WHERE order_no=" . db_escape($order_no) ."
         AND trans_type=".$order->trans_type." AND version=".$version;
        db_query($sql, "order Cannot be Updated, this can be concurrent edition conflict");
@@ -174,33 +180,36 @@ function update_sales_order($order)
        {
                if ($loc_notification == 1 && is_inventory_item($line->stock_id))
                        $loc = calculate_reorder_level($order->Location, $line, $st_ids, $st_names, $st_num, $st_reorder); 
-               if($line->id) {
-                       $sql = "UPDATE ".TB_PREF."sales_order_details
-                                               SET description = ".db_escape($line->item_description) . ", 
-                                                               unit_price = ".db_escape($line->price) . ",
-                                                               quantity = ".db_escape($line->quantity) . ",
-                                                               discount_percent = ".db_escape($line->discount_percent) . "
-                                               WHERE id = {$line->id}";
-               }
-               else {
-               $sql = "INSERT INTO ".TB_PREF."sales_order_details
-                (id, order_no, trans_type, stk_code,  description, unit_price, quantity,
-                 discount_percent, qty_sent)
-                VALUES (";
-               $sql .= db_escape($line->id ? $line->id : 0) . ","
-                 .$order_no . ",".$order->trans_type.","
-                 .db_escape($line->stock_id) . ","
-                 .db_escape($line->item_description) . ", "
-                 .db_escape($line->price) . ", "
-                 .db_escape($line->quantity) . ", "
-                 .db_escape($line->discount_percent) . ", "
-                 .db_escape($line->qty_done) ." )";
-               }
-
-               db_query($sql, "Old order Cannot be Inserted");
 
+               if (!$line->id) //new line
+                       $sql = "INSERT INTO ".TB_PREF."sales_order_details
+                        (order_no, trans_type, stk_code,  description, unit_price, quantity,
+                         discount_percent, qty_sent)
+                        VALUES (".$order_no . ",".$order->trans_type.","
+                                 .db_escape($line->stock_id) . ","
+                                 .db_escape($line->item_description) . ", "
+                                 .db_escape($line->price) . ", "
+                                 .db_escape($line->quantity) . ", "
+                                 .db_escape($line->discount_percent) . ", "
+                                 .db_escape($line->qty_done) ." )";
+               else
+               $sql = "UPDATE ".TB_PREF."sales_order_details
+                       SET id=".db_escape($line->id).",
+                               order_no=$order_no,
+                               trans_type=".$order->trans_type.",
+                               stk_code=".db_escape($line->stock_id).",
+                               description=".db_escape($line->item_description).",
+                               unit_price=".db_escape($line->price).",
+                               quantity=".db_escape($line->quantity).",
+                       discount_percent=".db_escape($line->discount_percent).",
+                           qty_sent=".db_escape($line->qty_done)."
+                        WHERE id = ".db_escape($line->id);
+
+               db_query($sql, "Old order Cannot be updated");
        } /* inserted line items into sales order details */
 
+       if ($order->trans_type == ST_SALESORDER)
+               reallocate_payments($order_no, ST_SALESORDER, $ord_date, $total, $allocs);
        add_audit_trail($order->trans_type, $order_no, $order->document_date, _("Updated."));
        $Refs->save($order->trans_type, $order_no, $order->reference);
 
@@ -227,8 +236,18 @@ function get_sales_order_header($order_no, $trans_type)
          ."ship.shipper_name, "
          ."tax_group.name AS tax_group_name , "
          ."tax_group.id AS tax_group_id, "
-         ."cust.tax_id "
-       ."FROM ".TB_PREF."sales_orders sorder LEFT JOIN ".TB_PREF."shippers ship ON  ship.shipper_id = sorder.ship_via,"
+         ."cust.tax_id,"
+         ."sorder.alloc,"
+         ."IFNULL(allocs.ord_allocs, 0)+IFNULL(inv.inv_allocs ,0) AS sum_paid,"
+         ."sorder.prep_amount>0 as prepaid"
+       ." FROM ".TB_PREF."sales_orders sorder
+                       LEFT JOIN (SELECT trans_no_to, sum(amt) ord_allocs FROM ".TB_PREF."cust_allocations
+                               WHERE trans_type_to=".ST_SALESORDER." AND trans_no_to=".db_escape($order_no)." GROUP BY trans_no_to)
+                                allocs ON sorder.trans_type=".ST_SALESORDER." AND allocs.trans_no_to=sorder.order_no
+                       LEFT JOIN (SELECT order_, sum(alloc) inv_allocs FROM ".TB_PREF."debtor_trans 
+                               WHERE type=".ST_SALESINVOICE." AND order_=".db_escape($order_no)."  GROUP BY order_)
+                                inv ON sorder.trans_type=".ST_SALESORDER." AND inv.order_=sorder.order_no
+                       LEFT JOIN ".TB_PREF."shippers ship ON  ship.shipper_id = sorder.ship_via,"
          .TB_PREF."debtors_master cust,"
          .TB_PREF."sales_types stype, "
          .TB_PREF."tax_groups tax_group, "
@@ -310,6 +329,12 @@ function read_sales_order($order_no, &$order, $trans_type)
        $order->due_date = sql2date($myrow["delivery_date"]);
        $order->document_date = sql2date($myrow["ord_date"]);
 
+       $order->prepaid = $myrow["prepaid"];
+       $order->alloc = $myrow['alloc'];
+       $order->sum_paid = $myrow["sum_paid"]; // sum of all prepayments to so (also invoiced)
+       $order->prep_amount = $myrow["prep_amount"];
+       $order->prepayments = get_payments_for($order_no, $myrow['trans_type']);
+
        $result = get_sales_order_details($order_no, $order->trans_type);
        if (db_num_rows($result) > 0)
        {
@@ -373,8 +398,10 @@ function get_invoice_duedate($terms, $invdate)
 
        if ($myrow['day_in_following_month'] > 0)
                $duedate = add_days(end_month($invdate), $myrow['day_in_following_month']);
-       else
+       elseif ($myrow['days_before_due'] > 0)
                $duedate = add_days($invdate, $myrow['days_before_due']);
+       else
+               $duedate = $invdate;
        return $duedate;
 }
 
@@ -429,6 +456,14 @@ function get_branch_to_order($customer_id, $branch_id) {
            return db_query($sql,"Customer Branch Record Retreive");
 }
 
+/*
+       Supported filters:
+
+       InvoiceTemplates
+       DeliveryTemplates
+       OutstandingOnly
+       PrepaidOrders
+*/
 function get_sql_for_sales_orders_view($selected_customer, $trans_type, $trans_no, $filter, 
        $stock_item=null, $from='', $to='', $ref='', $location='', $customer_id=ALL_TEXT)
 {
@@ -448,8 +483,18 @@ function get_sql_for_sales_orders_view($selected_customer, $trans_type, $trans_n
                        sorder.type,
                        debtor.curr_code,
                        Sum(line.qty_sent) AS TotDelivered,
-                       Sum(line.quantity) AS TotQuantity
-               FROM ".TB_PREF."sales_orders as sorder, "
+                       Sum(line.quantity) AS TotQuantity,
+                       Sum(line.invoiced) AS TotInvoiced,
+                       alloc,
+                       prep_amount,
+                       allocs.ord_payments,
+                       inv.inv_payments,
+                       sorder.total
+               FROM ".TB_PREF."sales_orders as sorder
+               LEFT JOIN (SELECT trans_no_to, sum(amt) ord_payments FROM ".TB_PREF."cust_allocations WHERE trans_type_to=".ST_SALESORDER." GROUP BY trans_no_to)
+                        allocs ON sorder.trans_type=".ST_SALESORDER." AND allocs.trans_no_to=sorder.order_no
+               LEFT JOIN (SELECT order_, sum(prep_amount) inv_payments FROM ".TB_PREF."debtor_trans WHERE type=".ST_SALESINVOICE." GROUP BY order_)
+                                inv ON sorder.trans_type=".ST_SALESORDER." AND inv.order_=sorder.order_no,"
                        .TB_PREF."sales_order_details as line, "
                        .TB_PREF."debtors_master as debtor, "
                        .TB_PREF."cust_branch as branch
@@ -500,9 +545,12 @@ function get_sql_for_sales_orders_view($selected_customer, $trans_type, $trans_n
                if ($filter=='OutstandingOnly')
                        $sql .= " AND line.qty_sent < line.quantity";
 
+               if ($filter=='PrepaidOrders')
+                       $sql .= " AND prep_amount>0";
+
                elseif ($filter=='InvoiceTemplates' || $filter=='DeliveryTemplates')
                        $sql .= " AND sorder.type=1";
-                       
+
                //Chaiatanya : New Filter
                if ($customer_id != ALL_TEXT)
                        $sql .= " AND sorder.debtor_no = ".db_escape($customer_id);             
@@ -515,4 +563,36 @@ function get_sql_for_sales_orders_view($selected_customer, $trans_type, $trans_n
                                        sorder.deliver_to";
        return $sql;
 }
-?>
+
+//--------------------------------------------------------------------------------------------------
+function update_prepaid_so_line($line_id, $qty_invoiced)
+{
+       $sql = "UPDATE ".TB_PREF."sales_order_details
+               SET invoiced = invoiced + ".(float)$qty_invoiced."
+               WHERE id=".db_escape($line_id);
+
+       db_query($sql, "The document detail record could not be updated with invoiced qty");
+       return true;
+}
+/*
+       Returns array of all issued invoices to sales order $order_no, optinally up to trans_no==$up_to
+*/
+function get_sales_order_invoices($order_no)
+{
+       $sql = "SELECT trans_no, dt.type as type, tran_date, reference, prep_amount
+           FROM ".TB_PREF."debtor_trans dt
+               LEFT JOIN ".TB_PREF."voided v ON v.type=dt.type AND v.id=dt.trans_no
+               WHERE ISNULL(v.id) AND dt.type=".ST_SALESINVOICE." AND dt.order_=".db_escape($order_no)
+               ." ORDER BY dt.tran_date, dt.reference, dt.trans_no";
+
+       return db_query($sql, "cannot retrieve sales invoices for sales order");
+}
+
+function is_sales_order_started($order_no)
+{
+       $sql = "SELECT count(*) FROM ".TB_PREF."sales_order_details WHERE order_no=".db_escape($order_no)." AND trans_type=".ST_SALESORDER
+               ." AND (invoiced!=0 OR qty_sent!=0)";
+
+       $result = db_fetch(db_query($sql, "cannot retrieve sales invoices for sales order"));
+       return $result[0];
+}
index e9410251065c33cf4a966ad902055fdcd00711d7..08175b186e7fddf9db0dc560491e654f1c67f918 100644 (file)
@@ -11,6 +11,7 @@
 ***********************************************************************/
 include_once($path_to_root . "/includes/banking.inc");
 include_once($path_to_root . "/includes/db/inventory_db.inc");
+include_once($path_to_root . "/includes/db/allocations_db.inc");
 include_once($path_to_root . "/sales/includes/db/sales_order_db.inc");
 include_once($path_to_root . "/sales/includes/db/sales_credit_db.inc");
 include_once($path_to_root . "/sales/includes/db/sales_invoice_db.inc");
@@ -273,6 +274,7 @@ function read_sales_trans($doc_type, $trans_no, &$cart)
                        $myrow["tax_group_name"]);
 
                $cart->reference = $myrow["reference"];
+               $cart->prepaid = $myrow["prepaid"];
                $cart->order_no = $myrow["order_"];
                $cart->due_date = sql2date($myrow["due_date"]);
                $cart->document_date = sql2date($myrow["tran_date"]);
@@ -306,6 +308,8 @@ function read_sales_trans($doc_type, $trans_no, &$cart)
                                        @$myrow["src_id"]);
                        }
                }
+               $cart->prepayments = get_payments_for($trans_no, $doc_type);
+
        } // !newdoc
 
        return true;
@@ -405,5 +409,4 @@ function get_sales_child_documents($trans_type, $trans_no)
        return db_query($sql,"The related credit notes could not be retreived");
 }
 
-
 ?>
\ No newline at end of file
index 2af450093abb0b65674e65a839d28c378db532cd..ed3227379291e8227ba946bb3934624787c31dc9 100644 (file)
@@ -123,6 +123,7 @@ function get_customer_details_to_order(&$order, $customer_id, $branch_id)
        }
        elseif ($order->trans_type == ST_SALESORDER)
                $order->due_date = add_days($order->document_date, $SysPrefs->default_delivery_required_by());
+
        if($order->payment_terms['cash_sale']) {
                $order->set_location($order->pos["pos_location"], $order->pos["location_name"]);
        } else
@@ -391,7 +392,8 @@ function display_order_header(&$order, $editable, $date_text)
        label_row(_("Customer Discount:"), ($order->default_discount * 100) . "%");
 
        table_section(3);
-       if ($order->pos['cash_sale'] || $order->pos['credit_sale']) {
+       if (($order->pos['cash_sale'] || $order->pos['credit_sale']) 
+               && !$order->is_started()) {
                 // editable payment type 
                if (get_post('payment') !== $order->payment) {
                        $order->payment = get_post('payment');
@@ -407,11 +409,10 @@ function display_order_header(&$order, $editable, $date_text)
                $paymcat = !$order->pos['cash_sale'] ? PM_CREDIT : 
                        (!$order->pos['credit_sale'] ? PM_CASH : PM_ANY);
                // all terms are available for SO
-               sale_payment_list_cells(_('Payment:'), 'payment', 
-                       (in_array($order->trans_type, array(ST_SALESQUOTE, ST_SALESORDER)) 
-                       ? PM_ANY : $paymcat), null);
+               $is_order = in_array($order->trans_type, array(ST_SALESQUOTE, ST_SALESORDER));
+               sale_payment_list_cells(_('Payment:'), 'payment', $is_order ? PM_ANY : $paymcat, null, true, $is_order);
        } else {
-               label_cells(_('Payment:'), $order->payment_terms['terms']);
+               label_cells(_('Payment:'), $order->payment_terms['terms'], "class='label'");
        }
 
        if($editable) {
@@ -620,6 +621,14 @@ function display_delivery_details(&$order)
                table_section(1);
 
                locations_list_row(_("Deliver from Location:"), 'Location', null, false, true);
+               if ($order->payment_terms['days_before_due'] < 0)
+               {
+                       $Ajax->addUpdate('items_table', 'prep_amount', price_format($order->get_trans_total())); // bind to items_table update
+                       if (!$order->is_started())
+                               amount_row(_("Pre-Payment Required:"), 'prep_amount');
+                       else
+                               label_row(_("Pre-Payment Required:"), price_format($order->prep_amount), "class='label'");
+               }
                if (list_updated('Location'))
                        $Ajax->activate('items_table');
 
index 2d08467fc142b53e58a6dfefb6d8c341b408848c..7fa66013580c8bc16d71ba7f974966941ec594a5 100644 (file)
@@ -41,7 +41,7 @@ start_row();
 
 customer_list_cells(_("Select a customer: "), 'customer_id', $_POST['customer_id'], true);
 
-date_cells(_("from:"), 'TransAfterDate', '', null, -30);
+date_cells(_("from:"), 'TransAfterDate', '', null, -$_SESSION["wa_current_user"]->prefs->transaction_days());
 date_cells(_("to:"), 'TransToDate', '', null, 1);
 
 cust_allocations_list_cells(_("Type:"), 'filterType', null);
index 6c9a97cc1b4796df0debb90629ac59a8b890ef12..86b965881f6ef4bdb677a816b2c7c0c9645296f6 100644 (file)
@@ -18,15 +18,12 @@ include_once($path_to_root . "/sales/includes/sales_ui.inc");
 include_once($path_to_root . "/sales/includes/sales_db.inc");
 include_once($path_to_root . "/reporting/includes/reporting.inc");
 
-if (!@$_GET['popup'])
-{
-       $js = "";
-       if ($use_popup_windows)
-               $js .= get_js_open_window(900, 500);
-       if ($use_date_picker)
-               $js .= get_js_date_picker();
-       page(_($help_context = "Customer Transactions"), isset($_GET['customer_id']), false, "", $js);
-}
+$js = "";
+if ($use_popup_windows)
+       $js .= get_js_open_window(900, 500);
+if ($use_date_picker)
+       $js .= get_js_date_picker();
+page(_($help_context = "Customer Transactions"), isset($_GET['customer_id']), false, "", $js);
 
 if (isset($_GET['customer_id']))
 {
@@ -35,8 +32,7 @@ if (isset($_GET['customer_id']))
 
 //------------------------------------------------------------------------------------------------
 
-if (!@$_GET['popup'])
-       start_form();
+start_form();
 
 if (!isset($_POST['customer_id']))
        $_POST['customer_id'] = get_global_customer();
@@ -44,10 +40,10 @@ if (!isset($_POST['customer_id']))
 start_table(TABLESTYLE_NOBORDER);
 start_row();
 
-if (!@$_GET['popup'])
+if (!$page_nested)
        customer_list_cells(_("Select a customer: "), 'customer_id', null, true, false, false, !@$_GET['popup']);
 
-date_cells(_("From:"), 'TransAfterDate', '', null, -30);
+date_cells(_("From:"), 'TransAfterDate', '', null, -$_SESSION["wa_current_user"]->prefs->transaction_days());
 date_cells(_("To:"), 'TransToDate', '', null, 1);
 
 if (!isset($_POST['filterType']))
@@ -158,7 +154,9 @@ function fmt_credit($row)
 
 function credit_link($row)
 {
-       if (@$_GET['popup'])
+       global $page_nested;
+       
+       if ($page_nested)
                return '';
        return $row['type'] == ST_SALESINVOICE && $row["Outstanding"] > 0 ?
                pager_link(_("Credit This") ,
@@ -167,29 +165,14 @@ function credit_link($row)
 
 function edit_link($row)
 {
-       if (@$_GET['popup'] || get_voided_entry($row['type'], $row["trans_no"]) || is_closed_trans($row['type'], $row["trans_no"]))
-               return '';
+       global $page_nested;
 
        $str = '';
-       switch($row['type']) {
-               case ST_SALESINVOICE:
-                       $str = "/sales/customer_invoice.php?ModifyInvoice=".$row['trans_no'];
-               break;
-               case ST_CUSTCREDIT:
-                       if ($row['order_']==0) // free-hand credit note
-                           $str = "/sales/credit_note_entry.php?ModifyCredit=".$row['trans_no'];
-                       else    // credit invoice
-                           $str = "/sales/customer_credit_invoice.php?ModifyCredit=".$row['trans_no'];
-               break;
-               case ST_CUSTDELIVERY:
-                       $str = "/sales/customer_delivery.php?ModifyDelivery=".$row['trans_no'];
-               break;
-               case ST_CUSTPAYMENT:
-                       $str = "/sales/customer_payments.php?trans_no=".$row['trans_no'];
-               break;
-       }
-
-       return $str ? pager_link(_('Edit'), $str, ICON_EDIT) : '';
+       if ($page_nested)
+               return '';
+
+       return edit_trans_link($row['type'], $row['trans_no'], $row['type']==ST_CUSTCREDIT && $row['order_']==0 ?
+               "/sales/credit_note_entry.php?ModifyCredit=%d" : 0);
 }
 
 function prt_link($row)
@@ -247,9 +230,6 @@ $table->width = "85%";
 
 display_db_pager($table);
 
-if (!@$_GET['popup'])
-{
-       end_form();
-       end_page(@$_GET['popup'], false, false);
-}
+end_form();
+end_page();
 ?>
index 5a29b43401ad61c6d46cb32ac79cff88e464fa5d..4da4d98b5ca06798cf0e60cd5a7029942171141d 100644 (file)
@@ -101,7 +101,7 @@ start_form(false, false, $_SERVER['PHP_SELF'] ."?OutstandingOnly=".$_POST['Outst
 start_table(TABLESTYLE_NOBORDER);
 start_row();
 ref_cells(_("#:"), 'DeliveryNumber', '',null, '', true);
-date_cells(_("from:"), 'DeliveryAfterDate', '', null, -30);
+date_cells(_("from:"), 'DeliveryAfterDate', '', null, -$_SESSION["wa_current_user"]->prefs->transaction_days());
 date_cells(_("to:"), 'DeliveryToDate', '', null, 1);
 
 locations_list_cells(_("Location:"), 'StockLocation', null, true);
index 522cfd80c993fedcccbcf3a24db17bc600d4c8c8..b96b99dd1e7f3692ec00babeb090e65ab3bd7cc8 100644 (file)
@@ -20,9 +20,13 @@ $page_security = 'SA_SALESTRANSVIEW';
 
 set_page_security( @$_POST['order_view_mode'],
        array(  'OutstandingOnly' => 'SA_SALESDELIVERY',
-                       'InvoiceTemplates' => 'SA_SALESINVOICE'),
+                       'InvoiceTemplates' => 'SA_SALESINVOICE',
+                       'DeliveryTemplates' => 'SA_SALESDELIVERY',
+                       'PrepaidOrders' => 'SA_SALESINVOICE'),
        array(  'OutstandingOnly' => 'SA_SALESDELIVERY',
-                       'InvoiceTemplates' => 'SA_SALESINVOICE')
+                       'InvoiceTemplates' => 'SA_SALESINVOICE',
+                       'DeliveryTemplates' => 'SA_SALESDELIVERY',
+                       'PrepaidOrders' => 'SA_SALESINVOICE')
 );
 
 if (get_post('type'))
@@ -49,6 +53,11 @@ if ($trans_type == ST_SALESORDER)
                $_POST['order_view_mode'] = 'DeliveryTemplates';
                $_SESSION['page_title'] = _($help_context = "Select Template for Delivery");
        }
+       elseif (isset($_GET['PrepaidOrders']) && ($_GET['PrepaidOrders'] == true))
+       {
+               $_POST['order_view_mode'] = 'PrepaidOrders';
+               $_SESSION['page_title'] = _($help_context = "Invoicing Prepayment Orders");
+       }
        elseif (!isset($_POST['order_view_mode']))
        {
                $_POST['order_view_mode'] = false;
@@ -61,15 +70,12 @@ else
        $_SESSION['page_title'] = _($help_context = "Search All Sales Quotations");
 }
 
-if (!@$_GET['popup'])
-{
-       $js = "";
-       if ($use_popup_windows)
-               $js .= get_js_open_window(900, 600);
-       if ($use_date_picker)
-               $js .= get_js_date_picker();
-       page($_SESSION['page_title'], false, false, "", $js);
-}
+$js = "";
+if ($use_popup_windows)
+       $js .= get_js_open_window(900, 600);
+if ($use_date_picker)
+       $js .= get_js_date_picker();
+page($_SESSION['page_title'], false, false, "", $js);
 
 if (isset($_GET['selected_customer']))
 {
@@ -121,7 +127,9 @@ function prt_link($row)
 
 function edit_link($row) 
 {
-       if (@$_GET['popup'])
+       global $page_nested;
+
+       if ($page_nested)
                return '';
        global $trans_type;
        $modify = ($trans_type == ST_SALESORDER ? "ModifyOrderNumber" : "ModifyQuotationNumber");
@@ -132,10 +140,14 @@ function edit_link($row)
 function dispatch_link($row)
 {
        global $trans_type;
+
+       if ($row['ord_payments'] + $row['inv_payments'] < $row['prep_amount'])
+               return '';
+
        if ($trans_type == ST_SALESORDER)
                return pager_link( _("Dispatch"),
                        "/sales/customer_delivery.php?OrderNumber=" .$row['order_no'], ICON_DOC);
-       else            
+       else
                return pager_link( _("Sales Order"),
                        "/sales/sales_order_entry.php?OrderNumber=" .$row['order_no'], ICON_DOC);
 }
@@ -164,10 +176,11 @@ function order_link($row)
 
 function tmpl_checkbox($row)
 {
-       global $trans_type;
+       global $trans_type, $page_nested;
        if ($trans_type == ST_SALESQUOTE)
                return '';
-       if (@$_GET['popup'])
+
+       if ($page_nested)
                return '';
        $name = "chgtpl" .$row['order_no'];
        $value = $row['type'] ? 1:0;
@@ -178,6 +191,16 @@ function tmpl_checkbox($row)
        _('Set this order as a template for direct deliveries/invoices'))
        . hidden('last['.$row['order_no'].']', $value, false);
 }
+
+function invoice_prep_link($row)
+{
+       // invoicing should be available only for partially allocated orders
+       return 
+               $row['inv_payments'] < $row['total'] ?
+               pager_link($row['ord_payments']  ? _("Prepayment Invoice") : _("Final Invoice"),
+               "/sales/customer_invoice.php?InvoicePrepayments=" .$row['order_no'], ICON_DOC) : '';
+}
+
 //---------------------------------------------------------------------------------------------
 // Update db record if respective checkbox value has changed.
 //
@@ -217,8 +240,7 @@ if (get_post('_OrderNumber_changed') || get_post('_OrderReference_changed')) //
        $Ajax->activate('orders_tbl');
 }
 
-if (!@$_GET['popup'])
-       start_form();
+start_form();
 
 start_table(TABLESTYLE_NOBORDER);
 start_row();
@@ -226,7 +248,7 @@ ref_cells(_("#:"), 'OrderNumber', '',null, '', true);
 ref_cells(_("Ref"), 'OrderReference', '',null, '', true);
 if ($show_dates)
 {
-       date_cells(_("from:"), 'OrdersAfterDate', '', null, -30);
+       date_cells(_("from:"), 'OrdersAfterDate', '', null, -$_SESSION["wa_current_user"]->prefs->transaction_days());
        date_cells(_("to:"), 'OrdersToDate', '', null, 1);
 }
 locations_list_cells(_("Location:"), 'StockLocation', null, true, true);
@@ -239,6 +261,7 @@ if($show_dates) {
        start_row();
 }
 stock_items_list_cells(_("Item:"), 'SelectStockFromList', null, true, true);
+
 if (!@$_GET['popup'])
        customer_list_cells(_("Select a customer: "), 'customer_id', null, true, true);
 if ($trans_type == ST_SALESQUOTE)
@@ -286,7 +309,7 @@ else
                _("Currency") => array('align'=>'center')
        );
 if ($_POST['order_view_mode'] == 'OutstandingOnly') {
-       //array_substitute($cols, 4, 1, _("Cust Order Ref"));
+       //array_substitute($cols, 3, 1, _("Cust Order Ref"));
        array_append($cols, array(
                array('insert'=>true, 'fun'=>'dispatch_link'),
                array('insert'=>true, 'fun'=>'edit_link')));
@@ -300,6 +323,10 @@ if ($_POST['order_view_mode'] == 'OutstandingOnly') {
        array_append($cols, array(
                        array('insert'=>true, 'fun'=>'delivery_link'))
        );
+} else if ($_POST['order_view_mode'] == 'PrepaidOrders') {
+       array_append($cols, array(
+                       array('insert'=>true, 'fun'=>'invoice_prep_link'))
+       );
 
 } elseif ($trans_type == ST_SALESQUOTE) {
         array_append($cols,array(
@@ -322,9 +349,5 @@ $table->width = "80%";
 display_db_pager($table);
 submit_center('Update', _("Update"), true, '', null);
 
-if (!@$_GET['popup'])
-{
-       end_form();
-       end_page();
-}
-?>
+end_form();
+end_page();
index e3b1565fba697ddbb21f6c6feab7bcfcc67adfed..374d2f57d74fc1512645f382fd976d5b2658b1b9 100644 (file)
@@ -81,7 +81,7 @@ if ($Mode=='ADD_ITEM' || $Mode=='UPDATE_ITEM')
                                $_POST['br_address'], $_POST['salesman'], $_POST['area'], $_POST['tax_group_id'], $_POST['sales_account'],
                                $_POST['sales_discount_account'], $_POST['receivables_account'], $_POST['payment_discount_account'],
                                $_POST['default_location'], $_POST['br_post_address'], $_POST['disable_trans'], $_POST['group_no'],
-                               $_POST['default_ship_via'], $_POST['notes']);
+                               $_POST['default_ship_via'], $_POST['notes'], $_POST['bank_account']);
 //                     update_record_status($_POST['supplier_id'], $_POST['inactive'],
 //                             'cust_branch', 'branch_code');
 
@@ -93,7 +93,7 @@ if ($Mode=='ADD_ITEM' || $Mode=='UPDATE_ITEM')
                                $_POST['br_address'], $_POST['salesman'], $_POST['area'], $_POST['tax_group_id'], $_POST['sales_account'],
                                $_POST['sales_discount_account'], $_POST['receivables_account'], $_POST['payment_discount_account'],
                                $_POST['default_location'], $_POST['br_post_address'], 0, $_POST['group_no'],
-                               $_POST['default_ship_via'], $_POST['notes']);
+                               $_POST['default_ship_via'], $_POST['notes'], $_POST['bank_account']);
                        $selected_id = db_insert_id();
 
                        add_crm_person($_POST['contact_name'], $_POST['contact_name'], '', $_POST['br_post_address'], 
@@ -204,6 +204,7 @@ function branch_settings($selected_id) {
                    $_POST['payment_discount_account'] = $myrow['payment_discount_account'];
                        $_POST['group_no']  = $myrow["group_no"];
                        $_POST['notes']  = $myrow["notes"];
+                       $_POST['bank_account']  = $myrow["bank_account"];
 
                }
        }
@@ -224,7 +225,7 @@ function branch_settings($selected_id) {
 
                        // We use the Item Sales Account as default!
                    // $_POST['sales_account'] = $company_record["default_sales_act"];
-                   $_POST['sales_account'] = $_POST['notes']  = '';
+                   $_POST['sales_account'] = $_POST['notes']  = $_POST['bank_account'] = '';
                    $_POST['sales_discount_account'] = $company_record['default_sales_discount_act'];
                    $_POST['receivables_account'] = $company_record['debtors_act'];
                    $_POST['payment_discount_account'] = $company_record['default_prompt_payment_act'];
@@ -251,6 +252,7 @@ function branch_settings($selected_id) {
        gl_all_accounts_list_row(_("Sales Discount Account:"), 'sales_discount_account');
        gl_all_accounts_list_row(_("Accounts Receivable Account:"), 'receivables_account', null, true);
        gl_all_accounts_list_row(_("Prompt Payment Discount Account:"), 'payment_discount_account');
+       text_row(_("Bank Account Number:"), 'bank_account', null, 30, 60);
 
        table_section(2);
 
index f76e1cd9ccecc8e24a7056d5b6a6f9aa310c4151..65c36c934e795f3ff3a04a5016b69e3b6d0b10ca 100644 (file)
@@ -12,7 +12,7 @@
 $page_security = 'SA_CUSTOMER';
 $path_to_root = "../..";
 
-include($path_to_root . "/includes/db_pager.inc");
+include_once($path_to_root . "/includes/db_pager.inc");
 include_once($path_to_root . "/includes/session.inc");
 $js = "";
 if ($use_popup_windows)
@@ -362,12 +362,10 @@ tabbed_content_start('tabs', array(
                        break;
                case 'transactions':
                        $_GET['customer_id'] = $selected_id;
-                       $_GET['popup'] = 1;
                        include_once($path_to_root."/sales/inquiry/customer_inquiry.php");
                        break;
                case 'orders':
                        $_GET['customer_id'] = $selected_id;
-                       $_GET['popup'] = 1;
                        include_once($path_to_root."/sales/inquiry/sales_orders_view.php");
                        break;
        };
index f73a6d5fd8f5d5feb4ccee9db55fbd93a8b41ace..b266c000aeaf1303767ebf92121390f0e63c1e2d 100644 (file)
@@ -95,6 +95,12 @@ if (isset($_GET['NewDelivery']) && is_numeric($_GET['NewDelivery'])) {
 }
 
 page($_SESSION['page_title'], false, false, "", $js);
+
+if (isset($_GET['ModifyOrderNumber']))
+       check_is_editable(ST_SALESORDER, $_GET['ModifyOrderNumber']);
+elseif (isset($_GET['ModifyQuotationNumber']))
+       check_is_editable(ST_SALESQUOTE, $_GET['ModifyQuotationNumber']);
+
 //-----------------------------------------------------------------------------
 
 if (list_updated('branch_id')) {
@@ -264,6 +270,7 @@ function copy_to_cart()
                        $cart->phone = $cart->cust_ref = $cart->delivery_address = '';
                        $cart->ship_via = 0;
                        $cart->deliver_to = '';
+                       $cart->prep_amount = 0;
                }
        } else {
                $cart->due_date = $_POST['delivery_date'];
@@ -272,6 +279,8 @@ function copy_to_cart()
                $cart->delivery_address = $_POST['delivery_address'];
                $cart->phone = $_POST['phone'];
                $cart->ship_via = $_POST['ship_via'];
+               if (!$cart->trans_no || ($cart->trans_type == ST_SALESORDER && !$cart->is_started()))
+                       $cart->prep_amount = input_num('prep_amount', 0);
        }
        $cart->Location = $_POST['Location'];
        $cart->freight_cost = input_num('freight_cost');
@@ -313,6 +322,7 @@ function copy_from_cart()
 
        $_POST['branch_id'] = $cart->Branch;
        $_POST['sales_type'] = $cart->sales_type;
+       $_POST['prep_amount'] = price_format($cart->prep_amount);
        // POS 
        $_POST['payment'] = $cart->payment;
        if ($cart->trans_type!=ST_SALESORDER && $cart->trans_type!=ST_SALESQUOTE) { // 2008-11-12 Joe Hunt
@@ -355,7 +365,7 @@ function can_process() {
                return false;
        }
        if ($_SESSION['Items']->trans_type!=ST_SALESORDER && $_SESSION['Items']->trans_type!=ST_SALESQUOTE && !is_date_in_fiscalyear($_POST['OrderDate'])) {
-               display_error(_("The entered date is not in fiscal year"));
+               display_error(_("The entered date is out of fiscal year or is closed for further data entry."));
                set_focus('OrderDate');
                return false;
        }
@@ -365,11 +375,17 @@ function can_process() {
                return false;
        }
        if ($_SESSION['Items']->payment_terms['cash_sale'] == 0) {
-       if (strlen($_POST['deliver_to']) <= 1) {
-               display_error(_("You must enter the person or company to whom delivery should be made to."));
-               set_focus('deliver_to');
-               return false;
-       }
+               if (!$_SESSION['Items']->is_started() && ($_SESSION['Items']->payment_terms['days_before_due'] < 0) && ((input_num('prep_amount')<=0) ||
+                       input_num('prep_amount')>$_SESSION['Items']->get_trans_total())) {
+                       display_error(_("Pre-payment required have to be positive and less than total amount."));
+                       set_focus('prep_amount');
+                       return false;
+               }
+               if (strlen($_POST['deliver_to']) <= 1) {
+                       display_error(_("You must enter the person or company to whom delivery should be made to."));
+                       set_focus('deliver_to');
+                       return false;
+               }
 
 
                if ($_SESSION['Items']->trans_type != ST_SALESQUOTE && strlen($_POST['delivery_address']) <= 1) {
@@ -717,8 +733,7 @@ if ($_SESSION['Items']->trans_type == ST_SALESINVOICE) {
 start_form();
 
 hidden('cart_id');
-$customer_error = display_order_header($_SESSION['Items'],
-       ($_SESSION['Items']->any_already_delivered() == 0), $idate);
+$customer_error = display_order_header($_SESSION['Items'], !$_SESSION['Items']->is_started(), $idate);
 
 if ($customer_error == "") {
        start_table(TABLESTYLE, "width=80%", 10);
index d6a6cb7aba96ed7b5874430f4309d74b1299fb37..6f7de98ae57e116528d70b40498204d500c475d6 100644 (file)
@@ -35,12 +35,14 @@ elseif (isset($_POST["trans_no"]))
 // 3 different queries to get the information - what a JOKE !!!!
 
 $myrow = get_customer_trans($trans_id, ST_SALESINVOICE);
+$paym = get_payment_terms($myrow['payment_terms']);
 
 $branch = get_branch($myrow["branch_code"]);
 
 $sales_order = get_sales_order_header($myrow["order_"], ST_SALESORDER);
 
-display_heading(sprintf(_("SALES INVOICE #%d"),$trans_id));
+display_heading(sprintf($myrow['prep_amount'] > 0 ? (
+       $paym['days_before_due']>=0 ? _("FINAL INVOICE #%d") : _("PREPAYMENT INVOICE #%d")) : _("SALES INVOICE #%d"),$trans_id));
 
 echo "<br>";
 start_table(TABLESTYLE2, "width=95%");
@@ -73,7 +75,6 @@ echo "</td><td>"; // outer table
 start_table(TABLESTYLE, "width=100%");
 $th = array(_("Payment Terms"));
 table_header($th); 
-$paym = get_payment_terms($myrow['payment_terms']);
 label_row(null, $paym["terms"], "nowrap");
 end_table();
 
@@ -92,10 +93,11 @@ label_cells(_("Shipping Company"), $myrow["shipper_name"], "class='tableheader2'
 label_cells(_("Sales Type"), $myrow["sales_type"], "class='tableheader2'");
 end_row();
 start_row();
-label_cells(_("Invoice Date"), sql2date($myrow["tran_date"]), "class='tableheader2'", "nowrap");
 label_cells(_("Due Date"), sql2date($myrow["due_date"]), "class='tableheader2'", "nowrap");
-label_cells(_("Deliveries"), get_customer_trans_view_str(ST_CUSTDELIVERY, 
-       get_sales_parent_numbers(ST_SALESINVOICE, $trans_id)), "class='tableheader2'");
+if ($myrow['prep_amount']==0)
+       label_cells(_("Deliveries"), get_customer_trans_view_str(ST_CUSTDELIVERY, 
+               get_sales_parent_numbers(ST_SALESINVOICE, $trans_id)), "class='tableheader2'");
+label_cells(_("Invoice Date"), sql2date($myrow["tran_date"]), "class='tableheader2'", "nowrap");
 end_row();
 comments_display_row(ST_SALESINVOICE, $trans_id);
 end_table();
index 6790f20d8148696da8cb1e0aa6b36c70445b0769..a31f4399574bacaf153e579a6848dc8c17ec6276 100644 (file)
@@ -39,7 +39,7 @@ if (isset($_SESSION['View']))
        unset ($_SESSION['View']);
 }
 
-$_SESSION['View'] = new Cart($_GET['trans_type'], $_GET['trans_no']);
+$_SESSION['View'] = new Cart($_GET['trans_type'], $_GET['trans_no'], true);
 
 start_table(TABLESTYLE2, "width=95%", 5);
 
@@ -75,12 +75,25 @@ label_cells(_("Order Currency"), $_SESSION['View']->customer_currency, "class='t
 label_cells(_("Deliver From Location"), $_SESSION['View']->location_name, "class='tableheader2'");
 end_row();
 
-label_row(_("Payment Terms"), $_SESSION['View']->payment_terms['terms'], "class='tableheader2'", "colspan=3");
+
+if ($_SESSION['View']->payment_terms['days_before_due']<0)
+{
+start_row();
+label_cells(_("Payment Terms"), $_SESSION['View']->payment_terms['terms'], "class='tableheader2'");
+label_cells(_("Required Pre-Payment"), price_format($_SESSION['View']->prep_amount), "class='tableheader2'");
+end_row();
+start_row();
+label_cells(_("Non-Invoiced Prepayments"), price_format($_SESSION['View']->alloc), "class='tableheader2'");
+label_cells(_("All Payments Allocated"), price_format($_SESSION['View']->sum_paid), "class='tableheader2'");
+end_row();
+} else
+       label_row(_("Payment Terms"), $_SESSION['View']->payment_terms['terms'], "class='tableheader2'", "colspan=3");
+
 label_row(_("Delivery Address"), nl2br($_SESSION['View']->delivery_address),
        "class='tableheader2'", "colspan=3");
 label_row(_("Reference"), $_SESSION['View']->reference, "class='tableheader2'", "colspan=3");
 label_row(_("Telephone"), $_SESSION['View']->phone, "class='tableheader2'", "colspan=3");
-label_row(_("E-mail"), "<a href='mailto:" . $_SESSION['View']->email . "'>" . $_SESSION['View']->email . "</a>",
+;label_row(_("E-mail"), "<a href='mailto:" . $_SESSION['View']->email . "'>" . $_SESSION['View']->email . "</a>",
        "class='tableheader2'", "colspan=3");
 label_row(_("Comments"), nl2br($_SESSION['View']->Comments), "class='tableheader2'", "colspan=3");
 end_table();
@@ -132,15 +145,20 @@ if ($_GET['trans_type'] != ST_SALESQUOTE)
        $inv_numbers = array();
        $invoices_total = 0;
 
-       if ($result = get_sales_child_documents(ST_CUSTDELIVERY, $dn_numbers)) {
+       if ($_SESSION['View']->prepaid)
+               $result = get_sales_order_invoices($_GET['trans_no']);
+       else
+               $result = get_sales_child_documents(ST_CUSTDELIVERY, $dn_numbers);
 
+       if ($result) {
                $k = 0;
 
                while ($inv_row = db_fetch($result))
                {
                        alt_table_row_color($k);
 
-                       $this_total = $inv_row["ov_freight"] + $inv_row["ov_freight_tax"]  + $inv_row["ov_gst"] + $inv_row["ov_amount"];
+                       $this_total = $_SESSION['View']->prepaid ? $inv_row["prep_amount"] : 
+                               $inv_row["ov_freight"] + $inv_row["ov_freight_tax"]  + $inv_row["ov_gst"] + $inv_row["ov_amount"];
                        $invoices_total += $this_total;
 
                        $inv_numbers[] = $inv_row["trans_no"];
@@ -160,10 +178,10 @@ if ($_GET['trans_type'] != ST_SALESQUOTE)
        start_table(TABLESTYLE);
        $th = array(_("#"), _("Ref"), _("Date"), _("Total"));
        table_header($th);
-       
+
        $credits_total = 0;
-       
-       if ($result = get_sales_child_documents(ST_SALESINVOICE, $inv_numbers)) {
+
+       if (get_sales_child_documents(ST_SALESINVOICE, $inv_numbers)) {
                $k = 0;
 
                while ($credits_row = db_fetch($result))
@@ -244,7 +262,9 @@ start_row();
 label_cells(_("Amount Total"), $display_total, "colspan=6 align='right'","align='right'");
 label_cell('', "colspan=2");
 end_row();
-end_table(2);
+end_table();
+
+display_allocations_to(PT_CUSTOMER, $_SESSION['View']->customer_id, $_GET['trans_type'], $_GET['trans_no'], $sub_tot + $tax_total);
 
 end_page(true, false, false, $_GET['trans_type'], $_GET['trans_no']);
 
index ff9467a292f4fa1e3446f3008e5cfa7a3c3d3335..869186ac0cd4d671cea0c3dd13592474870124c7 100644 (file)
@@ -21,23 +21,24 @@ class fa2_1 {
        //      Install procedure. All additional changes 
        //      not included in sql file should go here.
        //
-       function install($pref, $force) 
+       function install($company, $force) 
        {
                global $db;
+
        /*
        Statement below is allowed only for MySQL >=4.0.4:
        UPDATE `0_bank_trans`, `0_bank_accounts` 
                SET 0_bank_trans.bank_act=0_bank_accounts.id 
                WHERE 0_bank_trans.bank_act=0_bank_accounts.account_code;
        */
-               $sql = "SELECT id, account_code FROM ".$pref."bank_accounts";
+               $sql = "SELECT id, account_code FROM ".TB_PREF."bank_accounts";
                if(!($res = db_query($sql))) {
                        display_error(_("Cannot retrieve bank accounts codes")
                                .':<br>'. db_error_msg($db));
                        return false;
                }
                while ($acc = db_fetch($res)) {
-                       $sql = "UPDATE ".$pref."bank_trans SET bank_act='"
+                       $sql = "UPDATE ".TB_PREF."bank_trans SET bank_act='"
                                .$acc['id']."' WHERE bank_act=".$acc['account_code'];
                        if (db_query($sql)==false) {
                        display_error(_("Cannot update bank transactions")
@@ -46,7 +47,7 @@ class fa2_1 {
                        }
                }
                // copy all item codes from stock_master into item_codes
-               $sql = "SELECT `stock_id`,`description`,`category_id` FROM ".$pref."stock_master";
+               $sql = "SELECT `stock_id`,`description`,`category_id` FROM ".TB_PREF."stock_master";
                $result = db_query($sql);
                if (!$result) {
                        display_error(_("Cannot select stock identificators")
@@ -55,7 +56,7 @@ class fa2_1 {
                } else {
                        while ($row = db_fetch_assoc($result)) {
                                $sql = "INSERT IGNORE "
-                                       .$pref."item_codes (`item_code`,`stock_id`,`description`,`category_id`)
+                                       .TB_PREF."item_codes (`item_code`,`stock_id`,`description`,`category_id`)
                                        VALUES('".$row['stock_id']."','".$row['stock_id']."','"
                                        .$row['description']."','".$row['category_id']."')";
                                $res2 = db_query($sql);
@@ -81,11 +82,11 @@ class fa2_1 {
                "SELECT tr.tran_date, tr.type, tr.trans_no, dt.tax_type_id, 
                        dt.rate, dt.included_in_price, dt.amount, tr.reference as ref,
                        tr.rate as ex_rate
-               FROM ".$pref."debtor_trans_tax_details dt       
-                       LEFT JOIN ".$pref."trans_tax_details tt
+               FROM ".TB_PREF."debtor_trans_tax_details dt     
+                       LEFT JOIN ".TB_PREF."trans_tax_details tt
                                ON dt.debtor_trans_no=tt.trans_no 
                                AND dt.debtor_trans_type=tt.trans_type,
-                       ".$pref."debtor_trans tr
+                       ".TB_PREF."debtor_trans tr
                WHERE tt.trans_type is NULL
                        AND dt.debtor_trans_no = tr.trans_no 
                        AND dt.debtor_trans_type = tr.type",
@@ -94,8 +95,8 @@ class fa2_1 {
                "SELECT tr.tran_date, tr.type, tr.trans_no, st.tax_type_id, 
                        st.rate, st.included_in_price, st.amount, tr.supp_reference as ref,
                        tr.rate as ex_rate
-                       FROM ".$pref."supp_invoice_tax_items st 
-                               LEFT JOIN ".$pref."trans_tax_details tt
+                       FROM ".TB_PREF."supp_invoice_tax_items st       
+                               LEFT JOIN ".TB_PREF."trans_tax_details tt
                                        ON st.supp_trans_no=tt.trans_no 
                                        AND st.supp_trans_type=tt.trans_type,
                                        ".$pref."supp_trans tr
@@ -104,14 +105,14 @@ class fa2_1 {
                                        AND st.supp_trans_type = tr.type");
 
        foreach ($move_sql as $tbl => $sql) {
-               if (!check_table($pref, $tbl)){
+               if (!check_table(TB_PREF, $tbl)){
                        $res = db_query($sql, "Cannot retrieve trans tax details from $tbl");
                        while ($row = db_fetch($res)) {
                                $net_amount = $row['rate'] == 0 ?
                                        0 : ($row['included_in_price'] ? 
                                                        ($row['amount']/$row['rate']*(100-$row['rate']))
                                                        :($row['amount']/$row['rate']*100));
-                               $sql2 = "INSERT INTO ".$pref."trans_tax_details 
+                               $sql2 = "INSERT INTO ".TB_PREF."trans_tax_details 
                                (trans_type,trans_no,tran_date,tax_type_id,rate,ex_rate,
                                        included_in_price, net_amount, amount, memo)
                                VALUES ('".$row['type']."','".$row['trans_no']."','"
@@ -121,7 +122,7 @@ class fa2_1 {
                                        ."','".$row['amount']."','".$row['ref']."')";
                                db_query($sql2, "Cannot move trans tax details from $tbl");
                        }
-                       db_query("DROP TABLE ".$pref.$tbl, "cannot remove $tbl");
+                       db_query("DROP TABLE ".TB_PREF.$tbl, "cannot remove $tbl");
                }
        }
                
index 0f8591b2eee748e2f8461502c58ca5e4403efb26..8cf8a0b708fe1509004cc9a15079bf1ad24dc626 100644 (file)
@@ -28,13 +28,14 @@ class fa2_2 {
        //      Install procedure. All additional changes 
        //      not included in sql file should go here.
        //
-       function install($pref, $force) 
+       function install($company, $force) 
        {
-               global $db, $systypes_array;
+               global $db, $systypes_array, $db_connections;
                
                if (!$this->preconf)
                        return false;
 
+               $pref = $db_connections[$company]['tbpref'];
                // Until 2.2 sanitizing text input with db_escape was not
                // consequent enough. To avoid comparision problems we have to 
                // fix this now.
@@ -45,7 +46,7 @@ class fa2_2 {
 
                // set item category dflt accounts to values from company GL setup
                $prefs = get_company_prefs();
-               $sql = "UPDATE {$pref}stock_category SET "
+               $sql = "UPDATE ".TB_PREF."stock_category SET "
                        ."dflt_sales_act = '" . $prefs['default_inv_sales_act'] . "',"
                        ."dflt_cogs_act = '". $prefs['default_cogs_act'] . "',"
                        ."dflt_inventory_act = '" . $prefs['default_inventory_act'] . "',"
@@ -60,14 +61,14 @@ class fa2_2 {
                foreach($systypes_array as $typeno => $typename) {
                        $info = get_systype_db_info($typeno);
                        if ($info == null || $info[3] == null) continue;
-                       $tbl = str_replace(TB_PREF, $pref, $info[0]);
+                       $tbl = $info[0];
                        $sql = "SELECT DISTINCT {$info[2]} as id,{$info[3]} as ref FROM $tbl";
                        if ($info[1])
                                $sql .= " WHERE {$info[1]}=$typeno";
                        $result = db_query($sql);
                        if (db_num_rows($result)) {
                                while ($row = db_fetch($result)) {
-                                       $res2 = db_query("INSERT INTO {$pref}refs VALUES("
+                                       $res2 = db_query("INSERT INTO ".TB_PREF."refs VALUES("
                                                . $row['id'].",".$typeno.",'".$row['ref']."')");
                                        if (!$res2) {
                                                display_error(_("Cannot copy references from $tbl")
@@ -78,7 +79,7 @@ class fa2_2 {
                        }
                }
 
-               if (!($ret = db_query("SELECT MAX(`order_no`) FROM `{$pref}sales_orders`")) ||
+               if (!($ret = db_query("SELECT MAX(`order_no`) FROM `".TB_PREF."sales_orders`")) ||
                        !db_num_rows($ret))
                {
                                display_error(_('Cannot query max sales order number.'));
@@ -87,7 +88,7 @@ class fa2_2 {
                $row = db_fetch($ret);
                $max_order = $row[0];
                $next_ref = $max_order+1;
-               $sql = "UPDATE `{$pref}sys_types` 
+               $sql = "UPDATE `".TB_PREF."sys_types` 
                        SET `type_no`='$max_order',`next_reference`='$next_ref'
                        WHERE `type_id`=30";
                if(!db_query($sql))
@@ -209,7 +210,7 @@ function convert_roles($pref)
                        }
                        $sections  = array_keys($sections);
                        sort($sections); sort($area_set);
-                       import_security_role($pref, $security_headings[$role_id], $sections, $area_set);
+                       import_security_role($security_headings[$role_id], $sections, $area_set);
                        $new_ids[$role_id] = db_insert_id();
                }
                $result = get_users(true);
@@ -219,7 +220,7 @@ function convert_roles($pref)
                }
                foreach($users as $old_id => $uids)
                        foreach( $uids as $id) {
-                               $sql = "UPDATE {$pref}users set role_id=".$new_ids[$old_id].
+                               $sql = "UPDATE ".TB_PREF."users set role_id=".$new_ids[$old_id].
                                        " WHERE id=$id";
                                $ret = db_query($sql, 'cannot update users roles');
                                if(!$ret) return false;
@@ -227,9 +228,9 @@ function convert_roles($pref)
                return true;
 }
 
-function import_security_role($pref, $name, $sections, $areas)
+function import_security_role($name, $sections, $areas)
 {
-       $sql = "INSERT INTO {$pref}security_roles (role, description, sections, areas)
+       $sql = "INSERT INTO ".TB_PREF."security_roles (role, description, sections, areas)
        VALUES (".db_escape('FA 2.1 '.$name).",".db_escape($name).","
        .db_escape(implode(';',$sections)).",".db_escape(implode(';',$areas)).")";
 
@@ -299,7 +300,7 @@ function sanitize_database($pref, $test = false) {
                        }
                }
 
-               if (empty($keys)) { // comments table have no primary key, so let's give up
+               if (empty($keys)) { // comments table have no primary key, so give up
                        continue;
                }
                if ($test)
@@ -325,10 +326,9 @@ function sanitize_database($pref, $test = false) {
                                $key[] = $k.'=\''.$rec[substr($k,1,-1)].'\'';
                        }
                        $sql .= implode( ' AND ', $key);
-                       if ($test) {
-                               error_log($sql);
+                       if ($test)
                                error_log("\t(".implode(',',$val).") updated");
-                       else
+                       else
                                db_query($sql, 'cannot update record');
                }
        }
index 2a517deb7321b79314cfa9ab6812bfaef9de01e3..7705f261fd221251ee7c96f935282e82354a887a 100644 (file)
@@ -24,7 +24,7 @@ class fa2_3 {
        //      Install procedure. All additional changes 
        //      not included in sql file should go here.
        //
-       function install($pref, $force) 
+       function install($company, $force) 
        {
                global $db_version, $dflt_lang;
 
@@ -35,8 +35,8 @@ class fa2_3 {
                if (!$this->beta) {
                        // all specials below are already done on 2.3beta
 
-                       $sql = "SELECT debtor_no, payment_terms FROM {$pref}debtors_master";
-               
+                       $sql = "SELECT debtor_no, payment_terms FROM ".TB_PREF."debtors_master";
+
                        $result = db_query($sql);
                        if (!$result) {
                                display_error("Cannot read customers"
@@ -45,7 +45,7 @@ class fa2_3 {
                        }
                        // update all sales orders and transactions with customer std payment terms
                        while($cust = db_fetch($result)) {
-                               $sql = "UPDATE {$pref}debtor_trans SET "
+                               $sql = "UPDATE ".TB_PREF."debtor_trans SET "
                                        ."payment_terms = '" .$cust['payment_terms']
                                        ."' WHERE debtor_no='".$cust['debtor_no']."'";
                                if (db_query($sql)==false) {
@@ -53,7 +53,7 @@ class fa2_3 {
                                        .':<br>'. db_error_msg($db));
                                        return false;
                                }
-                               $sql = "UPDATE {$pref}sales_orders SET "
+                               $sql = "UPDATE ".TB_PREF."sales_orders SET "
                                        ."payment_terms = '" .$cust['payment_terms']
                                        ."' WHERE debtor_no='".$cust['debtor_no']."'";
                                if (db_query($sql)==false) {
@@ -62,11 +62,11 @@ class fa2_3 {
                                        return false;
                                }
                        }
-                       if (!$this->update_totals($pref)) {
+                       if (!$this->update_totals()) {
                                display_error("Cannot update order totals");
                                return false;
                        }
-                       if (!$this->update_line_relations($pref)) {
+                       if (!$this->update_line_relations()) {
                                display_error("Cannot update sales document links");
                                return false;
                        }
@@ -82,18 +82,18 @@ class fa2_3 {
 
                        foreach($dropcol as $table => $columns)
                                foreach($columns as $col) {
-                                       if (db_query("ALTER TABLE `{$pref}{$table}` DROP `$col`")==false) {
+                                       if (db_query("ALTER TABLE `".TB_PREF."{$table}` DROP `$col`")==false) {
                                                display_error("Cannot drop {$table}.{$col} column:<br>".db_error_msg($db));
                                                return false;
                                        }
                                }
                        // remove old preferences table after upgrade script has been executed
-                       $sql = "DROP TABLE IF EXISTS `{$pref}company`";
+                       $sql = "DROP TABLE IF EXISTS `".TB_PREF."company`";
                        if (!db_query($sql))
                                return false;
                }
                $this->update_lang_cfg();
-               return  update_company_prefs(array('version_id'=>$db_version), $pref);
+               return  update_company_prefs(array('version_id'=>$db_version));
        }
        //
        //      Checking before install
@@ -131,33 +131,33 @@ class fa2_3 {
        /*
                Update order totals
        */
-       function update_totals($pref)
+       function update_totals()
        {
                global $path_to_root;
 
                include_once("$path_to_root/sales/includes/cart_class.inc");
                include_once("$path_to_root/purchasing/includes/po_class.inc");
                $cart = new cart(ST_SALESORDER);
-               $sql = "SELECT order_no, trans_type FROM {$pref}sales_orders";
+               $sql = "SELECT order_no, trans_type FROM ".TB_PREF."sales_orders";
                $orders = db_query($sql);
                if (!$orders)
                        return false;
                while ($order = db_fetch($orders)) {
                        read_sales_order($order['order_no'], $cart, $order['trans_type']);
-                       $result = db_query("UPDATE {$pref}sales_orders 
+                       $result = db_query("UPDATE ".TB_PREF."sales_orders 
                                SET total=".$cart->get_trans_total()
                                ." WHERE order_no=".$order[0]);
                        unset($cart->line_items);
                }
                unset($cart);
                $cart = new purch_order();
-               $sql = "SELECT order_no FROM {$pref}purch_orders";
+               $sql = "SELECT order_no FROM ".TB_PREF."purch_orders";
                $orders = db_query($sql);
                if (!$orders)
                         return false;
                while ($order_no = db_fetch($orders)) {
                        read_po($order_no[0], $cart);
-                       $result = db_query("UPDATE {$pref}purch_orders SET total=".$cart->get_trans_total());
+                       $result = db_query("UPDATE ".TB_PREF."purch_orders SET total=".$cart->get_trans_total());
                        unset($cart->line_items);
                }
                return true;
@@ -200,14 +200,14 @@ class fa2_3 {
                there can be sales documents with lines not properly linked to parents. This rare 
                cases will be described in error log.
        */
-       function update_line_relations($pref)
+       function update_line_relations()
        {
                global $path_to_root, $systypes_array;
 
                require_once("$path_to_root/includes/sysnames.inc");
                
-               $sql =  "SELECT d.type, trans_no, order_ FROM {$pref}debtor_trans d
-                       LEFT JOIN {$pref}voided v ON d.type=v.type AND d.trans_no=v.id
+               $sql =  "SELECT d.type, trans_no, order_ FROM ".TB_PREF."debtor_trans d
+                       LEFT JOIN ".TB_PREF."voided v ON d.type=v.type AND d.trans_no=v.id
                                WHERE ISNULL(v.type) AND 
                                (d.type=".ST_CUSTDELIVERY
                                ." OR d.type=".ST_SALESINVOICE
@@ -251,7 +251,7 @@ class fa2_3 {
                                if ($src_line['stock_id'] == $doc_line['stock_id']
                                        && ($src_line['quantity'] >= $doc_line['quantity'])) {
 
-                                       $sql = "UPDATE {$pref}debtor_trans_details SET src_id = {$src_line['id']}
+                                       $sql = "UPDATE ".TB_PREF."debtor_trans_details SET src_id = {$src_line['id']}
                                                WHERE id = {$doc_line['id']}";
                                        if (!db_query($sql))
                                                return false;
diff --git a/sql/alter2.4.php b/sql/alter2.4.php
new file mode 100644 (file)
index 0000000..3f29a73
--- /dev/null
@@ -0,0 +1,216 @@
+<?php
+/**********************************************************************
+    Copyright (C) FrontAccounting, LLC.
+       Released under the terms of the GNU General Public License, GPL, 
+       as published by the Free Software Foundation, either version 3 
+       of the License, or (at your option) any later version.
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+    See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
+***********************************************************************/
+class fa2_4 {
+       var $version = '2.4.0'; // version installed
+       var $description;
+       var $sql = 'alter2.4.sql';
+       var $preconf = true;
+       
+       function fa2_4() {
+               $this->description = _('Upgrade from version 2.3 to 2.4');
+       }
+       
+       //
+       //      Install procedure. All additional changes 
+       //      not included in sql file should go here.
+       //
+       function install($company, $force=false) 
+       {
+               global $db_version, $db_connections;
+
+               $pref = $db_connections[$company]['tbpref'];
+
+               if (get_company_pref('grn_clearing_act') === null) { // available form 2.3.1, can be not defined on pre-2.4 installations
+                       set_company_pref('grn_clearing_act', 'glsetup.purchase', 'varchar', 15, 0);
+               }
+               if (get_company_pref('default_receival_required') === null) { // new in 2.4 installations
+                       set_company_pref('default_receival_required', 'glsetup.purchase', 'smallint', 6, 10);
+               }
+               $result = $this->update_workorders()  && $this->update_grn_rates() && $this->switch_database_to_utf($pref);
+
+               if ($result)
+                       $result = $this->do_cleanup();
+
+               return  update_company_prefs(array('version_id'=>$db_version));
+       }
+       //
+       //      Checking before install
+       //
+       function pre_check($pref, $force)
+       {
+               return true;
+       }
+
+       //
+       // optional procedure done after upgrade fail, before backup is restored
+       //
+       function post_fail($pref)
+       {
+               db_query("DROP TABLE IF EXISTS " . $pref . 'wo_costing');
+       }
+       //
+       //      Test if patch was applied before.
+       //
+       function installed($pref)
+       {
+               $n = 2; // number of patches to be installed
+               $patchcnt = 0;
+
+               if (!check_table($pref, 'suppliers', 'tax_algorithm')) $patchcnt++;
+               if (!check_table($pref, 'wo_costing')) $patchcnt++;
+               return $n == $patchcnt ? true : ($patchcnt ? ($patchcnt.'/'. $n) : 0);
+       }
+
+       function update_workorders()
+       {
+               global $db;
+
+               $sql = "SELECT DISTINCT type, type_no, tran_date, person_id FROM ".TB_PREF."gl_trans WHERE `type`=".ST_WORKORDER
+               ." AND person_type_id=1";
+               $res = db_query($sql);
+               if (!$res)
+               {
+                       display_error("Cannot update work orders costs"
+                               .':<br>'. db_error_msg($db));
+                       return false;
+               }
+               while ($row = db_fetch($res))
+               {
+                       $journal_id = get_next_trans_no(ST_JOURNAL);
+
+                       $sql1 = "UPDATE ".TB_PREF."gl_trans SET `type`=".ST_JOURNAL.", type_no={$journal_id},
+                               person_type_id=NULL, person_id=0
+                               WHERE `type`=".ST_WORKORDER." AND type_no={$row['type_no']} AND tran_date='{$row['tran_date']}'
+                               AND person_id='{$row['person_id']}'";
+                       if (!db_query($sql1)) return false;
+                       
+                       $sql2 = "INSERT INTO ".TB_PREF."wo_costing (workorder_id, cost_type, trans_no) 
+                               VALUES ({$row['type_no']}, {$row['person_id']}, {$journal_id})";
+                       if (!db_query($sql2)) return false;
+               }
+               return true;
+       }
+
+/*
+       In previous versions FA ignored encoding settings on database/tables, so it depended on server settings,
+       but data stored is encoded in user language encoding. Now we switch to utf8 internal database encoding, while
+       user encoding can be selected independently.
+
+       To perform safe FA database switch to utf-8 encoding we have to first ensure that all text/char columns 
+       have properly set encoding (the same as its content), so the algorithm performed on every table is as follows:
+       . set default table encoding for the table to currently used on client side;
+       . for all text/char column:
+        - suppress autorecoding by change of the type to related binary/blob type
+        - change column to utf8 encodding and selected collation.
+       . change default table encoding to utf8
+*/
+       function switch_database_to_utf($pref, $test = false) {
+
+               global $installed_languages, $dflt_lang;
+
+               $old_encoding = 'latin1'; // default client encoding
+
+                // site default encoding is presumed as encoding for all databases!
+               $lang = array_search_value($dflt_lang, $installed_languages, 'code');
+               $new_encoding = get_mysql_encoding_name(strtoupper($lang['encoding']));
+       //      get_usec();
+               if ($test)
+                       error_log('Switching database to utf8 encoding from '.$old_encoding);
+               $collation = get_mysql_collation();
+               $tsql = "SHOW TABLES LIKE '".($pref=='' ? '' : substr($pref, 0, -1).'\\_')."%'";
+               $tresult = db_query($tsql, "Cannot select all tables with prefix '$pref'");
+               while($tbl = db_fetch($tresult)) {
+                       $table = $tbl[0];
+               // if ($table != '1_chart_master') continue; _vd($table); get_usec(); // fast debug on single table
+
+                       db_query("ALTER TABLE `$table` CONVERT TO CHARACTER SET $old_encoding"); // convert encoding on utf-8 tables
+
+                       // set proper default table encoding for current user language (used on binary->text conversion)
+                       db_query("ALTER TABLE `$table` CHARSET $new_encoding");
+                       $csql = "SHOW COLUMNS FROM $table";
+                       $cresult = db_query($csql, "Cannot select column names for table '$table'");
+                       $convert = false;
+
+                       $to_binary = $to_default = $to_utf = array();
+                       while($col = db_fetch($cresult)) {
+
+                               $bintype = strtr($col['Type'], array('varchar' => 'varbinary', 'char'=>'varbinary', 'text'=>'blob', 'tinytext'=>'tinyblob'));
+
+                               if ($bintype != $col['Type'])
+                               { // this is char/text column, so change encoding to proper encoding
+                                       if ($test)
+                                               error_log($table.'.'.$col['Field']);
+
+                                       $null = $col['Null'] === 'YES' ? ' NULL ' : ' NOT NULL ';
+                                       $default = $col['Null'] !== 'YES' && isset($col['Default']) ? ' DEFAULT '.db_escape($col['Default']) : '';
+
+                                       // to avoid column width multiplication x3 we old->binary->ui->utf column type change instead of column CONVERT
+
+                                       $to_binary[] = "CHANGE `".$col['Field']."` `".$col['Field']."` ".$bintype;
+                                       $to_default[] = "CHANGE `".$col['Field']."` `".$col['Field']."` ".$col['Type'].$null.$default;
+                                       $to_utf[] = "MODIFY COLUMN `".$col['Field']."` ".$col['Type']." COLLATE ".$collation.$null.$default;
+                                       $convert = true;
+                               }
+                       }
+                       if(count($to_binary))
+                       {
+                               $sql = "ALTER TABLE `$table` ".implode(',',$to_binary);
+                               db_query($sql);
+                               $sql = "ALTER TABLE `$table` ".implode(',',$to_default);
+                               db_query($sql);
+                               $sql = "ALTER TABLE `$table` ".implode(',',$to_utf);
+                               db_query($sql);
+                       }
+                       db_query("ALTER TABLE `$table` COLLATE $collation");
+               }
+               db_query("ALTER DATABASE COLLATE $collation");
+               if ($test)
+                       error_log('Convertion to utf8 done.');
+
+               return true;
+       }
+
+       function update_grn_rates()
+       {
+               $sql = "SELECT grn.id, grn.delivery_date, supp.curr_code 
+                       FROM ".TB_PREF."grn_batch grn, ".TB_PREF."suppliers supp
+                       WHERE supp.supplier_id=grn.supplier_id AND supp.curr_code!='".get_company_pref('curr_default')."'";
+               $result = db_query($sql);
+
+               if (!$result)
+                       return false;
+
+               $sql = "UPDATE ".TB_PREF."grn_batch SET rate=%s WHERE id=%d";
+               while ($grn = db_fetch($result))
+                       db_query(sprintf($sql, get_exchange_rate_from_home_currency($grn['curr_code'], sql2date($grn['delivery_date'])), $grn['id']));
+
+               return true;
+       }
+
+       function do_cleanup()
+       {
+               $dropcol = array(
+                               'tax_group_items' => array('rate'),
+                               'budget_trans' => array('type', 'type_no', 'person_id', 'person_type_id', 'memo_'),
+               );
+
+               foreach($dropcol as $table => $columns)
+                       foreach($columns as $col) {
+                               if (db_query("ALTER TABLE `".TB_PREF."{$table}` DROP `$col`") == false) {
+                                       display_error("Cannot drop {$table}.{$col} column:<br>".db_error_msg($db));
+                                       return false;
+                               }
+                       }
+       }
+}
+
+$install = new fa2_4;
diff --git a/sql/alter2.4.sql b/sql/alter2.4.sql
new file mode 100644 (file)
index 0000000..14afb1a
--- /dev/null
@@ -0,0 +1,85 @@
+ALTER TABLE `0_suppliers` ADD COLUMN  `tax_algorithm` tinyint(1) NOT NULL default '1' AFTER `tax_included`;
+ALTER TABLE `0_supp_trans` ADD COLUMN `tax_algorithm` tinyint(1) NULL default '1' AFTER `tax_included`;
+INSERT INTO `0_sys_prefs` VALUES('tax_algorithm','glsetup.customer', 'tinyint', 1, '1');
+INSERT INTO `0_sys_prefs` VALUES('gl_closing_date','setup.closing_date', 'date', 8, '');
+# Fix eventual invalid date/year in audit records
+UPDATE `0_audit_trail` audit 
+               LEFT JOIN `0_gl_trans` gl ON  gl.`type`=audit.`type` AND gl.type_no=audit.trans_no
+               LEFT JOIN `0_fiscal_year` year ON year.begin<=gl.tran_date AND year.end>=gl.tran_date
+               SET audit.gl_date=gl.tran_date, audit.fiscal_year=year.id
+               WHERE NOT ISNULL(gl.`type`);
+
+DROP TABLE IF EXISTS `0_wo_costing`;
+
+CREATE TABLE `0_wo_costing` (
+  `id` int(11) NOT NULL auto_increment,
+  `workorder_id` int(11) NOT NULL default '0',
+  `cost_type`  tinyint(1) NOT NULL default '0',
+  `trans_type` int(11) NOT NULL default '0',
+  `trans_no` int(11) NOT NULL default '0',
+  `factor` double NOT NULL default '1',
+  PRIMARY KEY  (`id`)
+) ENGINE=InnoDB;
+
+UPDATE `0_gl_trans` gl
+               LEFT JOIN `0_cust_branch` br ON br.receivables_account=gl.account AND br.debtor_no=gl.person_id AND gl.person_type_id=2
+               LEFT JOIN `0_suppliers` sup ON sup.payable_account=gl.account AND sup.supplier_id=gl.person_id AND gl.person_type_id=3
+ SET `person_id` = IF(br.receivables_account, br.debtor_no, IF(sup.payable_account, sup.supplier_id, NULL)), 
+       `person_type_id` = IF(br.receivables_account, 2, IF(sup.payable_account, 3, NULL));
+
+ALTER TABLE `0_tax_group_items` ADD COLUMN `tax_shipping` tinyint(1) NOT NULL default '0' AFTER `rate`;
+UPDATE `0_tax_group_items` tgi
+       SET tgi.tax_shipping=1
+       WHERE tgi.rate=(SELECT 0_tax_types.rate FROM 0_tax_types, 0_tax_groups 
+               WHERE tax_shipping=1 AND tgi.tax_group_id=0_tax_groups.id AND tgi.tax_type_id=0_tax_types.id);
+ALTER TABLE `0_tax_groups` DROP COLUMN `tax_shipping`;
+
+ALTER TABLE `0_sales_order_details` ADD KEY `stkcode` (`stk_code`);
+ALTER TABLE `0_purch_order_details` ADD KEY `itemcode` (`item_code`);
+ALTER TABLE `0_sys_prefs` CHANGE `value` `value` TEXT NOT NULL;
+ALTER TABLE `0_cust_branch` ADD COLUMN `bank_account` varchar(60) DEFAULT NULL AFTER `notes`;
+
+ALTER TABLE `0_debtor_trans` ADD COLUMN `tax_included` tinyint(1) unsigned NOT NULL default '0' AFTER `payment_terms`;
+UPDATE `0_debtor_trans` tr, `0_trans_tax_details` td SET tr.tax_included=td.included_in_price
+       WHERE tr.`type`=td.trans_type AND tr.trans_no=td.trans_no AND td.included_in_price;
+
+ALTER TABLE `0_bank_accounts` ADD COLUMN `bank_charge_act` varchar(15) NOT NULL DEFAULT '' AFTER `id`;
+UPDATE `0_bank_accounts` SET `bank_charge_act`=(SELECT `value` FROM 0_sys_prefs WHERE name='bank_charge_act');
+
+ALTER TABLE `0_users` ADD `transaction_days` INT( 6 ) NOT NULL default '30' COMMENT 'Transaction days' AFTER `startup_tab`;
+
+ALTER TABLE `0_purch_orders` ADD COLUMN `prep_amount` double NOT NULL DEFAULT 0 AFTER `total`;
+ALTER TABLE `0_purch_orders` ADD COLUMN `alloc` double NOT NULL DEFAULT 0 AFTER `prep_amount`;
+
+ALTER TABLE `0_sales_orders` ADD COLUMN `prep_amount` double NOT NULL DEFAULT 0 AFTER `total`;
+ALTER TABLE `0_sales_orders` ADD COLUMN `alloc` double NOT NULL DEFAULT 0 AFTER `prep_amount`;
+
+ALTER TABLE `0_cust_allocations` ADD  UNIQUE KEY(`trans_type_from`,`trans_no_from`,`trans_type_to`,`trans_no_to`);
+ALTER TABLE `0_supp_allocations` ADD  UNIQUE KEY(`trans_type_from`,`trans_no_from`,`trans_type_to`,`trans_no_to`);
+
+ALTER TABLE `0_sales_order_details` ADD COLUMN `invoiced` double NOT NULL DEFAULT 0 AFTER `quantity`;
+
+# update sales_order_details.invoiced with sum of invoiced quantities on all related SI
+UPDATE `0_sales_order_details` so
+       LEFT JOIN `0_debtor_trans_details` delivery ON delivery.`debtor_trans_type`=13 AND src_id=so.id
+       LEFT JOIN (SELECT src_id, sum(quantity) as qty FROM `0_debtor_trans_details` WHERE `debtor_trans_type`=10 GROUP BY src_id) inv
+               ON inv.src_id=delivery.id
+       SET `invoiced` = `invoiced`+inv.qty;
+
+ALTER TABLE `0_debtor_trans` ADD COLUMN `prep_amount` double NOT NULL DEFAULT 0 AFTER `alloc`;
+
+INSERT INTO `0_sys_prefs` VALUES ('deferred_income_act', 'glsetup.sales', 'varchar', '15', '');
+
+# set others transactions edition for all roles for backward  compatibility
+UPDATE `0_security_roles` SET `sections`=CONCAT_WS(';', `sections`, '768'), `areas`='775'
+       WHERE NOT `sections` REGEXP '[^0-9]?768[^0-9]?';
+
+UPDATE `0_security_roles` SET `areas`=CONCAT_WS(';', `areas`, '775')
+       WHERE NOT `areas` REGEXP '[^0-9]?775[^0-9]?';
+
+ALTER TABLE `0_stock_master` ADD COLUMN `no_purchase` tinyint(1) NOT NULL default '0' AFTER `no_sale`;
+ALTER TABLE `0_stock_category` ADD COLUMN `dflt_no_purchase` tinyint(1) NOT NULL default '0' AFTER `dflt_no_sale`;
+
+# added exchange rate field in grn_batch
+ALTER TABLE `0_grn_batch` ADD COLUMN `rate` double NULL default '1' AFTER `loc_code`;
+ALTER TABLE `0_users` CHANGE `query_size` `query_size` TINYINT(1) UNSIGNED NOT NULL DEFAULT 10; 
index abd195d707ea50a3d8d947856133e42ef1145cff..83477e704e5ab5715827601e0a954c835c56f93c 100644 (file)
@@ -102,6 +102,7 @@ CREATE TABLE IF NOT EXISTS `0_bank_accounts` (
   `bank_curr_code` char(3) NOT NULL default '',
   `dflt_curr_act` tinyint(1) NOT NULL default '0',
   `id` smallint(6) NOT NULL auto_increment,
+  `bank_charge_act` varchar(15) NOT NULL default '',
   `last_reconciled_date` timestamp NOT NULL default '0000-00-00 00:00:00',
   `ending_reconcile_balance` double NOT NULL default '0',
   `inactive` tinyint(1) NOT NULL default '0',
@@ -115,8 +116,8 @@ CREATE TABLE IF NOT EXISTS `0_bank_accounts` (
 -- Dumping data for table `0_bank_accounts`
 --
 
-INSERT INTO `0_bank_accounts` VALUES('1060', 0, 'Current account', '9999999999', 'Wachovia Bank', '', 'USD', 1, 1, '0000-00-00 00:00:00', 0, 0);
-INSERT INTO `0_bank_accounts` VALUES('1065', 3, 'Petty Cash account', 'N/A', 'N/A', '', 'USD', 0, 2, '0000-00-00 00:00:00', 0, 0);
+INSERT INTO `0_bank_accounts` VALUES('1060', 0, 'Current account', '9999999999', 'Wachovia Bank', '', 'USD', 1, 1, '5690', '0000-00-00 00:00:00', 0, 0);
+INSERT INTO `0_bank_accounts` VALUES('1065', 3, 'Petty Cash account', 'N/A', 'N/A', '', 'USD', 0, 2, '5690', '0000-00-00 00:00:00', 0, 0);
 
 -- --------------------------------------------------------
 
@@ -199,19 +200,14 @@ INSERT INTO `0_bom` VALUES(3, '3400', '104', 1, 'DEF', 1);
 
 DROP TABLE IF EXISTS `0_budget_trans`;
 CREATE TABLE IF NOT EXISTS `0_budget_trans` (
-  `counter` int(11) NOT NULL auto_increment,
-  `type` smallint(6) NOT NULL default '0',
-  `type_no` bigint(16) NOT NULL default '1',
+  `id` int(11) NOT NULL auto_increment,
   `tran_date` date NOT NULL default '0000-00-00',
   `account` varchar(15) NOT NULL default '',
   `memo_` tinytext NOT NULL,
   `amount` double NOT NULL default '0',
   `dimension_id` int(11) default '0',
   `dimension2_id` int(11) default '0',
-  `person_type_id` int(11) default NULL,
-  `person_id` tinyblob,
-  PRIMARY KEY  (`counter`),
-  KEY `Type_and_Number` (`type`,`type_no`),
+  PRIMARY KEY  (`id`),
   KEY `Account` (`account`,`tran_date`,`dimension_id`,`dimension2_id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=1 ;
 
@@ -573,7 +569,8 @@ CREATE TABLE IF NOT EXISTS `0_cust_allocations` (
   `trans_type_from` int(11) default NULL,
   `trans_no_to` int(11) default NULL,
   `trans_type_to` int(11) default NULL,
-  PRIMARY KEY  (`id`),
+  PRIMARY KEY (`id`),
+  UNIQUE KEY (`trans_type_from`,`trans_no_from`,`trans_type_to`,`trans_no_to`),
   KEY `From` (`trans_type_from`,`trans_no_from`),
   KEY `To` (`trans_type_to`,`trans_no_to`)
 ) ENGINE=InnoDB  AUTO_INCREMENT=2 ;
@@ -611,6 +608,7 @@ CREATE TABLE IF NOT EXISTS `0_cust_branch` (
   `br_post_address` tinytext NOT NULL,
   `group_no` int(11) NOT NULL default '0',
   `notes` tinytext NOT NULL,
+  `bank_account` varchar(60) DEFAULT NULL,
   `inactive` tinyint(1) NOT NULL default '0',
   PRIMARY KEY  (`branch_code`,`debtor_no`),
   KEY `branch_code` (`branch_code`),
@@ -622,9 +620,9 @@ CREATE TABLE IF NOT EXISTS `0_cust_branch` (
 -- Dumping data for table `0_cust_branch`
 --
 
-INSERT INTO `0_cust_branch` VALUES(1, 1, 'Beefeater Ltd.', 'Beefeater', '', 1, 1, 'Main Branch', 'DEF', 2, '', '4510', '1200', '4500', 1, 0, 'Address 1\nAddress 2\nAddress 3', 0, '', 0);
-INSERT INTO `0_cust_branch` VALUES(2, 2, 'Ghostbusters Corp.', 'Ghostbusters', 'Address 1\nAddress 2\nAddress 3', 1, 1, 'Main Branch', 'DEF', 1, '', '4510', '1200', '4500', 1, 0, 'Address 1\nAddress 2\nAddress 3', 0, '', 0);
-INSERT INTO `0_cust_branch` VALUES(3, 3, 'Brezan', 'Brezan', 'Address 1\nAddress 2\nAddress 3', 1, 1, 'Main Branch', 'DEF', 1, '', '4510', '1200', '4500', 1, 0, 'Address 1\nAddress 2\nAddress 3', 0, '', 0);
+INSERT INTO `0_cust_branch` VALUES(1, 1, 'Beefeater Ltd.', 'Beefeater', '', 1, 1, 'Main Branch', 'DEF', 2, '', '4510', '1200', '4500', 1, 0, 'Address 1\nAddress 2\nAddress 3', 0, '', '', 0);
+INSERT INTO `0_cust_branch` VALUES(2, 2, 'Ghostbusters Corp.', 'Ghostbusters', 'Address 1\nAddress 2\nAddress 3', 1, 1, 'Main Branch', 'DEF', 1, '', '4510', '1200', '4500', 1, 0, 'Address 1\nAddress 2\nAddress 3', 0, '','', 0);
+INSERT INTO `0_cust_branch` VALUES(3, 3, 'Brezan', 'Brezan', 'Address 1\nAddress 2\nAddress 3', 1, 1, 'Main Branch', 'DEF', 1, '', '4510', '1200', '4500', 1, 0, 'Address 1\nAddress 2\nAddress 3', 0, '', '', 0);
 
 -- --------------------------------------------------------
 
@@ -687,11 +685,13 @@ CREATE TABLE IF NOT EXISTS `0_debtor_trans` (
   `ov_freight_tax` double NOT NULL default '0',
   `ov_discount` double NOT NULL default '0',
   `alloc` double NOT NULL default '0',
+  `prep_amount` double NOT NULL DEFAULT '0',
   `rate` double NOT NULL default '1',
   `ship_via` int(11) default NULL,
   `dimension_id` int(11) NOT NULL default '0',
   `dimension2_id` int(11) NOT NULL default '0',
   `payment_terms` int(11) default NULL,
+  `tax_included` tinyint(1) unsigned NOT NULL default '0',
   PRIMARY KEY  (`type`,`trans_no`),
   KEY `debtor_no` (`debtor_no`,`branch_code`),
   KEY `tran_date` (`tran_date`),
@@ -702,14 +702,14 @@ CREATE TABLE IF NOT EXISTS `0_debtor_trans` (
 -- Dumping data for table `0_debtor_trans`
 --
 
-INSERT INTO `0_debtor_trans` VALUES(17, 10, 0, 2, 2, '2009-06-21', '2009-06-22', '1', 1, 2, 50, 2.5, 0, 0, 0, 0, 1, 1, 0, 0, 4);
-INSERT INTO `0_debtor_trans` VALUES(18, 10, 1, 3, 3, '2009-06-21', '2009-07-01', '2', 2, 3, 35.89, 1.79, 0, 0, 0, 37.68, 1.3932, 1, 2, 0, 3);
-INSERT INTO `0_debtor_trans` VALUES(19, 10, 0, 2, 2, '2009-06-21', '2009-06-22', '3', 1, 5, 50, 0, 5, 0, 0, 0, 1, 1, 0, 0, 4);
-INSERT INTO `0_debtor_trans` VALUES(3, 11, 0, 3, 3, '2009-06-21', '0000-00-00', '1', 2, 3, 35.89, 1.79, 0, 0, 0, 37.68, 1.3932, 1, 2, 0, 3);
-INSERT INTO `0_debtor_trans` VALUES(2, 13, 0, 1, 1, '2009-06-21', '2009-06-22', '1', 2, 1, 60.8, 0, 10, 0, 0, 0, 1.6445729799917, 1, 0, 0, 3);
-INSERT INTO `0_debtor_trans` VALUES(3, 13, 1, 2, 2, '2009-06-21', '2009-06-22', 'auto', 1, 2, 50, 2.5, 0, 0, 0, 0, 1, 1, 0, 0, 4);
-INSERT INTO `0_debtor_trans` VALUES(4, 13, 1, 3, 3, '2009-06-21', '2009-07-01', 'auto', 2, 3, 35.89, 1.79, 0, 0, 0, 0, 1.3932, 1, 2, 0, 3);
-INSERT INTO `0_debtor_trans` VALUES(5, 13, 1, 2, 2, '2009-06-21', '2009-06-22', 'auto', 1, 5, 50, 0, 5, 0, 0, 0, 1, 1, 0, 0, 4);
+INSERT INTO `0_debtor_trans` VALUES(17, 10, 0, 2, 2, '2009-06-21', '2009-06-22', '1', 1, 2, 50, 2.5, 0, 0, 0, 0, 0, 1, 1, 0, 0, 4, 0);
+INSERT INTO `0_debtor_trans` VALUES(18, 10, 1, 3, 3, '2009-06-21', '2009-07-01', '2', 2, 3, 35.89, 1.79, 0, 0, 0, 37.68, 0, 1.3932, 1, 2, 0, 3, 0);
+INSERT INTO `0_debtor_trans` VALUES(19, 10, 0, 2, 2, '2009-06-21', '2009-06-22', '3', 1, 5, 50, 0, 5, 0, 0, 0, 0, 1, 1, 0, 0, 4, 0);
+INSERT INTO `0_debtor_trans` VALUES(3, 11, 0, 3, 3, '2009-06-21', '0000-00-00', '1', 2, 3, 35.89, 1.79, 0, 0, 0, 37.68, 0, 1.3932, 1, 2, 0, 3, 0);
+INSERT INTO `0_debtor_trans` VALUES(2, 13, 0, 1, 1, '2009-06-21', '2009-06-22', '1', 2, 1, 60.8, 0, 10, 0, 0, 0, 0, 1.6445729799917, 1, 0, 0, 3, 0);
+INSERT INTO `0_debtor_trans` VALUES(3, 13, 1, 2, 2, '2009-06-21', '2009-06-22', 'auto', 1, 2, 50, 2.5, 0, 0, 0, 0, 0, 1, 1, 0, 0, 4, 0);
+INSERT INTO `0_debtor_trans` VALUES(4, 13, 1, 3, 3, '2009-06-21', '2009-07-01', 'auto', 2, 3, 35.89, 1.79, 0, 0, 0, 0, 0, 1.3932, 1, 2, 0, 3, 0);
+INSERT INTO `0_debtor_trans` VALUES(5, 13, 1, 2, 2, '2009-06-21', '2009-06-22', 'auto', 1, 5, 50, 0, 5, 0, 0, 0, 0, 1, 1, 0, 0, 4, 0);
 
 -- --------------------------------------------------------
 
@@ -960,6 +960,7 @@ CREATE TABLE IF NOT EXISTS `0_grn_batch` (
   `reference` varchar(60) NOT NULL default '',
   `delivery_date` date NOT NULL default '0000-00-00',
   `loc_code` varchar(5) default NULL,
+  `rate` double NOT NULL default '1',
   PRIMARY KEY  (`id`),
   KEY `delivery_date` (`delivery_date`),
   KEY `purch_order_no` (`purch_order_no`)
@@ -969,7 +970,7 @@ CREATE TABLE IF NOT EXISTS `0_grn_batch` (
 -- Dumping data for table `0_grn_batch`
 --
 
-INSERT INTO `0_grn_batch` VALUES(1, 2, 1, '1', '2009-06-21', 'DEF');
+INSERT INTO `0_grn_batch` VALUES(1, 2, 1, '1', '2009-06-21', 'DEF', '1');
 
 -- --------------------------------------------------------
 
@@ -1338,6 +1339,8 @@ CREATE TABLE IF NOT EXISTS `0_purch_orders` (
   `into_stock_location` varchar(5) NOT NULL default '',
   `delivery_address` tinytext NOT NULL,
   `total` double NOT NULL default '0',
+  `prep_amount` double NOT NULL DEFAULT '0',
+  `alloc` double NOT NULL DEFAULT '0',
   `tax_included` tinyint(1) NOT NULL default '0',
   PRIMARY KEY  (`order_no`),
   KEY `ord_date` (`ord_date`)
@@ -1347,8 +1350,8 @@ CREATE TABLE IF NOT EXISTS `0_purch_orders` (
 -- Dumping data for table `0_purch_orders`
 --
 
-INSERT INTO `0_purch_orders` VALUES(1, 2, '', '2009-06-01', '1', '', 'DEF', 'Delivery 1\nDelivery 2\nDelivery 3', 0, 0);
-INSERT INTO `0_purch_orders` VALUES(2, 3, '', '2009-06-21', '2', '', 'DEF', 'Delivery 1\nDelivery 2\nDelivery 3', 0, 0);
+INSERT INTO `0_purch_orders` VALUES(1, 2, '', '2009-06-01', '1', '', 'DEF', 'Delivery 1\nDelivery 2\nDelivery 3', 0, 0, 0, 0);
+INSERT INTO `0_purch_orders` VALUES(2, 3, '', '2009-06-21', '2', '', 'DEF', 'Delivery 1\nDelivery 2\nDelivery 3', 0, 0, 0, 0);
 
 -- --------------------------------------------------------
 
@@ -1370,7 +1373,8 @@ CREATE TABLE IF NOT EXISTS `0_purch_order_details` (
   `quantity_ordered` double NOT NULL default '0',
   `quantity_received` double NOT NULL default '0',
   PRIMARY KEY  (`po_detail_item`),
-  KEY `order` (`order_no`,`po_detail_item`)
+  KEY `order` (`order_no`,`po_detail_item`),
+  KEY `itemcode` (`item_code`)
 ) ENGINE=InnoDB  AUTO_INCREMENT=6 ;
 
 --
@@ -1544,6 +1548,8 @@ CREATE TABLE IF NOT EXISTS `0_sales_orders` (
   `delivery_date` date NOT NULL default '0000-00-00',
   `payment_terms` int(11) default NULL,
   `total` double NOT NULL default '0',
+  `prep_amount` double NOT NULL DEFAULT '0',
+  `alloc` double NOT NULL DEFAULT '0',
   PRIMARY KEY  (`trans_type`,`order_no`)
 ) ENGINE=InnoDB;
 
@@ -1551,11 +1557,11 @@ CREATE TABLE IF NOT EXISTS `0_sales_orders` (
 -- Dumping data for table `0_sales_orders`
 --
 
-INSERT INTO `0_sales_orders` VALUES(1, 30, 1, 0, 1, 1, '1', '', '', '2009-06-21', 2, 1, 'Address 1\nAddress 2\nAddress 3', '', '', 'Beefeater Ltd.', 10, 'DEF', '2009-06-22', 3, 0);
-INSERT INTO `0_sales_orders` VALUES(2, 30, 1, 0, 2, 2, '2', '', '', '2009-06-21', 1, 1, 'Address 1\nAddress 2\nAddress 3', '', '', 'Ghostbusters Corp.', 0, 'DEF', '2009-06-22', 4, 0);
-INSERT INTO `0_sales_orders` VALUES(3, 30, 1, 0, 3, 3, '3', '', '', '2009-06-21', 2, 1, 'Address 1\nAddress 2\nAddress 3', '', '', 'Brezan', 0, 'DEF', '2009-07-01', 3, 0);
-INSERT INTO `0_sales_orders` VALUES(4, 30, 0, 0, 1, 1, '4', '', '', '2009-06-21', 2, 1, 'Address 1\nAddress 2\nAddress 3', '', '', 'Beefeater Ltd.', 0, 'DEF', '2009-06-22', 3, 0);
-INSERT INTO `0_sales_orders` VALUES(5, 30, 1, 0, 2, 2, '5', '', '', '2009-06-21', 1, 1, 'Address 1\nAddress 2\nAddress 3', '', '', 'Ghostbusters Corp.', 5, 'DEF', '2009-06-22', 4, 0);
+INSERT INTO `0_sales_orders` VALUES(1, 30, 1, 0, 1, 1, '1', '', '', '2009-06-21', 2, 1, 'Address 1\nAddress 2\nAddress 3', '', '', 'Beefeater Ltd.', 10, 'DEF', '2009-06-22', 3, 0, 0, 0);
+INSERT INTO `0_sales_orders` VALUES(2, 30, 1, 0, 2, 2, '2', '', '', '2009-06-21', 1, 1, 'Address 1\nAddress 2\nAddress 3', '', '', 'Ghostbusters Corp.', 0, 'DEF', '2009-06-22', 4, 0, 0, 0);
+INSERT INTO `0_sales_orders` VALUES(3, 30, 1, 0, 3, 3, '3', '', '', '2009-06-21', 2, 1, 'Address 1\nAddress 2\nAddress 3', '', '', 'Brezan', 0, 'DEF', '2009-07-01', 3, 0, 0, 0);
+INSERT INTO `0_sales_orders` VALUES(4, 30, 0, 0, 1, 1, '4', '', '', '2009-06-21', 2, 1, 'Address 1\nAddress 2\nAddress 3', '', '', 'Beefeater Ltd.', 0, 'DEF', '2009-06-22', 3, 0, 0, 0);
+INSERT INTO `0_sales_orders` VALUES(5, 30, 1, 0, 2, 2, '5', '', '', '2009-06-21', 1, 1, 'Address 1\nAddress 2\nAddress 3', '', '', 'Ghostbusters Corp.', 5, 'DEF', '2009-06-22', 4, 0, 0, 0);
 
 -- --------------------------------------------------------
 
@@ -1573,20 +1579,22 @@ CREATE TABLE IF NOT EXISTS `0_sales_order_details` (
   `qty_sent` double NOT NULL default '0',
   `unit_price` double NOT NULL default '0',
   `quantity` double NOT NULL default '0',
+  `invoiced` double NOT NULL DEFAULT '0',
   `discount_percent` double NOT NULL default '0',
   PRIMARY KEY  (`id`),
-  KEY `sorder` (`trans_type`,`order_no`)
+  KEY `sorder` (`trans_type`,`order_no`),
+  KEY `stkcode` (`stk_code`)
 ) ENGINE=InnoDB  AUTO_INCREMENT=6 ;
 
 --
 -- Dumping data for table `0_sales_order_details`
 --
 
-INSERT INTO `0_sales_order_details` VALUES(1, 1, 30, '102', '17inch VGA Monitor', 2, 30.4, 2, 0);
-INSERT INTO `0_sales_order_details` VALUES(2, 2, 30, '102', '17inch VGA Monitor', 1, 50, 1, 0);
-INSERT INTO `0_sales_order_details` VALUES(3, 3, 30, '102', '17inch VGA Monitor', 1, 35.89, 1, 0);
-INSERT INTO `0_sales_order_details` VALUES(4, 4, 30, '102', '17inch VGA Monitor', 0, 21.28, 2, 0);
-INSERT INTO `0_sales_order_details` VALUES(5, 5, 30, '102', '17inch VGA Monitor', 1, 50, 1, 0);
+INSERT INTO `0_sales_order_details` VALUES(1, 1, 30, '102', '17inch VGA Monitor', 2, 30.4, 2, 0, 0);
+INSERT INTO `0_sales_order_details` VALUES(2, 2, 30, '102', '17inch VGA Monitor', 1, 50, 1, 0, 0);
+INSERT INTO `0_sales_order_details` VALUES(3, 3, 30, '102', '17inch VGA Monitor', 1, 35.89, 1, 0, 0);
+INSERT INTO `0_sales_order_details` VALUES(4, 4, 30, '102', '17inch VGA Monitor', 0, 21.28, 2, 0, 0);
+INSERT INTO `0_sales_order_details` VALUES(5, 5, 30, '102', '17inch VGA Monitor', 1, 50, 1, 0, 0);
 
 -- --------------------------------------------------------
 
@@ -1659,16 +1667,16 @@ CREATE TABLE IF NOT EXISTS `0_security_roles` (
 -- Dumping data for table `0_security_roles`
 --
 
-INSERT INTO `0_security_roles` VALUES(1, 'Inquiries', 'Inquiries', '768;2816;3072;3328;5632;5888;8192;8448;10752;11008;13312;15872;16128', '257;258;259;260;513;514;515;516;517;518;519;520;521;522;523;524;525;773;774;2822;3073;3075;3076;3077;3329;3330;3331;3332;3333;3334;3335;5377;5633;5640;5889;5890;5891;7937;7938;7939;7940;8193;8194;8450;8451;10497;10753;11009;11010;11012;13313;13315;15617;15618;15619;15620;15621;15622;15623;15624;15625;15626;15873;15882;16129;16130;16131;16132', 0);
-INSERT INTO `0_security_roles` VALUES(2, 'System Administrator', 'System Administrator', '256;512;768;2816;3072;3328;5376;5632;5888;7936;8192;8448;10496;10752;11008;13056;13312;15616;15872;16128', '257;258;259;260;513;514;515;516;517;518;519;520;521;522;523;524;525;526;769;770;771;772;773;774;2817;2818;2819;2820;2821;2822;2823;3073;3074;3082;3075;3076;3077;3078;3079;3080;3081;3329;3330;3331;3332;3333;3334;3335;5377;5633;5634;5635;5636;5637;5641;5638;5639;5640;5889;5890;5891;7937;7938;7939;7940;8193;8194;8195;8196;8197;8449;8450;8451;10497;10753;10754;10755;10756;10757;11009;11010;11011;11012;13057;13313;13314;13315;15617;15618;15619;15620;15621;15622;15623;15624;15628;15625;15626;15627;15873;15874;15875;15876;15877;15878;15879;15880;15883;15881;15882;16129;16130;16131;16132', 0);
-INSERT INTO `0_security_roles` VALUES(3, 'Salesman', 'Salesman', '768;3072;5632;8192;15872', '773;774;3073;3075;3081;5633;8194;15873', 0);
-INSERT INTO `0_security_roles` VALUES(4, 'Stock Manager', 'Stock Manager', '2816;3072;3328;5632;5888;8192;8448;10752;11008;13312;15872;16128', '2818;2822;3073;3076;3077;3329;3330;3330;3330;3331;3331;3332;3333;3334;3335;5633;5640;5889;5890;5891;8193;8194;8450;8451;10753;11009;11010;11012;13313;13315;15882;16129;16130;16131;16132', 0);
-INSERT INTO `0_security_roles` VALUES(5, 'Production Manager', 'Production Manager', '512;2816;3072;3328;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '521;523;524;2818;2819;2820;2821;2822;2823;3073;3074;3076;3077;3078;3079;3080;3081;3329;3330;3330;3330;3331;3331;3332;3333;3334;3335;5633;5640;5640;5889;5890;5891;8193;8194;8196;8197;8450;8451;10753;10755;11009;11010;11012;13313;13315;15617;15619;15620;15621;15624;15624;15876;15877;15880;15882;16129;16130;16131;16132', 0);
-INSERT INTO `0_security_roles` VALUES(6, 'Purchase Officer', 'Purchase Officer', '512;2816;3072;3328;5376;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '521;523;524;2818;2819;2820;2821;2822;2823;3073;3074;3076;3077;3078;3079;3080;3081;3329;3330;3330;3330;3331;3331;3332;3333;3334;3335;5377;5633;5635;5640;5640;5889;5890;5891;8193;8194;8196;8197;8449;8450;8451;10753;10755;11009;11010;11012;13313;13315;15617;15619;15620;15621;15624;15624;15876;15877;15880;15882;16129;16130;16131;16132', 0);
-INSERT INTO `0_security_roles` VALUES(7, 'AR Officer', 'AR Officer', '512;768;2816;3072;3328;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '521;523;524;771;773;774;2818;2819;2820;2821;2822;2823;3073;3073;3074;3075;3076;3077;3078;3079;3080;3081;3081;3329;3330;3330;3330;3331;3331;3332;3333;3334;3335;5633;5633;5634;5637;5638;5639;5640;5640;5889;5890;5891;8193;8194;8194;8196;8197;8450;8451;10753;10755;11009;11010;11012;13313;13315;15617;15619;15620;15621;15624;15624;15873;15876;15877;15878;15880;15882;16129;16130;16131;16132', 0);
-INSERT INTO `0_security_roles` VALUES(8, 'AP Officer', 'AP Officer', '512;2816;3072;3328;5376;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '257;258;259;260;521;523;524;769;770;771;772;773;774;2818;2819;2820;2821;2822;2823;3073;3074;3082;3076;3077;3078;3079;3080;3081;3329;3330;3331;3332;3333;3334;3335;5377;5633;5635;5640;5889;5890;5891;7937;7938;7939;7940;8193;8194;8196;8197;8449;8450;8451;10497;10753;10755;11009;11010;11012;13057;13313;13315;15617;15619;15620;15621;15624;15876;15877;15880;15882;16129;16130;16131;16132', 0);
-INSERT INTO `0_security_roles` VALUES(9, 'Accountant', 'New Accountant', '512;768;2816;3072;3328;5376;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '257;258;259;260;521;523;524;771;772;773;774;2818;2819;2820;2821;2822;2823;3073;3074;3075;3076;3077;3078;3079;3080;3081;3329;3330;3331;3332;3333;3334;3335;5377;5633;5634;5635;5637;5638;5639;5640;5889;5890;5891;7937;7938;7939;7940;8193;8194;8196;8197;8449;8450;8451;10497;10753;10755;11009;11010;11012;13313;13315;15617;15618;15619;15620;15621;15624;15873;15876;15877;15878;15880;15882;16129;16130;16131;16132', 0);
-INSERT INTO `0_security_roles` VALUES(10, 'Sub Admin', 'Sub Admin', '512;768;2816;3072;3328;5376;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '257;258;259;260;521;523;524;771;772;773;774;2818;2819;2820;2821;2822;2823;3073;3074;3082;3075;3076;3077;3078;3079;3080;3081;3329;3330;3331;3332;3333;3334;3335;5377;5633;5634;5635;5637;5638;5639;5640;5889;5890;5891;7937;7938;7939;7940;8193;8194;8196;8197;8449;8450;8451;10497;10753;10755;11009;11010;11012;13057;13313;13315;15617;15619;15620;15621;15624;15873;15874;15876;15877;15878;15879;15880;15882;16129;16130;16131;16132', 0);
+INSERT INTO `0_security_roles` VALUES(1, 'Inquiries', 'Inquiries', '768;2816;3072;3328;5632;5888;8192;8448;10752;11008;13312;15872;16128', '257;258;259;260;513;514;515;516;517;518;519;520;521;522;523;524;525;773;774;2822;3073;3075;3076;3077;3329;3330;3331;3332;3333;3334;3335;5377;5633;5640;5889;5890;5891;7937;7938;7939;7940;8193;8194;8450;8451;10497;10753;11009;11010;11012;13313;13315;15617;15618;15619;15620;15621;15622;15623;15624;15625;15626;15873;15882;16129;16130;16131;16132;775', 0);
+INSERT INTO `0_security_roles` VALUES(2, 'System Administrator', 'System Administrator', '256;512;768;2816;3072;3328;5376;5632;5888;7936;8192;8448;10496;10752;11008;13056;13312;15616;15872;16128', '257;258;259;260;513;514;515;516;517;518;519;520;521;522;523;524;525;526;769;770;771;772;773;774;2817;2818;2819;2820;2821;2822;2823;3073;3074;3082;3075;3076;3077;3078;3079;3080;3081;3329;3330;3331;3332;3333;3334;3335;5377;5633;5634;5635;5636;5637;5641;5638;5639;5640;5889;5890;5891;7937;7938;7939;7940;8193;8194;8195;8196;8197;8449;8450;8451;10497;10753;10754;10755;10756;10757;11009;11010;11011;11012;13057;13313;13314;13315;15617;15618;15619;15620;15621;15622;15623;15624;15628;15625;15626;15627;15873;15874;15875;15876;15877;15878;15879;15880;15883;15881;15882;16129;16130;16131;16132;775', 0);
+INSERT INTO `0_security_roles` VALUES(3, 'Salesman', 'Salesman', '768;3072;5632;8192;15872', '773;774;3073;3075;3081;5633;8194;15873;775', 0);
+INSERT INTO `0_security_roles` VALUES(4, 'Stock Manager', 'Stock Manager', '768;2816;3072;3328;5632;5888;8192;8448;10752;11008;13312;15872;16128', '2818;2822;3073;3076;3077;3329;3330;3330;3330;3331;3331;3332;3333;3334;3335;5633;5640;5889;5890;5891;8193;8194;8450;8451;10753;11009;11010;11012;13313;13315;15882;16129;16130;16131;16132;775', 0);
+INSERT INTO `0_security_roles` VALUES(5, 'Production Manager', 'Production Manager', '512;768;2816;3072;3328;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '521;523;524;2818;2819;2820;2821;2822;2823;3073;3074;3076;3077;3078;3079;3080;3081;3329;3330;3330;3330;3331;3331;3332;3333;3334;3335;5633;5640;5640;5889;5890;5891;8193;8194;8196;8197;8450;8451;10753;10755;11009;11010;11012;13313;13315;15617;15619;15620;15621;15624;15624;15876;15877;15880;15882;16129;16130;16131;16132;775', 0);
+INSERT INTO `0_security_roles` VALUES(6, 'Purchase Officer', 'Purchase Officer', '512;768;2816;3072;3328;5376;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '521;523;524;2818;2819;2820;2821;2822;2823;3073;3074;3076;3077;3078;3079;3080;3081;3329;3330;3330;3330;3331;3331;3332;3333;3334;3335;5377;5633;5635;5640;5640;5889;5890;5891;8193;8194;8196;8197;8449;8450;8451;10753;10755;11009;11010;11012;13313;13315;15617;15619;15620;15621;15624;15624;15876;15877;15880;15882;16129;16130;16131;16132;775', 0);
+INSERT INTO `0_security_roles` VALUES(7, 'AR Officer', 'AR Officer', '512;768;2816;3072;3328;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '521;523;524;771;773;774;2818;2819;2820;2821;2822;2823;3073;3073;3074;3075;3076;3077;3078;3079;3080;3081;3081;3329;3330;3330;3330;3331;3331;3332;3333;3334;3335;5633;5633;5634;5637;5638;5639;5640;5640;5889;5890;5891;8193;8194;8194;8196;8197;8450;8451;10753;10755;11009;11010;11012;13313;13315;15617;15619;15620;15621;15624;15624;15873;15876;15877;15878;15880;15882;16129;16130;16131;16132;775', 0);
+INSERT INTO `0_security_roles` VALUES(8, 'AP Officer', 'AP Officer', '512;768;2816;3072;3328;5376;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '257;258;259;260;521;523;524;769;770;771;772;773;774;2818;2819;2820;2821;2822;2823;3073;3074;3082;3076;3077;3078;3079;3080;3081;3329;3330;3331;3332;3333;3334;3335;5377;5633;5635;5640;5889;5890;5891;7937;7938;7939;7940;8193;8194;8196;8197;8449;8450;8451;10497;10753;10755;11009;11010;11012;13057;13313;13315;15617;15619;15620;15621;15624;15876;15877;15880;15882;16129;16130;16131;16132;775', 0);
+INSERT INTO `0_security_roles` VALUES(9, 'Accountant', 'New Accountant', '512;768;2816;3072;3328;5376;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '257;258;259;260;521;523;524;771;772;773;774;2818;2819;2820;2821;2822;2823;3073;3074;3075;3076;3077;3078;3079;3080;3081;3329;3330;3331;3332;3333;3334;3335;5377;5633;5634;5635;5637;5638;5639;5640;5889;5890;5891;7937;7938;7939;7940;8193;8194;8196;8197;8449;8450;8451;10497;10753;10755;11009;11010;11012;13313;13315;15617;15618;15619;15620;15621;15624;15873;15876;15877;15878;15880;15882;16129;16130;16131;16132;775', 0);
+INSERT INTO `0_security_roles` VALUES(10, 'Sub Admin', 'Sub Admin', '512;768;2816;3072;3328;5376;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '257;258;259;260;521;523;524;771;772;773;774;2818;2819;2820;2821;2822;2823;3073;3074;3082;3075;3076;3077;3078;3079;3080;3081;3329;3330;3331;3332;3333;3334;3335;5377;5633;5634;5635;5637;5638;5639;5640;5889;5890;5891;7937;7938;7939;7940;8193;8194;8196;8197;8449;8450;8451;10497;10753;10755;11009;11010;11012;13057;13313;13315;15617;15619;15620;15621;15624;15873;15874;15876;15877;15878;15879;15880;15882;16129;16130;16131;16132;775', 0);
 
 -- --------------------------------------------------------
 
@@ -1737,6 +1745,7 @@ CREATE TABLE IF NOT EXISTS `0_stock_category` (
   `dflt_dim2` int(11) default NULL,
   `inactive` tinyint(1) NOT NULL default '0',
   `dflt_no_sale` tinyint(1) NOT NULL default '0',
+  `dflt_no_purchase` tinyint(1) NOT NULL default '0',
   PRIMARY KEY  (`category_id`),
   UNIQUE KEY `description` (`description`)
 ) ENGINE=MyISAM  AUTO_INCREMENT=5 ;
@@ -1745,10 +1754,10 @@ CREATE TABLE IF NOT EXISTS `0_stock_category` (
 -- Dumping data for table `0_stock_category`
 --
 
-INSERT INTO `0_stock_category` VALUES(1, 'Components', 1, 'each', 'B', '4010', '5010', '1510', '5040', '1530', 0, 0, 0, 0);
-INSERT INTO `0_stock_category` VALUES(2, 'Charges', 1, 'each', 'D', '4010', '5010', '1510', '5040', '1530', 0, 0, 0, 0);
-INSERT INTO `0_stock_category` VALUES(3, 'Systems', 1, 'each', 'M', '4010', '5010', '1510', '5040', '1530', 0, 0, 0, 0);
-INSERT INTO `0_stock_category` VALUES(4, 'Services', 1, 'hrs', 'D', '4010', '5010', '1510', '5040', '1530', 0, 0, 0, 0);
+INSERT INTO `0_stock_category` VALUES(1, 'Components', 1, 'each', 'B', '4010', '5010', '1510', '5040', '1530', 0, 0, 0, 0, 0);
+INSERT INTO `0_stock_category` VALUES(2, 'Charges', 1, 'each', 'D', '4010', '5010', '1510', '5040', '1530', 0, 0, 0, 0, 0);
+INSERT INTO `0_stock_category` VALUES(3, 'Systems', 1, 'each', 'M', '4010', '5010', '1510', '5040', '1530', 0, 0, 0, 0, 0);
+INSERT INTO `0_stock_category` VALUES(4, 'Services', 1, 'hrs', 'D', '4010', '5010', '1510', '5040', '1530', 0, 0, 0, 0, 0);
 
 -- --------------------------------------------------------
 
@@ -1779,6 +1788,7 @@ CREATE TABLE IF NOT EXISTS `0_stock_master` (
   `overhead_cost` double NOT NULL default '0',
   `inactive` tinyint(1) NOT NULL default '0',
   `no_sale` tinyint(1) NOT NULL default '0',
+  `no_purchase` tinyint(1) NOT NULL default '0',
   `editable` tinyint(1) NOT NULL default '0',
   PRIMARY KEY  (`stock_id`)
 ) ENGINE=InnoDB;
@@ -1787,11 +1797,11 @@ CREATE TABLE IF NOT EXISTS `0_stock_master` (
 -- Dumping data for table `0_stock_master`
 --
 
-INSERT INTO `0_stock_master` VALUES('102', 1, 1, '17inch VGA Monitor', '', 'ea.', 'B', '4010', '5010', '1510', '5040', '1530', 0, 0, 0, 0, 10, 0, 0, 0, 0, 0);
-INSERT INTO `0_stock_master` VALUES('103', 1, 1, '32MB VGA Card', '', 'ea.', 'B', '4010', '5010', '1510', '5040', '1530', 0, 0, 0, 0, 11, 0, 0, 0, 0, 0);
-INSERT INTO `0_stock_master` VALUES('104', 1, 1, '52x CD Drive', '', 'ea.', 'B', '4010', '5010', '1510', '5040', '1530', 0, 0, 0, 0, 12, 0, 0, 0, 0, 0);
-INSERT INTO `0_stock_master` VALUES('201', 4, 1, 'Assembly Labour', '', 'hrs', 'D', '4010', '5010', '5010', '5040', '1530', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
-INSERT INTO `0_stock_master` VALUES('3400', 3, 1, 'P4 Business System', '', 'ea.', 'M', '4010', '5010', '1540', '5040', '1530', 0, 0, 0, 0, 33, 3.9999999999999, 2, 0, 0, 0);
+INSERT INTO `0_stock_master` VALUES('102', 1, 1, '17inch VGA Monitor', '', 'ea.', 'B', '4010', '5010', '1510', '5040', '1530', 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0);
+INSERT INTO `0_stock_master` VALUES('103', 1, 1, '32MB VGA Card', '', 'ea.', 'B', '4010', '5010', '1510', '5040', '1530', 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0);
+INSERT INTO `0_stock_master` VALUES('104', 1, 1, '52x CD Drive', '', 'ea.', 'B', '4010', '5010', '1510', '5040', '1530', 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0);
+INSERT INTO `0_stock_master` VALUES('201', 4, 1, 'Assembly Labour', '', 'hrs', 'D', '4010', '5010', '5010', '5040', '1530', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+INSERT INTO `0_stock_master` VALUES('3400', 3, 1, 'P4 Business System', '', 'ea.', 'M', '4010', '5010', '1540', '5040', '1530', 0, 0, 0, 0, 33, 3.9999999999999, 2, 0, 0, 0, 0);
 
 -- --------------------------------------------------------
 
@@ -1881,6 +1891,7 @@ CREATE TABLE IF NOT EXISTS `0_suppliers` (
   `curr_code` char(3) default NULL,
   `payment_terms` int(11) default NULL,
   `tax_included` tinyint(1) NOT NULL default '0',
+  `tax_algorithm` tinyint(1) NOT NULL default '1',
   `dimension_id` int(11) default '0',
   `dimension2_id` int(11) default '0',
   `tax_group_id` int(11) default NULL,
@@ -1898,9 +1909,9 @@ CREATE TABLE IF NOT EXISTS `0_suppliers` (
 -- Dumping data for table `0_suppliers`
 --
 
-INSERT INTO `0_suppliers` VALUES(1, 'Junk Beer ApS', 'Junk Beer', 'Mailing 1\nMailing 2\nMailing 3', 'Address 1\nAddress 2\nAddress 3', '123456', 'Contact', '111', '', '', 'DKK', 3, 0, 1, 0, 2, 1000, '', '2100', '5060', 'A supplier with junk beers.', 0);
-INSERT INTO `0_suppliers` VALUES(2, 'Lucky Luke Inc.', 'Lucky Luke', 'Mailing 1\nMailing 2\nMailing 3', 'Address 1\nAddress 2\nAddress 3', '654321', 'Luke', '333', '', '', 'USD', 3, 0, 0, 0, 1, 500, '', '2100', '5060', '', 0);
-INSERT INTO `0_suppliers` VALUES(3, 'Money Makers Ltd.', 'Money Makers', 'Mailing 1\nMailing 2\nMailing 3', 'Address 1\nAddress 2\nAddress 3', '987654', 'Makers', '222', '', '', 'GBP', 3, 0, 0, 0, 2, 300, '', '2100', '5060', '', 0);
+INSERT INTO `0_suppliers` VALUES(1, 'Junk Beer ApS', 'Junk Beer', 'Mailing 1\nMailing 2\nMailing 3', 'Address 1\nAddress 2\nAddress 3', '123456', 'Contact', '111', '', '', 'DKK', 3, 0, 1, 1, 0, 2, 1000, '', '2100', '5060', 'A supplier with junk beers.', 0);
+INSERT INTO `0_suppliers` VALUES(2, 'Lucky Luke Inc.', 'Lucky Luke', 'Mailing 1\nMailing 2\nMailing 3', 'Address 1\nAddress 2\nAddress 3', '654321', 'Luke', '333', '', '', 'USD', 3, 0, 1, 0, 0, 1, 500, '', '2100', '5060', '', 0);
+INSERT INTO `0_suppliers` VALUES(3, 'Money Makers Ltd.', 'Money Makers', 'Mailing 1\nMailing 2\nMailing 3', 'Address 1\nAddress 2\nAddress 3', '987654', 'Makers', '222', '', '', 'GBP', 3, 0, 1, 0, 0, 2, 300, '', '2100', '5060', '', 0);
 
 -- --------------------------------------------------------
 
@@ -1917,7 +1928,8 @@ CREATE TABLE IF NOT EXISTS `0_supp_allocations` (
   `trans_type_from` int(11) default NULL,
   `trans_no_to` int(11) default NULL,
   `trans_type_to` int(11) default NULL,
-  PRIMARY KEY  (`id`),
+  PRIMARY KEY (`id`),
+  UNIQUE KEY (`trans_type_from`,`trans_no_from`,`trans_type_to`,`trans_no_to`),
   KEY `From` (`trans_type_from`,`trans_no_from`),
   KEY `To` (`trans_type_to`,`trans_no_to`)
 ) ENGINE=InnoDB  AUTO_INCREMENT=2 ;
@@ -1983,6 +1995,7 @@ CREATE TABLE IF NOT EXISTS `0_supp_trans` (
   `rate` double NOT NULL default '1',
   `alloc` double NOT NULL default '0',
   `tax_included` tinyint(1) NOT NULL default '0',
+  `tax_algorithm` tinyint(1) NOT NULL default '1',
   PRIMARY KEY  (`type`,`trans_no`),
   KEY `supplier_id` (`supplier_id`),
   KEY `SupplierID_2` (`supplier_id`,`supp_reference`),
@@ -1994,9 +2007,9 @@ CREATE TABLE IF NOT EXISTS `0_supp_trans` (
 -- Dumping data for table `0_supp_trans`
 --
 
-INSERT INTO `0_supp_trans` VALUES(7, 20, 2, '1', '5t', '2009-06-21', '2009-07-01', 3300, 0, 165, 1, 3465, 0);
-INSERT INTO `0_supp_trans` VALUES(8, 20, 2, '2', 'cc', '2009-06-21', '2009-07-01', 20, 0, 0, 1, 0, 0);
-INSERT INTO `0_supp_trans` VALUES(4, 22, 2, '1', '', '2009-06-21', '2009-06-21', -3465, 0, 0, 1, 3465, 0);
+INSERT INTO `0_supp_trans` VALUES(7, 20, 2, '1', '5t', '2009-06-21', '2009-07-01', 3300, 0, 165, 1, 3465, 0, 1);
+INSERT INTO `0_supp_trans` VALUES(8, 20, 2, '2', 'cc', '2009-06-21', '2009-07-01', 20, 0, 0, 1, 0, 0, 1);
+INSERT INTO `0_supp_trans` VALUES(4, 22, 2, '1', '', '2009-06-21', '2009-06-21', -3465, 0, 0, 1, 3465, 0, 1);
 
 -- --------------------------------------------------------
 
@@ -2010,7 +2023,7 @@ CREATE TABLE IF NOT EXISTS `0_sys_prefs` (
   `category` varchar(30) default NULL,
   `type` varchar(20) NOT NULL default '',
   `length` smallint(6) default NULL,
-  `value` tinytext,
+  `value` text NOT NULL,
   PRIMARY KEY  (`name`),
   KEY `category` (`category`)
 ) ENGINE=MyISAM;
@@ -2046,6 +2059,7 @@ INSERT INTO `0_sys_prefs` VALUES('profit_loss_year_act', 'glsetup.general', 'var
 INSERT INTO `0_sys_prefs` VALUES('retained_earnings_act', 'glsetup.general', 'varchar', 15, '3590');
 INSERT INTO `0_sys_prefs` VALUES('bank_charge_act', 'glsetup.general', 'varchar', 15, '5690');
 INSERT INTO `0_sys_prefs` VALUES('exchange_diff_act', 'glsetup.general', 'varchar', 15, '4450');
+INSERT INTO `0_sys_prefs` VALUES('tax_algorithm', 'glsetup.customer', 'tinyint', 1, '1');
 INSERT INTO `0_sys_prefs` VALUES('default_credit_limit', 'glsetup.customer', 'int', 11, '1000');
 INSERT INTO `0_sys_prefs` VALUES('accumulate_shipping', 'glsetup.customer', 'tinyint', 1, '0');
 INSERT INTO `0_sys_prefs` VALUES('legal_text', 'glsetup.customer', 'tinytext', 0, '');
@@ -2055,6 +2069,7 @@ INSERT INTO `0_sys_prefs` VALUES('default_sales_act', 'glsetup.sales', 'varchar'
 INSERT INTO `0_sys_prefs` VALUES('default_sales_discount_act', 'glsetup.sales', 'varchar', 15, '4510');
 INSERT INTO `0_sys_prefs` VALUES('default_prompt_payment_act', 'glsetup.sales', 'varchar', 15, '4500');
 INSERT INTO `0_sys_prefs` VALUES('default_delivery_required', 'glsetup.sales', 'smallint', 6, '1');
+INSERT INTO `0_sys_prefs` VALUES('default_receival_required', 'glsetup.purchase', 'smallint', 6, '10');
 INSERT INTO `0_sys_prefs` VALUES('default_dim_required', 'glsetup.dims', 'int', 11, '20');
 INSERT INTO `0_sys_prefs` VALUES('pyt_discount_act', 'glsetup.purchase', 'varchar', 15, '5060');
 INSERT INTO `0_sys_prefs` VALUES('creditors_act', 'glsetup.purchase', 'varchar', 15, '2100');
@@ -2071,6 +2086,8 @@ INSERT INTO `0_sys_prefs` VALUES('version_id', 'system', 'varchar', 11, '2.3rc')
 INSERT INTO `0_sys_prefs` VALUES('auto_curr_reval', 'setup.company', 'smallint', 6, '1');
 INSERT INTO `0_sys_prefs` VALUES('grn_clearing_act', 'glsetup.purchase', 'varchar', 15, '1550');
 INSERT INTO `0_sys_prefs` VALUES('bcc_email', 'setup.company', 'varchar', 100, '');
+INSERT INTO `0_sys_prefs` VALUES('deferred_income_act', 'glsetup.sales', 'varchar', '15', '');
+INSERT INTO `0_sys_prefs` VALUES('gl_closing_date','setup.closing_date', 'date', 8, '');
 
 -- --------------------------------------------------------
 
@@ -2163,7 +2180,6 @@ DROP TABLE IF EXISTS `0_tax_groups`;
 CREATE TABLE IF NOT EXISTS `0_tax_groups` (
   `id` int(11) NOT NULL auto_increment,
   `name` varchar(60) NOT NULL default '',
-  `tax_shipping` tinyint(1) NOT NULL default '0',
   `inactive` tinyint(1) NOT NULL default '0',
   PRIMARY KEY  (`id`),
   UNIQUE KEY `name` (`name`)
@@ -2173,8 +2189,8 @@ CREATE TABLE IF NOT EXISTS `0_tax_groups` (
 -- Dumping data for table `0_tax_groups`
 --
 
-INSERT INTO `0_tax_groups` VALUES(1, 'Tax', 0, 0);
-INSERT INTO `0_tax_groups` VALUES(2, 'Tax Exempt', 0, 0);
+INSERT INTO `0_tax_groups` VALUES(1, 'Tax', 0);
+INSERT INTO `0_tax_groups` VALUES(2, 'Tax Exempt', 0);
 
 -- --------------------------------------------------------
 
@@ -2186,7 +2202,7 @@ DROP TABLE IF EXISTS `0_tax_group_items`;
 CREATE TABLE IF NOT EXISTS `0_tax_group_items` (
   `tax_group_id` int(11) NOT NULL default '0',
   `tax_type_id` int(11) NOT NULL default '0',
-  `rate` double NOT NULL default '0',
+  `tax_shipping` tinyint(1) NOT NULL default '0',
   PRIMARY KEY  (`tax_group_id`,`tax_type_id`)
 ) ENGINE=InnoDB;
 
@@ -2194,7 +2210,7 @@ CREATE TABLE IF NOT EXISTS `0_tax_group_items` (
 -- Dumping data for table `0_tax_group_items`
 --
 
-INSERT INTO `0_tax_group_items` VALUES(1, 1, 5);
+INSERT INTO `0_tax_group_items` VALUES(1, 1, 1);
 
 -- --------------------------------------------------------
 
@@ -2311,13 +2327,14 @@ CREATE TABLE IF NOT EXISTS `0_users` (
   `show_codes` tinyint(1) NOT NULL default '0',
   `show_hints` tinyint(1) NOT NULL default '0',
   `last_visit_date` datetime default NULL,
-  `query_size` tinyint(1) default '10',
+  `query_size` tinyint(1) unsigned default '10',
   `graphic_links` tinyint(1) default '1',
   `pos` smallint(6) default '1',
   `print_profile` varchar(30) NOT NULL default '1',
   `rep_popup` tinyint(1) default '1',
   `sticky_doc_date` tinyint(1) default '0',
   `startup_tab` varchar(20) NOT NULL default '',
+  `transaction_days` smallint(6) NOT NULL default '30',
   `inactive` tinyint(1) NOT NULL default '0',
   PRIMARY KEY  (`id`),
   UNIQUE KEY `user_id` (`user_id`)
@@ -2327,8 +2344,8 @@ CREATE TABLE IF NOT EXISTS `0_users` (
 -- Dumping data for table `0_users`
 --
 
-INSERT INTO `0_users` VALUES(1, 'admin', '5f4dcc3b5aa765d61d8327deb882cf99', 'Administrator', 2, '', 'adm@adm.com', 'en_US', 0, 0, 0, 0, 'default', 'Letter', 2, 2, 4, 1, 1, 0, 0, '2010-05-11 23:27:46', 10, 1, 1, '1', 1, 0, 'orders', 0);
-INSERT INTO `0_users` VALUES(2, 'demouser', '5f4dcc3b5aa765d61d8327deb882cf99', 'Demo User', 9, '999-999-999', 'demo@demo.nu', 'en_US', 0, 0, 0, 0, 'default', 'Letter', 2, 2, 3, 1, 1, 0, 0, '2008-02-06 19:02:35', 10, 1, 1, '1', 1, 0, 'orders', 0);
+INSERT INTO `0_users` VALUES(1, 'admin', '5f4dcc3b5aa765d61d8327deb882cf99', 'Administrator', 2, '', 'adm@adm.com', 'en_US', 0, 0, 0, 0, 'default', 'Letter', 2, 2, 4, 1, 1, 0, 0, '2010-05-11 23:27:46', 10, 1, 1, '1', 1, 0, 'orders', 30, 0);
+INSERT INTO `0_users` VALUES(2, 'demouser', '5f4dcc3b5aa765d61d8327deb882cf99', 'Demo User', 9, '999-999-999', 'demo@demo.nu', 'en_US', 0, 0, 0, 0, 'default', 'Letter', 2, 2, 3, 1, 1, 0, 0, '2008-02-06 19:02:35', 10, 1, 1, '1', 1, 0, 'orders', 30, 0);
 
 -- --------------------------------------------------------
 
@@ -2409,6 +2426,28 @@ INSERT INTO `0_workorders` VALUES(5, '5', 'DEF', 5, '3400', '2009-06-21', 0, '20
 INSERT INTO `0_workorders` VALUES(6, '6', 'DEF', -5, '3400', '2009-06-21', 1, '2009-06-21', '2009-06-21', -5, 1, 1, 0);
 INSERT INTO `0_workorders` VALUES(7, '7', 'DEF', -2, '3400', '2009-06-21', 1, '2009-06-21', '2009-06-21', -2, 1, 1, 10);
 
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `0_wo_costing`
+--
+
+DROP TABLE IF EXISTS `0_wo_costing`;
+CREATE TABLE `0_wo_costing` (
+  `id` int(11) NOT NULL auto_increment,
+  `workorder_id` int(11) NOT NULL default '0',
+  `cost_type`  tinyint(1) NOT NULL default '0',
+  `trans_type` int(11) NOT NULL default '0',
+  `trans_no` int(11) NOT NULL default '0',
+  `factor` double NOT NULL default '1',
+  PRIMARY KEY  (`id`)
+) ENGINE=InnoDB;
+
+--
+-- Dumping data for table `0_wo_costing`
+--
+
+
 -- --------------------------------------------------------
 
 --
index dd43d66f0a045675e2b663bc4a653cb1102f68ab..5daaa8fa43a47b6fefe9efd2aa732ea94f46dd92 100644 (file)
@@ -102,6 +102,7 @@ CREATE TABLE IF NOT EXISTS `0_bank_accounts` (
   `bank_curr_code` char(3) NOT NULL default '',
   `dflt_curr_act` tinyint(1) NOT NULL default '0',
   `id` smallint(6) NOT NULL auto_increment,
+  `bank_charge_act` varchar(15) NOT NULL default '',
   `last_reconciled_date` timestamp NOT NULL default '0000-00-00 00:00:00',
   `ending_reconcile_balance` double NOT NULL default '0',
   `inactive` tinyint(1) NOT NULL default '0',
@@ -115,8 +116,8 @@ CREATE TABLE IF NOT EXISTS `0_bank_accounts` (
 -- Dumping data for table `0_bank_accounts`
 --
 
-INSERT INTO `0_bank_accounts` VALUES('1060', 0, 'Current account', 'N/A', 'N/A', '', 'USD', 1, 1, '0000-00-00 00:00:00', 0, 0);
-INSERT INTO `0_bank_accounts` VALUES('1065', 3, 'Petty Cash account', 'N/A', 'N/A', '', 'USD', 0, 2, '0000-00-00 00:00:00', 0, 0);
+INSERT INTO `0_bank_accounts` VALUES('1060', 0, 'Current account', 'N/A', 'N/A', '', 'USD', 1, 1, '5690', '0000-00-00 00:00:00', 0, 0);
+INSERT INTO `0_bank_accounts` VALUES('1065', 3, 'Petty Cash account', 'N/A', 'N/A', '', 'USD', 0, 2, '5690', '0000-00-00 00:00:00', 0, 0);
 
 -- --------------------------------------------------------
 
@@ -185,19 +186,14 @@ CREATE TABLE IF NOT EXISTS `0_bom` (
 
 DROP TABLE IF EXISTS `0_budget_trans`;
 CREATE TABLE IF NOT EXISTS `0_budget_trans` (
-  `counter` int(11) NOT NULL auto_increment,
-  `type` smallint(6) NOT NULL default '0',
-  `type_no` bigint(16) NOT NULL default '1',
+  `id` int(11) NOT NULL auto_increment,
   `tran_date` date NOT NULL default '0000-00-00',
   `account` varchar(15) NOT NULL default '',
   `memo_` tinytext NOT NULL,
   `amount` double NOT NULL default '0',
   `dimension_id` int(11) default '0',
   `dimension2_id` int(11) default '0',
-  `person_type_id` int(11) default NULL,
-  `person_id` tinyblob,
-  PRIMARY KEY  (`counter`),
-  KEY `Type_and_Number` (`type`,`type_no`),
+  PRIMARY KEY  (`id`),
   KEY `Account` (`account`,`tran_date`,`dimension_id`,`dimension2_id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=1 ;
 
@@ -539,10 +535,11 @@ CREATE TABLE IF NOT EXISTS `0_cust_allocations` (
   `trans_type_from` int(11) default NULL,
   `trans_no_to` int(11) default NULL,
   `trans_type_to` int(11) default NULL,
-  PRIMARY KEY  (`id`),
+  PRIMARY KEY (`id`),
+  UNIQUE KEY (`trans_type_from`,`trans_no_from`,`trans_type_to`,`trans_no_to`),
   KEY `From` (`trans_type_from`,`trans_no_from`),
   KEY `To` (`trans_type_to`,`trans_no_to`)
-) ENGINE=InnoDB AUTO_INCREMENT=1 ;
+) ENGINE=InnoDB  AUTO_INCREMENT=1 ;
 
 --
 -- Dumping data for table `0_cust_allocations`
@@ -576,6 +573,7 @@ CREATE TABLE IF NOT EXISTS `0_cust_branch` (
   `br_post_address` tinytext NOT NULL,
   `group_no` int(11) NOT NULL default '0',
   `notes` tinytext NOT NULL,
+  `bank_account` varchar(60) DEFAULT NULL,
   `inactive` tinyint(1) NOT NULL default '0',
   PRIMARY KEY  (`branch_code`,`debtor_no`),
   KEY `branch_code` (`branch_code`),
@@ -646,11 +644,13 @@ CREATE TABLE IF NOT EXISTS `0_debtor_trans` (
   `ov_freight_tax` double NOT NULL default '0',
   `ov_discount` double NOT NULL default '0',
   `alloc` double NOT NULL default '0',
+  `prep_amount` double NOT NULL DEFAULT '0',
   `rate` double NOT NULL default '1',
   `ship_via` int(11) default NULL,
   `dimension_id` int(11) NOT NULL default '0',
   `dimension2_id` int(11) NOT NULL default '0',
   `payment_terms` int(11) default NULL,
+  `tax_included` tinyint(1) unsigned NOT NULL default '0',
   PRIMARY KEY  (`type`,`trans_no`),
   KEY `debtor_no` (`debtor_no`,`branch_code`),
   KEY `tran_date` (`tran_date`),
@@ -813,6 +813,7 @@ CREATE TABLE IF NOT EXISTS `0_grn_batch` (
   `reference` varchar(60) NOT NULL default '',
   `delivery_date` date NOT NULL default '0000-00-00',
   `loc_code` varchar(5) default NULL,
+  `rate` double NOT NULL default '1',
   PRIMARY KEY  (`id`),
   KEY `delivery_date` (`delivery_date`),
   KEY `purch_order_no` (`purch_order_no`)
@@ -1169,6 +1170,8 @@ CREATE TABLE IF NOT EXISTS `0_purch_orders` (
   `into_stock_location` varchar(5) NOT NULL default '',
   `delivery_address` tinytext NOT NULL,
   `total` double NOT NULL default '0',
+  `prep_amount` double NOT NULL DEFAULT '0',
+  `alloc` double NOT NULL DEFAULT '0',
   `tax_included` tinyint(1) NOT NULL default '0',
   PRIMARY KEY  (`order_no`),
   KEY `ord_date` (`ord_date`)
@@ -1199,7 +1202,8 @@ CREATE TABLE IF NOT EXISTS `0_purch_order_details` (
   `quantity_ordered` double NOT NULL default '0',
   `quantity_received` double NOT NULL default '0',
   PRIMARY KEY  (`po_detail_item`),
-  KEY `order` (`order_no`,`po_detail_item`)
+  KEY `order` (`order_no`,`po_detail_item`),
+  KEY `itemcode` (`item_code`)
 ) ENGINE=InnoDB AUTO_INCREMENT=1 ;
 
 --
@@ -1366,6 +1370,8 @@ CREATE TABLE IF NOT EXISTS `0_sales_orders` (
   `delivery_date` date NOT NULL default '0000-00-00',
   `payment_terms` int(11) default NULL,
   `total` double NOT NULL default '0',
+  `prep_amount` double NOT NULL DEFAULT '0',
+  `alloc` double NOT NULL DEFAULT '0',
   PRIMARY KEY  (`trans_type`,`order_no`)
 ) ENGINE=InnoDB;
 
@@ -1390,9 +1396,11 @@ CREATE TABLE IF NOT EXISTS `0_sales_order_details` (
   `qty_sent` double NOT NULL default '0',
   `unit_price` double NOT NULL default '0',
   `quantity` double NOT NULL default '0',
+  `invoiced` double NOT NULL DEFAULT '0',
   `discount_percent` double NOT NULL default '0',
   PRIMARY KEY  (`id`),
-  KEY `sorder` (`trans_type`,`order_no`)
+  KEY `sorder` (`trans_type`,`order_no`),
+  KEY `stkcode` (`stk_code`)
 ) ENGINE=InnoDB AUTO_INCREMENT=1 ;
 
 --
@@ -1471,16 +1479,16 @@ CREATE TABLE IF NOT EXISTS `0_security_roles` (
 -- Dumping data for table `0_security_roles`
 --
 
-INSERT INTO `0_security_roles` VALUES(1, 'Inquiries', 'Inquiries', '768;2816;3072;3328;5632;5888;8192;8448;10752;11008;13312;15872;16128', '257;258;259;260;513;514;515;516;517;518;519;520;521;522;523;524;525;773;774;2822;3073;3075;3076;3077;3329;3330;3331;3332;3333;3334;3335;5377;5633;5640;5889;5890;5891;7937;7938;7939;7940;8193;8194;8450;8451;10497;10753;11009;11010;11012;13313;13315;15617;15618;15619;15620;15621;15622;15623;15624;15625;15626;15873;15882;16129;16130;16131;16132', 0);
-INSERT INTO `0_security_roles` VALUES(2, 'System Administrator', 'System Administrator', '256;512;768;2816;3072;3328;5376;5632;5888;7936;8192;8448;10496;10752;11008;13056;13312;15616;15872;16128', '257;258;259;260;513;514;515;516;517;518;519;520;521;522;523;524;525;526;769;770;771;772;773;774;2817;2818;2819;2820;2821;2822;2823;3073;3074;3082;3075;3076;3077;3078;3079;3080;3081;3329;3330;3331;3332;3333;3334;3335;5377;5633;5634;5635;5636;5637;5641;5638;5639;5640;5889;5890;5891;7937;7938;7939;7940;8193;8194;8195;8196;8197;8449;8450;8451;10497;10753;10754;10755;10756;10757;11009;11010;11011;11012;13057;13313;13314;13315;15617;15618;15619;15620;15621;15622;15623;15624;15628;15625;15626;15627;15873;15874;15875;15876;15877;15878;15879;15880;15883;15881;15882;16129;16130;16131;16132', 0);
-INSERT INTO `0_security_roles` VALUES(3, 'Salesman', 'Salesman', '768;3072;5632;8192;15872', '773;774;3073;3075;3081;5633;8194;15873', 0);
-INSERT INTO `0_security_roles` VALUES(4, 'Stock Manager', 'Stock Manager', '2816;3072;3328;5632;5888;8192;8448;10752;11008;13312;15872;16128', '2818;2822;3073;3076;3077;3329;3330;3330;3330;3331;3331;3332;3333;3334;3335;5633;5640;5889;5890;5891;8193;8194;8450;8451;10753;11009;11010;11012;13313;13315;15882;16129;16130;16131;16132', 0);
-INSERT INTO `0_security_roles` VALUES(5, 'Production Manager', 'Production Manager', '512;2816;3072;3328;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '521;523;524;2818;2819;2820;2821;2822;2823;3073;3074;3076;3077;3078;3079;3080;3081;3329;3330;3330;3330;3331;3331;3332;3333;3334;3335;5633;5640;5640;5889;5890;5891;8193;8194;8196;8197;8450;8451;10753;10755;11009;11010;11012;13313;13315;15617;15619;15620;15621;15624;15624;15876;15877;15880;15882;16129;16130;16131;16132', 0);
-INSERT INTO `0_security_roles` VALUES(6, 'Purchase Officer', 'Purchase Officer', '512;2816;3072;3328;5376;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '521;523;524;2818;2819;2820;2821;2822;2823;3073;3074;3076;3077;3078;3079;3080;3081;3329;3330;3330;3330;3331;3331;3332;3333;3334;3335;5377;5633;5635;5640;5640;5889;5890;5891;8193;8194;8196;8197;8449;8450;8451;10753;10755;11009;11010;11012;13313;13315;15617;15619;15620;15621;15624;15624;15876;15877;15880;15882;16129;16130;16131;16132', 0);
-INSERT INTO `0_security_roles` VALUES(7, 'AR Officer', 'AR Officer', '512;768;2816;3072;3328;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '521;523;524;771;773;774;2818;2819;2820;2821;2822;2823;3073;3073;3074;3075;3076;3077;3078;3079;3080;3081;3081;3329;3330;3330;3330;3331;3331;3332;3333;3334;3335;5633;5633;5634;5637;5638;5639;5640;5640;5889;5890;5891;8193;8194;8194;8196;8197;8450;8451;10753;10755;11009;11010;11012;13313;13315;15617;15619;15620;15621;15624;15624;15873;15876;15877;15878;15880;15882;16129;16130;16131;16132', 0);
-INSERT INTO `0_security_roles` VALUES(8, 'AP Officer', 'AP Officer', '512;2816;3072;3328;5376;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '257;258;259;260;521;523;524;769;770;771;772;773;774;2818;2819;2820;2821;2822;2823;3073;3074;3082;3076;3077;3078;3079;3080;3081;3329;3330;3331;3332;3333;3334;3335;5377;5633;5635;5640;5889;5890;5891;7937;7938;7939;7940;8193;8194;8196;8197;8449;8450;8451;10497;10753;10755;11009;11010;11012;13057;13313;13315;15617;15619;15620;15621;15624;15876;15877;15880;15882;16129;16130;16131;16132', 0);
-INSERT INTO `0_security_roles` VALUES(9, 'Accountant', 'New Accountant', '512;768;2816;3072;3328;5376;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '257;258;259;260;521;523;524;771;772;773;774;2818;2819;2820;2821;2822;2823;3073;3074;3075;3076;3077;3078;3079;3080;3081;3329;3330;3331;3332;3333;3334;3335;5377;5633;5634;5635;5637;5638;5639;5640;5889;5890;5891;7937;7938;7939;7940;8193;8194;8196;8197;8449;8450;8451;10497;10753;10755;11009;11010;11012;13313;13315;15617;15618;15619;15620;15621;15624;15873;15876;15877;15878;15880;15882;16129;16130;16131;16132', 0);
-INSERT INTO `0_security_roles` VALUES(10, 'Sub Admin', 'Sub Admin', '512;768;2816;3072;3328;5376;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '257;258;259;260;521;523;524;771;772;773;774;2818;2819;2820;2821;2822;2823;3073;3074;3082;3075;3076;3077;3078;3079;3080;3081;3329;3330;3331;3332;3333;3334;3335;5377;5633;5634;5635;5637;5638;5639;5640;5889;5890;5891;7937;7938;7939;7940;8193;8194;8196;8197;8449;8450;8451;10497;10753;10755;11009;11010;11012;13057;13313;13315;15617;15619;15620;15621;15624;15873;15874;15876;15877;15878;15879;15880;15882;16129;16130;16131;16132', 0);
+INSERT INTO `0_security_roles` VALUES(1, 'Inquiries', 'Inquiries', '768;2816;3072;3328;5632;5888;8192;8448;10752;11008;13312;15872;16128', '257;258;259;260;513;514;515;516;517;518;519;520;521;522;523;524;525;773;774;2822;3073;3075;3076;3077;3329;3330;3331;3332;3333;3334;3335;5377;5633;5640;5889;5890;5891;7937;7938;7939;7940;8193;8194;8450;8451;10497;10753;11009;11010;11012;13313;13315;15617;15618;15619;15620;15621;15622;15623;15624;15625;15626;15873;15882;16129;16130;16131;16132;775', 0);
+INSERT INTO `0_security_roles` VALUES(2, 'System Administrator', 'System Administrator', '256;512;768;2816;3072;3328;5376;5632;5888;7936;8192;8448;10496;10752;11008;13056;13312;15616;15872;16128', '257;258;259;260;513;514;515;516;517;518;519;520;521;522;523;524;525;526;769;770;771;772;773;774;2817;2818;2819;2820;2821;2822;2823;3073;3074;3082;3075;3076;3077;3078;3079;3080;3081;3329;3330;3331;3332;3333;3334;3335;5377;5633;5634;5635;5636;5637;5641;5638;5639;5640;5889;5890;5891;7937;7938;7939;7940;8193;8194;8195;8196;8197;8449;8450;8451;10497;10753;10754;10755;10756;10757;11009;11010;11011;11012;13057;13313;13314;13315;15617;15618;15619;15620;15621;15622;15623;15624;15628;15625;15626;15627;15873;15874;15875;15876;15877;15878;15879;15880;15883;15881;15882;16129;16130;16131;16132;775', 0);
+INSERT INTO `0_security_roles` VALUES(3, 'Salesman', 'Salesman', '768;3072;5632;8192;15872', '773;774;3073;3075;3081;5633;8194;15873;775', 0);
+INSERT INTO `0_security_roles` VALUES(4, 'Stock Manager', 'Stock Manager', '768;2816;3072;3328;5632;5888;8192;8448;10752;11008;13312;15872;16128', '2818;2822;3073;3076;3077;3329;3330;3330;3330;3331;3331;3332;3333;3334;3335;5633;5640;5889;5890;5891;8193;8194;8450;8451;10753;11009;11010;11012;13313;13315;15882;16129;16130;16131;16132;775', 0);
+INSERT INTO `0_security_roles` VALUES(5, 'Production Manager', 'Production Manager', '512;768;2816;3072;3328;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '521;523;524;2818;2819;2820;2821;2822;2823;3073;3074;3076;3077;3078;3079;3080;3081;3329;3330;3330;3330;3331;3331;3332;3333;3334;3335;5633;5640;5640;5889;5890;5891;8193;8194;8196;8197;8450;8451;10753;10755;11009;11010;11012;13313;13315;15617;15619;15620;15621;15624;15624;15876;15877;15880;15882;16129;16130;16131;16132;775', 0);
+INSERT INTO `0_security_roles` VALUES(6, 'Purchase Officer', 'Purchase Officer', '512;768;2816;3072;3328;5376;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '521;523;524;2818;2819;2820;2821;2822;2823;3073;3074;3076;3077;3078;3079;3080;3081;3329;3330;3330;3330;3331;3331;3332;3333;3334;3335;5377;5633;5635;5640;5640;5889;5890;5891;8193;8194;8196;8197;8449;8450;8451;10753;10755;11009;11010;11012;13313;13315;15617;15619;15620;15621;15624;15624;15876;15877;15880;15882;16129;16130;16131;16132;775', 0);
+INSERT INTO `0_security_roles` VALUES(7, 'AR Officer', 'AR Officer', '512;768;2816;3072;3328;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '521;523;524;771;773;774;2818;2819;2820;2821;2822;2823;3073;3073;3074;3075;3076;3077;3078;3079;3080;3081;3081;3329;3330;3330;3330;3331;3331;3332;3333;3334;3335;5633;5633;5634;5637;5638;5639;5640;5640;5889;5890;5891;8193;8194;8194;8196;8197;8450;8451;10753;10755;11009;11010;11012;13313;13315;15617;15619;15620;15621;15624;15624;15873;15876;15877;15878;15880;15882;16129;16130;16131;16132;775', 0);
+INSERT INTO `0_security_roles` VALUES(8, 'AP Officer', 'AP Officer', '512;768;2816;3072;3328;5376;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '257;258;259;260;521;523;524;769;770;771;772;773;774;2818;2819;2820;2821;2822;2823;3073;3074;3082;3076;3077;3078;3079;3080;3081;3329;3330;3331;3332;3333;3334;3335;5377;5633;5635;5640;5889;5890;5891;7937;7938;7939;7940;8193;8194;8196;8197;8449;8450;8451;10497;10753;10755;11009;11010;11012;13057;13313;13315;15617;15619;15620;15621;15624;15876;15877;15880;15882;16129;16130;16131;16132;775', 0);
+INSERT INTO `0_security_roles` VALUES(9, 'Accountant', 'New Accountant', '512;768;2816;3072;3328;5376;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '257;258;259;260;521;523;524;771;772;773;774;2818;2819;2820;2821;2822;2823;3073;3074;3075;3076;3077;3078;3079;3080;3081;3329;3330;3331;3332;3333;3334;3335;5377;5633;5634;5635;5637;5638;5639;5640;5889;5890;5891;7937;7938;7939;7940;8193;8194;8196;8197;8449;8450;8451;10497;10753;10755;11009;11010;11012;13313;13315;15617;15618;15619;15620;15621;15624;15873;15876;15877;15878;15880;15882;16129;16130;16131;16132;775', 0);
+INSERT INTO `0_security_roles` VALUES(10, 'Sub Admin', 'Sub Admin', '512;768;2816;3072;3328;5376;5632;5888;8192;8448;10752;11008;13312;15616;15872;16128', '257;258;259;260;521;523;524;771;772;773;774;2818;2819;2820;2821;2822;2823;3073;3074;3082;3075;3076;3077;3078;3079;3080;3081;3329;3330;3331;3332;3333;3334;3335;5377;5633;5634;5635;5637;5638;5639;5640;5889;5890;5891;7937;7938;7939;7940;8193;8194;8196;8197;8449;8450;8451;10497;10753;10755;11009;11010;11012;13057;13313;13315;15617;15619;15620;15621;15624;15873;15874;15876;15877;15878;15879;15880;15882;16129;16130;16131;16132;775', 0);
 
 -- --------------------------------------------------------
 
@@ -1549,6 +1557,7 @@ CREATE TABLE IF NOT EXISTS `0_stock_category` (
   `dflt_dim2` int(11) default NULL,
   `inactive` tinyint(1) NOT NULL default '0',
   `dflt_no_sale` tinyint(1) NOT NULL default '0',
+  `dflt_no_sale` tinyint(1) NOT NULL default '0',
   PRIMARY KEY  (`category_id`),
   UNIQUE KEY `description` (`description`)
 ) ENGINE=MyISAM  AUTO_INCREMENT=5 ;
@@ -1557,10 +1566,10 @@ CREATE TABLE IF NOT EXISTS `0_stock_category` (
 -- Dumping data for table `0_stock_category`
 --
 
-INSERT INTO `0_stock_category` VALUES(1, 'Components', 1, 'each', 'B', '4010', '5010', '1510', '5040', '1530', 0, 0, 0, 0);
-INSERT INTO `0_stock_category` VALUES(2, 'Charges', 1, 'each', 'D', '4010', '5010', '1510', '5040', '1530', 0, 0, 0, 0);
-INSERT INTO `0_stock_category` VALUES(3, 'Systems', 1, 'each', 'M', '4010', '5010', '1510', '5040', '1530', 0, 0, 0, 0);
-INSERT INTO `0_stock_category` VALUES(4, 'Services', 1, 'hrs', 'D', '4010', '5010', '1510', '5040', '1530', 0, 0, 0, 0);
+INSERT INTO `0_stock_category` VALUES(1, 'Components', 1, 'each', 'B', '4010', '5010', '1510', '5040', '1530', 0, 0, 0, 0, 0);
+INSERT INTO `0_stock_category` VALUES(2, 'Charges', 1, 'each', 'D', '4010', '5010', '1510', '5040', '1530', 0, 0, 0, 0, 0);
+INSERT INTO `0_stock_category` VALUES(3, 'Systems', 1, 'each', 'M', '4010', '5010', '1510', '5040', '1530', 0, 0, 0, 0, 0);
+INSERT INTO `0_stock_category` VALUES(4, 'Services', 1, 'hrs', 'D', '4010', '5010', '1510', '5040', '1530', 0, 0, 0, 0, 0);
 
 -- --------------------------------------------------------
 
@@ -1591,6 +1600,7 @@ CREATE TABLE IF NOT EXISTS `0_stock_master` (
   `overhead_cost` double NOT NULL default '0',
   `inactive` tinyint(1) NOT NULL default '0',
   `no_sale` tinyint(1) NOT NULL default '0',
+  `no_purchase` tinyint(1) NOT NULL default '0',
   `editable` tinyint(1) NOT NULL default '0',
   PRIMARY KEY  (`stock_id`)
 ) ENGINE=InnoDB;
@@ -1652,6 +1662,7 @@ CREATE TABLE IF NOT EXISTS `0_suppliers` (
   `curr_code` char(3) default NULL,
   `payment_terms` int(11) default NULL,
   `tax_included` tinyint(1) NOT NULL default '0',
+  `tax_algorithm` tinyint(1) NOT NULL default '1',
   `dimension_id` int(11) default '0',
   `dimension2_id` int(11) default '0',
   `tax_group_id` int(11) default NULL,
@@ -1685,10 +1696,11 @@ CREATE TABLE IF NOT EXISTS `0_supp_allocations` (
   `trans_type_from` int(11) default NULL,
   `trans_no_to` int(11) default NULL,
   `trans_type_to` int(11) default NULL,
-  PRIMARY KEY  (`id`),
+  PRIMARY KEY (`id`),
+  UNIQUE KEY (`trans_type_from`,`trans_no_from`,`trans_type_to`,`trans_no_to`),
   KEY `From` (`trans_type_from`,`trans_no_from`),
   KEY `To` (`trans_type_to`,`trans_no_to`)
-) ENGINE=InnoDB AUTO_INCREMENT=1 ;
+) ENGINE=InnoDB  AUTO_INCREMENT=1 ;
 
 --
 -- Dumping data for table `0_supp_allocations`
@@ -1745,6 +1757,7 @@ CREATE TABLE IF NOT EXISTS `0_supp_trans` (
   `rate` double NOT NULL default '1',
   `alloc` double NOT NULL default '0',
   `tax_included` tinyint(1) NOT NULL default '0',
+  `tax_algorithm` tinyint(1) NOT NULL default '1',
   PRIMARY KEY  (`type`,`trans_no`),
   KEY `supplier_id` (`supplier_id`),
   KEY `SupplierID_2` (`supplier_id`,`supp_reference`),
@@ -1769,7 +1782,7 @@ CREATE TABLE IF NOT EXISTS `0_sys_prefs` (
   `category` varchar(30) default NULL,
   `type` varchar(20) NOT NULL default '',
   `length` smallint(6) default NULL,
-  `value` tinytext,
+  `value` text NOT NULL,
   PRIMARY KEY  (`name`),
   KEY `category` (`category`)
 ) ENGINE=MyISAM;
@@ -1805,6 +1818,7 @@ INSERT INTO `0_sys_prefs` VALUES('profit_loss_year_act', 'glsetup.general', 'var
 INSERT INTO `0_sys_prefs` VALUES('retained_earnings_act', 'glsetup.general', 'varchar', 15, '3590');
 INSERT INTO `0_sys_prefs` VALUES('bank_charge_act', 'glsetup.general', 'varchar', 15, '5690');
 INSERT INTO `0_sys_prefs` VALUES('exchange_diff_act', 'glsetup.general', 'varchar', 15, '4450');
+INSERT INTO `0_sys_prefs` VALUES('tax_algorithm', 'glsetup.customer', 'tinyint', 1, '1');
 INSERT INTO `0_sys_prefs` VALUES('default_credit_limit', 'glsetup.customer', 'int', 11, '1000');
 INSERT INTO `0_sys_prefs` VALUES('accumulate_shipping', 'glsetup.customer', 'tinyint', 1, '0');
 INSERT INTO `0_sys_prefs` VALUES('legal_text', 'glsetup.customer', 'tinytext', 0, '');
@@ -1814,6 +1828,7 @@ INSERT INTO `0_sys_prefs` VALUES('default_sales_act', 'glsetup.sales', 'varchar'
 INSERT INTO `0_sys_prefs` VALUES('default_sales_discount_act', 'glsetup.sales', 'varchar', 15, '4510');
 INSERT INTO `0_sys_prefs` VALUES('default_prompt_payment_act', 'glsetup.sales', 'varchar', 15, '4500');
 INSERT INTO `0_sys_prefs` VALUES('default_delivery_required', 'glsetup.sales', 'smallint', 6, '1');
+INSERT INTO `0_sys_prefs` VALUES('default_receival_required', 'glsetup.purchase', 'smallint', 6, '10');
 INSERT INTO `0_sys_prefs` VALUES('default_dim_required', 'glsetup.dims', 'int', 11, '20');
 INSERT INTO `0_sys_prefs` VALUES('pyt_discount_act', 'glsetup.purchase', 'varchar', 15, '5060');
 INSERT INTO `0_sys_prefs` VALUES('creditors_act', 'glsetup.purchase', 'varchar', 15, '2100');
@@ -1830,6 +1845,8 @@ INSERT INTO `0_sys_prefs` VALUES('version_id', 'system', 'varchar', 11, '2.3rc')
 INSERT INTO `0_sys_prefs` VALUES('auto_curr_reval', 'setup.company', 'smallint', 6, '1');
 INSERT INTO `0_sys_prefs` VALUES('grn_clearing_act', 'glsetup.purchase', 'varchar', 15, '1550');
 INSERT INTO `0_sys_prefs` VALUES('bcc_email', 'setup.company', 'varchar', 100, '');
+INSERT INTO `0_sys_prefs` VALUES('deferred_income_act', 'glsetup.sales', 'varchar', '15', '');
+INSERT INTO `0_sys_prefs` VALUES('gl_closing_date','setup.closing_date', 'date', 8, '');
 
 -- --------------------------------------------------------
 
@@ -1922,7 +1939,6 @@ DROP TABLE IF EXISTS `0_tax_groups`;
 CREATE TABLE IF NOT EXISTS `0_tax_groups` (
   `id` int(11) NOT NULL auto_increment,
   `name` varchar(60) NOT NULL default '',
-  `tax_shipping` tinyint(1) NOT NULL default '0',
   `inactive` tinyint(1) NOT NULL default '0',
   PRIMARY KEY  (`id`),
   UNIQUE KEY `name` (`name`)
@@ -1932,8 +1948,8 @@ CREATE TABLE IF NOT EXISTS `0_tax_groups` (
 -- Dumping data for table `0_tax_groups`
 --
 
-INSERT INTO `0_tax_groups` VALUES(1, 'Tax', 0, 0);
-INSERT INTO `0_tax_groups` VALUES(2, 'Tax Exempt', 0, 0);
+INSERT INTO `0_tax_groups` VALUES(1, 'Tax', 0);
+INSERT INTO `0_tax_groups` VALUES(2, 'Tax Exempt', 0);
 
 -- --------------------------------------------------------
 
@@ -1945,7 +1961,7 @@ DROP TABLE IF EXISTS `0_tax_group_items`;
 CREATE TABLE IF NOT EXISTS `0_tax_group_items` (
   `tax_group_id` int(11) NOT NULL default '0',
   `tax_type_id` int(11) NOT NULL default '0',
-  `rate` double NOT NULL default '0',
+  `tax_shipping` tinyint(1) NOT NULL default '0',
   PRIMARY KEY  (`tax_group_id`,`tax_type_id`)
 ) ENGINE=InnoDB;
 
@@ -1953,7 +1969,7 @@ CREATE TABLE IF NOT EXISTS `0_tax_group_items` (
 -- Dumping data for table `0_tax_group_items`
 --
 
-INSERT INTO `0_tax_group_items` VALUES(1, 1, 5);
+INSERT INTO `0_tax_group_items` VALUES(1, 1, 1);
 
 -- --------------------------------------------------------
 
@@ -2059,13 +2075,14 @@ CREATE TABLE IF NOT EXISTS `0_users` (
   `show_codes` tinyint(1) NOT NULL default '0',
   `show_hints` tinyint(1) NOT NULL default '0',
   `last_visit_date` datetime default NULL,
-  `query_size` tinyint(1) default '10',
+  `query_size` tinyint(1) unsigned default '10',
   `graphic_links` tinyint(1) default '1',
   `pos` smallint(6) default '1',
   `print_profile` varchar(30) NOT NULL default '1',
   `rep_popup` tinyint(1) default '1',
   `sticky_doc_date` tinyint(1) default '0',
   `startup_tab` varchar(20) NOT NULL default '',
+  `transaction_days` smallint(6) NOT NULL default '30',
   `inactive` tinyint(1) NOT NULL default '0',
   PRIMARY KEY  (`id`),
   UNIQUE KEY `user_id` (`user_id`)
@@ -2075,7 +2092,7 @@ CREATE TABLE IF NOT EXISTS `0_users` (
 -- Dumping data for table `0_users`
 --
 
-INSERT INTO `0_users` VALUES(1, 'admin', '5f4dcc3b5aa765d61d8327deb882cf99', 'Administrator', 2, '', 'adm@adm.com', 'en_US', 0, 0, 0, 0, 'default', 'Letter', 2, 2, 4, 1, 1, 0, 0, '2008-04-04 12:34:29', 10, 1, 1, '1', 1, 0, 'orders', 0);
+INSERT INTO `0_users` VALUES(1, 'admin', '5f4dcc3b5aa765d61d8327deb882cf99', 'Administrator', 2, '', 'adm@adm.com', 'en_US', 0, 0, 0, 0, 'default', 'Letter', 2, 2, 4, 1, 1, 0, 0, '2008-04-04 12:34:29', 10, 1, 1, '1', 1, 0, 'orders', 30, 0);
 
 -- --------------------------------------------------------
 
@@ -2148,6 +2165,28 @@ CREATE TABLE IF NOT EXISTS `0_workorders` (
 --
 
 
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `0_wo_costing`
+--
+
+DROP TABLE IF EXISTS `0_wo_costing`;
+CREATE TABLE `0_wo_costing` (
+  `id` int(11) NOT NULL auto_increment,
+  `workorder_id` int(11) NOT NULL default '0',
+  `cost_type`  tinyint(1) NOT NULL default '0',
+  `trans_type` int(11) NOT NULL default '0',
+  `trans_no` int(11) NOT NULL default '0',
+  `factor` double NOT NULL default '1',
+  PRIMARY KEY  (`id`)
+) ENGINE=InnoDB;
+
+--
+-- Dumping data for table `0_wo_costing`
+--
+
+
 -- --------------------------------------------------------
 
 --
index 826ad8a05865b3b6dc482b86d017b764c3fbb678..032cc560f6596b2fb54e5e4b29f1cf79e1179a38 100644 (file)
@@ -9,40 +9,29 @@
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
 ***********************************************************************/
-function clear_shipping_tax_group() {
-         $sql = "UPDATE ".TB_PREF."tax_groups SET tax_shipping=0 WHERE 1";
-         db_query($sql, "could not update tax_shipping fields");         
-}
-
-function add_tax_group($name, $tax_shipping, $taxes, $rates)
+function add_tax_group($name, $taxes, $tax_shippings)
 {
        begin_transaction();
 
-       if($tax_shipping)       // only one tax group for shipping
-         clear_shipping_tax_group();
-               
-       $sql = "INSERT INTO ".TB_PREF."tax_groups (name, tax_shipping) VALUES (".db_escape($name).", ".db_escape($tax_shipping).")";
+       $sql = "INSERT INTO ".TB_PREF."tax_groups (name) VALUES (".db_escape($name).")";
        db_query($sql, "could not add tax group");
        
        $id = db_insert_id();
        
-       add_tax_group_items($id, $taxes, $rates);       
+       add_tax_group_items($id, $taxes, $tax_shippings);       
        
        commit_transaction();   
 }
 
-function update_tax_group($id, $name, $tax_shipping, $taxes, $rates)
+function update_tax_group($id, $name, $taxes, $tax_shippings)
 {
        begin_transaction();    
 
-       if($tax_shipping)       // only one tax group for shipping
-         clear_shipping_tax_group();
-       
-    $sql = "UPDATE ".TB_PREF."tax_groups SET name=".db_escape($name).",tax_shipping=".db_escape($tax_shipping)." WHERE id=".db_escape($id);
+    $sql = "UPDATE ".TB_PREF."tax_groups SET name=".db_escape($name)." WHERE id=".db_escape($id);
        db_query($sql, "could not update tax group");
        
        delete_tax_group_items($id);
-       add_tax_group_items($id, $taxes, $rates);       
+       add_tax_group_items($id, $taxes, $tax_shippings);       
        
        commit_transaction();                   
 }
@@ -77,12 +66,12 @@ function delete_tax_group($id)
        commit_transaction();
 }
 
-function add_tax_group_items($id, $items, $rates)
+function add_tax_group_items($id, $items, $tax_shippings)
 {
        for ($i=0; $i < count($items); $i++) 
        {
-               $sql = "INSERT INTO ".TB_PREF."tax_group_items (tax_group_id, tax_type_id, rate)
-                       VALUES (".db_escape($id).",  ".db_escape($items[$i]).", " . $rates[$i] .")";
+               $sql = "INSERT INTO ".TB_PREF."tax_group_items (tax_group_id, tax_type_id, tax_shipping)
+                       VALUES (".db_escape($id).",  ".db_escape($items[$i]).", " . $tax_shippings[$i] .")";
                db_query($sql, "could not add item tax group item");                                    
        }               
 }
@@ -98,7 +87,7 @@ function delete_tax_group_items($id)
 //     Return all tax types with rate value updated according to tax group selected
 //     Call the function without arg to find shipment group taxes.
 //
-function get_tax_group_rates($group_id=null)
+function get_tax_group_rates($group_id=null, $tax_shipping=false)
 {
        global $suppress_tax_rates;
 
@@ -109,43 +98,46 @@ function get_tax_group_rates($group_id=null)
                        : "CONCAT(t.name, ' (', t.rate, '%)') as tax_type_name,")
                ."t.sales_gl_code,
                  t.purchasing_gl_code,
-                 IF(g.tax_type_id, t.rate, NULL) as rate
+                 IF(g.tax_type_id, t.rate, NULL) as rate,
+                 g.tax_shipping
                FROM ".TB_PREF."tax_types t 
                  LEFT JOIN ".TB_PREF."tax_group_items g ON t.id=g.tax_type_id
-                       AND g.tax_group_id=". ($group_id ? db_escape($group_id) : "(SELECT id FROM ".TB_PREF."tax_groups WHERE tax_shipping=1)")
-               ." WHERE !t.inactive";
+       AND g.tax_group_id=". ($group_id ? db_escape($group_id) : "(SELECT MIN(id) FROM ".TB_PREF."tax_groups)")                  
+       . " WHERE !t.inactive";
+       if ($tax_shipping)
+               $sql .= " AND g.tax_shipping=1";
 
        return db_query($sql, "cannot get tax types as array");
 }
 
 function get_tax_group_items_as_array($id)
 {
-       $active_taxes = $ret_tax_array = array();
-
+       $ret_tax_array = array();
+       
        $tax_group_items = get_tax_group_rates($id);
-
-       while ($tax_group_item = db_fetch_assoc($tax_group_items)) 
+       
+       while ($tax_group_item = db_fetch($tax_group_items)) 
        {
                $tax_group_item['Value'] = 0;
                $ret_tax_array[$tax_group_item['tax_type_id']] = $tax_group_item;
-       }
 
+       }
+       
        return $ret_tax_array;
 }
 
-
-function get_shipping_tax_as_array()
+function get_shipping_tax_as_array($id)
 {
-       $active_taxes = $ret_tax_array = array();
+       $ret_tax_array = array();
 
-       $tax_group_items = get_tax_group_rates();
+       $tax_group_items = get_tax_group_rates($id, true);
 
-       while ($tax_group_item = db_fetch_assoc($tax_group_items)) 
+       while ($tax_group_item = db_fetch($tax_group_items)) 
        {
                $tax_group_item['Value'] = 0;
                $ret_tax_array[$tax_group_item['tax_type_id']] = $tax_group_item;
        }
-
+       
        return $ret_tax_array;
 }
-
+?>
\ No newline at end of file
index a9325b60b10fd8b561beffc2ff19394e0e5da2d6..87fb661a80c26c04cc7afee0fa9c962524e69380 100644 (file)
@@ -64,7 +64,7 @@ function get_tax_type($type_id)
        return db_fetch($result);
 }
 
-function get_tax_type_default_rate($type_id)
+function get_tax_type_rate($type_id)
 {
        $sql = "SELECT rate FROM ".TB_PREF."tax_types WHERE id=".db_escape($type_id);
 
index 4c4b9f37c5a7ea047e6a4d908d3a3c7f5502c107..27b1ccfadeca21a750a35021d06aede635a18ee7 100644 (file)
@@ -36,6 +36,7 @@ function get_tax_free_price_for_item($stock_id, $price, $tax_group, $tax_include
        //print_r($ret_tax_array);
 
        $tax_array = get_taxes_for_item($stock_id, $ret_tax_array);
+
        // if no exemptions or taxgroup is empty, then no included/excluded taxes
        if ($tax_array == null)
                return $price;
@@ -142,23 +143,38 @@ function get_taxes_for_item($stock_id, $tax_group_items_array)
 //-----------------------------------------------------------------------------------
 // return an array of (tax_type_id, tax_type_name, sales_gl_code, purchasing_gl_code, rate, included_in_price, Value) 
 
-function get_tax_for_items($items, $prices, $shipping_cost, $tax_group, $tax_included=null, $tax_items_array=null)
+function get_tax_for_items($items, $prices, $shipping_cost, $tax_group, $tax_included=null, $tax_items_array=null, $tax_algorithm = null)
 {
+       if (!$tax_algorithm)
+               $tax_algorithm = get_company_pref('tax_algorithm');
        // first create and set an array with all the tax types of the tax group
        if($tax_items_array!=null)
          $ret_tax_array = $tax_items_array;
        else
          $ret_tax_array = get_tax_group_items_as_array($tax_group);
 
+       $dec = user_price_dec();
+
+       $fully_exempt = true;
        foreach($ret_tax_array as $k=>$t)
+       {
+               if ($t['rate'] !== null)
+                       $fully_exempt = false;
                $ret_tax_array[$k]['Net'] = 0;
+       }
 
+       $ret_tax_array['exempt'] = array('Value'=>0, 'Net'=>0, 'rate' => null, 'tax_type_id' => '');
        $dec = user_price_dec();
        // loop for all items
        for ($i = 0; $i < count($items); $i++)
        {
                $item_taxes = get_taxes_for_item($items[$i], $ret_tax_array);
-               if ($item_taxes != null) 
+               if ($item_taxes == null || $fully_exempt) 
+               {
+                         $ret_tax_array['exempt']['Value'] += round2(0, $dec);
+                         $ret_tax_array['exempt']['Net'] += $prices[$i];
+               }
+               else
                {
                        $tax_multiplier = 0;
                        foreach ($item_taxes as $taxitem) 
@@ -173,18 +189,17 @@ function get_tax_for_items($items, $prices, $shipping_cost, $tax_group, $tax_inc
                                          $ret_tax_array[$index]['Value'] += round2($prices[$i]*$item_tax['rate']/(100+$tax_multiplier), $dec);
                                          $ret_tax_array[$index]['Net'] += round2($prices[$i]*100/(100+$tax_multiplier), $dec);
                                        } else {
-                                         $ret_tax_array[$index]['Value'] += ($prices[$i] * $item_tax['rate'] / 100);
+                                         $ret_tax_array[$index]['Value'] += round2($prices[$i] * $item_tax['rate'] / 100, $dec);
                                          $ret_tax_array[$index]['Net'] += $prices[$i];
                                        }
                                }
                        }
                }
        }
-
        // add the shipping taxes, only if non-zero, and only if tax group taxes shipping
        if ($shipping_cost != 0) 
        {
-               $item_taxes = get_shipping_tax_as_array();
+               $item_taxes = get_shipping_tax_as_array($tax_group);
                if ($item_taxes != null) 
                {
                        if ($tax_included == 1)
@@ -207,14 +222,20 @@ function get_tax_for_items($items, $prices, $shipping_cost, $tax_group, $tax_inc
                                            $ret_tax_array[$index]['Value'] += round2($shipping_cost*$item_tax['rate']/(100+$tax_rate), $dec);
                                            $ret_tax_array[$index]['Net'] += $shipping_net;
                                          } else {
-                                               $ret_tax_array[$index]['Value'] += ($shipping_cost * $item_tax['rate'] / 100);
+                                               $ret_tax_array[$index]['Value'] += round2($shipping_cost * $item_tax['rate'] / 100, $dec);
                                            $ret_tax_array[$index]['Net'] += $shipping_cost;
                                          }
                                }
                        }
                }
        }
-       //print_r($ret_tax_array);
+
+       if ($tax_algorithm == TCA_TOTALS ) {
+               // update taxes with 
+               foreach($ret_tax_array as $index => $item_tax) {
+                       $ret_tax_array[$index]['Value'] = round2($item_tax['Net'] * $item_tax['rate'] / 100, $dec);
+               }
+       }
 
        return $ret_tax_array;
 }
index cac3520b090dc3dff03c2f87afcb0c019597faa7..4e138991efbca8f4bed509f0e1a442a93b08e58a 100644 (file)
@@ -40,29 +40,28 @@ if ($Mode=='ADD_ITEM' || $Mode=='UPDATE_ITEM')
                display_error(_("The tax group name cannot be empty."));
                set_focus('name');
        } 
-
        if ($input_error != 1) 
        {
 
                // create an array of the taxes and array of rates
        $taxes = array();
-       $rates = array();
+       $tax_shippings = array();
 
                while (($id = find_submit('tax_type_id'))!=-1)
                {
                        $taxes[] = $id;
-                       $rates[] = get_tax_type_default_rate($id);
+                       $tax_shippings[] = check_value('tax_shipping'.$id);
                        unset($_POST['tax_type_id' . $id]);
+                       unset($_POST['tax_shipping' . $id]);
                }
        if ($selected_id != -1) 
        {
-                       update_tax_group($selected_id, $_POST['name'], $_POST['tax_shipping'], $taxes, 
-                       $rates);
+                       update_tax_group($selected_id, $_POST['name'], $taxes, $tax_shippings);
                        display_notification(_('Selected tax group has been updated'));
        } 
        else 
        {
-                       add_tax_group($_POST['name'], $_POST['tax_shipping'], $taxes, $rates);
+                       add_tax_group($_POST['name'], $taxes, $tax_shippings);
                        display_notification(_('New tax group has been added'));
        }
 
@@ -111,7 +110,7 @@ if ($Mode == 'RESET')
        $selected_id = -1;
        $sav = get_post('show_inactive');
        unset($_POST);
-       if($sav)
+       if ($sav)
                $_POST['show_inactive'] = $sav;
 }
 //-----------------------------------------------------------------------------------
@@ -121,7 +120,7 @@ $result = get_all_tax_groups(check_value('show_inactive'));
 start_form();
 
 start_table(TABLESTYLE);
-$th = array(_("Description"), _("Shipping Tax"), "", "");
+$th = array(_("Description"), "", "");
 inactive_control_column($th);
 
 table_header($th);
@@ -133,10 +132,6 @@ while ($myrow = db_fetch($result))
        alt_table_row_color($k);
 
        label_cell($myrow["name"]);
-       if ($myrow["tax_shipping"])
-               label_cell(_("Yes"));
-       else
-               label_cell(_("No"));
 
        inactive_control_cell($myrow["id"], $myrow["inactive"], 'tax_groups', 'id');
        edit_button_cell("Edit".$myrow["id"], _("Edit"));
@@ -159,30 +154,47 @@ if ($selected_id != -1)
        $group = get_tax_group($selected_id);
 
        $_POST['name']  = $group["name"];
-       $_POST['tax_shipping'] = $group["tax_shipping"];
 
        }
        hidden('selected_id', $selected_id);
+
 }
 text_row_ex(_("Description:"), 'name', 40);
-yesno_list_row(_("Tax applied to Shipping:"), 'tax_shipping', null, "", "", true);
 
 end_table();
 
 display_note(_("Select the taxes that are included in this group."), 1, 1);
 
-// null means transport tax group, but for new we do not use real rates
 $items = get_tax_group_rates($selected_id!=-1 ? $selected_id : null);
 
-$th = array(_("Tax"), "");
-
 start_table(TABLESTYLE2);
+$th = array(_("Tax"), "", _("Shipping Tax"));
 table_header($th);
 
-while($item = db_fetch_assoc($items)) 
+while($item = db_fetch($items)) 
 {
-       check_row($item['tax_type_name'], 'tax_type_id' . $item['tax_type_id'], 
-               $selected_id!=-1 && isset($item['rate']), "align='center'");
+       start_row();
+       if ($selected_id != -1)
+       {
+               check_cells($item['tax_type_name'], 'tax_type_id' . $item['tax_type_id'], 
+                       isset($item['rate']), true, false, "align='center'");
+               if (isset($item['rate']))
+                       check_cells(null, 'tax_shipping' . $item['tax_type_id'], $item['tax_shipping']);
+       }
+       else
+       {
+               check_cells($item['tax_type_name'], 'tax_type_id' . $item['tax_type_id'], 
+                       null, true, false, "align='center'");
+               if (get_post('_tax_type_id' . $item['tax_type_id'].'_update'))  
+               {
+                       //$_POST['_tax_type_id' . $item['tax_type_id'].'_update'] = 0;
+                       $Ajax->activate('_page_body');
+               }
+               if (check_value('tax_type_id' . $item['tax_type_id'])==1)
+                       check_cells(null, 'tax_shipping' . $item['tax_type_id'], null);
+       }               
+       end_row();      
+       
 }
 
 end_table(1);
diff --git a/themes/aqua/images/closed.png b/themes/aqua/images/closed.png
new file mode 100644 (file)
index 0000000..624c9ed
Binary files /dev/null and b/themes/aqua/images/closed.png differ
diff --git a/themes/cool/images/closed.png b/themes/cool/images/closed.png
new file mode 100644 (file)
index 0000000..624c9ed
Binary files /dev/null and b/themes/cool/images/closed.png differ
diff --git a/themes/default/images/closed.png b/themes/default/images/closed.png
new file mode 100644 (file)
index 0000000..624c9ed
Binary files /dev/null and b/themes/default/images/closed.png differ
index 34ae330dbae5c49673420c84f0bd63244c9db8ab..de7eaa6502d6c6345322b9d74eb782d0a69ad41f 100644 (file)
@@ -1,50 +1,14 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 <html><head>\r
-\r
-\r
-\r
-\r
 <meta http-equiv="CONTENT-TYPE" content="text/html; charset=iso-8859-1"><title>FrontAccounting Update</title>\r
 \r
 <meta name="GENERATOR" content="OpenOffice.org 2.4 (Linux)">\r
 <meta name="CREATED" content="0;0">\r
-<meta name="CHANGED" content="20100902;19041400"></head><body style="direction: ltr;" lang="en-US">\r
+<meta name="CHANGED" content="20100902;19041400"></head>\r
+<body style="direction: ltr;" lang="en-US">\r
 <h4><strong><font color="#cc6600"><font style="font-size: 20pt;" size="5"><i>Front</i></font></font></strong><strong><font style="font-size: 20pt;" size="5">Accounting\r
 Update</font></strong></h4>\r
-<h2>Important Notes for release 2.3.21.</h2>\r
-\r
-\r
-\r
-<h4>Crucial security patches:</h4>\r
-\r
-This version consists of crucial security patches and this applies especially to all publicly available servers, <br>\r
-&nbsp;f.i. installations which are run in not fully trusted environment like public demos, shared accounts or SAAS.<br>\r
-<h4>New global flags in config.php (config-default.php):</h4>\r
-/* Whether to allow sending new password by e-mail */<br>\r
-<span style="font-weight: bold;">$allow_password_reset = false</span><h2>Important Notes for release 2.3.20.</h2>\r
-\r
-\r
-<h4>Crucial security patches:</h4>\r
-This version consists of crucial security patches and all guest FA\r
-installations (I mean whenever FA is run in not fully trusted\r
-environment) should be updtaed.<br>\r
-<h2>Important Notes for release 2.3.17.</h2>\r
-\r
-<h4>New global flags in config.php (config-default.php):</h4>\r
-/*<br>\r
-&nbsp;&nbsp;&nbsp; Choose Exchange Rate Provider<br>\r
-&nbsp;&nbsp;&nbsp; Default is ECB for backwards compatibility<br>\r
-*/<br>\r
-<span style="font-weight: bold;">$xr_providers = array("ECB", "YAHOO", "GOOGLE", "BLOOMBERG");<br>\r
-$dflt_xr_provider = 0;<br>\r
-<br>\r
-</span>/*<br>\r
-&nbsp;&nbsp;&nbsp; Set to true when remote service is authoritative\r
-source of exchange rates, and can be stored automatically without<br>\r
-&nbsp;&nbsp;&nbsp; manual edition. Otherwise exrate is stored on first new currency transaction of the day.<br>\r
-*/<br>\r
-<span style="font-weight: bold;">$xr_provider_authoritative = false;<br>\r
-</span><h2>Important Notes for release 2.3.16.</h2>\r
+<h2>Important Notes for release 2.3.16.</h2>\r
 <h4>New global flags in config.php (config-default.php):</h4><span style="font-weight: bold;">/*<br>&nbsp;&nbsp; </span>&nbsp;Optional sorting new sales documents lines according to item code<span style="font-weight: bold;"><br>*/<br>$sort_sales_items = false;<br><br>/*<br>&nbsp;&nbsp; &nbsp;</span>Trial Balance opening balance presentation option.<br>&nbsp;&nbsp; &nbsp;When set to true past years part of opening balance is cleared.<span style="font-weight: bold;"><br>*/<br>$clear_trial_balance_opening = false;</span><h2>Important Notes for release 2.3.14.</h2>\r
 <h4>New global flags in config.php (config-default.php):</h4>\r
 /* default print orientation. 0 = Portrait, 1 = Landscape */<br>\r
@@ -120,8 +84,8 @@ considered as a site admin who have granted access to potentially
 dangerous setup options, like Setup/Software Upgrade.</p>\r
 <p>In the following description sections related to older FA\r
 versions are\r
-prefixed with <span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">[color\r
-tags]</span><span style="background: transparent none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">\r
+prefixed with <span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;">[color\r
+tags]</span><span style="background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;">\r
 . Y</span>ou can skip tagged fragment safely if currently FA\r
 application is newer than the version in tag.</p>\r
 <p>Upgrade process consists of up to four stages, some of them\r
@@ -171,7 +135,7 @@ old
 add all n</span></span></strong><strong><span style="">ew\r
 settings (if any). </span></strong>\r
 </p>\r
-<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">[&lt;FA\r
+<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;">[&lt;FA\r
 2.2beta]</span></span></strong></p>\r
 <p><strong> <span style="">$show_users_online\r
 = 0;</span></strong></p>\r
@@ -181,12 +145,12 @@ settings (if any). </span></strong>
 <p><strong><span style="">$dflt_date_sep=0;</span></strong></p>\r
 <p><strong><span style="">$table_style,table_style2\r
 changed</span></strong></p>\r
-<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">[&lt;FA\r
+<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;">[&lt;FA\r
 2.3beta]</span></span></strong></p>\r
 <p><strong> <span style="">$alternative_tax_include_on_doc=0;</span></strong></p>\r
 <p><strong><span style="">$suppress_tax_rates\r
 = 0;</span></strong></p>\r
-<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">[&lt;FA\r
+<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;">[&lt;FA\r
 2.3RC1]</span></span></strong><strong> </strong>\r
 </p>\r
 <p><strong><span style="">Application version\r
@@ -197,12 +161,12 @@ application version displayed in footer is defined in $version
 variable unless this is set in config.php file. If you want current\r
 release version to be displayed on every FA update just remove or\r
 comment out $version variable in </span></strong><strong><span style="font-style: normal;"><span style="">config.php</span></span></strong><strong><span style="">.</span></strong></p>\r
-<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">[&lt;FA\r
+<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;">[&lt;FA\r
 2.3RC2]</span></span></strong></p>\r
 <p><strong> <span style="">$save_report_selections\r
 &nbsp;= 0; &nbsp;// A value &gt; 0 means days to save the\r
 report selections.</span></strong></p>\r
-<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">[&lt;FA\r
+<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;">[&lt;FA\r
 2.3]</span></span></strong></p>\r
 <p><strong> <span style="">$save_po_item_codes\r
 &nbsp;= 0; &nbsp;//&nbsp; show item codes on purchase\r
@@ -214,7 +178,7 @@ order&nbsp;</span></strong></p>
 included</span></strong></p>\r
 <p><strong><span style="">$suppress_tax_rates\r
 = 0; // &nbsp;suppress tax rates on documents. 0 = no, 1 = yes.</span></strong></p>\r
-<strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"></span></span></strong><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;"></span></span></strong>\r
+<strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;"></span></span></strong><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;"></span></span></strong>\r
 <h2><strong><b>2. Database upgrade</b></strong></h2>\r
 <p><strong><span style="">This step can be\r
 skipped\r
@@ -248,11 +212,11 @@ be removed from </span></span><i><b>config.php</b></i><span style="font-style: n
 file.</span></span></p>\r
 <p style="margin-top: 0.42cm; page-break-after: avoid;"><font face="Liberation Sans, sans-serif"><font size="4">a.\r
 Source files cleanup</font></font></p>\r
-<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">[&lt;FA\r
+<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;">[&lt;FA\r
 2.2beta]</span></span></strong></p>\r
-<p><strong><span style=""><span style="background: transparent none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">/includes/reserved.inc\r
+<p><strong><span style=""><span style="background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;">/includes/reserved.inc\r
 &#8211; removed.</span></span></strong></p>\r
-<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">[&lt;FA\r
+<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;">[&lt;FA\r
 2.1]</span></span></strong><strong> </strong>\r
 </p>\r
 <p><strong><span style="">/admin/db/v_banktrans.inc\r
@@ -260,7 +224,7 @@ Source files cleanup</font></font></p>
 <p style="margin-top: 0.42cm; page-break-after: avoid;"><font face="Liberation Sans, sans-serif"><font size="4"><span style="font-style: normal;"><span style="">b.\r
 Config.php cleanup </span></span></font></font>\r
 </p>\r
-<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">[&lt;FA\r
+<p><strong><span style=""><span style="background: rgb(235, 97, 61) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;">[&lt;FA\r
 2.2RC1]</span></span></strong><strong> </strong>\r
 </p>\r
 <p><strong><span style="">$security_headings,\r
index 13980035a53e60162e4d959b0209ecb4291af8b7..9a4bf296e2970d8433cb9b5bb5756032f783109f 100644 (file)
@@ -5,11 +5,11 @@
 //
 
 // Internal database version compatibility check. Do not change.
-$db_version = "2.3rc";
+$db_version = "2.4.0";
 
 // application version - can be overriden in config.php
 if (!isset($version))
-       $version                = "2.3.21";
+       $version                = "2.4 alpha";
 
 //======================================================================
 // Extension packages repository settings