Thursday, April 24, 2014

Creating bespoke ajax lookups in BlueBox

BlueBox includes a default ajax-lookup feature for lists of information. This provides a neat facility for any link-table lookups and works by simply naming your fields with a capital ID in the field name ie userISbb_usersID.

Sometimes you want to use your own ajax lookups and there is a quick bbsetting that allows you to override the standard lookup, called bbsetting_ajax_lookup_jsfunction.

If you enter your javascript replacement function name into this setting for the required module, it will use that function rather than the standard one, ie my_lookup_function

A hidden div is automatically created with an id 'div_{field_name}' whenever a field for that module is created, so you can hook your ajax lookup into that div and the text input field is automatically given the id 'viewer_{field_name}' - with these 2 id's you have the ingredients to build an ajax lookup.

Your javascript lookup would work this way:

function my_lookup_function(){
  \$('div_global[fields][userISbb_usersID]').style.display='block';
  ajax2div('div_global[fields][userISbb_usersID]','/?class=my_class&method=my_method&global[noincludes]=rawtext&global[srch_txt]='+$('viewer_global[fields][userISbb_usersID]').value);
}

In your my_class->my_method you would then search the module using $global[srch_txt] and return the results.

Thursday, April 17, 2014

BlueBox and Mailchimp

BlueBox now integrates with MailChimp the popular bulk emailing platform.

To access/activate the integration follow these steps:

Go to Integration > MailChimp



Then edit the settings to insert your MailChimp API key:

To generate an API key in MailChimp go to Account Settings > Extras > API Keys

Then click on 'Create a key' and copy the key when it is generated.


Once you have the key inserted into BlueBox you can proceed to upload lists of BlueBox users to your matching MailChimp lists. You can send users from a Campaign of User Group as follows:


After you have used MailChimp to send to your new list you can access campaign stats from MailChimp by clicking on 'View Your Campaign Settings':





Wednesday, March 26, 2014

New Features for BlueBox Forms (Financial Document Lines)

Recently added to BlueBox2.0 financial document lines are 3 long-awaited features:
  • Editing Lines where the Items have Sizes/Colours
    Previously newly added items with sizes/colours were sent to the end of the list of items. Now, if the current line has been 'cleared' of it's item the first click/select of a new item will fill the current row.. any subsequent clicks will auto-populate at the end of the form.


  • Draggable Line Ordering:

    For new lines added to any form there is now the ability to drag the line into any position amongst the other newly added lines. The catch here is that this ONLY applies to newly added lines... any lines that are part of a previous posting and are being edited cannot be moved and cannot have any new items mixed among them.

  • Ajax Loading for Extra Details:

    For very large forms the extra fields in the [+] extra items area has slowed up the page load considerably. To get around this we now only load the extra fields as required via Ajax when the [+] is clicked.

Wednesday, March 19, 2014

General ledger Postings for Sales and Procurement Documents

BlueBox2.0 uses document maps to dictate GL movements from the document layer. This means that you can specify which entries get posted whenever specific documents are created, and using advanced condition statements you can be very precise about these postings.

Once your document maps are set up your system will populate the GL automatically providing you with a live Trial Balance, Balance Sheet and Income Statement.

The GL allocations for a stock-based business that uses GRN's to receive stock and Despatch Notes to ship stock have a specific layout that is worth noting:
  • GRN
    • DR Stock GL Account
      Note: for non-stock items being received be sure to set the 'GRN asset acct' to a special asset account (ie something like Non-stock Assets Received)
    • CR GRN Suspense Account
      Note: this Liabilities account should not be changed via item-data settings
  • Creditors Invoice
    • DR GRN Suspense GL Account
      Note: This 'expense' account must not be changed via item-data settings if the item was GRN'd in originally. For CR Invoices that are captured directly without a previous GRN this expense account can be set to anything.
    • CR Accounts Payable
    • DR Input Tax Account
  • Despatch
    • DR Cost of Sales
      Note: The 'DSP expense account' can be overridden at item-data level as required
    • CR Stock
      Note: be sure to set the 'DSP asset account' on non-stock items to the same asset account used in the GRN above
  • Debtors Invoice
    • CR Sales Revenue
      Note: this income Account can be overridden at item-data level as required
    • DR Accounts Receivable
    • CR Output Tax Account

Wednesday, March 12, 2014

Debug Toggle

For developers who want to see runtime errors pertaining to their BlueBox PHP scripts adding

&global[debug]=1

to their URLs will display any errors found.

Sunday, March 2, 2014

Sending Email from BlueBox with Mandrill

Mandrill.com (the platform/infrastructure behind Mailchimp.com) offers a powerful email sending solution for outbound emails. It can be very helpful for mail tracking (opens and clicks) and having some control over your outbound email messages.

In BlueBox we have recently added additional email settings to the bb_email module which allow you to configure your system to use Mandrill as the outbound mail server.

Setting up your Mandrill.com account:

Firstly you need to set up your Mandrill account. The free account comes with 12000 free emails per month. Within your account you can set up 2 control mechanisms to separate 'who is sending the messages' and thereby have one account for all your sites/customers if you have more then one BlueBox server to manage:
  • API Keys > these are essentially the 'passwords' used for sending outbound messages. You can have multiple keys and so using this method can control who is sending which messages.
  • Sub accounts > these are more detailed and offer more control, and can be used in conjunction with a key to for a true sub account for the customer/sender complete with mail limits etc.
Setting up your BlueBox system:

To set these go to Admin > Modules > Module Settings and select 'bb_email' as the module/class.

You will then see a set of bbsettings which can be configured, namely:
  • bbsetting_email_from_name
    (This setting overrides the same setting in the config file if set.)
  • bbsetting_email_from_email
    (This setting overrides the same setting in the config file if set.)
  • bbsetting_email_smtp_server
    smtp.mandrillapp.com
  • bbsetting_email_smtp_port
    587
  • bbsetting_email_smtp_username
    (your Mandrill username, normally your email)
  • bbsetting_email_smtp_password
    (the API key generated on Mandrill, see above)
  • bbsetting_email_smtp_security
    tls
  • bbsetting_email_smtp_headers
    X-MC-Subaccount=(subaccount_name),X-MC-Track=Opens|Clicks,
Note that for the last setting, bbsetting_email_smtp_headers, these are optional, and there is a pipe | between Opens and Clicks because commas are reserved for BlueBox bbsetting array separators.

Updating the DNS records for the 'from domain':

Because the emails are being sent from Mandrill.com's platform we need to tell the DNS network that they are authorised to send emails 'as' our 'from domains' - so for each from domain you should ideally edit it's DNS records and set the DKIM and SPF records in the TXT section of the DNS record. This is really quick and easy to do - simply follow the instructions on the Mandrill control panel and you have them set in a minute.

Saturday, November 16, 2013

Timing your PHP Code in BlueBox

If you think a piece of PHP code is inefficient but don't know where, there is a BlueBox function that can give you time-splits as the code progresses.

bb_timer([optional __LINE__ number],[optional return_value]);

The simplest use would be bb_timer(__LINE__); which will print to the screen the time taken to get to that specific line of code.

If you would rather have the value returned then enter a 'true' value into the second value.