Skip to content

Barcode Generator

Overview

Barcode Generator designs a label — its size, its lines of text, its price line and its barcode — and prints a sheet of them. You type or paste the rows you want (item code, item name, barcode value, price, quantity), pick a saved label template, generate, and print through the browser’s own print dialog.

It is a standalone printing tool. It does not read items from inventory, does not write anything back, and posts nothing. Everything it needs is either typed into the grid or imported from a CSV.

Label templates are saved to your own user settings for this applet, not to the tenant. A colleague signing in on another account does not see the templates you designed.

Where it fits

UpstreamThis appletDownstream
Item codes, names, barcode values and prices — typed in, or pasted from a CSV you exported from Item Maintenance or PricebookThe label grid and the label designerA printed sheet, through the browser
Label templates stored in your user settingsReused on the Print Barcode tab

Screens and menus

One menu item, Barcode Generator (route barcode), with three tabs:

TabWhat it does
Print BarcodeThe working screen. A grid with columns item_code, item_name, barcode, price, qty — all editable in place — plus checkbox selection, Add Row, Delete Selected, a Barcode Template dropdown, Generate and Print. Two more buttons download a blank CSV template and import a CSV into the grid.
Barcode DesignerWhere a template is built: label Width and Height in centimetres, and a list of lines. Each line has a Type (text, item code, price or barcode), a Value, an Alignment, a Font Size, and — for barcode lines — a Format, Width and Height. Add Line, Remove Line, Print Label, and a Barcode Template dropdown with add and delete dialogs for naming and removing templates.
Barcode SettingsNot implemented. See below.
Settings → Application SettingsAn empty screen with a SAVE button (see Configuration).
Settings → Default SelectionDefault Company, Default Ledger, Default Currency.
Settings → Field Settings, Webhook, Feature Visibility, the permission screens, Release Notes, Applet LogRouted; Field Settings is the unbound stub, the rest are the shared screens.
Personalization → Default Selection, SidebarPer-user.

Barcode Settings is a mock. The tab renders a label designer and a label-settings panel over a hard-coded object — sample lines reading 123456789012 and MYR 29.90, a CODE128 barcode block, an 8 cm × 3 cm two-column label — with an ngOnInit that does nothing and an onPrint() whose body is a comment. Nothing on that tab is loaded from, or saved to, anywhere. Design labels on the Barcode Designer tab instead.

A BarcodeGeneratorComponent is declared in the barcode module and used in no template, and a BarcodeService that would keep barcode lines and templates in browser local storage is injected nowhere. Both are dead code at commit fd3478e; they are not an alternative storage path.

Screenshots needed

No screenshots exist for this applet. A capture session should take: the Print Barcode tab with a few rows and generated labels; the Barcode Designer with a template open and several lines; the Add Template dialog; and Settings → Default Selection. Use invented item codes and prices.

Configuration

Before you can use it

Nothing. The applet reads no master data and calls no document endpoint. You need a saved label template before Generate produces anything, and that you create yourself on the Barcode Designer tab.

Applet settings

ScreenWhat it holdsVerdict
Settings → Application SettingsNothing. The component builds an empty UntypedFormGroup with no controls, the template renders only a SAVE button, and pressing it dispatches saveMasterSettingsInit with an empty object. No exposed control found (routes and settings components checked at commit fd3478e).Dead screen
Settings → Field SettingsThe unbound eight-toggle stub — Unit Discount, SST/VAT/GST, WHT, Blanket Order, Segment, G/L Dimension, Profit Center, Project — with no form binding and a SAVE button with no handler. The labels belong to a sales-document screen.Dead screen
Settings → Default SelectionDEFAULT_COMPANY, DEFAULT_LEDGER, DEFAULT_CURRENCY. These persist (changing the company clears the ledger, which is real logic), but a repo-wide grep at commit fd3478e finds them read nowhere outside the settings screens themselves.Declared, rendered and persisted; not consumed
Personalization → Default SelectionThe per-user twin of the same three keys.Same

The settings that do something are the label templates, and they are not on any Settings screen. Saving a template on the Barcode Designer tab dispatches saveAdvanceSearchStateSettingsInit with the state name barcodeSettings and the template name as the state label. The shared session effect writes it into bl_applet_login_subject_link_ext under param_code = USER_SETTINGS_ADVANCE_SEARCH_STATE, keyed by applet and by the signed-in login — which is why templates are per user and per applet, and why the effect throws “You do not have permission to do this” when the current login has no applet link row.

