Table layouts

Categories

NameTypeDescription
categoryTextName in breadcrumb format.

Custom

NameTypeDescription
sectionIntegerSection number: 0=order header, 1=detail line
seqIntegerOrder in which control appears within section.
typeIntegerControl type: 0=header, 1=spinner, 2=checkbox, 3=text.
nameTextThe name of the control, as shown to the user.
valsTextAny additional values. For spinners, this is a list of options, separated by commas.

Customers

NameTypeDescription
customerIdTextUnique id of customer.
employeeIdLongEmployee who sells to customer.
priceListByteInteger between 0 and 4.
taxCodeTextCan be left blank.
nameTextName of customer.
addressTextStreet address.
cityText 
regionText 
postalCodeTextPost code or zip code.
countryText 
latitudeLongObsolete.
longitudeLongObsolete.
contactTextName of contact.
contactTitleTextJob title of contact.
phoneTextPhone number.
emailTextEmail address.
notesMemoNotes about the order.
discountDoubleDefault value for new orders.
colourByteObsolete.
dirtyBooleanSet when record is uploaded.

Employees

NameTypeDescription
employeeIdLongUnique id of employee.
nameTextName of employee.
passwordTextPassword for web server.
restrictedBooleanCannot change company data.

Order Details

NameTypeDescription
employeeIdLongEmployee who created the order.
orderIdLongUnique id of order.
productIdTextUnique id of product.
unitPriceCurrencyUnit price.
quantityDouble 
discountDouble 
taxCodeTexttax code.
taxRateDoubletax rate.
customTextObsolete.

Orders

NameTypeDescription
employeeIdLongEmployee who created the order .
orderIdLongUnique id of order
customerIdTextUnique id of customer.
orderDateTextDate of order.
requiredDateTextDate when order is required.
shipperTextDelivery method.
freightCurrencyDelivery charge.
shipNameTextName of recipient.
shipAddressTextDelivery address.
shipCityText 
shipRegionText 
shipPostalCodeText 
shipCountryText 
notesMemo 
stampTextSet when order was uploaded.
customTextObsolete.
typeByte0=invoice, 1=credit note, 2=quote.
dirtyBooleanSet when record is uploaded.
latitudeLongObsolete.
longitudeLongObsolete.

Products

NameTypeDescription
productIdTextUnique id of product.
nameTextName of product.
categoryTextProduct category.
barcodeText 
priceCurrencyMain price.
price1CurrencyAlternative prices.
price2Currency 
price3Currency 
price4Currency 
taxCodeTextTax code.
discontinuedBooleanProduct is not available.
notesMemo 
bandingTextPrice banding, e.g. 1-10-100.
stockDoubleCurrent stock level.

Shippers

NameTypeDescription
shipperTextName of shipping method.

Special Prices

NameTypeDescription
customerIdTextUnique id of customer.
productIdTextUnique id of product.
priceDoubleSpecial price.
descriptionTextReason for awarding special price.

Tax Rates

NameTypeDescription
codeTextCode printed on invoices.
descriptionTextDescription of tax rate.
rateDoubleRate as percentage.
seqLongSequence in which rate appears.

Platform differences

Platform Dependency

Most of the differences between the two apps are due to differences in the underlying platforms. Android and iOS have different design criteria, and each app is developed as a native app for its own platform. No attempt is made to copy features directly from one app to the other, without changing them to match the design standards of the new platform.

Some features are only available on one of the two platforms (usually Android). For instance Android devices have SD slots, while iOS ones do not. When this happens, the decision whether to use the feature at all is taken on merit. Some minor features can be omitted altogether. Others are so important that they have to be included, albeit on one platform only.

Navigation Drawer

The Sales Manager mobile app has a large number of screens, and navigating between them is particularly important. The traditional hierarchical menu structure offered by both Android and iOS is slow and time consuming.

Android offers another solution for larger apps, called the Navigation Drawer. This allows the developer to present a menu for the entire app, as a drop-down list. The top part of the navigation drawer for the Android app is shown on the right.

Unfortunately no such paradigm exists on the iOS platform, and the iOS app is stuck with an old-fashioned, hierarchical menu system.

Split Screen

Although it is not quite as important as the navigation drawer, split screen mode is another feature that is only available on Android. iOS offers some limited support for split screen mode, but not in a form that can be used by the mobile app. Split screen is only available on Android tablets, in horizontal mode.

Using both Platforms

It is possible to use a mixture of Android and iOS devices, but there are a number of caveats:

  1. Separate payments must be made to Google Play and iTunes. Payments made on one platform cannot be transferred to the other.
  2. It may not be possible to transfer an SQLite database from one platform to the other, due to their running different versions of SQLite. It used to be possible before they diverged, but now it is probably only possible one way round.
  3. On a brighter note, all versions of the web server support both platforms equally well. The transactions are the same in both cases.

Restoring purchases

Store screen

Apps bought on Google Play can be used on any Android device without paying again. However, each device must have the same Google Account on it. Once a purchase has been made, it may be restored to any other other device. The only proviso is that they must use the same Google or Apple account.

Android purchases may be restored on a second device by tapping the Restore button in the action bar, as shown in the screenshot on the right. The process is more or less identical for iOS devices.

Links

Android v6.0.1

This release allows the developer to test new releases on his Chromebook. No other changes have been made, and the user should not be affected in any way.

Using external storage

Introduction

The External Storage on an Android device is an area to which apps can read and write files. The Android client uses it to back up the database, and to store product images. Traditionally it was an SD card, but in most modern devices it is located in internal storage, on the flash ROM.

File Manager

Database backups are not shown in File Explorer, but they are visible in file manager apps. We recommend File Manager+, which can be installed using the link in the sidebar.

The gallery below shows how to locate the Vanguard folder, using File Manager+. The Vanguard folder, and the images folder inside it, are both created when the Sales app is launched (not when it is installed).

File Explorer

The gallery below shows how to access the internal storage on an Android device, connected over USB.

Product Images

  1. The product images must all be places in the /Vanguard/images folder.
  2. The file names must mach the names of the products.
  3. The extensions must all be “.jpg”.
  4. Each product image should be roughly square, and no larger than 100 KB.

After the product images have been copied to the device, the thumbnails should be created, using the Create Thumbnails option on the SD Card screen of the Android client.

Warning

Android 11 no longer supports external storage. Version 7.1.0 is due to replace it with Google Drive.

Android v6.0.0

No more Customer Map

The Customer Map feature has finally been removed from the Android app.

It was always a vanity project, that was technically ingenious, but hardly ever worked. It was difficult for the user to set up, and it kept getting clobbered by updates from Google, which was anxious to monetise its technologies.

The guidebook and user manual will be updated in due course. At the moment only the menus have been patched, in case anyone is actually using the feature.