Thursday, February 26, 2015

New Debug Error Logging Module

A new debug error logging option has been added to BlueBox. This will help track down and replicate issues on live systems.

To turn on, the "debug_log_errors_to_file" variable should be set to 1 in the conf file. The system will then begin logging all errors to /engine/logs/errors.html

The format is simplistic (to try keep the file size down), but contains a fair amount of data. Error data includes the error description, date/time, user and BU/LOC ID, IP address, URL and referring URL, user's browser, as well as a backtrace and the $_POST data (if any).

Monday, February 23, 2015

Price Embedded Barcodes in BlueBox ePOS

Newly added to our BlueBox ePOS Module is the ability to read price embedded barcodes.

This feature is added as a plugin, and can be configured to read as many different styles of price embedded barcodes as required.

The normal standard for price embedded barcodes is to embed a EAN barcode (13 digits including checksums) with a product barcode (or sku_code) and price. The purpose for these barcodes is to allow for dynamic pricing at point of sale, embedded in a quickly scannable barcode.

The syntax for the barcode is normally something along the lines of:

TTBBBBCPPPPPC (eg 2000017000336)

where TT is the trigger number for the price-embedded barcode (eg 20) and
BBBB is a 4 digit barcode (or sku_code) (eg 0001) and
C is a checksum digit (ignored) and
PPPPP is a 5 digit price in cents (eg 00033 = 0.33)

To add plugin to BlueBox ePOS simply add as many plugin statements as required for the number of price embedded barcode styles you require eg:

{price_embedded_barcode|string_length|prefix|sku_start_pos|sku_end_pos|price_start_pos|price_end_pos|conversion_ratio}

becomes

{price_embedded_barcode|13|20|3|6|8|12|1000}

These can be repeated next to eachother in the plugins areas, as required, eg:

{price_embedded_barcode|13|20|3|6|8|12|1000}{price_embedded_barcode|13|27|3|6|8|12|0}



Tuesday, February 17, 2015

A while back we added the Formbuilder to BB2 - it's purpose is to allow consultants and support staff to 'build' forms for customers based on existing classes/data tables.
Essentially it pretty-fies the form, allows for multiple columns, removes unwanted fields and allows for overriding the description of fields easily.
Up until now these formbuilder forms have had to be added via the formbuilder module - and we have 2 'default' formbuilder forms in the system namely : Add Creditor and Add Debtor.
Now we have added 2 new bbsettings so that PHP coders can quickly apply formbuilder to their calsses by default without the need for complex insertin into the Formbuilder class.
There are 2 bbsettings:

var $bbsetting_formbuilder_fields=array("field","field");
This one is required and is simply the list of fields from the current class that you want included in the formbuilder form.

and

var $bbsetting_formbuilder_fields_settings=array("field"=>value,"field"=>value);
This one is not required, but give you the option of overriding any of the default formbuilder settings that are applied when this is not set.

Friday, October 24, 2014

Automated Forex Gains and Losses in BlueBox

BlueBox has an automated way of dealing with the gains and losses which occur when a payment is finally attached to a debtors or creditors invoice.

It looks for a gain/loss between the base currency value in the invoice vs the base currency value in the payment.

If there is a gain/loss is check the following to see if it can automate the application of a suitable adjustment document (ie direct debit/credit note) to be applied to the invoice to correct the loss:

  • The payment must be in the same forex currency as the invoice
  • The payment must be for the full amount of the invoice (not just the balance owing)
  • There must be a bb_sales_debtors_direct_debit_notes_types named 'Forex Gain Adjustment'
  • There must be a bb_sales_debtors_direct_credit_notes_types named 'Forex Loss Adjustment'
  • There must be a bb_procurement_creditors_direct_credit_notes_types named 'Forex Gain Adjustment'
  • There must be a bb_procurement_creditors_direct_debit_notes_types named 'Forex Loss Adjustment'
  • The must be a nominated GL account for gains in the bbsetting: bb_finance_general_ledger_accounts > bbsetting_forex_gains_account
  • The must be a nominated GL account for losses in the bbsetting: bb_finance_general_ledger_accounts > bbsetting_forex_losses_account
Once these pre-requisites are confirmed to be in place the system will automatically add the required DR/CR notes each time a forex invoice is paid in full.

Inline Forex Base Currency Value Calculator for BlueBox

BlueBox includes forex specifications that allow you to manually set the forward rate and spot rates for any currency inputs in the system.

Until recently, if you wanted to over-ride the current spot rate for a currency value you would have to calculate the forward rate manually and then input it into the FR input box.

There is now a target base rate input field which automatically calculates the related FR rate to match the base rate that has been input:


Friday, August 22, 2014

Stripe Now Part of BlueBox Payment Gateways

BlueBox has recently added the Stripe Payment System to it's list of available payment methods/gateways.

A typical Pay Function would work like this:

Friday, August 15, 2014

jQuery Fixed Table Headers in BlueBox

A recent plugin added to BlueBox is Misha Koryak's FloatThread. This allows you to fix the table header within a fixed-width div as follows:


<div style=width:1000px;height:300px;overflow:auto; id=reportwrapper>

<table width=100% cellpadding=5 cellspacing=1 bgcolor=silver id=report_table_pointer>
<thead>
   <tr>
     <th> .. some content here .. </th>
     <th> .. some content here .. </th>
   </tr>
</thead>
<tbody>
   <tr>
     <td> .. some content here .. </td>
     <td> .. some content here .. </td>
   </tr>
</tbody>
</table>

</div>

<script src=\"engine/3rdparty/jquery/table_headers/jquery.floatThead.min.js\"></script>
<script>
var float_headers = jQuery('#report_table_pointer');
float_headers.floatThead({
scrollContainer: function(table){
return table.closest('#reportwrapper');
        }
});
</script>