Each stored template holds labelWidth, labelHeight and the list of lines, each line carrying its type, value, alignment, font size and (for barcodes) format, width and height.

Feature visibility / permissions

The applet checks no HIDE_* / SHOW_* keys. bl_applet_client_side_perm_dfn holds exactly one row for barcodeGeneratorApplet, and it is a placeholder left over from testing the Client-Side Permission screen — its perm_code is literally code, its name name and its description desc (checked 2026-09-14). Nothing checks it; treat this applet as having no client-side permissions.

Server-side there is nothing to guard beyond the applet’s own installation and the user-settings write described above: the applet calls no ERP endpoint.

Fields

Print Barcode grid

ColumnMeaningNotes
(checkbox)Row selection, with a select-all headerFeeds Delete Selected
#Row numberDerived
item_codeYour item codeEditable in place
item_nameName to printEditable
barcodeThe value encoded in the barcode lineEditable
pricePrice to printEditable, numeric editor
qtyHow many copies of this labelEditable, numeric editor; defaults to 1 on a new row

CSV import. Download Template produces barcode_template.csv containing the single header line item_code,item_name,barcode,price,qty. Import appends the parsed file to whatever is already in the grid — it does not replace it, so importing the same file twice doubles the rows.

Barcode Designer

FieldMeaningNotes
Barcode TemplateThe named template being editedAdd and delete through their own dialogs
Width (cm), Height (cm)Physical label sizeUsed when the sheet is laid out
Typetext, item_code, price or barcodeDecides what the line renders
ValueThe literal text, or the barcode payloadFor item_code and price lines the grid row supplies the value at generate time
Alignmentleft / center / right
Font SizePoints
FormatBarcode symbology, e.g. CODE128Barcode lines only; CODE128 is the fallback when the line leaves it empty
Width, HeightBar width factor and bar heightBarcode lines only

Lifecycle and effects

No server document type, no signums, no journal, no stock movement, no queue. The only thing this applet persists is the label templates, and they go into the signed-in user’s applet settings, not into any business table.

Generating and printing. Generate reads the selected template, clones its line list once per grid row (expanding each row qty times), substitutes the row’s item code, name and price into the matching line types, and renders the barcode lines with JsBarcode into the preview area. Print takes the inner HTML of the preview area, writes it into a new browser window together with a CSS grid that tiles the labels, and calls window.print() on that window. There is no PDF generation and no server round-trip; what comes out depends on the printer and the paper the browser is given.

Related applets

  • Inventory Item Maintenance — where item codes and barcode values are maintained. This applet does not read them; export or copy them into the grid.
  • Pricebook — where the prices you print come from.

Troubleshooting

SymptomCauseFix
The Barcode Template dropdown is emptyNo template has been saved for this login. Templates are per user.Create one on the Barcode Designer tab.
A colleague cannot see the template you designedTemplates are stored against the signed-in login’s applet link, not against the tenant.Each user designs (or re-creates) their own.
Saving a template fails with “You do not have permission to do this”The session effect first looks up an applet-login-subject link row for this applet and this login and throws when it finds none.Make sure the applet is installed for that user.
Nothing appears when you press GenerateNo template is selected, or the selected template has no lines.Pick a template with at least one line.
Importing a CSV twice doubles the rowsImport appends to the grid rather than replacing it.Delete the rows first, or use Delete Selected.
The Barcode Settings tab shows a label you never designed, and its Print does nothingThat tab is a mock over a hard-coded sample design; its print handler is empty.Use Barcode Designer and the Print Barcode tab.
Settings → Application Settings has nothing on itIt genuinely has no controls; the SAVE button posts an empty object.Nothing to configure there.
Setting Default Company / Ledger / Currency changes nothingThose three keys are saved but read nowhere in the applet.Ignore them.
Labels print at the wrong sizeLayout is browser CSS plus whatever paper size and scaling the print dialog is set to; there is no server-side PDF.Set the label Width and Height on the template, then set the browser print dialog to 100% scale and the right paper.

Related documentation

Last updated on